diff --git a/android/brave_java_resources.gni b/android/brave_java_resources.gni index 3910d9a2363..8ca3c8f0f83 100644 --- a/android/brave_java_resources.gni +++ b/android/brave_java_resources.gni @@ -547,6 +547,7 @@ brave_java_resources = [ "java/res/drawable/ic_logo_zebpay.xml", "java/res/drawable/ic_logo_zebpay_white.xml", "java/res/drawable/ic_mask.xml", + "java/res/drawable/ic_media.xml", "java/res/drawable/ic_menu.xml", "java/res/drawable/ic_menu_close.xml", "java/res/drawable/ic_new_tab_page.xml", diff --git a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java index 0a653913b8f..8586979175e 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveMainPreferencesBase.java @@ -18,9 +18,7 @@ import androidx.preference.Preference; import org.chromium.base.BraveFeatureList; import org.chromium.base.ContextUtils; import org.chromium.chrome.R; -import org.chromium.chrome.browser.BraveFeatureUtil; import org.chromium.chrome.browser.BraveLaunchIntentDispatcher; -import org.chromium.chrome.browser.BraveRelaunchUtils; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.homepage.settings.BraveHomepageSettings; import org.chromium.chrome.browser.notifications.BraveNotificationWarningDialog; @@ -30,7 +28,6 @@ import org.chromium.chrome.browser.ntp_background_images.NTPBackgroundImagesBrid import org.chromium.chrome.browser.ntp_background_images.util.NTPUtil; import org.chromium.chrome.browser.onboarding.OnboardingPrefManager; import org.chromium.chrome.browser.partnercustomizations.CloseBraveManager; -import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; import org.chromium.chrome.browser.privacy.settings.BravePrivacySettings; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.rate.BraveRateDialogFragment; diff --git a/android/java/org/chromium/chrome/browser/settings/MediaPreferences.java b/android/java/org/chromium/chrome/browser/settings/MediaPreferences.java index b8e74c22e8e..8881637ef5e 100644 --- a/android/java/org/chromium/chrome/browser/settings/MediaPreferences.java +++ b/android/java/org/chromium/chrome/browser/settings/MediaPreferences.java @@ -5,14 +5,11 @@ package org.chromium.chrome.browser.settings; -import android.content.SharedPreferences; import android.os.Bundle; import androidx.preference.Preference; import org.chromium.base.BraveFeatureList; -import org.chromium.base.BravePreferenceKeys; -import org.chromium.base.ContextUtils; import org.chromium.chrome.R; import org.chromium.chrome.browser.BraveFeatureUtil; import org.chromium.chrome.browser.BraveLocalState; @@ -20,16 +17,12 @@ import org.chromium.chrome.browser.BraveRelaunchUtils; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.preferences.BravePref; import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; -import org.chromium.chrome.browser.preferences.SharedPreferencesManager; -import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.tasks.tab_management.BraveTabUiFeatureUtilities; -import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.SettingsUtils; -import org.chromium.components.user_prefs.UserPrefs; -public class MediaPreferences extends BravePreferenceFragment - implements Preference.OnPreferenceChangeListener { +/* Class for Media section of main preferences */ +public class MediaPreferences + extends BravePreferenceFragment implements Preference.OnPreferenceChangeListener { public static final String PREF_ENABLE_WIDEVINE = "enable_widevine"; public static final String PREF_BACKGROUND_VIDEO_PLAYBACK = "background_video_playback"; @@ -59,14 +52,10 @@ public class MediaPreferences extends BravePreferenceFragment (ChromeSwitchPreference) findPreference(PREF_BACKGROUND_VIDEO_PLAYBACK); if (backgroundVideoPlaybackPref != null) { backgroundVideoPlaybackPref.setOnPreferenceChangeListener(this); - boolean enabled = ChromeFeatureList.isEnabled( - BraveFeatureList.BRAVE_BACKGROUND_VIDEO_PLAYBACK) - || BravePrefServiceBridge.getInstance() - .getBackgroundVideoPlaybackEnabled(); + boolean enabled = + ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_BACKGROUND_VIDEO_PLAYBACK) + || BravePrefServiceBridge.getInstance().getBackgroundVideoPlaybackEnabled(); backgroundVideoPlaybackPref.setChecked(enabled); - if (enabled) { - backgroundVideoPlaybackPref.setSummary( R.string.prefs_background_video_playback_on); - } } } @@ -76,21 +65,14 @@ public class MediaPreferences extends BravePreferenceFragment boolean shouldRelaunch = false; if (PREF_ENABLE_WIDEVINE.equals(key)) { ChromeSwitchPreference enableWidevinePref = - (ChromeSwitchPreference) findPreference(PREF_ENABLE_WIDEVINE); - BraveLocalState.get().setBoolean( - BravePref.WIDEVINE_OPTED_IN, - !BraveLocalState.get().getBoolean(BravePref.WIDEVINE_OPTED_IN)); + (ChromeSwitchPreference) findPreference(PREF_ENABLE_WIDEVINE); + BraveLocalState.get().setBoolean(BravePref.WIDEVINE_OPTED_IN, + !BraveLocalState.get().getBoolean(BravePref.WIDEVINE_OPTED_IN)); shouldRelaunch = true; } else if (PREF_BACKGROUND_VIDEO_PLAYBACK.equals(key)) { BraveFeatureUtil.enableFeature( BraveFeatureList.BRAVE_BACKGROUND_VIDEO_PLAYBACK_INTERNAL, (boolean) newValue, false); - if ((boolean) newValue) { - findPreference(PREF_BACKGROUND_VIDEO_PLAYBACK).setSummary( - R.string.prefs_background_video_playback_on); - } else { - findPreference(PREF_BACKGROUND_VIDEO_PLAYBACK).setSummary(""); - } shouldRelaunch = true; } @@ -100,5 +82,4 @@ public class MediaPreferences extends BravePreferenceFragment return true; } - } diff --git a/android/java/res/drawable/ic_media.xml b/android/java/res/drawable/ic_media.xml new file mode 100644 index 00000000000..feff2d79a4d --- /dev/null +++ b/android/java/res/drawable/ic_media.xml @@ -0,0 +1,5 @@ + + + diff --git a/android/java/res/layout/widevine_permission_request_custom_view.xml b/android/java/res/layout/widevine_permission_request_custom_view.xml index 13effa5ed37..1456e4e0a16 100644 --- a/android/java/res/layout/widevine_permission_request_custom_view.xml +++ b/android/java/res/layout/widevine_permission_request_custom_view.xml @@ -28,7 +28,7 @@ found in the LICENSE file. android:id="@+id/checkbox" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="20dp" + android:layout_marginStart="12dp" android:layout_gravity="center_horizontal" android:buttonTint="@color/brave_action_color" android:paddingVertical="8dp" diff --git a/android/java/res/xml/brave_main_preferences.xml b/android/java/res/xml/brave_main_preferences.xml index 1aa9504bfd1..2644c6ac98f 100644 --- a/android/java/res/xml/brave_main_preferences.xml +++ b/android/java/res/xml/brave_main_preferences.xml @@ -78,7 +78,7 @@ android:fragment="org.chromium.chrome.browser.settings.MediaPreferences" android:key="media" android:order="16" - android:icon="@drawable/ic_appearance" + android:icon="@drawable/ic_media" android:title="@string/prefs_media"/> + android:title="@string/prefs_background_video_playback" + android:summary="@string/prefs_background_video_playback_on" /> diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index 0dc7ed6286d..24e1fdefe27 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -232,7 +232,7 @@ - $1https://www.youtube.com wants to play protected Google Widevine content, which requires you to allow Android system support for Widevine. By allowing, you'll agree to Google's terms of use. (Note that Brave will need to relaunch to allow Widevine support.) + $1https://www.youtube.com wants to play protected Google Widevine content, which requires you to allow Android system support for Widevine. By allowing, you'll agree to Google's terms of use. diff --git a/browser/brave_drm_tab_helper.cc b/browser/brave_drm_tab_helper.cc index 66ca9fbdaf1..2d9490214da 100644 --- a/browser/brave_drm_tab_helper.cc +++ b/browser/brave_drm_tab_helper.cc @@ -19,7 +19,7 @@ #include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_handle.h" -#if !BUILDFLAG(IS_ANDROID) +#if defined(TOOLKIT_VIEWS) #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -116,8 +116,7 @@ void BraveDrmTabHelper::OnEvent(Events event, const std::string& id) { // this tab asks widevine explicitely. if (is_widevine_requested_) RequestWidevinePermission(web_contents(), true /* for_restart*/); -#elif BUILDFLAG(IS_ANDROID) -#else +#elif !BUILDFLAG(IS_ANDROID) // When widevine is ready to use, only active tab that requests widevine is // reloaded automatically. if (is_widevine_requested_) diff --git a/browser/profiles/brave_renderer_updater.cc b/browser/profiles/brave_renderer_updater.cc index 44dd69ea7e2..361c37e007c 100644 --- a/browser/profiles/brave_renderer_updater.cc +++ b/browser/profiles/brave_renderer_updater.cc @@ -35,8 +35,9 @@ BraveRendererUpdater::BraveRendererUpdater( Profile* profile, brave_wallet::KeyringService* keyring_service, PrefService* local_state) - : profile_(profile), keyring_service_(keyring_service), - local_state_(local_state){ + : profile_(profile), + keyring_service_(keyring_service), + local_state_(local_state) { PrefService* pref_service = profile->GetPrefs(); brave_wallet_ethereum_provider_.Init(kDefaultEthereumWallet, pref_service); brave_wallet_solana_provider_.Init(kDefaultSolanaWallet, pref_service); diff --git a/browser/profiles/brave_renderer_updater_factory.cc b/browser/profiles/brave_renderer_updater_factory.cc index 05225da3947..e839d441c57 100644 --- a/browser/profiles/brave_renderer_updater_factory.cc +++ b/browser/profiles/brave_renderer_updater_factory.cc @@ -40,7 +40,8 @@ KeyedService* BraveRendererUpdaterFactory::BuildServiceInstanceFor( auto* keyring_service = brave_wallet::KeyringServiceFactory::GetServiceForContext(context); return new BraveRendererUpdater(static_cast(context), - keyring_service, g_browser_process->local_state()); + keyring_service, + g_browser_process->local_state()); } bool BraveRendererUpdaterFactory::ServiceIsCreatedWithBrowserContext() const { diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index 990bc9f06da..cf1bd2caf02 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -820,7 +820,7 @@ This file contains all "about" strings. It is set to NOT be translated, in tran <LINK>Learn more about Widevine</LINK> - ALLOW (RELAUNCH NOW) + Allow (Relaunch Now) Appearance diff --git a/browser/widevine/BUILD.gn b/browser/widevine/BUILD.gn index ca2c5e922cb..c8c1dc81c3c 100644 --- a/browser/widevine/BUILD.gn +++ b/browser/widevine/BUILD.gn @@ -46,21 +46,20 @@ source_set("widevine") { source_set("unittest") { testonly = true - sources = [ "widevine_cdm_component_installer_unittest.cc" ] - deps = [ - "//testing/gtest", - "//third_party/widevine/cdm:buildflags", - ] + if (enable_widevine_cdm_component) { + sources = [ "widevine_cdm_component_installer_unittest.cc" ] + deps = [ + "//testing/gtest", + "//third_party/widevine/cdm:buildflags", + ] + } } source_set("browser_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - sources = [ - "widevine_permission_request_browsertest.cc", - "widevine_prefs_migration_browsertest.cc", - ] + sources = [ "widevine_prefs_migration_browsertest.cc" ] deps = [ ":widevine", @@ -72,21 +71,25 @@ source_set("browser_tests") { "//chrome/browser", "//chrome/browser:browser_process", "//chrome/browser/profiles:profile", - "//chrome/browser/ui", "//chrome/common", + "//chrome/test:test_support", "//components/prefs", "//content/public/browser", "//content/test:test_support", "//testing/gtest", "//third_party/widevine/cdm:buildflags", - "//url", ] if (toolkit_views) { + sources += [ "widevine_permission_request_browsertest.cc" ] deps += [ + "//chrome/browser/ui", "//chrome/test:test_support_ui", "//ui/views", + "//url", ] + } else { + deps += [ "//chrome/test:test_support_ui_android" ] } } diff --git a/browser/widevine/widevine_permission_request.cc b/browser/widevine/widevine_permission_request.cc index 119d875df35..066b91d9da9 100644 --- a/browser/widevine/widevine_permission_request.cc +++ b/browser/widevine/widevine_permission_request.cc @@ -40,8 +40,8 @@ std::u16string WidevinePermissionRequest::GetDialogMessageText() const { return l10n_util::GetStringFUTF16( GetWidevinePermissionRequestTextFrangmentResourceId(false), url_formatter::FormatUrlForSecurityDisplay( - requesting_origin(), - url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); + requesting_origin(), + url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); } #else std::u16string WidevinePermissionRequest::GetMessageTextFragment() const { @@ -61,7 +61,6 @@ void WidevinePermissionRequest::PermissionDecided(ContentSetting result, #if BUILDFLAG(IS_ANDROID) EnableWidevineCdm(); #endif -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) // Prevent relaunch during the browser test. // This will cause abnormal termination during the test. if (!is_test_) { @@ -69,13 +68,9 @@ void WidevinePermissionRequest::PermissionDecided(ContentSetting result, base::SequencedTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, base::BindOnce(&chrome::AttemptRelaunch)); } -#endif } // Permission denied } else if (result == ContentSetting::CONTENT_SETTING_BLOCK) { -#if BUILDFLAG(IS_ANDROID) - DisableWidevineCdm(); -#endif DontAskWidevineInstall(web_contents_, dont_ask_widevine_install_); // Cancelled } else { diff --git a/browser/widevine/widevine_prefs_migration_browsertest.cc b/browser/widevine/widevine_prefs_migration_browsertest.cc index 5533dae4e44..18f31fbeee3 100644 --- a/browser/widevine/widevine_prefs_migration_browsertest.cc +++ b/browser/widevine/widevine_prefs_migration_browsertest.cc @@ -7,16 +7,33 @@ #include "brave/components/constants/pref_names.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/test/base/in_process_browser_test.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_test.h" +#if BUILDFLAG(IS_ANDROID) +#include "chrome/test/base/android/android_browser_test.h" +#include "chrome/test/base/chrome_test_utils.h" +#else +#include "chrome/browser/ui/browser.h" +#include "chrome/test/base/in_process_browser_test.h" +#endif + namespace { constexpr bool kWidevineOptedInTestValue = true; } // namespace -using WidevinePrefsMigrationTest = InProcessBrowserTest; +class WidevinePrefsMigrationTest : public PlatformBrowserTest { + public: + WidevinePrefsMigrationTest() {} + + Profile* GetProfile() { +#if BUILDFLAG(IS_ANDROID) + return chrome_test_utils::GetProfile(this); +#else + return browser()->profile(); +#endif + } +}; IN_PROC_BROWSER_TEST_F(WidevinePrefsMigrationTest, PrefMigrationTest) { g_browser_process->local_state()->ClearPref(kWidevineOptedIn); @@ -24,11 +41,11 @@ IN_PROC_BROWSER_TEST_F(WidevinePrefsMigrationTest, PrefMigrationTest) { FindPreference(kWidevineOptedIn)->IsDefaultValue()); // Set profile prefs explicitly for migration test. - browser()->profile()->GetPrefs()->SetBoolean(kWidevineOptedIn, - kWidevineOptedInTestValue); + GetProfile()->GetPrefs()->SetBoolean(kWidevineOptedIn, + kWidevineOptedInTestValue); // Migrate and check it's done properly with previous profile prefs value. - MigrateWidevinePrefs(browser()->profile()); + MigrateWidevinePrefs(GetProfile()); EXPECT_FALSE(g_browser_process->local_state()-> FindPreference(kWidevineOptedIn)->IsDefaultValue()); EXPECT_EQ(kWidevineOptedInTestValue, diff --git a/browser/widevine/widevine_utils.cc b/browser/widevine/widevine_utils.cc index 7a5577f782f..3c7a540d076 100644 --- a/browser/widevine/widevine_utils.cc +++ b/browser/widevine/widevine_utils.cc @@ -5,6 +5,8 @@ #include "brave/browser/widevine/widevine_utils.h" +#include + #include "base/files/file_util.h" #include "base/path_service.h" #include "base/task/task_traits.h" @@ -14,6 +16,7 @@ #include "brave/components/widevine/constants.h" #include "brave/components/widevine/static_buildflags.h" #include "brave/grit/brave_generated_resources.h" +#include "build/build_config.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/component_updater/component_updater_utils.h" #include "chrome/browser/component_updater/widevine_cdm_component_installer.h" @@ -85,7 +88,7 @@ void EnableWidevineCdm() { return; SetWidevineOptedIn(true); -#if !BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) RegisterWidevineCdmComponent(g_browser_process->component_updater(), #if BUILDFLAG(WIDEVINE_ARM64_DLL_FIX) g_browser_process->shared_url_loader_factory(), @@ -99,7 +102,7 @@ void DisableWidevineCdm() { return; SetWidevineOptedIn(false); -#if !BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) g_browser_process->component_updater()->UnregisterComponent( kWidevineComponentId); #endif diff --git a/browser/widevine/widevine_utils.h b/browser/widevine/widevine_utils.h index 29a93fd991e..9d77270c629 100644 --- a/browser/widevine/widevine_utils.h +++ b/browser/widevine/widevine_utils.h @@ -6,10 +6,6 @@ #ifndef BRAVE_BROWSER_WIDEVINE_WIDEVINE_UTILS_H_ #define BRAVE_BROWSER_WIDEVINE_WIDEVINE_UTILS_H_ -#include - -#include "build/build_config.h" - namespace content { class WebContents; } // namespace content @@ -22,8 +18,8 @@ class PrefRegistrySimple; class PrefService; class Profile; -// On Android, kWidevineOptedIn is written through EnableWidevineCdm() for the permission prompt, -// but r/w through BraveLocalState.java on preference screen +// On Android, kWidevineOptedIn is written through EnableWidevineCdm() for the +// permission prompt, but r/w through BraveLocalState.java on preference screen void EnableWidevineCdm(); void DisableWidevineCdm(); void RegisterWidevineProfilePrefsForMigration( diff --git a/chromium_src/components/permissions/android/DEPS b/chromium_src/components/permissions/android/DEPS index 5981e0c054d..01a8838828b 100644 --- a/chromium_src/components/permissions/android/DEPS +++ b/chromium_src/components/permissions/android/DEPS @@ -1,4 +1,5 @@ include_rules = [ + "+brave/browser/widevine", "+brave/components/l10n/common", "+brave/components/permissions/android/jni_headers", "+components/grit", diff --git a/chromium_src/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/chromium_src/components/permissions/android/permission_prompt/permission_dialog_delegate.cc index 6a5050e93ed..c322e8f1356 100644 --- a/chromium_src/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/chromium_src/components/permissions/android/permission_prompt/permission_dialog_delegate.cc @@ -3,8 +3,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#define CreateJavaDelegate \ - Java_PermissionDialogController_createDialog_BraveImpl(JNIEnv* env, const base::android::JavaRef& obj); \ +#define CreateJavaDelegate \ + Java_PermissionDialogController_createDialog_BraveImpl( \ + JNIEnv* env, const base::android::JavaRef& obj); \ virtual void CreateJavaDelegate #include "components/permissions/android/permission_prompt/permission_dialog_delegate.h" #undef CreateJavaDelegate @@ -73,20 +74,23 @@ void ApplyLifetimeToPermissionRequests( #if BUILDFLAG(ENABLE_WIDEVINE) bool IsWidevineRequest(PermissionPromptAndroid* permission_prompt) { - const std::vector& requests = permission_prompt->delegate()->Requests(); - return requests.size() == 1 && requests[0]->request_type() == RequestType::kWidevine; + const std::vector& requests = + permission_prompt->delegate()->Requests(); + return requests.size() == 1 && + requests[0]->request_type() == RequestType::kWidevine; } #endif -void ApplyWidevineDontAskOption( - JNIEnv* env, - const JavaParamRef& obj, - PermissionPromptAndroid* permission_prompt) { +void ApplyWidevineDontAskOption(JNIEnv* env, + const JavaParamRef& obj, + PermissionPromptAndroid* permission_prompt) { #if BUILDFLAG(ENABLE_WIDEVINE) if (IsWidevineRequest(permission_prompt)) { - const bool dontAsk = Java_BravePermissionDialogDelegate_getWidevineDontAsk(env, obj); - WidevinePermissionRequest* widevineRequest = static_cast( - permission_prompt->delegate()->Requests()[0]); + const bool dontAsk = + Java_BravePermissionDialogDelegate_getWidevineDontAsk(env, obj); + WidevinePermissionRequest* widevineRequest = + static_cast( + permission_prompt->delegate()->Requests()[0]); widevineRequest->set_dont_ask_widevine_install(dontAsk); } #endif @@ -94,22 +98,29 @@ void ApplyWidevineDontAskOption( } // namespace -void PermissionDialogJavaDelegate::Java_PermissionDialogController_createDialog_BraveImpl( - JNIEnv* env, - const base::android::JavaRef& j_delegate) { - if (IsWidevineRequest(permission_prompt_)) - Java_BravePermissionDialogDelegate_setIsWidevinePermissionRequest(env, j_delegate, true); - if (ShouldShowLifetimeOptions(permission_prompt_->delegate())) SetLifetimeOptions(j_delegate); +void PermissionDialogJavaDelegate:: + Java_PermissionDialogController_createDialog_BraveImpl( + JNIEnv* env, + const base::android::JavaRef& j_delegate) { +#if BUILDFLAG(ENABLE_WIDEVINE) + if (IsWidevineRequest(permission_prompt_)) { + Java_BravePermissionDialogDelegate_setIsWidevinePermissionRequest( + env, j_delegate, true); + } +#endif + if (ShouldShowLifetimeOptions(permission_prompt_->delegate())) { + SetLifetimeOptions(j_delegate); + } Java_PermissionDialogController_createDialog(env, j_delegate); } } // namespace permissions -#define BRAVE_PERMISSION_DIALOG_DELEGATE_ACCEPT \ +#define BRAVE_PERMISSION_DIALOG_DELEGATE_ACCEPT \ ApplyLifetimeToPermissionRequests(env, obj, permission_prompt_); \ ApplyWidevineDontAskOption(env, obj, permission_prompt_); -#define BRAVE_PERMISSION_DIALOG_DELEGATE_CANCEL \ +#define BRAVE_PERMISSION_DIALOG_DELEGATE_CANCEL \ ApplyLifetimeToPermissionRequests(env, obj, permission_prompt_); \ ApplyWidevineDontAskOption(env, obj, permission_prompt_); #define Java_PermissionDialogController_createDialog \ diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogDelegate.java index a68833d0aa2..ab24dfc7990 100644 --- a/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogDelegate.java @@ -8,6 +8,7 @@ package org.chromium.components.permissions; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +/* PermissionDialogDelegate override */ @JNINamespace("permissions") public class BravePermissionDialogDelegate { /** Text to show before lifetime options. */ diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogModel.java b/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogModel.java index 10c726b5d33..7838c14b167 100644 --- a/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogModel.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogModel.java @@ -16,9 +16,7 @@ import android.provider.Browser; import android.text.SpannableString; import android.text.TextUtils; import android.text.method.LinkMovementMethod; -import android.text.style.UnderlineSpan; import android.view.View; -import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.CheckBox; import android.widget.LinearLayout; @@ -27,10 +25,9 @@ import android.widget.RadioGroup; import android.widget.TextView; import androidx.browser.customtabs.CustomTabsIntent; -import androidx.core.widget.TextViewCompat; -import org.chromium.base.IntentUtils; import org.chromium.base.ApiCompatibilityUtils; +import org.chromium.base.IntentUtils; import org.chromium.ui.LayoutInflaterUtils; import org.chromium.ui.UiUtils; import org.chromium.ui.base.ViewUtils; @@ -63,26 +60,27 @@ class BravePermissionDialogModel { return model; } - private static PropertyModel createModelForWidevineRequest(ModalDialogProperties.Controller controller, - PermissionDialogDelegate delegate, Runnable touchFilteredCallback) { + private static PropertyModel createModelForWidevineRequest( + ModalDialogProperties.Controller controller, PermissionDialogDelegate delegate, + Runnable touchFilteredCallback) { BravePermissionDialogDelegate braveDelegate = - (BravePermissionDialogDelegate) (Object) delegate; + (BravePermissionDialogDelegate) (Object) delegate; Context context = delegate.getWindow().getContext().get(); assert context != null; - View customView = LayoutInflaterUtils.inflate(context, R.layout.widevine_permission_request_custom_view, null); + View customView = LayoutInflaterUtils.inflate( + context, R.layout.widevine_permission_request_custom_view, null); String messageText = delegate.getMessageText(); // Override Allow button text String primaryButtonText = context.getResources().getString( R.string.widevine_permission_request_primary_button_text); assert !TextUtils.isEmpty(messageText) && !TextUtils.isEmpty(primaryButtonText); - SpannableString learnMoreLink = SpanApplier.applySpans(context.getResources().getString( - R.string.widevine_permission_request_link), + SpannableString learnMoreLink = SpanApplier.applySpans( + context.getResources().getString(R.string.widevine_permission_request_link), new SpanApplier.SpanInfo("", "", - new NoUnderlineClickableSpan( - context, R.color.brave_link, result -> { - openUrlInCustomTab(context, URL_WIDEVINE_LEARN_MORE); - }))); + new NoUnderlineClickableSpan(context, R.color.brave_link, result -> { + openUrlInCustomTab(context, URL_WIDEVINE_LEARN_MORE); + }))); TextView messageTextView = customView.findViewById(R.id.message); messageTextView.setText(messageText); @@ -93,23 +91,25 @@ class BravePermissionDialogModel { linkTextView.setMovementMethod(LinkMovementMethod.getInstance()); CheckBox checkbox = customView.findViewById(R.id.checkbox); - checkbox.setOnCheckedChangeListener((buttonView, isChecked) -> { - braveDelegate.setWidevineDontAsk(isChecked); - }); + checkbox.setOnCheckedChangeListener( + (buttonView, isChecked) -> { braveDelegate.setWidevineDontAsk(isChecked); }); - PropertyModel model = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) - .with(ModalDialogProperties.CONTROLLER, controller) - .with(ModalDialogProperties.TITLE, - context.getResources().getString(R.string.widevine_permission_request_title)) - .with(ModalDialogProperties.CUSTOM_VIEW, customView) - .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, primaryButtonText) - .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, delegate.getSecondaryButtonText()) - .with(ModalDialogProperties.CONTENT_DESCRIPTION, messageText) - .with(ModalDialogProperties.FILTER_TOUCH_FOR_SECURITY, true) - .with(ModalDialogProperties.TOUCH_FILTERED_CALLBACK, touchFilteredCallback) - .with(ModalDialogProperties.BUTTON_TAP_PROTECTION_PERIOD_MS, - UiUtils.PROMPT_INPUT_PROTECTION_SHORT_DELAY_MS) - .build(); + PropertyModel model = + new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) + .with(ModalDialogProperties.CONTROLLER, controller) + .with(ModalDialogProperties.TITLE, + context.getResources().getString( + R.string.widevine_permission_request_title)) + .with(ModalDialogProperties.CUSTOM_VIEW, customView) + .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, primaryButtonText) + .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, + delegate.getSecondaryButtonText()) + .with(ModalDialogProperties.CONTENT_DESCRIPTION, messageText) + .with(ModalDialogProperties.FILTER_TOUCH_FOR_SECURITY, true) + .with(ModalDialogProperties.TOUCH_FILTERED_CALLBACK, touchFilteredCallback) + .with(ModalDialogProperties.BUTTON_TAP_PROTECTION_PERIOD_MS, + UiUtils.PROMPT_INPUT_PROTECTION_SHORT_DELAY_MS) + .build(); return model; } diff --git a/components/permissions/android/java_sources.gni b/components/permissions/android/java_sources.gni index b54b8c94caa..cc234f4a202 100644 --- a/components/permissions/android/java_sources.gni +++ b/components/permissions/android/java_sources.gni @@ -1,3 +1,8 @@ +# Copyright (c) 2023 The Brave Authors. All rights reserved. +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at https://mozilla.org/MPL/2.0/. + brave_components_permissions_java_sources = [ "//brave/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogDelegate.java", "//brave/components/permissions/android/java/src/org/chromium/components/permissions/BravePermissionDialogModel.java", diff --git a/renderer/DEPS b/renderer/DEPS index 968c4fe7b4c..0000df873e5 100644 --- a/renderer/DEPS +++ b/renderer/DEPS @@ -3,10 +3,12 @@ include_rules = [ "+chrome/common", "+chrome/renderer", "+content/public/renderer", + "+media/base", "+mojo/public/cpp/bindings", "+third_party/blink/public/common", "+third_party/blink/public/platform", "+third_party/blink/public/public_buildflags.h", "+third_party/blink/public/web", + "+third_party/widevine/cdm", "+v8/include", ] diff --git a/renderer/brave_content_renderer_client.cc b/renderer/brave_content_renderer_client.cc index 9fd71e61548..cb597f68a5e 100644 --- a/renderer/brave_content_renderer_client.cc +++ b/renderer/brave_content_renderer_client.cc @@ -5,6 +5,8 @@ #include "brave/renderer/brave_content_renderer_client.h" +#include + #include "base/feature_list.h" #include "base/ranges/algorithm.h" #include "brave/components/brave_search/common/brave_search_utils.h" @@ -24,7 +26,6 @@ #include "chrome/common/chrome_isolated_world_ids.h" #include "chrome/renderer/chrome_render_thread_observer.h" #include "content/public/renderer/render_thread.h" -#include "media/base/key_system_info.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/platform/web_runtime_features.h" #include "third_party/blink/public/web/modules/service_worker/web_service_worker_context_proxy.h" @@ -50,22 +51,23 @@ #endif #if BUILDFLAG(ENABLE_WIDEVINE) +#include "media/base/key_system_info.h" #include "third_party/widevine/cdm/widevine_cdm_common.h" #endif namespace { -void MaybeRemoveWidevineSupport( - media::GetSupportedKeySystemsCB cb, media::KeySystemInfos key_systems) { +void MaybeRemoveWidevineSupport(media::GetSupportedKeySystemsCB cb, + media::KeySystemInfos key_systems) { #if BUILDFLAG(ENABLE_WIDEVINE) && BUILDFLAG(IS_ANDROID) auto dynamic_params = BraveRenderThreadObserver::GetDynamicParams(); if (!dynamic_params.widevine_enabled) { key_systems.erase( - base::ranges::remove( - key_systems, kWidevineKeySystem, - [](const std::unique_ptr &key_system) { - return key_system->GetBaseKeySystemName(); - }), - key_systems.cend()); + base::ranges::remove( + key_systems, kWidevineKeySystem, + [](const std::unique_ptr& key_system) { + return key_system->GetBaseKeySystemName(); + }), + key_systems.cend()); } #endif cb.Run(std::move(key_systems)); @@ -172,7 +174,7 @@ void BraveContentRendererClient::RenderFrameCreated( void BraveContentRendererClient::GetSupportedKeySystems( media::GetSupportedKeySystemsCB cb) { ChromeContentRendererClient::GetSupportedKeySystems( - base::BindRepeating(&MaybeRemoveWidevineSupport, cb)); + base::BindRepeating(&MaybeRemoveWidevineSupport, cb)); } void BraveContentRendererClient::RunScriptsAtDocumentStart( diff --git a/renderer/sources.gni b/renderer/sources.gni index 6671b253130..bf28febfcae 100644 --- a/renderer/sources.gni +++ b/renderer/sources.gni @@ -8,6 +8,7 @@ import("//brave/components/brave_vpn/common/buildflags/buildflags.gni") import("//brave/components/playlist/common/buildflags/buildflags.gni") import("//brave/components/speedreader/common/buildflags/buildflags.gni") import("//brave/components/tor/buildflags/buildflags.gni") +import("//third_party/widevine/cdm/widevine.gni") brave_chrome_renderer_sources = [ "//brave/renderer/brave_content_renderer_client.cc", @@ -67,5 +68,9 @@ if (enable_brave_vpn) { } } +if (enable_widevine) { + brave_chrome_renderer_deps += [ "//third_party/widevine/cdm:headers" ] +} + # do not add anything else here brave_chrome_renderer_public_deps = []