Presubmit, gn and test fixes

This commit is contained in:
wchen342
2023-09-01 18:31:22 +03:00
parent 1aa9100969
commit a0499c1f74
25 changed files with 160 additions and 133 deletions
+1
View File
@@ -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",
@@ -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;
@@ -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;
}
}
+5
View File
@@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/quick_action_search_and_bookmark_widget_tint" android:fillType="evenOdd" android:pathData="M21.841,22H1.986C0.891,22 0,21.103 0,20V4C0,2.897 0.891,2 1.986,2H21.841C22.935,2 24,2.897 24,4V20C24,21.103 22.935,22 21.841,22ZM21.996,4H1.986V12.825L7.296,8.241C7.689,7.901 8.277,7.923 8.644,8.293L13.992,13.68L17.274,11.2C17.697,10.881 18.294,10.951 18.632,11.36L21.996,15.426V4ZM21.996,18.55L17.71,13.37L14.494,15.8C14.099,16.099 13.546,16.059 13.196,15.707L7.89,10.362L1.986,15.46V20H21.996V18.55ZM15.884,8C15.884,6.897 16.775,6 17.871,6C18.965,6 19.855,6.897 19.855,8C19.855,9.103 18.965,10 17.871,10C16.775,10 15.884,9.103 15.884,8ZM17.868,8.001L17.871,9L17.872,8C17.871,8 17.869,8 17.868,8.001Z"/>
</vector>
@@ -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"
@@ -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"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.settings.AppearancePreferences"
+2 -1
View File
@@ -14,6 +14,7 @@
android:key="background_video_playback"
android:defaultValue="false"
android:icon="@drawable/ic_bg_video_playback"
android:title="@string/prefs_background_video_playback"/>
android:title="@string/prefs_background_video_playback"
android:summary="@string/prefs_background_video_playback_on" />
</PreferenceScreen>
+1 -1
View File
@@ -232,7 +232,7 @@
</if>
<if expr="is_android">
<message name="IDS_WIDEVINE_PERMISSION_REQUEST_TEXT_FRAGMENT_ENABLE_SYSTEM" desc="Text fragment for Widevine permission request. 'Widevine' is the name of a plugin and should not be translated.">
<ph name="URL">$1<ex>https://www.youtube.com</ex></ph> 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.)
<ph name="URL">$1<ex>https://www.youtube.com</ex></ph> 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.
</message>
</if>
<message name="IDS_WIDEVINE_INSTALL_MESSAGE" desc="Bubble info text when Widevine is not installed. 'Widevine' is the name of a plugin and should not be translated.">
+2 -3
View File
@@ -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_)
+3 -2
View File
@@ -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);
@@ -40,7 +40,8 @@ KeyedService* BraveRendererUpdaterFactory::BuildServiceInstanceFor(
auto* keyring_service =
brave_wallet::KeyringServiceFactory::GetServiceForContext(context);
return new BraveRendererUpdater(static_cast<Profile*>(context),
keyring_service, g_browser_process->local_state());
keyring_service,
g_browser_process->local_state());
}
bool BraveRendererUpdaterFactory::ServiceIsCreatedWithBrowserContext() const {
@@ -820,7 +820,7 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
<ph name="BEGIN_LINK">&lt;LINK&gt;</ph>Learn more about Widevine<ph name="END_LINK">&lt;/LINK&gt;</ph>
</message>
<message name="IDS_WIDEVINE_PERMISSION_REQUEST_PRIMARY_BUTTON_TEXT" desc="Primary button text for Widevine permission request.">
ALLOW (RELAUNCH NOW)
Allow (Relaunch Now)
</message>
<message name="IDS_PREFS_APPEARANCE" desc="Title of Appearance settings, which allows the user to change display settings. [CHAR-LIMIT=32]">
Appearance
+14 -11
View File
@@ -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" ]
}
}
@@ -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 {
@@ -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,
+5 -2
View File
@@ -5,6 +5,8 @@
#include "brave/browser/widevine/widevine_utils.h"
#include <string>
#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
+2 -6
View File
@@ -6,10 +6,6 @@
#ifndef BRAVE_BROWSER_WIDEVINE_WIDEVINE_UTILS_H_
#define BRAVE_BROWSER_WIDEVINE_WIDEVINE_UTILS_H_
#include <string>
#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(
@@ -1,4 +1,5 @@
include_rules = [
"+brave/browser/widevine",
"+brave/components/l10n/common",
"+brave/components/permissions/android/jni_headers",
"+components/grit",
@@ -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<jobject>& obj); \
#define CreateJavaDelegate \
Java_PermissionDialogController_createDialog_BraveImpl( \
JNIEnv* env, const base::android::JavaRef<jobject>& 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<PermissionRequest*>& requests = permission_prompt->delegate()->Requests();
return requests.size() == 1 && requests[0]->request_type() == RequestType::kWidevine;
const std::vector<PermissionRequest*>& requests =
permission_prompt->delegate()->Requests();
return requests.size() == 1 &&
requests[0]->request_type() == RequestType::kWidevine;
}
#endif
void ApplyWidevineDontAskOption(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
PermissionPromptAndroid* permission_prompt) {
void ApplyWidevineDontAskOption(JNIEnv* env,
const JavaParamRef<jobject>& obj,
PermissionPromptAndroid* permission_prompt) {
#if BUILDFLAG(ENABLE_WIDEVINE)
if (IsWidevineRequest(permission_prompt)) {
const bool dontAsk = Java_BravePermissionDialogDelegate_getWidevineDontAsk(env, obj);
WidevinePermissionRequest* widevineRequest = static_cast<WidevinePermissionRequest*>(
permission_prompt->delegate()->Requests()[0]);
const bool dontAsk =
Java_BravePermissionDialogDelegate_getWidevineDontAsk(env, obj);
WidevinePermissionRequest* widevineRequest =
static_cast<WidevinePermissionRequest*>(
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<jobject>& 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<jobject>& 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 \
@@ -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. */
@@ -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("<LINK>", "</LINK>",
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;
}
@@ -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",
+2
View File
@@ -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",
]
+12 -10
View File
@@ -5,6 +5,8 @@
#include "brave/renderer/brave_content_renderer_client.h"
#include <utility>
#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<media::KeySystemInfo> &key_system) {
return key_system->GetBaseKeySystemName();
}),
key_systems.cend());
base::ranges::remove(
key_systems, kWidevineKeySystem,
[](const std::unique_ptr<media::KeySystemInfo>& 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(
+5
View File
@@ -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 = []