Index: www/chromium/Makefile =================================================================== --- www/chromium/Makefile +++ www/chromium/Makefile @@ -1,5 +1,6 @@ PORTNAME= chromium PORTVERSION= 117.0.5938.132 +PORTREVISION= 1 CATEGORIES= www wayland MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/ \ https://nerd.hu/distfiles/:external @@ -102,6 +103,7 @@ enable_nacl=false \ enable_remoting=false \ enable_rust=false \ + enable_widevine=true \ fatal_linker_warnings=false \ icu_use_data_file=false \ is_clang=true \ @@ -137,7 +139,7 @@ SUB_FILES= chromium-browser.desktop chrome SUB_LIST+= COMMENT="${COMMENT}" -OPTIONS_DEFINE= CODECS CUPS DEBUG DRIVER KERBEROS LTO PIPEWIRE TEST +OPTIONS_DEFINE= CODECS CUPS DEBUG DRIVER KERBEROS LTO PIPEWIRE TEST WIDEVINE OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS PIPEWIRE SNDIO OPTIONS_EXCLUDE_aarch64=LTO OPTIONS_GROUP= AUDIO @@ -212,6 +214,9 @@ SNDIO_VARS= GN_ARGS+=use_sndio=true SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false +WIDEVINE_DESC= Depend on foreign-cdm to enable playback of DRM content +WIDEVINE_RUN_DEPENDS= foreign-cdm>0:www/foreign-cdm + .include "Makefile.tests" TEST_DISTFILES= ${PORTNAME}-${DISTVERSION}-testdata${EXTRACT_SUFX} \ test_fonts-336e775eec536b2d785cc80eff6ac39051931286.tar.gz:external Index: www/chromium/files/chrome.in =================================================================== --- www/chromium/files/chrome.in +++ www/chromium/files/chrome.in @@ -16,4 +16,9 @@ exit 1 fi ulimit -c 0 + +# variables for foreign-cdm +export FCDM_CDM_SO_PATH=/compat/linux/usr/lib/foreign-cdm/libwidevinecdm.so +export FCDM_WORKER_PATH=/compat/linux/usr/bin/fcdm-worker + exec %%PREFIX%%/share/chromium/chrome ${1+"$@"} Index: www/chromium/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc =================================================================== --- /dev/null +++ www/chromium/files/patch-chrome_browser_component__updater_widevine__cdm__component__installer.cc @@ -0,0 +1,11 @@ +--- chrome/browser/component_updater/widevine_cdm_component_installer.cc.orig 2023-09-04 16:07:23 UTC ++++ chrome/browser/component_updater/widevine_cdm_component_installer.cc +@@ -72,6 +72,8 @@ const char kWidevineCdmPlatform[] = + "cros"; + #elif BUILDFLAG(IS_LINUX) + "linux"; ++#elif BUILDFLAG(IS_FREEBSD) ++ "linux"; + #else + #error This file should only be included for supported platforms. + #endif Index: www/chromium/files/patch-chrome_common_media_cdm__registration.cc =================================================================== --- /dev/null +++ www/chromium/files/patch-chrome_common_media_cdm__registration.cc @@ -0,0 +1,52 @@ +--- chrome/common/media/cdm_registration.cc.orig 2023-09-04 16:08:25 UTC ++++ chrome/common/media/cdm_registration.cc +@@ -25,11 +25,11 @@ + + #if BUILDFLAG(ENABLE_WIDEVINE) + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FREEBSD) + #include "base/native_library.h" + #include "chrome/common/chrome_paths.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD) + #include "base/no_destructor.h" + #include "components/cdm/common/cdm_manifest.h" + #include "media/cdm/supported_audio_codecs.h" +@@ -58,7 +58,7 @@ using Robustness = content::CdmInfo::Robustness; + #if BUILDFLAG(ENABLE_WIDEVINE) + #if (BUILDFLAG(BUNDLE_WIDEVINE_CDM) || \ + BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT)) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // Create a CdmInfo for a Widevine CDM, using |version|, |cdm_library_path|, and + // |capability|. + std::unique_ptr CreateWidevineCdmInfo( +@@ -101,7 +101,7 @@ std::unique_ptr CreateCdmInfoFromWid + // BUILDFLAG(IS_CHROMEOS)) + + #if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // On Linux/ChromeOS we have to preload the CDM since it uses the zygote + // sandbox. On Windows and Mac, the bundled CDM is handled by the component + // updater. +@@ -125,7 +125,7 @@ content::CdmInfo* GetBundledWidevine() { + // BUILDFLAG(IS_CHROMEOS)) + + #if BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) && \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FREEBSD)) + // This code checks to see if a component updated Widevine CDM can be found. If + // there is one and it looks valid, return the CdmInfo for that CDM. Otherwise + // return nullptr. +@@ -160,7 +160,7 @@ void AddSoftwareSecureWidevine(std::vector