Compare commits
30
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09fd705651 | ||
|
|
eae1582b1c | ||
|
|
9aed12ac5a | ||
|
|
e46f4a3ce3 | ||
|
|
494445558a | ||
|
|
160843fd10 | ||
|
|
7eaed0f05d | ||
|
|
378a847e3c | ||
|
|
fb6642d4ec | ||
|
|
054b9d28c0 | ||
|
|
547f3a53db | ||
|
|
6434bfaeae | ||
|
|
4c39a5117e | ||
|
|
f128cf407a | ||
|
|
58c965d169 | ||
|
|
9e6ed37ef4 | ||
|
|
d53bfc2598 | ||
|
|
b965da1724 | ||
|
|
b83689ef2e | ||
|
|
e07575f25c | ||
|
|
5405cf4770 | ||
|
|
85b34148a4 | ||
|
|
bd850c862f | ||
|
|
7809a7f31c | ||
|
|
2811f2279f | ||
|
|
e08c144f4e | ||
|
|
b28092bf50 | ||
|
|
19976aa998 | ||
|
|
82789a4bd0 | ||
|
|
3e47fcf446 |
+1
-1
@@ -1 +1 @@
|
||||
125.0.6422.76
|
||||
125.0.6422.150
|
||||
@@ -289,6 +289,10 @@ Allow-building-without-supervised-users.patch
|
||||
Keep-ComputePressure-disabled.patch
|
||||
Android-Toolbar-Scroll-Ablation-setting.patch
|
||||
Keep-disabled-WebViewMediaIntegrityApi.patch
|
||||
Enable-menu-on-reload-button.patch
|
||||
Enable-Global-Privacy-Control.patch
|
||||
Enable-Do-Not-Track-by-default.patch
|
||||
Media-fingerprinting-mitigations.patch
|
||||
|
||||
Temp-PerformanceNavigationTiming-privacy-fix.patch
|
||||
Temp-disable-predictive-back-gesture.patch
|
||||
|
||||
@@ -208,7 +208,7 @@ diff --git a/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -5436,6 +5436,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
@@ -5427,6 +5427,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
|
||||
</message>
|
||||
|
||||
|
||||
@@ -513,7 +513,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -1481,6 +1481,9 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
@@ -1472,6 +1472,9 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
<message name="IDS_ANDROID_APP_HISTORY_OPEN_FULL_OTHER_FORMS" desc="The informational message at the top of the history page letting users know that app-specific history may be missing some entries, followed by the info on the other forms of browing history.">
|
||||
Some of your web history might not show up here. If needed, tap Open full Chrome history. Also, Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK"><link></ph>myactivity.google.com<ph name="END_LINK"></link></ph>.
|
||||
</message>
|
||||
|
||||
@@ -234,7 +234,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -1692,6 +1692,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
@@ -1683,6 +1683,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
<message name="IDS_DISABLE_TOOLBAR_SWIPE_UP" desc="Summary of the preference that allows the user to disable toolbar swipeup.">
|
||||
Disable toolbar swipe up
|
||||
</message>
|
||||
@@ -247,7 +247,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
||||
|
||||
<!-- Safety check -->
|
||||
<message name="IDS_PREFS_SAFETY_CHECK" desc="Title of the Safety check element in settings, allowing the user to check multiple areas of browser safety. [CHAR_LIMIT=32]">
|
||||
@@ -2871,6 +2877,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
@@ -2862,6 +2868,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
<message name="IDS_CONTEXTMENU_OPEN_IN_NEW_CHROME_TAB" desc="Context sensitive menu item to open the selected link in a new Chrome tab from Chrome Custom Tab. [CHAR_LIMIT=30]">
|
||||
Open in new Chrome tab
|
||||
</message>
|
||||
|
||||
@@ -6,6 +6,7 @@ In site settings added ability to block all popups per site
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
.../tab_under_navigation_throttle.cc | 1 +
|
||||
.../android/popup_blocked_message_delegate.cc | 20 +++-
|
||||
.../android/popup_blocked_message_delegate.h | 1 +
|
||||
components/blocked_content/popup_blocker.cc | 3 +
|
||||
@@ -14,11 +15,22 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../bromite_content_settings/popups.grdp | 12 ++
|
||||
.../bromite_content_settings/popups.inc | 8 ++
|
||||
.../core/browser/content_settings_registry.cc | 2 +-
|
||||
8 files changed, 152 insertions(+), 3 deletions(-)
|
||||
9 files changed, 153 insertions(+), 3 deletions(-)
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
|
||||
create mode 100644 components/browser_ui/strings/bromite_content_settings/popups.grdp
|
||||
create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc
|
||||
|
||||
diff --git a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
|
||||
--- a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
|
||||
+++ b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
|
||||
@@ -72,6 +72,7 @@ void LogTabUnderAttempt(content::NavigationHandle* handle) {
|
||||
BASE_FEATURE(kBlockTabUnders,
|
||||
"BlockTabUnders",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_ENABLED(kBlockTabUnders);
|
||||
|
||||
// static
|
||||
std::unique_ptr<content::NavigationThrottle>
|
||||
diff --git a/components/blocked_content/android/popup_blocked_message_delegate.cc b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||
--- a/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||
+++ b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||
|
||||
@@ -17,7 +17,7 @@ Require: bromite-build-utils.patch
|
||||
.../settings/privacy_page/privacy_page.ts | 77 +++-
|
||||
chrome/browser/resources/settings/route.ts | 2 +
|
||||
...settings_category_default_radio_group.html | 12 +
|
||||
.../settings_category_default_radio_group.ts | 22 +-
|
||||
.../settings_category_default_radio_group.ts | 23 +-
|
||||
.../settings/site_settings/site_details.html | 1 +
|
||||
.../settings/site_settings/site_details.ts | 33 +-
|
||||
.../site_details_permission.html | 8 +-
|
||||
@@ -83,7 +83,7 @@ Require: bromite-build-utils.patch
|
||||
.../platform/web_content_settings_client.h | 9 +
|
||||
.../execution_context/execution_context.cc | 16 +
|
||||
.../execution_context/execution_context.h | 5 +
|
||||
72 files changed, 1865 insertions(+), 95 deletions(-)
|
||||
72 files changed, 1866 insertions(+), 95 deletions(-)
|
||||
create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java
|
||||
@@ -354,12 +354,13 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d
|
||||
this.categoryEnabled_ ? allowOption : ContentSetting.BLOCK);
|
||||
}
|
||||
|
||||
@@ -224,7 +242,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends
|
||||
@@ -224,7 +242,10 @@ export class SettingsCategoryDefaultRadioGroupElement extends
|
||||
}
|
||||
|
||||
const enabled = this.computeIsSettingEnabled(update.setting);
|
||||
- const prefValue = enabled ? SiteContentRadioSetting.ENABLED :
|
||||
+ const ask = this.computeIsSettingAsk(update.setting);
|
||||
+ const ask = this.computeIsSettingAsk(update.setting)
|
||||
+ && this.showAskSetting_(this.category);
|
||||
+ const prefValue = ask ? SiteContentRadioSetting.ASK :
|
||||
+ enabled ? SiteContentRadioSetting.ENABLED :
|
||||
SiteContentRadioSetting.DISABLED;
|
||||
@@ -2491,9 +2492,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
|
||||
+ checked
|
||||
+ ? ContentSettingsResources.getDefaultEnabledValue(contentType)
|
||||
+ : ContentSettingsResources.getDefaultDisabledValue(contentType);
|
||||
+ p.setSummary(
|
||||
+ ContentSettingsResources.getCategorySummary(
|
||||
+ defaultForToggle, /* isOneTime= */ false));
|
||||
+ summary = ContentSettingsResources.getCategorySummary(
|
||||
+ contentType, defaultForToggle, /* isOneTime= */ false);
|
||||
+ p.setSummary(summary);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -13214,7 +13214,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -2178,7 +2178,7 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
@@ -2169,7 +2169,7 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
About Chrome
|
||||
</message>
|
||||
<message name="IDS_LEGAL_INFORMATION_SUMMARY" desc="Summary for legal information" meaning="Android">
|
||||
|
||||
@@ -9,13 +9,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
.../browser/ChromeActionModeHandler.java | 4 +-
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 15 +-
|
||||
...ActivityTabWebContentsDelegateAndroid.java | 10 +-
|
||||
.../compositor/layouts/LayoutManagerImpl.java | 8 ++
|
||||
.../tab/TabContextMenuItemDelegate.java | 7 +-
|
||||
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
|
||||
.../Customize-selection-popup.grdp | 34 +++++
|
||||
.../res/xml/accessibility_preferences.xml | 24 ++++
|
||||
.../selection/SelectActionMenuHelper.java | 131 ++++++++++++------
|
||||
.../selection/SmartSelectionClient.java | 4 +
|
||||
8 files changed, 178 insertions(+), 50 deletions(-)
|
||||
10 files changed, 193 insertions(+), 52 deletions(-)
|
||||
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
|
||||
@@ -57,6 +59,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
Toast.makeText(
|
||||
ChromeTabbedActivity.this,
|
||||
R.string.open_in_new_tab_toast,
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
|
||||
@@ -191,12 +191,20 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat
|
||||
// Skip opening a new Tab if it doesn't make sense.
|
||||
if (mTab.isClosing()) return false;
|
||||
|
||||
+ int tabLaunchType = TabLaunchType.FROM_LONGPRESS_FOREGROUND;
|
||||
+ boolean selectionPopupTabsForeground =
|
||||
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
||||
+ "selection_popup_tabs_foreground", false);
|
||||
+ if (selectionPopupTabsForeground) {
|
||||
+ tabLaunchType = TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP;
|
||||
+ }
|
||||
+
|
||||
// Creating new Tabs asynchronously requires starting a new Activity to create the Tab,
|
||||
// so the Tab returned will always be null. There's no way to know synchronously
|
||||
// whether the Tab is created, so assume it's always successful.
|
||||
boolean success =
|
||||
tabCreator.createTabWithWebContents(
|
||||
- mTab, webContents, TabLaunchType.FROM_LONGPRESS_FOREGROUND, url);
|
||||
+ mTab, webContents, tabLaunchType, url);
|
||||
|
||||
if (success) {
|
||||
if (disposition == WindowOpenDisposition.NEW_FOREGROUND_TAB) {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
|
||||
@@ -82,6 +109,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
|
||||
float lastTapX = LocalizationUtils.isLayoutRtl() ? mHost.getWidth() * mPxToDp : 0.f;
|
||||
float lastTapY = 0.f;
|
||||
if (launchType != TabLaunchType.FROM_CHROME_UI) {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||
@@ -285,8 +285,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
||||
public void onOpenImageInNewTab(GURL url, Referrer referrer) {
|
||||
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
|
||||
loadUrlParams.setReferrer(referrer);
|
||||
+ @TabLaunchType int type = TabLaunchType.FROM_LONGPRESS_BACKGROUND;
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(
|
||||
+ "selection_popup_tabs_foreground", false)) {
|
||||
+ type = TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP;
|
||||
+ }
|
||||
mTabModelSelector.openNewTab(
|
||||
- loadUrlParams, TabLaunchType.FROM_LONGPRESS_BACKGROUND, mTab, isIncognito());
|
||||
+ loadUrlParams, type, mTab, isIncognito());
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Wed, 29 May 2024 13:49:01 +0000
|
||||
Subject: Enable Do-Not-Track by default
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
components/privacy_sandbox/tracking_protection_prefs.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
--- a/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
+++ b/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
@@ -79,7 +79,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
prefs::kFingerprintingProtectionEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kEnableDoNotTrack, false,
|
||||
+ prefs::kEnableDoNotTrack, true,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(prefs::kEnableGPC, true);
|
||||
}
|
||||
--
|
||||
@@ -0,0 +1,826 @@
|
||||
From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Wed, 29 May 2024 13:43:50 +0000
|
||||
Subject: Enable Global Privacy Control
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
chrome/android/chrome_java_resources.gni | 1 +
|
||||
chrome/android/chrome_java_sources.gni | 1 +
|
||||
.../android/java/res/xml/gpc_preferences.xml | 15 +++
|
||||
.../java/res/xml/privacy_preferences.xml | 4 +
|
||||
.../browser/privacy/settings/GpcSettings.java | 34 ++++++
|
||||
.../privacy/settings/PrivacySettings.java | 9 ++
|
||||
chrome/app/settings_strings.grdp | 15 +++
|
||||
.../api/settings_private/prefs_util.cc | 1 +
|
||||
chrome/browser/renderer_preferences_util.cc | 3 +
|
||||
chrome/browser/resources/settings/BUILD.gn | 1 +
|
||||
.../settings/privacy_page/cookies_page.html | 2 +
|
||||
.../settings/privacy_page/cookies_page.ts | 1 +
|
||||
.../settings/privacy_page/gpc_toggle.html | 32 +++++
|
||||
.../settings/privacy_page/gpc_toggle.ts | 112 ++++++++++++++++++
|
||||
.../Enable-Global-Privacy-Control.grdp | 15 +++
|
||||
chrome/browser/ui/prefs/pref_watcher.cc | 4 +
|
||||
chrome/browser/ui/prefs/pref_watcher.h | 1 +
|
||||
.../settings_localized_strings_provider.cc | 3 +
|
||||
.../tracking_protection_prefs.cc | 1 +
|
||||
.../tracking_protection_prefs.h | 2 +
|
||||
.../tracking_protection_settings.cc | 15 +++
|
||||
.../tracking_protection_settings.h | 3 +
|
||||
.../tracking_protection_settings_observer.h | 2 +
|
||||
.../browser_initiated_resource_request.cc | 6 +
|
||||
content/renderer/render_frame_impl.cc | 4 +
|
||||
.../blink/common/loader/loader_constants.cc | 1 +
|
||||
.../renderer_preferences_mojom_traits.cc | 1 +
|
||||
.../public/common/loader/loader_constants.h | 1 +
|
||||
.../renderer_preferences.h | 1 +
|
||||
.../renderer_preferences_mojom_traits.h | 5 +
|
||||
.../public/mojom/renderer_preferences.mojom | 2 +
|
||||
.../renderer/bindings/idl_in_modules.gni | 5 +
|
||||
.../renderer/core/exported/web_view_impl.cc | 3 +
|
||||
third_party/blink/renderer/modules/BUILD.gn | 4 +
|
||||
.../modules/global_privacy_control/BUILD.gn | 8 ++
|
||||
.../global_privacy_control.cc | 12 ++
|
||||
.../global_privacy_control.h | 15 +++
|
||||
.../navigator_global_privacy_control.idl | 6 +
|
||||
...orker_navigator_global_privacy_control.idl | 6 +
|
||||
.../web_service_worker_fetch_context_impl.cc | 3 +
|
||||
...ted_or_shared_worker_fetch_context_impl.cc | 3 +
|
||||
.../platform/runtime_enabled_features.json5 | 5 +
|
||||
42 files changed, 368 insertions(+)
|
||||
create mode 100644 chrome/android/java/res/xml/gpc_preferences.xml
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java
|
||||
create mode 100644 chrome/browser/resources/settings/privacy_page/gpc_toggle.html
|
||||
create mode 100644 chrome/browser/resources/settings/privacy_page/gpc_toggle.ts
|
||||
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-Global-Privacy-Control.grdp
|
||||
create mode 100644 third_party/blink/renderer/modules/global_privacy_control/BUILD.gn
|
||||
create mode 100644 third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.cc
|
||||
create mode 100644 third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.h
|
||||
create mode 100644 third_party/blink/renderer/modules/global_privacy_control/navigator_global_privacy_control.idl
|
||||
create mode 100644 third_party/blink/renderer/modules/global_privacy_control/worker_navigator_global_privacy_control.idl
|
||||
|
||||
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
|
||||
--- a/chrome/android/chrome_java_resources.gni
|
||||
+++ b/chrome/android/chrome_java_resources.gni
|
||||
@@ -640,6 +640,7 @@ chrome_java_resources = [
|
||||
"java/res/xml/contextual_search_preferences.xml",
|
||||
"java/res/xml/developer_preferences.xml",
|
||||
"java/res/xml/do_not_track_preferences.xml",
|
||||
+ "java/res/xml/gpc_preferences.xml",
|
||||
"java/res/xml/google_services_preferences.xml",
|
||||
"java/res/xml/homepage_preferences.xml",
|
||||
"java/res/xml/legal_information_preferences.xml",
|
||||
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
||||
--- a/chrome/android/chrome_java_sources.gni
|
||||
+++ b/chrome/android/chrome_java_sources.gni
|
||||
@@ -985,6 +985,7 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
|
||||
"java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java",
|
||||
"java/src/org/chromium/chrome/browser/policy/PolicyAuditorBridge.java",
|
||||
+ "java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java",
|
||||
"java/src/org/chromium/chrome/browser/privacy/settings/DoNotTrackSettings.java",
|
||||
"java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java",
|
||||
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java",
|
||||
diff --git a/chrome/android/java/res/xml/gpc_preferences.xml b/chrome/android/java/res/xml/gpc_preferences.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/xml/gpc_preferences.xml
|
||||
@@ -0,0 +1,15 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<PreferenceScreen
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
+
|
||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||
+ android:key="gpc_switch"
|
||||
+ android:summaryOn="@string/text_on"
|
||||
+ android:summaryOff="@string/text_off" />
|
||||
+
|
||||
+ <org.chromium.components.browser_ui.settings.TextMessagePreference
|
||||
+ android:title="@string/gpc_description"
|
||||
+ app:allowDividerBelow="false" />
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -55,6 +55,10 @@ found in the LICENSE file.
|
||||
android:key="do_not_track"
|
||||
android:title="@string/do_not_track_title"
|
||||
android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings" />
|
||||
+ <Preference
|
||||
+ android:key="gpc"
|
||||
+ android:title="@string/gpc_title"
|
||||
+ android:fragment="org.chromium.chrome.browser.privacy.settings.GpcSettings" />
|
||||
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||
android:key="allow_custom_tab_intents"
|
||||
android:title="@string/allow_custom_tab_intents_title"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java
|
||||
@@ -0,0 +1,34 @@
|
||||
+package org.chromium.chrome.browser.privacy.settings;
|
||||
+
|
||||
+import android.os.Bundle;
|
||||
+
|
||||
+import org.chromium.chrome.R;
|
||||
+import org.chromium.chrome.browser.preferences.Pref;
|
||||
+import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
|
||||
+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
|
||||
+import org.chromium.components.browser_ui.settings.SettingsUtils;
|
||||
+import org.chromium.components.prefs.PrefService;
|
||||
+import org.chromium.components.user_prefs.UserPrefs;
|
||||
+
|
||||
+public class GpcSettings extends ChromeBaseSettingsFragment {
|
||||
+ private static final String PREF_SWITCH = "gpc_switch";
|
||||
+
|
||||
+ @Override
|
||||
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
+ SettingsUtils.addPreferencesFromResource(this, R.xml.gpc_preferences);
|
||||
+ getActivity().setTitle(R.string.gpc_title);
|
||||
+
|
||||
+ ChromeSwitchPreference switchPreference =
|
||||
+ (ChromeSwitchPreference) findPreference(PREF_SWITCH);
|
||||
+
|
||||
+ PrefService prefService = UserPrefs.get(getProfile());
|
||||
+ boolean isEnabled = prefService.getBoolean(Pref.ENABLE_GPC);
|
||||
+ switchPreference.setChecked(isEnabled);
|
||||
+
|
||||
+ switchPreference.setOnPreferenceChangeListener(
|
||||
+ (preference, newValue) -> {
|
||||
+ prefService.setBoolean(Pref.ENABLE_GPC, (boolean) newValue);
|
||||
+ return true;
|
||||
+ });
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||
@@ -93,6 +93,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||
private static final String PREF_SECURE_DNS = "secure_dns";
|
||||
private static final String PREF_USAGE_STATS = "usage_stats_reporting";
|
||||
private static final String PREF_DO_NOT_TRACK = "do_not_track";
|
||||
+ private static final String PREF_GPC = "gpc";
|
||||
private static final String PREF_SAFE_BROWSING = "safe_browsing";
|
||||
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
|
||||
private static final String PREF_REFERER_POLICY = "referers_policy";
|
||||
@@ -446,6 +447,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||
: R.string.text_off);
|
||||
}
|
||||
|
||||
+ Preference gpcPref = findPreference(PREF_GPC);
|
||||
+ if (gpcPref != null) {
|
||||
+ gpcPref.setSummary(
|
||||
+ UserPrefs.get(getProfile()).getBoolean(Pref.ENABLE_GPC)
|
||||
+ ? R.string.text_on
|
||||
+ : R.string.text_off);
|
||||
+ }
|
||||
+
|
||||
Preference ipProtectionPref = findPreference(PREF_IP_PROTECTION);
|
||||
if (ipProtectionPref != null) {
|
||||
ipProtectionPref.setSummary(
|
||||
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
|
||||
--- a/chrome/app/settings_strings.grdp
|
||||
+++ b/chrome/app/settings_strings.grdp
|
||||
@@ -2172,6 +2172,21 @@
|
||||
<message name="IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL" desc="The accessibility label for a link to learn more about Do Not Track">
|
||||
Learn more about Do Not Track
|
||||
</message>
|
||||
+ <message name="IDS_SETTINGS_ENABLE_GPC" desc="">
|
||||
+ Global Privacy Control "Sec-GPC"
|
||||
+ </message>
|
||||
+ <message name="IDS_SETTINGS_ENABLE_GPC_DIALOG_TITLE" desc="">
|
||||
+ Global Privacy Control "Sec-GPC"
|
||||
+ </message>
|
||||
+ <message name="IDS_SETTINGS_ENABLE_GPC_DIALOG_TEXT" desc="">
|
||||
+ Enables support for Global Privacy Control signals.
|
||||
+
|
||||
+Right to opt-out of sale or sharing: You may request that businesses stop selling or sharing your personal information (“opt-out”).
|
||||
+
|
||||
+Businesses cannot sell or share your personal information after they receive your opt-out request unless you later authorize them to do so again.
|
||||
+
|
||||
+Please note that it only applies to the states of California (under CCPA and CPRA) and Colorado (under CoPA).
|
||||
+ </message>
|
||||
<message name="IDS_SETTINGS_PERMISSIONS" desc="Name of the settings page which allows users to manage permissions and site content settings">
|
||||
Permissions and content settings
|
||||
</message>
|
||||
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
|
||||
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
|
||||
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
|
||||
@@ -373,6 +373,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
|
||||
(*s_allowlist)[::prefs::kTrackingProtectionLevel] =
|
||||
settings_api::PrefType::kNumber;
|
||||
(*s_allowlist)[::prefs::kEnableDoNotTrack] = settings_api::PrefType::kBoolean;
|
||||
+ (*s_allowlist)[::prefs::kEnableGPC] = settings_api::PrefType::kBoolean;
|
||||
(*s_allowlist)[::prefs::kIpProtectionEnabled] =
|
||||
settings_api::PrefType::kBoolean;
|
||||
(*s_allowlist)[::prefs::kFingerprintingProtectionEnabled] =
|
||||
diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc
|
||||
--- a/chrome/browser/renderer_preferences_util.cc
|
||||
+++ b/chrome/browser/renderer_preferences_util.cc
|
||||
@@ -118,6 +118,9 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs,
|
||||
prefs->enable_do_not_track =
|
||||
TrackingProtectionSettingsFactory::GetForProfile(profile)
|
||||
->IsDoNotTrackEnabled();
|
||||
+ prefs->enable_gpc =
|
||||
+ TrackingProtectionSettingsFactory::GetForProfile(profile)
|
||||
+ ->IsGPCEnabled();
|
||||
prefs->enable_encrypted_media =
|
||||
pref_service->GetBoolean(prefs::kEnableEncryptedMedia);
|
||||
prefs->webrtc_ip_handling_policy = std::string();
|
||||
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
|
||||
--- a/chrome/browser/resources/settings/BUILD.gn
|
||||
+++ b/chrome/browser/resources/settings/BUILD.gn
|
||||
@@ -123,6 +123,7 @@ build_webui("build") {
|
||||
"privacy_page/cookies_page.ts",
|
||||
"privacy_page/fingerprint_progress_arc.ts",
|
||||
"privacy_page/do_not_track_toggle.ts",
|
||||
+ "privacy_page/gpc_toggle.ts",
|
||||
"privacy_page/personalization_options.ts",
|
||||
"privacy_page/privacy_guide/privacy_guide_completion_fragment.ts",
|
||||
"privacy_page/privacy_guide/privacy_guide_completion_link_row.ts",
|
||||
diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.html b/chrome/browser/resources/settings/privacy_page/cookies_page.html
|
||||
--- a/chrome/browser/resources/settings/privacy_page/cookies_page.html
|
||||
+++ b/chrome/browser/resources/settings/privacy_page/cookies_page.html
|
||||
@@ -261,6 +261,8 @@
|
||||
</settings-toggle-button>
|
||||
<settings-do-not-track-toggle id="doNotTrack" prefs="{{prefs}}">
|
||||
</settings-do-not-track-toggle>
|
||||
+ <settings-gpc-toggle id="gpc" prefs="{{prefs}}">
|
||||
+ </settings-gpc-toggle>
|
||||
<cr-link-row id="site-data-trigger" class="hr"
|
||||
on-click="onSiteDataClick_" label="$i18n{cookiePageAllSitesLink}"
|
||||
role-description="$i18n{subpageArrowRoleDescription}">
|
||||
diff --git a/chrome/browser/resources/settings/privacy_page/cookies_page.ts b/chrome/browser/resources/settings/privacy_page/cookies_page.ts
|
||||
--- a/chrome/browser/resources/settings/privacy_page/cookies_page.ts
|
||||
+++ b/chrome/browser/resources/settings/privacy_page/cookies_page.ts
|
||||
@@ -18,6 +18,7 @@ import '../settings_shared.css.js';
|
||||
import '../site_settings/site_list.js';
|
||||
import './collapse_radio_button.js';
|
||||
import './do_not_track_toggle.js';
|
||||
+import './gpc_toggle.js';
|
||||
import '../controls/settings_radio_group.js';
|
||||
|
||||
import {PrefsMixin} from '/shared/settings/prefs/prefs_mixin.js';
|
||||
diff --git a/chrome/browser/resources/settings/privacy_page/gpc_toggle.html b/chrome/browser/resources/settings/privacy_page/gpc_toggle.html
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/browser/resources/settings/privacy_page/gpc_toggle.html
|
||||
@@ -0,0 +1,32 @@
|
||||
+ <style include="settings-shared">
|
||||
+ .toggle {
|
||||
+ padding: 0 var(--cr-section-padding);
|
||||
+ margin-bottom: var(--cr-section-vertical-padding);
|
||||
+ }
|
||||
+ </style>
|
||||
+ <settings-toggle-button id="toggle" class="toggle"
|
||||
+ label="$i18n{gpc}"
|
||||
+ pref="{{prefs.enable_gpc}}"
|
||||
+ on-settings-boolean-control-change="onToggleChange_"
|
||||
+ icon="settings:forward"
|
||||
+ no-set-pref>
|
||||
+ </settings-toggle-button>
|
||||
+ <template is="dom-if" if="[[showDialog_]]"
|
||||
+ on-dom-change="onDomChange_" restamp>
|
||||
+ <cr-dialog id="confirmDialog"
|
||||
+ close-text="$i18n{close}" on-cancel="onDialogCancel_"
|
||||
+ on-close="onDialogClosed_">
|
||||
+ <div slot="title">$i18n{gpcDialogTitle}</div>
|
||||
+ <div slot="body">$i18n{gpcDialogMessage}</div>
|
||||
+ <div slot="button-container">
|
||||
+ <cr-button class="cancel-button"
|
||||
+ on-click="onDialogCancel_">
|
||||
+ $i18n{cancel}
|
||||
+ </cr-button>
|
||||
+ <cr-button class="action-button"
|
||||
+ on-click="onDialogConfirm_">
|
||||
+ $i18n{confirm}
|
||||
+ </cr-button>
|
||||
+ </div>
|
||||
+ </cr-dialog>
|
||||
+ </template>
|
||||
diff --git a/chrome/browser/resources/settings/privacy_page/gpc_toggle.ts b/chrome/browser/resources/settings/privacy_page/gpc_toggle.ts
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/browser/resources/settings/privacy_page/gpc_toggle.ts
|
||||
@@ -0,0 +1,112 @@
|
||||
+// Copyright 2020 The Chromium Authors
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+import 'chrome://resources/cr_elements/cr_button/cr_button.js';
|
||||
+import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js';
|
||||
+import '../settings_shared.css.js';
|
||||
+import '../controls/settings_toggle_button.js';
|
||||
+
|
||||
+import {focusWithoutInk} from 'chrome://resources/js/focus_without_ink.js';
|
||||
+import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
|
||||
+
|
||||
+import type {SettingsToggleButtonElement} from '../controls/settings_toggle_button.js';
|
||||
+
|
||||
+import {getTemplate} from './gpc_toggle.html.js';
|
||||
+
|
||||
+export interface SettingsGpcToggleElement {
|
||||
+ $: {
|
||||
+ toggle: SettingsToggleButtonElement,
|
||||
+ };
|
||||
+}
|
||||
+
|
||||
+export class SettingsGpcToggleElement extends PolymerElement {
|
||||
+ static get is() {
|
||||
+ return 'settings-gpc-toggle';
|
||||
+ }
|
||||
+
|
||||
+ static get template() {
|
||||
+ return getTemplate();
|
||||
+ }
|
||||
+
|
||||
+ static get properties() {
|
||||
+ return {
|
||||
+ /**
|
||||
+ * Preferences state.
|
||||
+ */
|
||||
+ prefs: {
|
||||
+ type: Object,
|
||||
+ notify: true,
|
||||
+ },
|
||||
+
|
||||
+ showDialog_: {
|
||||
+ type: Boolean,
|
||||
+ value: false,
|
||||
+ },
|
||||
+ };
|
||||
+ }
|
||||
+
|
||||
+ prefs: {enable_gpc: chrome.settingsPrivate.PrefObject};
|
||||
+ private showDialog_: boolean;
|
||||
+
|
||||
+ private onDomChange_() {
|
||||
+ if (this.showDialog_) {
|
||||
+ this.shadowRoot!.querySelector('cr-dialog')!.showModal();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Handles the change event for the do-not-track toggle. Shows a
|
||||
+ * confirmation dialog when enabling the setting.
|
||||
+ */
|
||||
+ private onToggleChange_(event: Event) {
|
||||
+ const target = event.target as SettingsToggleButtonElement;
|
||||
+ if (!target.checked) {
|
||||
+ // Always allow disabling the pref.
|
||||
+ target.sendPrefChange();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ this.showDialog_ = true;
|
||||
+ }
|
||||
+
|
||||
+ private closeDialog_() {
|
||||
+ this.shadowRoot!.querySelector('cr-dialog')!.close();
|
||||
+ this.showDialog_ = false;
|
||||
+ }
|
||||
+
|
||||
+ private onDialogClosed_() {
|
||||
+ focusWithoutInk(this.toggle_);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Handles the shared proxy confirmation dialog 'Confirm' button.
|
||||
+ */
|
||||
+ private onDialogConfirm_() {
|
||||
+ this.toggle_.sendPrefChange();
|
||||
+ this.closeDialog_();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Handles the shared proxy confirmation dialog 'Cancel' button or a cancel
|
||||
+ * event.
|
||||
+ */
|
||||
+ private onDialogCancel_() {
|
||||
+ this.toggle_.resetToPrefValue();
|
||||
+ this.closeDialog_();
|
||||
+ }
|
||||
+
|
||||
+ private get toggle_(): SettingsToggleButtonElement {
|
||||
+ return this.shadowRoot!.querySelector<SettingsToggleButtonElement>(
|
||||
+ '#toggle')!;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+declare global {
|
||||
+ interface HTMLElementTagNameMap {
|
||||
+ 'settings-gpc-toggle': SettingsGpcToggleElement;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+customElements.define(
|
||||
+ SettingsGpcToggleElement.is, SettingsGpcToggleElement);
|
||||
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-Global-Privacy-Control.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-Global-Privacy-Control.grdp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-Global-Privacy-Control.grdp
|
||||
@@ -0,0 +1,15 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<grit-part>
|
||||
+ <message name="IDS_GPC_TITLE" desc="">
|
||||
+ Global Privacy Control "Sec-GPC"
|
||||
+ </message>
|
||||
+ <message name="IDS_GPC_DESCRIPTION" desc="">
|
||||
+ Enables support for Global Privacy Control signals.
|
||||
+
|
||||
+Right to opt-out of sale or sharing: You may request that businesses stop selling or sharing your personal information (“opt-out”).
|
||||
+
|
||||
+Businesses cannot sell or share your personal information after they receive your opt-out request unless you later authorize them to do so again.
|
||||
+
|
||||
+Please note that it only applies to the states of California (under CCPA and CPRA) and Colorado (under CoPA).
|
||||
+ </message>
|
||||
+</grit-part>
|
||||
diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/pref_watcher.cc
|
||||
--- a/chrome/browser/ui/prefs/pref_watcher.cc
|
||||
+++ b/chrome/browser/ui/prefs/pref_watcher.cc
|
||||
@@ -155,6 +155,10 @@ void PrefWatcher::OnDoNotTrackEnabledChanged() {
|
||||
UpdateRendererPreferences();
|
||||
}
|
||||
|
||||
+void PrefWatcher::OnGPCEnabledChanged() {
|
||||
+ UpdateRendererPreferences();
|
||||
+}
|
||||
+
|
||||
void PrefWatcher::UpdateRendererPreferences() {
|
||||
for (PrefsTabHelper* helper : tab_helpers_) {
|
||||
helper->UpdateRendererPreferences();
|
||||
diff --git a/chrome/browser/ui/prefs/pref_watcher.h b/chrome/browser/ui/prefs/pref_watcher.h
|
||||
--- a/chrome/browser/ui/prefs/pref_watcher.h
|
||||
+++ b/chrome/browser/ui/prefs/pref_watcher.h
|
||||
@@ -38,6 +38,7 @@ class PrefWatcher : public KeyedService,
|
||||
void Shutdown() override;
|
||||
|
||||
void OnDoNotTrackEnabledChanged() override;
|
||||
+ void OnGPCEnabledChanged() override;
|
||||
|
||||
void UpdateRendererPreferences();
|
||||
void OnWebPrefChanged(const std::string& pref_name);
|
||||
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
|
||||
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
|
||||
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
|
||||
@@ -1655,6 +1655,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
|
||||
{"doNotTrackDialogMessage", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT},
|
||||
{"doNotTrackDialogLearnMoreA11yLabel",
|
||||
IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL},
|
||||
+ {"gpc", IDS_SETTINGS_ENABLE_GPC},
|
||||
+ {"gpcDialogTitle", IDS_SETTINGS_ENABLE_GPC_DIALOG_TITLE},
|
||||
+ {"gpcDialogMessage", IDS_SETTINGS_ENABLE_GPC_DIALOG_TEXT},
|
||||
// TODO(crbug.com/40122957): This string is no longer used. Remove.
|
||||
{"permissionsPageTitle", IDS_SETTINGS_PERMISSIONS},
|
||||
{"permissionsPageDescription", IDS_SETTINGS_PERMISSIONS_DESCRIPTION},
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
--- a/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
+++ b/components/privacy_sandbox/tracking_protection_prefs.cc
|
||||
@@ -81,6 +81,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kEnableDoNotTrack, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
+ registry->RegisterBooleanPref(prefs::kEnableGPC, true);
|
||||
}
|
||||
|
||||
} // namespace privacy_sandbox::tracking_protection
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_prefs.h b/components/privacy_sandbox/tracking_protection_prefs.h
|
||||
--- a/components/privacy_sandbox/tracking_protection_prefs.h
|
||||
+++ b/components/privacy_sandbox/tracking_protection_prefs.h
|
||||
@@ -124,6 +124,8 @@ inline constexpr char kFingerprintingProtectionEnabled[] =
|
||||
// Whether to send the DNT header.
|
||||
inline constexpr char kEnableDoNotTrack[] = "enable_do_not_track";
|
||||
|
||||
+inline constexpr char kEnableGPC[] = "enable_gpc";
|
||||
+
|
||||
} // namespace prefs
|
||||
|
||||
namespace privacy_sandbox::tracking_protection {
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_settings.cc b/components/privacy_sandbox/tracking_protection_settings.cc
|
||||
--- a/components/privacy_sandbox/tracking_protection_settings.cc
|
||||
+++ b/components/privacy_sandbox/tracking_protection_settings.cc
|
||||
@@ -32,6 +32,11 @@ TrackingProtectionSettings::TrackingProtectionSettings(
|
||||
base::BindRepeating(
|
||||
&TrackingProtectionSettings::OnDoNotTrackEnabledPrefChanged,
|
||||
base::Unretained(this)));
|
||||
+ pref_change_registrar_.Add(
|
||||
+ prefs::kEnableGPC,
|
||||
+ base::BindRepeating(
|
||||
+ &TrackingProtectionSettings::OnGPCEnabledPrefChanged,
|
||||
+ base::Unretained(this)));
|
||||
pref_change_registrar_.Add(
|
||||
prefs::kFingerprintingProtectionEnabled,
|
||||
base::BindRepeating(
|
||||
@@ -114,6 +119,10 @@ bool TrackingProtectionSettings::IsDoNotTrackEnabled() const {
|
||||
return pref_service_->GetBoolean(prefs::kEnableDoNotTrack);
|
||||
}
|
||||
|
||||
+bool TrackingProtectionSettings::IsGPCEnabled() const {
|
||||
+ return pref_service_->GetBoolean(prefs::kEnableGPC);
|
||||
+}
|
||||
+
|
||||
void TrackingProtectionSettings::OnEnterpriseControlForPrefsChanged() {
|
||||
if (!IsTrackingProtection3pcdEnabled()) {
|
||||
return;
|
||||
@@ -153,6 +162,12 @@ void TrackingProtectionSettings::OnDoNotTrackEnabledPrefChanged() {
|
||||
}
|
||||
}
|
||||
|
||||
+void TrackingProtectionSettings::OnGPCEnabledPrefChanged() {
|
||||
+ for (auto& observer : observers_) {
|
||||
+ observer.OnGPCEnabledChanged();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void TrackingProtectionSettings::OnIpProtectionPrefChanged() {
|
||||
for (auto& observer : observers_) {
|
||||
observer.OnIpProtectionEnabledChanged();
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_settings.h b/components/privacy_sandbox/tracking_protection_settings.h
|
||||
--- a/components/privacy_sandbox/tracking_protection_settings.h
|
||||
+++ b/components/privacy_sandbox/tracking_protection_settings.h
|
||||
@@ -38,6 +38,8 @@ class TrackingProtectionSettings
|
||||
// Returns whether "do not track" is enabled.
|
||||
bool IsDoNotTrackEnabled() const;
|
||||
|
||||
+ bool IsGPCEnabled() const;
|
||||
+
|
||||
// Returns whether tracking protection for 3PCD (prefs + UX) is enabled.
|
||||
bool IsTrackingProtection3pcdEnabled() const;
|
||||
|
||||
@@ -61,6 +63,7 @@ class TrackingProtectionSettings
|
||||
|
||||
// Callbacks for pref observation.
|
||||
void OnDoNotTrackEnabledPrefChanged();
|
||||
+ void OnGPCEnabledPrefChanged();
|
||||
void OnBlockAllThirdPartyCookiesPrefChanged();
|
||||
void OnTrackingProtection3pcdPrefChanged();
|
||||
void OnIpProtectionPrefChanged();
|
||||
diff --git a/components/privacy_sandbox/tracking_protection_settings_observer.h b/components/privacy_sandbox/tracking_protection_settings_observer.h
|
||||
--- a/components/privacy_sandbox/tracking_protection_settings_observer.h
|
||||
+++ b/components/privacy_sandbox/tracking_protection_settings_observer.h
|
||||
@@ -22,6 +22,8 @@ class TrackingProtectionSettingsObserver {
|
||||
// For observation of DNT.
|
||||
virtual void OnDoNotTrackEnabledChanged() {}
|
||||
|
||||
+ virtual void OnGPCEnabledChanged() {}
|
||||
+
|
||||
// For observation of anti-fingerprinting.
|
||||
virtual void OnFingerprintingProtectionEnabledChanged() {}
|
||||
|
||||
diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc
|
||||
--- a/content/browser/loader/browser_initiated_resource_request.cc
|
||||
+++ b/content/browser/loader/browser_initiated_resource_request.cc
|
||||
@@ -33,6 +33,12 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
|
||||
}
|
||||
headers->SetHeaderIfMissing(blink::kDoNotTrackHeader, "1");
|
||||
}
|
||||
+ if (renderer_preferences.enable_gpc) {
|
||||
+ if (should_update_existing_headers) {
|
||||
+ headers->RemoveHeader(blink::kSecGPCHeader);
|
||||
+ }
|
||||
+ headers->SetHeaderIfMissing(blink::kSecGPCHeader, "1");
|
||||
+ }
|
||||
|
||||
// TODO(crbug.com/1315612): WARNING: This bypasses the permissions policy.
|
||||
// Unfortunately, workers lack a permissions policy and to derive proper hints
|
||||
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
||||
--- a/content/renderer/render_frame_impl.cc
|
||||
+++ b/content/renderer/render_frame_impl.cc
|
||||
@@ -4470,6 +4470,10 @@ void RenderFrameImpl::WillSendRequestInternal(
|
||||
request.SetHttpHeaderField(
|
||||
blink::WebString::FromUTF8(blink::kDoNotTrackHeader), "1");
|
||||
}
|
||||
+ if (GetWebView()->GetRendererPreferences().enable_gpc) {
|
||||
+ request.SetHttpHeaderField(
|
||||
+ blink::WebString::FromUTF8(blink::kSecGPCHeader), "1");
|
||||
+ }
|
||||
|
||||
ApplyFilePathAlias(&request);
|
||||
GURL new_url;
|
||||
diff --git a/third_party/blink/common/loader/loader_constants.cc b/third_party/blink/common/loader/loader_constants.cc
|
||||
--- a/third_party/blink/common/loader/loader_constants.cc
|
||||
+++ b/third_party/blink/common/loader/loader_constants.cc
|
||||
@@ -7,5 +7,6 @@
|
||||
namespace blink {
|
||||
|
||||
const char kDoNotTrackHeader[] = "DNT";
|
||||
+const char kSecGPCHeader[] = "Sec-GPC";
|
||||
|
||||
} // namespace blink
|
||||
diff --git a/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc b/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
|
||||
--- a/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
|
||||
+++ b/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
|
||||
@@ -49,6 +49,7 @@ bool StructTraits<blink::mojom::RendererPreferencesDataView,
|
||||
out->enable_referrers = data.enable_referrers();
|
||||
out->allow_cross_origin_auth_prompt = data.allow_cross_origin_auth_prompt();
|
||||
out->enable_do_not_track = data.enable_do_not_track();
|
||||
+ out->enable_gpc = data.enable_gpc();
|
||||
out->enable_encrypted_media = data.enable_encrypted_media();
|
||||
|
||||
if (!data.ReadWebrtcIpHandlingPolicy(&out->webrtc_ip_handling_policy))
|
||||
diff --git a/third_party/blink/public/common/loader/loader_constants.h b/third_party/blink/public/common/loader/loader_constants.h
|
||||
--- a/third_party/blink/public/common/loader/loader_constants.h
|
||||
+++ b/third_party/blink/public/common/loader/loader_constants.h
|
||||
@@ -11,6 +11,7 @@ namespace blink {
|
||||
|
||||
// HTTP header set in requests to indicate they should be marked DoNotTrack.
|
||||
BLINK_COMMON_EXPORT extern const char kDoNotTrackHeader[];
|
||||
+BLINK_COMMON_EXPORT extern const char kSecGPCHeader[];
|
||||
|
||||
// These values indicate the load progress constants shared between both
|
||||
// //content and //blink.
|
||||
diff --git a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h
|
||||
--- a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h
|
||||
+++ b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h
|
||||
@@ -58,6 +58,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences {
|
||||
uint32_t referrers_policy{2};
|
||||
bool allow_cross_origin_auth_prompt{false};
|
||||
bool enable_do_not_track{false};
|
||||
+ bool enable_gpc{false};
|
||||
bool enable_encrypted_media{true};
|
||||
std::string webrtc_ip_handling_policy;
|
||||
uint16_t webrtc_udp_min_port{0};
|
||||
diff --git a/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h b/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
|
||||
--- a/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
|
||||
+++ b/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
|
||||
@@ -126,6 +126,11 @@ struct BLINK_COMMON_EXPORT
|
||||
return data.enable_do_not_track;
|
||||
}
|
||||
|
||||
+ static const bool& enable_gpc(
|
||||
+ const ::blink::RendererPreferences& data) {
|
||||
+ return data.enable_gpc;
|
||||
+ }
|
||||
+
|
||||
static const bool& enable_encrypted_media(
|
||||
const ::blink::RendererPreferences& data) {
|
||||
return data.enable_encrypted_media;
|
||||
diff --git a/third_party/blink/public/mojom/renderer_preferences.mojom b/third_party/blink/public/mojom/renderer_preferences.mojom
|
||||
--- a/third_party/blink/public/mojom/renderer_preferences.mojom
|
||||
+++ b/third_party/blink/public/mojom/renderer_preferences.mojom
|
||||
@@ -84,6 +84,8 @@ struct RendererPreferences {
|
||||
// Set to true to indicate that the preference to set DNT to 1 is enabled.
|
||||
bool enable_do_not_track = false;
|
||||
|
||||
+ bool enable_gpc = false;
|
||||
+
|
||||
// Whether to allow the use of Encrypted Media Extensions (EME), except for
|
||||
// the use of Clear Key key system which is always allowed as required by the
|
||||
// spec.
|
||||
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni
|
||||
--- a/third_party/blink/renderer/bindings/idl_in_modules.gni
|
||||
+++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
|
||||
@@ -1257,6 +1257,11 @@ static_idl_files_in_modules = [
|
||||
"//third_party/blink/renderer/modules/xr/xr_webgl_sub_image.idl",
|
||||
]
|
||||
|
||||
+static_idl_files_in_modules += [
|
||||
+ "//third_party/blink/renderer/modules/global_privacy_control/navigator_global_privacy_control.idl",
|
||||
+ "//third_party/blink/renderer/modules/global_privacy_control/worker_navigator_global_privacy_control.idl",
|
||||
+]
|
||||
+
|
||||
# Direct Sockets
|
||||
# This uses target_os rather than current_os (which is what is_android is set
|
||||
# from) for the case of generating the v8 context snapshot for android. When
|
||||
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
|
||||
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
|
||||
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
|
||||
@@ -3509,6 +3509,9 @@ void WebViewImpl::UpdateRendererPreferences(
|
||||
GetSettings()->SetCaretBrowsingEnabled(
|
||||
renderer_preferences_.caret_browsing_enabled);
|
||||
|
||||
+ WebRuntimeFeatures::EnableGlobalPrivacyControl(
|
||||
+ renderer_preferences_.enable_gpc);
|
||||
+
|
||||
#if BUILDFLAG(IS_OZONE)
|
||||
GetSettings()->SetSelectionClipboardBufferAvailable(
|
||||
renderer_preferences_.selection_clipboard_buffer_available);
|
||||
diff --git a/third_party/blink/renderer/modules/BUILD.gn b/third_party/blink/renderer/modules/BUILD.gn
|
||||
--- a/third_party/blink/renderer/modules/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/modules/BUILD.gn
|
||||
@@ -173,6 +173,10 @@ component("modules") {
|
||||
"//third_party/blink/renderer/modules/xr",
|
||||
]
|
||||
|
||||
+ sub_modules += [
|
||||
+ "//third_party/blink/renderer/modules/global_privacy_control",
|
||||
+ ]
|
||||
+
|
||||
# This uses target_os rather than current_os (which is what is_android is set
|
||||
# from) for the case of generating the v8 context snapshot for android. When
|
||||
# generating the snapshot for android, blink is compiled with
|
||||
diff --git a/third_party/blink/renderer/modules/global_privacy_control/BUILD.gn b/third_party/blink/renderer/modules/global_privacy_control/BUILD.gn
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/modules/global_privacy_control/BUILD.gn
|
||||
@@ -0,0 +1,8 @@
|
||||
+import("//third_party/blink/renderer/modules/modules.gni")
|
||||
+
|
||||
+blink_modules_sources("global_privacy_control") {
|
||||
+ sources = [
|
||||
+ "global_privacy_control.cc",
|
||||
+ "global_privacy_control.h",
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.cc b/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.cc
|
||||
@@ -0,0 +1,12 @@
|
||||
+#include "third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.h"
|
||||
+
|
||||
+#include "base/feature_list.h"
|
||||
+#include "third_party/blink/public/common/features.h"
|
||||
+
|
||||
+namespace blink {
|
||||
+
|
||||
+bool GlobalPrivacyControl::globalPrivacyControl(NavigatorBase& navigator) {
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+} // namespace blink
|
||||
diff --git a/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.h b/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/modules/global_privacy_control/global_privacy_control.h
|
||||
@@ -0,0 +1,15 @@
|
||||
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_GLOBAL_PRIVACY_CONTROL_GLOBAL_PRIVACY_CONTROL_H_
|
||||
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_GLOBAL_PRIVACY_CONTROL_GLOBAL_PRIVACY_CONTROL_H_
|
||||
+
|
||||
+#include "third_party/blink/renderer/core/execution_context/navigator_base.h"
|
||||
+
|
||||
+namespace blink {
|
||||
+
|
||||
+class GlobalPrivacyControl final {
|
||||
+ public:
|
||||
+ static bool globalPrivacyControl(NavigatorBase&);
|
||||
+};
|
||||
+
|
||||
+} // namespace blink
|
||||
+
|
||||
+#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_GLOBAL_PRIVACY_CONTROL_GLOBAL_PRIVACY_CONTROL_H_
|
||||
diff --git a/third_party/blink/renderer/modules/global_privacy_control/navigator_global_privacy_control.idl b/third_party/blink/renderer/modules/global_privacy_control/navigator_global_privacy_control.idl
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/modules/global_privacy_control/navigator_global_privacy_control.idl
|
||||
@@ -0,0 +1,6 @@
|
||||
+[
|
||||
+ RuntimeEnabled=GlobalPrivacyControl,
|
||||
+ ImplementedAs=GlobalPrivacyControl
|
||||
+] partial interface Navigator {
|
||||
+ readonly attribute boolean globalPrivacyControl;
|
||||
+};
|
||||
diff --git a/third_party/blink/renderer/modules/global_privacy_control/worker_navigator_global_privacy_control.idl b/third_party/blink/renderer/modules/global_privacy_control/worker_navigator_global_privacy_control.idl
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/modules/global_privacy_control/worker_navigator_global_privacy_control.idl
|
||||
@@ -0,0 +1,6 @@
|
||||
+[
|
||||
+ RuntimeEnabled=GlobalPrivacyControl,
|
||||
+ ImplementedAs=GlobalPrivacyControl
|
||||
+] partial interface WorkerNavigator {
|
||||
+ readonly attribute boolean globalPrivacyControl;
|
||||
+};
|
||||
diff --git a/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.cc b/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.cc
|
||||
--- a/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.cc
|
||||
+++ b/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.cc
|
||||
@@ -148,6 +148,9 @@ void WebServiceWorkerFetchContextImpl::WillSendRequest(WebURLRequest& request) {
|
||||
if (renderer_preferences_.enable_do_not_track) {
|
||||
request.SetHttpHeaderField(WebString::FromUTF8(kDoNotTrackHeader), "1");
|
||||
}
|
||||
+ if (renderer_preferences_.enable_gpc) {
|
||||
+ request.SetHttpHeaderField(WebString::FromUTF8(kSecGPCHeader), "1");
|
||||
+ }
|
||||
auto url_request_extra_data = base::MakeRefCounted<WebURLRequestExtraData>();
|
||||
url_request_extra_data->set_originated_from_service_worker(true);
|
||||
|
||||
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.cc
|
||||
--- a/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.cc
|
||||
+++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.cc
|
||||
@@ -376,6 +376,9 @@ void DedicatedOrSharedWorkerFetchContextImpl::WillSendRequest(
|
||||
if (renderer_preferences_.enable_do_not_track) {
|
||||
request.SetHttpHeaderField(WebString::FromUTF8(kDoNotTrackHeader), "1");
|
||||
}
|
||||
+ if (renderer_preferences_.enable_gpc) {
|
||||
+ request.SetHttpHeaderField(WebString::FromUTF8(kSecGPCHeader), "1");
|
||||
+ }
|
||||
|
||||
auto url_request_extra_data = base::MakeRefCounted<WebURLRequestExtraData>();
|
||||
request.SetURLRequestExtraData(std::move(url_request_extra_data));
|
||||
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
@@ -3732,6 +3732,11 @@
|
||||
status: "stable",
|
||||
origin_trial_feature_name: "StorageAccessAPIBeyondCookies",
|
||||
},
|
||||
+ {
|
||||
+ name: "GlobalPrivacyControl",
|
||||
+ base_feature_status: "disabled",
|
||||
+ public: true,
|
||||
+ },
|
||||
{
|
||||
name: "StorageBuckets",
|
||||
status: "stable",
|
||||
--
|
||||
@@ -0,0 +1,42 @@
|
||||
From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Sat, 25 May 2024 10:34:38 +0000
|
||||
Subject: Enable menu on reload button
|
||||
|
||||
Activate right-button submenu in reload (desktop platforms).
|
||||
Patch derived from the ungoogled-chromium patch of the same name.
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
chrome/app/generated_resources.grd | 4 ++--
|
||||
chrome/browser/ui/views/toolbar/toolbar_view.cc | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
|
||||
--- a/chrome/app/generated_resources.grd
|
||||
+++ b/chrome/app/generated_resources.grd
|
||||
@@ -4682,10 +4682,10 @@ are declared in tools/grit/grit_rule.gni.
|
||||
Normal Reload
|
||||
</message>
|
||||
<message name="IDS_RELOAD_MENU_HARD_RELOAD_ITEM" desc="Menu item displayed in the Reload dropdown menu when in dev mode">
|
||||
- Hard Reload
|
||||
+ Reload bypassing cache
|
||||
</message>
|
||||
<message name="IDS_RELOAD_MENU_EMPTY_AND_HARD_RELOAD_ITEM" desc="Menu item displayed in the Reload dropdown menu when in dev mode">
|
||||
- Empty Cache and Hard Reload
|
||||
+ Empty Cache and Reload
|
||||
</message>
|
||||
|
||||
<!-- Tab sharing infobar -->
|
||||
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
||||
@@ -571,7 +571,7 @@ void ToolbarView::Update(WebContents* tab) {
|
||||
}
|
||||
|
||||
if (reload_)
|
||||
- reload_->SetMenuEnabled(chrome::IsDebuggerAttachedToCurrentTab(browser_));
|
||||
+ reload_->SetMenuEnabled(true);
|
||||
}
|
||||
|
||||
void ToolbarView::SetToolbarVisibility(bool visible) {
|
||||
--
|
||||
@@ -491,7 +491,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -5291,6 +5291,19 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
@@ -5282,6 +5282,19 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
Make sure a phone app is enabled on this device
|
||||
</message>
|
||||
|
||||
|
||||
@@ -1055,7 +1055,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
|
||||
"appearance_page/appearance_fonts_page.ts",
|
||||
"appearance_page/appearance_page.ts",
|
||||
"appearance_page/home_url_input.ts",
|
||||
@@ -398,6 +399,7 @@ build_webui("build") {
|
||||
@@ -399,6 +400,7 @@ build_webui("build") {
|
||||
ts_definitions = [
|
||||
"//tools/typescript/definitions/autofill_private.d.ts",
|
||||
"//tools/typescript/definitions/chrome_event.d.ts",
|
||||
|
||||
@@ -22,7 +22,8 @@ Require: Content-settings-infrastructure.patch
|
||||
.../javascript_jit.grdp | 21 ++++
|
||||
.../javascript_jit.inc | 12 +++
|
||||
.../core/browser/content_settings_registry.cc | 2 +-
|
||||
9 files changed, 127 insertions(+), 1 deletion(-)
|
||||
.../renderer_host/render_process_host_impl.cc | 9 +-
|
||||
10 files changed, 129 insertions(+), 8 deletions(-)
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/permission_javascript_jit.png
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/permission_javascript_jit.png
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/permission_javascript_jit.png
|
||||
@@ -242,10 +243,10 @@ new file mode 100644
|
||||
+ Enable the JIT compiler and WebAssembly support in V8
|
||||
+ </message>
|
||||
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_ENABLED" desc="Summary text explaining that sites are allowed to compile JavaScript in JIT mode." formatter_data="android_java">
|
||||
+ Allow JIT and WebAssembly on a specific site.
|
||||
+ Allow JIT and WebAssembly
|
||||
+ </message>
|
||||
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_DISABLED" desc="Summary text explaining that sites are running JavaScript in JITless mode." formatter_data="android_java">
|
||||
+ Block JIT and WebAssembly on a specific site.
|
||||
+ Block JIT and WebAssembly
|
||||
+ </message>
|
||||
+ <message name="IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_JAVASCRIPT_JIT_ALLOW" desc="The description for the allow Javascript JIT for website dialog." formatter_data="android_java">
|
||||
+ Allow sites to use just-in-time compilation; more performant but a constant source of security vulnerabilities.
|
||||
@@ -283,4 +284,23 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
|
||||
/*allowlisted_primary_schemes=*/{},
|
||||
/*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK},
|
||||
WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
|
||||
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
--- a/content/browser/renderer_host/render_process_host_impl.cc
|
||||
+++ b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
@@ -3333,13 +3333,8 @@ void RenderProcessHostImpl::AppendRendererCommandLine(
|
||||
}
|
||||
|
||||
if (IsJitDisabled()) {
|
||||
- if (IsPdf()) {
|
||||
- command_line->AppendSwitchASCII(blink::switches::kJavaScriptFlags,
|
||||
- "--jitless");
|
||||
- } else {
|
||||
- command_line->AppendSwitchASCII(blink::switches::kJavaScriptFlags,
|
||||
- "--no-maglev,--no-turbofan");
|
||||
- }
|
||||
+ command_line->AppendSwitchASCII(blink::switches::kJavaScriptFlags,
|
||||
+ "--jitless");
|
||||
}
|
||||
|
||||
if (features::IsTouchTextEditingRedesignEnabled()) {
|
||||
--
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Thu, 30 May 2024 11:42:21 +0000
|
||||
Subject: Media fingerprinting mitigations
|
||||
|
||||
Removes the ability to understand the capabilities of the video card in windows.
|
||||
See https://github.com/uazo/cromite/issues/862
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
third_party/blink/renderer/modules/webcodecs/video_decoder.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/webcodecs/video_decoder.cc b/third_party/blink/renderer/modules/webcodecs/video_decoder.cc
|
||||
--- a/third_party/blink/renderer/modules/webcodecs/video_decoder.cc
|
||||
+++ b/third_party/blink/renderer/modules/webcodecs/video_decoder.cc
|
||||
@@ -299,7 +299,7 @@ ScriptPromise<VideoDecoderSupport> VideoDecoder::isConfigSupported(
|
||||
auto* config_copy = CopyConfig(*config);
|
||||
|
||||
// Run the "Check Configuration Support" algorithm.
|
||||
- HardwarePreference hw_pref = GetHardwareAccelerationPreference(*config_copy);
|
||||
+ HardwarePreference hw_pref = HardwarePreference::kPreferSoftware;
|
||||
VideoDecoderSupport* support = VideoDecoderSupport::Create();
|
||||
support->setConfig(config_copy);
|
||||
|
||||
--
|
||||
@@ -13,81 +13,81 @@ Need: bromite-build-utils.patch
|
||||
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
cc/base/features.cc | 8 ++
|
||||
cc/base/features.h | 2 +
|
||||
cc/input/browser_controls_offset_manager.cc | 6 ++
|
||||
cc/trees/layer_tree_host_impl.cc | 3 +
|
||||
.../start_surface/StartSurfaceMediator.java | 4 +
|
||||
.../tab_management/TabGroupUiCoordinator.java | 7 +-
|
||||
.../tab_management/TabGroupUiMediator.java | 50 +++++++++-
|
||||
.../tab_management/TabGroupUiProperties.java | 7 +-
|
||||
.../tab_management/TabGroupUiToolbarView.java | 17 ++++
|
||||
.../tab_management/TabGroupUiViewBinder.java | 3 +
|
||||
.../TabListContainerViewBinder.java | 15 ++-
|
||||
.../tab_management/TabListCoordinator.java | 95 ++++++++++++++++++-
|
||||
.../tab_management/TabListRecyclerView.java | 19 +++-
|
||||
.../tab_management/TabSwitcherMediator.java | 27 +++++-
|
||||
.../settings/AccessibilitySettings.java | 26 +++++
|
||||
.../ChromeAccessibilitySettingsDelegate.java | 69 ++++++++++++++
|
||||
.../chrome/browser/app/ChromeActivity.java | 13 +++
|
||||
.../compositor/CompositorViewHolder.java | 8 ++
|
||||
.../layouts/LayoutManagerChrome.java | 18 +++-
|
||||
.../layouts/LayoutManagerChromeTablet.java | 4 +-
|
||||
.../layouts/ToolbarSwipeLayout.java | 14 ++-
|
||||
.../overlays/strip/StripLayoutHelper.java | 2 +-
|
||||
.../strip/StripLayoutHelperManager.java | 38 +++++++-
|
||||
.../scene_layer/StaticTabSceneLayer.java | 7 +-
|
||||
.../scene_layer/TabListSceneLayer.java | 8 ++
|
||||
.../scene_layer/TabStripSceneLayer.java | 19 +++-
|
||||
.../browser/findinpage/FindToolbarTablet.java | 10 +-
|
||||
.../fullscreen/BrowserControlsManager.java | 12 +++
|
||||
.../messages/MessageContainerCoordinator.java | 16 +++-
|
||||
.../modaldialog/ChromeTabModalPresenter.java | 2 +-
|
||||
.../chrome/browser/ntp/NewTabPage.java | 14 ++-
|
||||
.../chrome/browser/ntp/NewTabPageLayout.java | 8 ++
|
||||
.../chrome/browser/ntp/RecentTabsPage.java | 26 ++++-
|
||||
.../browser/searchwidget/SearchActivity.java | 12 ++-
|
||||
.../browser/settings/SettingsActivity.java | 5 +
|
||||
.../StatusIndicatorCoordinator.java | 9 ++
|
||||
.../StatusIndicatorSceneLayer.java | 6 +-
|
||||
.../browser/toolbar/ToolbarManager.java | 46 ++++++++-
|
||||
.../chrome/browser/ui/BottomContainer.java | 18 ++++
|
||||
.../ui/system/StatusBarColorController.java | 9 ++
|
||||
.../android/compositor/layer/toolbar_layer.cc | 10 +-
|
||||
.../scene_layer/tab_strip_scene_layer.cc | 16 +++-
|
||||
.../BrowserControlsMarginSupplier.java | 5 +
|
||||
.../BrowserControlsStateProvider.java | 6 ++
|
||||
.../browser/feed/FeedListContentManager.java | 6 +-
|
||||
.../flags/android/chrome_feature_list.cc | 3 +
|
||||
.../browser/flags/ChromeFeatureList.java | 10 ++
|
||||
chrome/browser/prefs/browser_prefs.cc | 2 +-
|
||||
.../chrome/browser/ui/appmenu/AppMenu.java | 40 +++++++-
|
||||
.../ui/appmenu/AppMenuHandlerImpl.java | 10 ++
|
||||
.../omnibox/LocationBarCoordinator.java | 7 +-
|
||||
...mniboxSuggestionsDropdownEmbedderImpl.java | 24 ++++-
|
||||
.../suggestions/AutocompleteCoordinator.java | 16 +++-
|
||||
.../suggestions/AutocompleteMediator.java | 6 +-
|
||||
.../DropdownItemViewInfoListManager.java | 7 +-
|
||||
.../OmniboxSuggestionsDropdown.java | 39 +++++++-
|
||||
.../OmniboxSuggestionsDropdownEmbedder.java | 8 ++
|
||||
.../strings/android_chrome_strings.grd | 6 ++
|
||||
chrome/browser/ui/android/toolbar/BUILD.gn | 1 +
|
||||
.../toolbar/LocationBarFocusScrimHandler.java | 5 +
|
||||
.../bottom/BottomControlsContentDelegate.java | 9 +-
|
||||
.../bottom/BottomControlsCoordinator.java | 11 ++-
|
||||
.../bottom/BottomControlsMediator.java | 18 +++-
|
||||
.../bottom/BottomControlsProperties.java | 6 +-
|
||||
.../bottom/BottomControlsViewBinder.java | 2 +
|
||||
.../bottom/ScrollingBottomViewSceneLayer.java | 19 +++-
|
||||
.../toolbar/top/ToolbarControlContainer.java | 9 ++
|
||||
.../top/TopToolbarOverlayCoordinator.java | 6 ++
|
||||
.../top/TopToolbarOverlayProperties.java | 8 +-
|
||||
.../toolbar/top/TopToolbarSceneLayer.java | 10 +-
|
||||
.../res/xml/accessibility_preferences.xml | 8 ++
|
||||
.../AccessibilitySettingsDelegate.java | 7 ++
|
||||
.../render_widget_host_view_android.cc | 3 +
|
||||
.../Move-navigation-bar-to-bottom.inc | 17 ++++
|
||||
74 files changed, 955 insertions(+), 87 deletions(-)
|
||||
cc/base/features.cc | 8 +
|
||||
cc/base/features.h | 2 +
|
||||
cc/input/browser_controls_offset_manager.cc | 6 +
|
||||
cc/trees/layer_tree_host_impl.cc | 3 +
|
||||
.../start_surface/StartSurfaceMediator.java | 4 +
|
||||
.../tab_management/TabGroupUiCoordinator.java | 7 +-
|
||||
.../tab_management/TabGroupUiMediator.java | 50 +++++-
|
||||
.../tab_management/TabGroupUiProperties.java | 7 +-
|
||||
.../tab_management/TabGroupUiToolbarView.java | 17 ++
|
||||
.../tab_management/TabGroupUiViewBinder.java | 3 +
|
||||
.../TabListContainerViewBinder.java | 15 +-
|
||||
.../tab_management/TabListCoordinator.java | 151 +++++++++++++++++-
|
||||
.../tab_management/TabListRecyclerView.java | 19 ++-
|
||||
.../tab_management/TabSwitcherMediator.java | 27 +++-
|
||||
.../settings/AccessibilitySettings.java | 26 +++
|
||||
.../ChromeAccessibilitySettingsDelegate.java | 69 ++++++++
|
||||
.../chrome/browser/app/ChromeActivity.java | 13 ++
|
||||
.../compositor/CompositorViewHolder.java | 8 +
|
||||
.../layouts/LayoutManagerChrome.java | 18 ++-
|
||||
.../layouts/LayoutManagerChromeTablet.java | 4 +-
|
||||
.../layouts/ToolbarSwipeLayout.java | 14 +-
|
||||
.../overlays/strip/StripLayoutHelper.java | 2 +-
|
||||
.../strip/StripLayoutHelperManager.java | 38 ++++-
|
||||
.../scene_layer/StaticTabSceneLayer.java | 7 +-
|
||||
.../scene_layer/TabListSceneLayer.java | 8 +
|
||||
.../scene_layer/TabStripSceneLayer.java | 19 ++-
|
||||
.../browser/findinpage/FindToolbarTablet.java | 10 +-
|
||||
.../fullscreen/BrowserControlsManager.java | 12 ++
|
||||
.../messages/MessageContainerCoordinator.java | 16 +-
|
||||
.../modaldialog/ChromeTabModalPresenter.java | 2 +-
|
||||
.../chrome/browser/ntp/NewTabPage.java | 14 +-
|
||||
.../chrome/browser/ntp/NewTabPageLayout.java | 8 +
|
||||
.../chrome/browser/ntp/RecentTabsPage.java | 26 ++-
|
||||
.../browser/searchwidget/SearchActivity.java | 12 +-
|
||||
.../browser/settings/SettingsActivity.java | 5 +
|
||||
.../StatusIndicatorCoordinator.java | 9 ++
|
||||
.../StatusIndicatorSceneLayer.java | 6 +-
|
||||
.../browser/toolbar/ToolbarManager.java | 46 +++++-
|
||||
.../chrome/browser/ui/BottomContainer.java | 18 +++
|
||||
.../ui/system/StatusBarColorController.java | 9 ++
|
||||
.../android/compositor/layer/toolbar_layer.cc | 10 +-
|
||||
.../scene_layer/tab_strip_scene_layer.cc | 16 +-
|
||||
.../BrowserControlsMarginSupplier.java | 5 +
|
||||
.../BrowserControlsStateProvider.java | 6 +
|
||||
.../browser/feed/FeedListContentManager.java | 6 +-
|
||||
.../flags/android/chrome_feature_list.cc | 3 +
|
||||
.../browser/flags/ChromeFeatureList.java | 10 ++
|
||||
chrome/browser/prefs/browser_prefs.cc | 2 +-
|
||||
.../chrome/browser/ui/appmenu/AppMenu.java | 40 ++++-
|
||||
.../ui/appmenu/AppMenuHandlerImpl.java | 10 ++
|
||||
.../omnibox/LocationBarCoordinator.java | 7 +-
|
||||
...mniboxSuggestionsDropdownEmbedderImpl.java | 24 ++-
|
||||
.../suggestions/AutocompleteCoordinator.java | 16 +-
|
||||
.../suggestions/AutocompleteMediator.java | 6 +-
|
||||
.../DropdownItemViewInfoListManager.java | 7 +-
|
||||
.../OmniboxSuggestionsDropdown.java | 39 ++++-
|
||||
.../OmniboxSuggestionsDropdownEmbedder.java | 8 +
|
||||
.../strings/android_chrome_strings.grd | 6 +
|
||||
chrome/browser/ui/android/toolbar/BUILD.gn | 1 +
|
||||
.../toolbar/LocationBarFocusScrimHandler.java | 5 +
|
||||
.../bottom/BottomControlsContentDelegate.java | 9 +-
|
||||
.../bottom/BottomControlsCoordinator.java | 11 +-
|
||||
.../bottom/BottomControlsMediator.java | 18 ++-
|
||||
.../bottom/BottomControlsProperties.java | 6 +-
|
||||
.../bottom/BottomControlsViewBinder.java | 2 +
|
||||
.../bottom/ScrollingBottomViewSceneLayer.java | 19 ++-
|
||||
.../toolbar/top/ToolbarControlContainer.java | 9 ++
|
||||
.../top/TopToolbarOverlayCoordinator.java | 6 +
|
||||
.../top/TopToolbarOverlayProperties.java | 8 +-
|
||||
.../toolbar/top/TopToolbarSceneLayer.java | 10 +-
|
||||
.../res/xml/accessibility_preferences.xml | 8 +
|
||||
.../AccessibilitySettingsDelegate.java | 7 +
|
||||
.../render_widget_host_view_android.cc | 3 +
|
||||
.../Move-navigation-bar-to-bottom.inc | 17 ++
|
||||
74 files changed, 1011 insertions(+), 87 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc
|
||||
|
||||
diff --git a/cc/base/features.cc b/cc/base/features.cc
|
||||
@@ -445,15 +445,20 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
|
||||
@@ -8,6 +8,7 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.Card
|
||||
@@ -6,8 +6,12 @@ package org.chromium.chrome.browser.tasks.tab_management;
|
||||
|
||||
import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.CARD_TYPE;
|
||||
|
||||
+import android.os.Parcel;
|
||||
+import android.os.Parcelable;
|
||||
+
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
+import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
@@ -59,6 +60,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter;
|
||||
@@ -59,6 +63,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter;
|
||||
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
|
||||
import org.chromium.ui.widget.ViewLookupCachingFrameLayout;
|
||||
|
||||
@@ -462,11 +467,46 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.List;
|
||||
@@ -116,6 +119,75 @@ public class TabListCoordinator
|
||||
@@ -116,6 +122,128 @@ public class TabListCoordinator
|
||||
private @Nullable Runnable mAwaitingLayoutRunnable;
|
||||
private int mAwaitingTabId = Tab.INVALID_TAB_ID;
|
||||
|
||||
+ public class GridLayoutManagerDockBottom extends GridLayoutManager {
|
||||
+ public static class SavedState implements Parcelable {
|
||||
+ private Parcelable superState;
|
||||
+ private int mTopPadding;
|
||||
+
|
||||
+ public SavedState() {}
|
||||
+
|
||||
+ public SavedState(Parcel in) {
|
||||
+ superState = in.readParcelable(GridLayoutManager.class.getClassLoader());
|
||||
+ mTopPadding = in.readInt();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int describeContents() {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
+ dest.writeParcelable(superState, flags);
|
||||
+ dest.writeInt(mTopPadding);
|
||||
+ }
|
||||
+
|
||||
+ public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {
|
||||
+ @Override
|
||||
+ public SavedState createFromParcel(Parcel in) {
|
||||
+ return new SavedState(in);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public SavedState[] newArray(int size) {
|
||||
+ return new SavedState[size];
|
||||
+ }
|
||||
+ };
|
||||
+ }
|
||||
+
|
||||
+ Context mContext;
|
||||
+
|
||||
+ TabListRecyclerView mRecyclerView;
|
||||
@@ -533,12 +573,30 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
+ getPaddingTop() + getPaddingBottom());
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Parcelable onSaveInstanceState() {
|
||||
+ SavedState ss = new SavedState();
|
||||
+ ss.superState = super.onSaveInstanceState();
|
||||
+ ss.mTopPadding = mTopPadding;
|
||||
+ return ss;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onRestoreInstanceState(Parcelable state) {
|
||||
+ if (state instanceof SavedState) {
|
||||
+ SavedState ss = (SavedState) state;
|
||||
+ mTopPadding = ss.mTopPadding;
|
||||
+ state = ss.superState;
|
||||
+ }
|
||||
+ super.onRestoreInstanceState(state);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Construct a coordinator for UI that shows a list of tabs.
|
||||
*
|
||||
@@ -397,6 +469,12 @@ public class TabListCoordinator
|
||||
@@ -397,6 +525,12 @@ public class TabListCoordinator
|
||||
checkAwaitingLayout();
|
||||
}
|
||||
};
|
||||
@@ -551,7 +609,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
mRecyclerView.setLayoutManager(gridLayoutManager);
|
||||
mMediator.registerOrientationListener(gridLayoutManager);
|
||||
mMediator.updateSpanCount(
|
||||
@@ -408,8 +486,7 @@ public class TabListCoordinator
|
||||
@@ -408,8 +542,7 @@ public class TabListCoordinator
|
||||
.getDecorView()
|
||||
.getWindowVisibleDisplayFrame(frame);
|
||||
updateGridCardLayout(frame.width());
|
||||
@@ -561,7 +619,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
LinearLayoutManager layoutManager =
|
||||
new LinearLayoutManager(
|
||||
context,
|
||||
@@ -424,6 +501,17 @@ public class TabListCoordinator
|
||||
@@ -424,6 +557,17 @@ public class TabListCoordinator
|
||||
}
|
||||
};
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
@@ -579,7 +637,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
}
|
||||
mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations);
|
||||
}
|
||||
@@ -730,6 +818,9 @@ public class TabListCoordinator
|
||||
@@ -730,6 +874,9 @@ public class TabListCoordinator
|
||||
void prepareTabSwitcherView() {
|
||||
registerLayoutChangeListener();
|
||||
mRecyclerView.prepareTabSwitcherView();
|
||||
@@ -2486,7 +2544,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -1659,6 +1659,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
@@ -1650,6 +1650,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
<message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
|
||||
Force Tablet Mode
|
||||
</message>
|
||||
|
||||
@@ -480,7 +480,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -1054,6 +1054,30 @@ CHAR_LIMIT guidelines:
|
||||
@@ -1045,6 +1045,30 @@ CHAR_LIMIT guidelines:
|
||||
|
||||
For example, some websites may respond to this request by showing you ads that aren’t based on other websites you’ve visited. Many websites will still collect and use your browsing data — for example to improve security, to provide content, ads and recommendations, and to generate reporting statistics.
|
||||
</message>
|
||||
|
||||
@@ -11,9 +11,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../java/res/xml/privacy_preferences.xml | 7 ++++
|
||||
.../flags/cromite/sTabSwitcherListMode.java | 33 +++++++++++++++++++
|
||||
.../Use-list-mode-for-tab-switcher.grdp | 9 +++++
|
||||
.../browser/toolbar/top/ToolbarPhone.java | 15 ++++++---
|
||||
.../browser/toolbar/top/ToolbarPhone.java | 9 +++--
|
||||
.../tab-switcher-list-mode.inc | 3 ++
|
||||
6 files changed, 64 insertions(+), 7 deletions(-)
|
||||
6 files changed, 58 insertions(+), 7 deletions(-)
|
||||
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java
|
||||
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp
|
||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc
|
||||
@@ -111,30 +111,20 @@ new file mode 100644
|
||||
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
|
||||
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
|
||||
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
|
||||
@@ -53,6 +53,7 @@ import org.chromium.base.TraceEvent;
|
||||
import org.chromium.base.supplier.ObservableSupplier;
|
||||
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
|
||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode;
|
||||
import org.chromium.chrome.browser.omnibox.LocationBar;
|
||||
import org.chromium.chrome.browser.omnibox.LocationBarCoordinator;
|
||||
import org.chromium.chrome.browser.omnibox.NewTabPageDelegate;
|
||||
@@ -505,7 +506,8 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
@@ -505,7 +505,6 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
|
||||
private void inflateTabSwitchingResources() {
|
||||
mToggleTabStackButton = findViewById(R.id.tab_switcher_button);
|
||||
- mToggleTabStackButton.setClickable(false);
|
||||
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
|
||||
+ mToggleTabStackButton.setClickable(false);
|
||||
}
|
||||
|
||||
private void enableTabSwitchingResources() {
|
||||
@@ -1998,14 +2000,15 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
@@ -1998,14 +1997,14 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
// On entering the tab switcher, set the focusability of the url bar to be false. This will
|
||||
// occur at the start of the enter event, and will later be reset to true upon finishing the
|
||||
// exit event only in #onStartSurfaceStateChanged.
|
||||
- if (inTabSwitcherMode) {
|
||||
+ if (inTabSwitcherMode && !sTabSwitcherListMode.getInstance().isEnabled()) {
|
||||
+ if (inTabSwitcherMode && ((false))) {
|
||||
mLocationBar.setUrlBarFocusable(false);
|
||||
}
|
||||
|
||||
@@ -142,28 +132,25 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
|
||||
// start surface is enabled, omnibox state is updated in onStartSurfaceStateChanged(), which
|
||||
// is always called before setTabSwitcherMode(), so skip here.
|
||||
- if (getToolbarDataProvider().shouldShowLocationBarInOverviewMode()) {
|
||||
+ if (getToolbarDataProvider().shouldShowLocationBarInOverviewMode()
|
||||
+ && !sTabSwitcherListMode.getInstance().isEnabled()) {
|
||||
+ if (getToolbarDataProvider().shouldShowLocationBarInOverviewMode() && ((false))) {
|
||||
// Prevent pressing the tab switcher button until after transition finishes.
|
||||
mToggleTabStackButton.setClickable(false);
|
||||
return;
|
||||
@@ -2025,7 +2028,8 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
@@ -2025,7 +2024,7 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
return;
|
||||
}
|
||||
// Prevent pressing the tab switcher button until after transition finishes.
|
||||
- mToggleTabStackButton.setClickable(false);
|
||||
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
|
||||
+ mToggleTabStackButton.setClickable(false);
|
||||
+ // mToggleTabStackButton.setClickable(false);
|
||||
|
||||
mTabSwitcherState = inTabSwitcherMode ? ENTERING_TAB_SWITCHER : EXITING_TAB_SWITCHER;
|
||||
|
||||
@@ -2119,7 +2123,8 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
@@ -2119,7 +2118,7 @@ public class ToolbarPhone extends ToolbarLayout
|
||||
}
|
||||
if (mTabSwitcherState == ENTERING_TAB_SWITCHER) {
|
||||
mTabSwitcherState = TAB_SWITCHER;
|
||||
- mToggleTabStackButton.setClickable(false);
|
||||
+ if (!sTabSwitcherListMode.getInstance().isEnabled())
|
||||
+ mToggleTabStackButton.setClickable(false);
|
||||
+ // mToggleTabStackButton.setClickable(false);
|
||||
}
|
||||
// Ensure clickable if in STATIC_TAB mode. This handles both when the state transitions
|
||||
// are ignored in favor of onStartSurfaceStateChanged() and when normal transitions occur.
|
||||
|
||||
@@ -2,10 +2,10 @@ From: uazo <uazo@users.noreply.github.com>
|
||||
Date: Fri, 9 Apr 2021 20:09:08 +0000
|
||||
Subject: User agent customization
|
||||
|
||||
Add flag to always view the desktop site for all websites
|
||||
Add possibility to define a custom User agent for mobile and desktop mode.
|
||||
Add possibility to reactivate the metatag view for desktop mode, allowing users to choose
|
||||
to use the flag in the hamburger menu to navigate with a custom useragent leaving the standard navigation unchanged.
|
||||
Add possibility to reactivate the metatag view for desktop mode.
|
||||
The menu item in the hamburger menu applies to the tab only,
|
||||
whereas the content setting is intended for use in a specific site.
|
||||
|
||||
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
@@ -16,23 +16,29 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
chrome/android/chrome_java_sources.gni | 1 +
|
||||
.../layout/custom_useragent_preferences.xml | 106 ++++++++++
|
||||
.../android/java/res/xml/main_preferences.xml | 5 +
|
||||
.../java/res/xml/useragent_preferences.xml | 31 +++
|
||||
.../java/res/xml/useragent_preferences.xml | 25 +++
|
||||
.../chrome/browser/app/ChromeActivity.java | 2 +-
|
||||
.../init/ChromeBrowserInitializer.java | 3 +
|
||||
.../PrivacyPreferencesManagerImpl.java | 42 ++++
|
||||
.../settings/UserAgentPreferences.java | 188 ++++++++++++++++++
|
||||
.../chromium/chrome/browser/tab/TabImpl.java | 94 ++++++++-
|
||||
.../chromium/chrome/browser/tab/TabUtils.java | 24 ++-
|
||||
.../settings/UserAgentPreferences.java | 183 ++++++++++++++++++
|
||||
.../browser/tab/RequestDesktopUtils.java | 1 +
|
||||
.../chromium/chrome/browser/tab/TabImpl.java | 71 +++++--
|
||||
.../chromium/chrome/browser/tab/TabUtils.java | 17 +-
|
||||
.../browser/android/content/content_utils.cc | 30 +++
|
||||
.../preferences/browser_prefs_android.cc | 7 +
|
||||
.../privacy_preferences_manager_impl.cc | 124 ++++++++++++
|
||||
.../preferences/ChromePreferenceKeys.java | 7 +-
|
||||
...ktop_site_web_contents_observer_android.cc | 11 ++
|
||||
...sktop_site_web_contents_observer_android.h | 2 +
|
||||
.../preferences/ChromePreferenceKeys.java | 2 -
|
||||
.../settings/PrivacyPreferencesManager.java | 8 +
|
||||
.../org/chromium/chrome/browser/tab/Tab.java | 2 +
|
||||
.../browser/tabmodel/TabWindowManager.java | 2 +
|
||||
.../tabmodel/TabWindowManagerImpl.java | 18 ++
|
||||
.../strings/android_chrome_strings.grd | 35 ++++
|
||||
.../strings/android_chrome_strings.grd | 26 +++
|
||||
chrome/common/pref_names.h | 8 +
|
||||
.../widget/RadioButtonWithEditText.java | 11 +
|
||||
...omiteRequestDesktopSiteContentSetting.java | 76 ++++++++
|
||||
.../request_desktop_site.grdp | 18 ++
|
||||
.../widget/RadioButtonWithEditText.java | 11 ++
|
||||
.../embedder_support/user_agent_utils.cc | 3 +-
|
||||
.../navigation_controller_android.cc | 4 +
|
||||
.../navigation_controller_android.h | 1 +
|
||||
@@ -40,10 +46,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../browser/web_contents/web_contents_impl.cc | 6 +-
|
||||
.../framehost/NavigationControllerImpl.java | 3 +-
|
||||
content/renderer/render_thread_impl.cc | 1 -
|
||||
30 files changed, 752 insertions(+), 19 deletions(-)
|
||||
36 files changed, 794 insertions(+), 32 deletions(-)
|
||||
create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml
|
||||
create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
|
||||
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteRequestDesktopSiteContentSetting.java
|
||||
create mode 100644 components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp
|
||||
|
||||
diff --git a/base/base_switches.cc b/base/base_switches.cc
|
||||
--- a/base/base_switches.cc
|
||||
@@ -220,7 +228,7 @@ diff --git a/chrome/android/java/res/xml/useragent_preferences.xml b/chrome/andr
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/xml/useragent_preferences.xml
|
||||
@@ -0,0 +1,31 @@
|
||||
@@ -0,0 +1,25 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!--
|
||||
+ This file is part of Bromite.
|
||||
@@ -245,13 +253,19 @@ new file mode 100644
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
+
|
||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||
+ android:key="desktop_mode_switch"
|
||||
+ android:title="@string/option_desktop_flag"
|
||||
+ android:summaryOn="@string/option_desktop_flag_on"
|
||||
+ android:summaryOff="@string/option_desktop_flag_off" />
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
@@ -2741,7 +2741,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
TabUtils.switchUserAgent(
|
||||
currentTab,
|
||||
usingDesktopUserAgent,
|
||||
- /* forcedByUser= */ false,
|
||||
+ /* forcedByUser= */ true,
|
||||
UseDesktopUserAgentCaller.ON_MENU_OR_KEYBOARD_ACTION);
|
||||
// TODO(crbug.com/1456560): Remove this IPH when the usage is low.
|
||||
RequestDesktopUtils.maybeShowUserEducationPromptForAppMenuSelection(
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
|
||||
@@ -339,7 +353,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAg
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
|
||||
@@ -0,0 +1,188 @@
|
||||
@@ -0,0 +1,183 @@
|
||||
+/*
|
||||
+ This file is part of Bromite.
|
||||
+
|
||||
@@ -381,22 +395,23 @@ new file mode 100644
|
||||
+import org.chromium.components.browser_ui.widget.RadioButtonWithDescription;
|
||||
+import org.chromium.components.browser_ui.widget.RadioButtonWithEditText;
|
||||
+import org.chromium.components.browser_ui.settings.SettingsUtils;
|
||||
+
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
+
|
||||
+import org.chromium.components.content_settings.ContentSettingsType;
|
||||
+import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
|
||||
+import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
|
||||
+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
|
||||
+import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
|
||||
+import org.chromium.chrome.browser.profiles.Profile;
|
||||
+import org.chromium.chrome.browser.settings.ProfileDependentSetting;
|
||||
+import org.chromium.chrome.R;
|
||||
+
|
||||
+/**
|
||||
+ * Fragment that allows the user to configure User Agent related preferences.
|
||||
+ */
|
||||
+public class UserAgentPreferences
|
||||
+ extends PreferenceFragmentCompat implements RadioGroup.OnCheckedChangeListener {
|
||||
+ extends PreferenceFragmentCompat
|
||||
+ implements RadioGroup.OnCheckedChangeListener,
|
||||
+ ProfileDependentSetting {
|
||||
+
|
||||
+ private static final String PREF_STICK_DESKTOP_MODE_SWITCH = "desktop_mode_switch";
|
||||
+ private RadioButtonWithDescription useDefaultAgentSwitch;
|
||||
+ private RadioButtonWithEditText useCustomAgentSwitch;
|
||||
+ private RadioButtonWithDescription useDefaultAgentSwitchDesktopMode;
|
||||
@@ -404,23 +419,17 @@ new file mode 100644
|
||||
+ private RadioGroup mRadioGroup;
|
||||
+ private RadioGroup mRadioGroupDesktopMode;
|
||||
+ private CheckBox mDesktopModeViewportmeta;
|
||||
+ private Profile mProfile;
|
||||
+
|
||||
+ @Override
|
||||
+ public void setProfile(Profile profile) {
|
||||
+ mProfile = profile;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
+ getActivity().setTitle(R.string.useragent_settings_title);
|
||||
+ SettingsUtils.addPreferencesFromResource(this, R.xml.useragent_preferences);
|
||||
+
|
||||
+ ChromeSwitchPreference alwaysDesktopModeSwitch =
|
||||
+ (ChromeSwitchPreference) findPreference(PREF_STICK_DESKTOP_MODE_SWITCH);
|
||||
+ boolean enabled = ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
+ alwaysDesktopModeSwitch.setChecked(enabled);
|
||||
+ alwaysDesktopModeSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
+ ChromeSharedPreferences.getInstance().writeBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, (boolean) newValue);
|
||||
+ UpdateAllTabs();
|
||||
+ return true;
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -500,8 +509,8 @@ new file mode 100644
|
||||
+ }
|
||||
+
|
||||
+ private void UpdateAllTabs() {
|
||||
+ final boolean alwaysDesktopModeEnabled = ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false);
|
||||
+ final boolean alwaysDesktopModeEnabled = WebsitePreferenceBridge.isCategoryEnabled(
|
||||
+ mProfile, ContentSettingsType.REQUEST_DESKTOP_SITE);
|
||||
+ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(alwaysDesktopModeEnabled);
|
||||
+ }
|
||||
+
|
||||
@@ -528,99 +537,79 @@ new file mode 100644
|
||||
+ UpdateAllTabs();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java
|
||||
@@ -139,6 +139,7 @@ public class RequestDesktopUtils {
|
||||
*/
|
||||
public static void setRequestDesktopSiteContentSettingsForUrl(
|
||||
Profile profile, GURL url, boolean useDesktopUserAgent) {
|
||||
+ if ((true)) return;
|
||||
boolean isIncognito =
|
||||
Profile.getBrowserProfileTypeFromProfile(profile) == BrowserProfileType.INCOGNITO;
|
||||
String domainWildcardPattern =
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
|
||||
@@ -93,6 +93,11 @@ import org.chromium.chrome.browser.preferences.Pref;
|
||||
@@ -63,6 +63,9 @@ import org.chromium.components.autofill.AutofillFeatures;
|
||||
import org.chromium.components.autofill.AutofillProvider;
|
||||
import org.chromium.components.autofill.AutofillSelectionActionMenuDelegate;
|
||||
import org.chromium.components.autofill.AutofillSelectionMenuItemHelper;
|
||||
+import org.chromium.components.content_settings.ContentSettingValues;
|
||||
+import org.chromium.components.content_settings.ContentSettingsType;
|
||||
+import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
|
||||
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
|
||||
import org.chromium.components.embedder_support.util.UrlConstants;
|
||||
import org.chromium.components.embedder_support.view.ContentView;
|
||||
@@ -93,6 +96,9 @@ import org.chromium.chrome.browser.preferences.Pref;
|
||||
import org.chromium.chrome.browser.profiles.ProfileManager;
|
||||
import org.chromium.components.user_prefs.UserPrefs;
|
||||
|
||||
+import org.chromium.content_public.browser.NavigationController;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
+import org.chromium.components.embedder_support.util.UrlUtilities;
|
||||
+
|
||||
/**
|
||||
* Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This
|
||||
* class is not intended to be extended.
|
||||
@@ -627,6 +632,32 @@ class TabImpl implements Tab {
|
||||
params.setOverrideUserAgent(calculateUserAgentOverrideOption(null));
|
||||
@@ -678,11 +684,6 @@ class TabImpl implements Tab {
|
||||
return true;
|
||||
}
|
||||
|
||||
- // If desktop mode window setting is enabled, move switchUserAgentIfNeeded() from
|
||||
- // loadIfNeeded() to restoreIfNeeded(); to avoid reload without explicit user intent.
|
||||
- if (!ContentFeatureMap.isEnabled(ContentFeatureList.REQUEST_DESKTOP_SITE_WINDOW_SETTING)) {
|
||||
- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller);
|
||||
- }
|
||||
restoreIfNeeded(caller);
|
||||
return true;
|
||||
}
|
||||
@@ -1745,13 +1746,6 @@ class TabImpl implements Tab {
|
||||
}
|
||||
|
||||
+ final boolean stickyDesktopModeEnabled = ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
+ if (stickyDesktopModeEnabled) {
|
||||
+ boolean alwaysDesktopModeEnabled = ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false);
|
||||
+
|
||||
+ if (UrlUtilities.isInternalScheme(UrlFormatter.fixupUrl(params.getUrl()))) {
|
||||
+ alwaysDesktopModeEnabled = false;
|
||||
+ }
|
||||
+
|
||||
+ WebContents webContents = this.getWebContents();
|
||||
+ if (webContents != null) {
|
||||
+ NavigationController navigationController = webContents.getNavigationController();
|
||||
+ boolean currentUseDesktopUserAgent = navigationController.getUseDesktopUserAgent();
|
||||
+ if (currentUseDesktopUserAgent != alwaysDesktopModeEnabled)
|
||||
+ navigationController.setUseDesktopUserAgent(alwaysDesktopModeEnabled, false,
|
||||
+ UseDesktopUserAgentCaller.OTHER);
|
||||
+ }
|
||||
+
|
||||
+ if (alwaysDesktopModeEnabled) {
|
||||
+ params.setOverrideUserAgent((int)UserAgentOverrideOption.TRUE);
|
||||
+ } else {
|
||||
+ params.setOverrideUserAgent((int)UserAgentOverrideOption.FALSE);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
LoadUrlResult result = loadUrlInternal(params, fixedUrl);
|
||||
|
||||
for (TabObserver observer : mObservers) {
|
||||
@@ -1581,9 +1612,17 @@ class TabImpl implements Tab {
|
||||
|
||||
mWebContents.setImportance(mImportance);
|
||||
|
||||
- ContentUtils.setUserAgentOverride(
|
||||
+ if (ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false) &&
|
||||
+ ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false)) {
|
||||
+ ContentUtils.setUserAgentOverride(
|
||||
+ mWebContents, true);
|
||||
+ } else {
|
||||
+ ContentUtils.setUserAgentOverride(
|
||||
mWebContents,
|
||||
calculateUserAgentOverrideOption(null) == UserAgentOverrideOption.TRUE);
|
||||
+ }
|
||||
|
||||
mContentView.addOnAttachStateChangeListener(mAttachStateChangeListener);
|
||||
updateInteractableState();
|
||||
@@ -1756,6 +1795,10 @@ class TabImpl implements Tab {
|
||||
if (mWebContents != null) {
|
||||
- // If desktop mode window setting is enabled, move switchUserAgentIfNeeded() from
|
||||
- // loadIfNeeded() to restoreIfNeeded(); to avoid reload without explicit user
|
||||
- // intent.
|
||||
- if (ContentFeatureMap.isEnabled(
|
||||
- ContentFeatureList.REQUEST_DESKTOP_SITE_WINDOW_SETTING)) {
|
||||
- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller);
|
||||
- }
|
||||
mWebContents.getNavigationController().loadIfNecessary();
|
||||
}
|
||||
mIsBeingRestored = true;
|
||||
for (TabObserver observer : mObservers) observer.onRestoreStarted(this);
|
||||
+ if(overrideUserAgentWhenUnFrozen != UserAgentOverrideOption.INHERIT) {
|
||||
+ SetOverrideUserAgent(overrideUserAgentWhenUnFrozen == (int)UserAgentOverrideOption.TRUE ? true : false,
|
||||
+ /*forcedByUser*/ true);
|
||||
+ }
|
||||
} finally {
|
||||
TraceEvent.end("Tab.restoreIfNeeded");
|
||||
@@ -2061,6 +2055,11 @@ class TabImpl implements Tab {
|
||||
url = webContents.getVisibleUrl();
|
||||
}
|
||||
@@ -2051,6 +2094,13 @@ class TabImpl implements Tab {
|
||||
}
|
||||
|
||||
private @UserAgentOverrideOption int calculateUserAgentOverrideOption(@Nullable GURL url) {
|
||||
+ if (ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false) &&
|
||||
+ ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, false)) {
|
||||
+ return UserAgentOverrideOption.INHERIT;
|
||||
+ }
|
||||
+ if (tabUserAgent == TabUserAgent.MOBILE)
|
||||
+ return UserAgentOverrideOption.FALSE;
|
||||
+ else if (tabUserAgent == TabUserAgent.DESKTOP)
|
||||
+ return UserAgentOverrideOption.TRUE;
|
||||
+
|
||||
WebContents webContents = getWebContents();
|
||||
boolean currentRequestDesktopSite = TabUtils.isUsingDesktopUserAgent(webContents);
|
||||
@TabUserAgent int tabUserAgent = TabUtils.getTabUserAgent(this);
|
||||
@@ -2132,6 +2182,48 @@ class TabImpl implements Tab {
|
||||
// Do not override UA if there is a tab level setting.
|
||||
if (tabUserAgent != TabUserAgent.DEFAULT) {
|
||||
recordHistogramUseDesktopUserAgent(currentRequestDesktopSite);
|
||||
@@ -2132,6 +2131,54 @@ class TabImpl implements Tab {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,10 +617,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
|
||||
+
|
||||
+ public void SetOverrideUserAgent(boolean usingDesktopUserAgent, boolean forcedByUser) {
|
||||
+ WebContents webContents = this.getWebContents();
|
||||
+ overrideUserAgentWhenUnFrozen = UserAgentOverrideOption.INHERIT;
|
||||
+
|
||||
+ GURL url = this.getUrl();
|
||||
+ if (usingDesktopUserAgent) {
|
||||
+ GURL url = this.getUrl();
|
||||
+ if (webContents == null && this.getPendingLoadParams() != null) {
|
||||
+ url = UrlFormatter.fixupUrl(this.getPendingLoadParams().getUrl());
|
||||
+ }
|
||||
@@ -641,7 +629,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
|
||||
+
|
||||
+ if (forcedByUser) {
|
||||
+ @TabUserAgent
|
||||
+ int tabUserAgent = usingDesktopUserAgent ? TabUserAgent.DESKTOP : TabUserAgent.MOBILE;
|
||||
+ int tabUserAgent = TabUserAgent.DEFAULT;
|
||||
+ @ContentSettingValues
|
||||
+ int contentSetting = WebsitePreferenceBridge.getContentSetting(
|
||||
+ mProfile, ContentSettingsType.REQUEST_DESKTOP_SITE, url, url);
|
||||
+ if (!usingDesktopUserAgent
|
||||
+ && contentSetting != ContentSettingValues.BLOCK) {
|
||||
+ tabUserAgent = TabUserAgent.MOBILE;
|
||||
+ } else if (usingDesktopUserAgent
|
||||
+ && contentSetting != ContentSettingValues.ALLOW) {
|
||||
+ tabUserAgent = TabUserAgent.DESKTOP;
|
||||
+ }
|
||||
+
|
||||
+ setUserAgent(tabUserAgent);
|
||||
+ }
|
||||
+
|
||||
@@ -660,10 +659,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
|
||||
+ this.getPendingLoadParams().setOverrideUserAgent((int)UserAgentOverrideOption.FALSE);
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ overrideUserAgentWhenUnFrozen = usingDesktopUserAgent ? UserAgentOverrideOption.TRUE :
|
||||
+ UserAgentOverrideOption.FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@NativeMethods
|
||||
@@ -683,7 +678,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.ja
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@@ -124,17 +128,15 @@ public class TabUtils {
|
||||
@@ -124,18 +128,7 @@ public class TabUtils {
|
||||
// TODO(crbug.com/1413060): Remove param forcedByUser from TabUtils#switchUserAgent.
|
||||
public static void switchUserAgent(
|
||||
Tab tab, boolean switchToDesktop, boolean forcedByUser, int caller) {
|
||||
@@ -698,18 +693,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.ja
|
||||
- tabUserAgent = TabUserAgent.DEFAULT;
|
||||
- }
|
||||
- tab.setUserAgent(tabUserAgent);
|
||||
+ ChromeSharedPreferences.getInstance().writeBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, switchToDesktop);
|
||||
+
|
||||
+ final boolean stickyDesktopModeEnabled = ChromeSharedPreferences.getInstance().readBoolean(
|
||||
+ ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
|
||||
+ if (stickyDesktopModeEnabled) {
|
||||
+ TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(switchToDesktop);
|
||||
+ } else {
|
||||
+ tab.SetOverrideUserAgent(switchToDesktop, forcedByUser);
|
||||
}
|
||||
- }
|
||||
+ tab.SetOverrideUserAgent(switchToDesktop, forcedByUser);
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/android/content/content_utils.cc
|
||||
--- a/chrome/browser/android/content/content_utils.cc
|
||||
+++ b/chrome/browser/android/content/content_utils.cc
|
||||
@@ -919,27 +907,69 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
|
||||
+ enabled);
|
||||
+ UpdateOverrideUserAgent();
|
||||
+}
|
||||
diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
|
||||
--- a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
|
||||
+++ b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "base/command_line.h"
|
||||
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
+#include "chrome/browser/ui/android/tab_model/tab_model.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
#include "components/content_settings/core/common/content_settings_utils.h"
|
||||
#include "components/content_settings/core/common/pref_names.h"
|
||||
@@ -36,6 +37,7 @@ RequestDesktopSiteWebContentsObserverAndroid::
|
||||
if (base::FeatureList::IsEnabled(
|
||||
features::kRequestDesktopSiteWindowSetting)) {
|
||||
pref_service_ = profile->GetPrefs();
|
||||
+ tab_android_ = TabAndroid::FromWebContents(contents);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +53,15 @@ void RequestDesktopSiteWebContentsObserverAndroid::DidStartNavigation(
|
||||
return;
|
||||
}
|
||||
|
||||
+ // Stop UA override if there is a tab level setting.
|
||||
+ TabModel::TabUserAgent tabSetting =
|
||||
+ tab_android_
|
||||
+ ? static_cast<TabModel::TabUserAgent>(tab_android_->GetUserAgent())
|
||||
+ : TabModel::TabUserAgent::DEFAULT;
|
||||
+ if (tabSetting != TabModel::TabUserAgent::DEFAULT) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
const GURL& url = navigation_handle->GetParentFrameOrOuterDocument()
|
||||
? navigation_handle->GetParentFrameOrOuterDocument()
|
||||
->GetOutermostMainFrame()
|
||||
diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h
|
||||
--- a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h
|
||||
+++ b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef CHROME_BROWSER_CONTENT_SETTINGS_REQUEST_DESKTOP_SITE_WEB_CONTENTS_OBSERVER_ANDROID_H_
|
||||
#define CHROME_BROWSER_CONTENT_SETTINGS_REQUEST_DESKTOP_SITE_WEB_CONTENTS_OBSERVER_ANDROID_H_
|
||||
|
||||
+#include "chrome/browser/android/tab_android.h"
|
||||
#include "components/content_settings/core/browser/host_content_settings_map.h"
|
||||
#include "content/public/browser/web_contents_observer.h"
|
||||
#include "content/public/browser/web_contents_user_data.h"
|
||||
@@ -37,6 +38,7 @@ class RequestDesktopSiteWebContentsObserverAndroid
|
||||
|
||||
scoped_refptr<HostContentSettingsMap> host_content_settings_map_;
|
||||
raw_ptr<PrefService> pref_service_ = nullptr;
|
||||
+ raw_ptr<TabAndroid> tab_android_ = nullptr;
|
||||
|
||||
WEB_CONTENTS_USER_DATA_KEY_DECL();
|
||||
};
|
||||
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
||||
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
||||
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
||||
@@ -888,6 +888,9 @@ public final class ChromePreferenceKeys {
|
||||
public static final String BLUETOOTH_NOTIFICATION_IDS = "Chrome.Bluetooth.NotificationIds";
|
||||
public static final String USB_NOTIFICATION_IDS = "Chrome.USB.NotificationIds";
|
||||
|
||||
+ public static final String USERAGENT_STICKY_DESKTOP_MODE = "Chrome.UserAgent.StickyDesktopMode";
|
||||
+ public static final String USERAGENT_ALWAYS_DESKTOP_MODE = "Chrome.UserAgent.AlwaysDesktopMode";
|
||||
+
|
||||
/**
|
||||
* These values are currently used as SharedPreferences keys, along with the keys in
|
||||
* {@link LegacyChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys
|
||||
@@ -1019,8 +1022,8 @@ public final class ChromePreferenceKeys {
|
||||
@@ -1019,8 +1019,6 @@ public final class ChromePreferenceKeys {
|
||||
SIGNIN_PROMO_NTP_LAST_SHOWN_TIME,
|
||||
SYNC_PROMO_TOTAL_SHOW_COUNT,
|
||||
SEARCH_RESUMPTION_MODULE_COLLAPSE_ON_NTP,
|
||||
- SWAA_TIMESTAMP,
|
||||
- SWAA_STATUS,
|
||||
+ USERAGENT_STICKY_DESKTOP_MODE,
|
||||
+ USERAGENT_ALWAYS_DESKTOP_MODE,
|
||||
TABBED_ACTIVITY_LAST_VISIBLE_TIME_MS,
|
||||
TAB_DECLUTTER_ARCHIVE_ENABLED,
|
||||
TAB_DECLUTTER_ARCHIVE_TIME_DELTA_HOURS,
|
||||
@@ -1003,7 +1033,7 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro
|
||||
+
|
||||
+ for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) {
|
||||
+ Tab theTab = model.getTabAt(tabIdex);
|
||||
+ theTab.SetOverrideUserAgent(usingDesktopUserAgent, /*forcedByUser*/ true);
|
||||
+ theTab.SetOverrideUserAgent(usingDesktopUserAgent, /*forcedByUser*/ false);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
@@ -1016,7 +1046,7 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -239,6 +239,41 @@ CHAR_LIMIT guidelines:
|
||||
@@ -239,6 +239,32 @@ CHAR_LIMIT guidelines:
|
||||
Visit help page
|
||||
</message>
|
||||
|
||||
@@ -1027,15 +1057,6 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
||||
+ <message name="IDS_USERAGENT_SETTINGS_TITLE" desc="Title of the User Agent screen. [CHAR-LIMIT=32]">
|
||||
+ Customize User Agent
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTION_DESKTOP_FLAG" desc="The label of the option that allows users to sticky desktop mode view flag under hambuger menu.">
|
||||
+ Current behaviour for desktop mode toggle in hamburger menu
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTION_DESKTOP_FLAG_ON" desc="The label of the option that allows users to sticky desktop mode view flag under hambuger menu. [CHAR-LIMIT=32]">
|
||||
+ Applies to all tabs (sticky mode)
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTION_DESKTOP_FLAG_OFF" desc="The label of the option that revert the hambuger menu flag to actual behaviour. [CHAR-LIMIT=32]">
|
||||
+ Applies to website
|
||||
+ </message>
|
||||
+ <message name="IDS_CUSTOM_UA_FLAG_ON" desc="The label of the option that allows users to define custom user agent.">
|
||||
+ Use custom user agent
|
||||
+ </message>
|
||||
@@ -1076,6 +1097,110 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||
// Boolean indicating whether to show a promo for the quiet notification
|
||||
// permission UI.
|
||||
inline constexpr char kQuietNotificationPermissionShouldShowPromo[] =
|
||||
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteRequestDesktopSiteContentSetting.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteRequestDesktopSiteContentSetting.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteRequestDesktopSiteContentSetting.java
|
||||
@@ -0,0 +1,76 @@
|
||||
+/*
|
||||
+ This file is part of Bromite.
|
||||
+
|
||||
+ Bromite is free software: you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation, either version 3 of the License, or
|
||||
+ (at your option) any later version.
|
||||
+
|
||||
+ Bromite is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ GNU General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with Bromite. If not, see <https://www.gnu.org/licenses/>.
|
||||
+*/
|
||||
+
|
||||
+package org.chromium.components.browser_ui.site_settings.impl;
|
||||
+
|
||||
+import org.chromium.components.browser_ui.site_settings.R;
|
||||
+
|
||||
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
|
||||
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
||||
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
||||
+import org.chromium.components.content_settings.ContentSettingValues;
|
||||
+import org.chromium.components.content_settings.ContentSettingsType;
|
||||
+import org.chromium.content_public.browser.BrowserContextHandle;
|
||||
+
|
||||
+import androidx.annotation.Nullable;
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+
|
||||
+import java.util.ArrayList;
|
||||
+
|
||||
+public class BromiteRequestDesktopSiteContentSetting extends BromiteCustomContentSetting {
|
||||
+ public BromiteRequestDesktopSiteContentSetting() {
|
||||
+ super(/*contentSettingsType*/ ContentSettingsType.REQUEST_DESKTOP_SITE,
|
||||
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
|
||||
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
|
||||
+ /*allowException*/ true,
|
||||
+ /*preferenceKey*/ "request_desktop_site",
|
||||
+ /*profilePrefKey*/ "request_desktop_site_permission_list");
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public ContentSettingsResources.ResourceItem getResourceItem() {
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
|
||||
+ switch (value) {
|
||||
+ case ContentSettingValues.ALLOW:
|
||||
+ return R.string.website_settings_category_request_desktop_site_enabled;
|
||||
+ case ContentSettingValues.BLOCK:
|
||||
+ return R.string.website_settings_category_request_desktop_site_disabled;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getCategoryDescription() {
|
||||
+ return R.string.settings_site_settings_request_desktop_site_description;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAddExceptionDialogMessage() {
|
||||
+ return R.string.website_settings_category_request_desktop_site_enabled;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
|
||||
+ return value != ContentSettingValues.ALLOW;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp b/components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp
|
||||
@@ -0,0 +1,18 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<grit-part>
|
||||
+ <message name="IDS_SITE_SETTINGS_TYPE_REQUEST_DESKTOP_SITE" desc="The label used for request desktop site site settings controls." formatter_data="android_java">
|
||||
+ Request desktop site
|
||||
+ </message>
|
||||
+
|
||||
+ <message name="IDS_SETTINGS_SITE_SETTINGS_REQUEST_DESKTOP_SITE_DESCRIPTION" desc="" formatter_data="android_java">
|
||||
+ Request desktop site
|
||||
+ </message>
|
||||
+
|
||||
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_REQUEST_DESKTOP_SITE_ENABLED" desc="" formatter_data="android_java">
|
||||
+ Request desktop site
|
||||
+ </message>
|
||||
+
|
||||
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_REQUEST_DESKTOP_SITE_DISABLED" desc="" formatter_data="android_java">
|
||||
+ Request mobile site
|
||||
+ </message>
|
||||
+</grit-part>
|
||||
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java
|
||||
--- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java
|
||||
+++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java
|
||||
|
||||
@@ -1252,7 +1252,7 @@ diff --git a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/L
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -3290,7 +3290,29 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
@@ -3281,7 +3281,29 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||
<ph name="APP_NAME">%1$s<ex>Google Maps</ex></ph> will open in Chrome. By continuing, you agree to the <ph name="BEGIN_LINK1"><LINK1></ph>Google Terms of Service<ph name="END_LINK1"></LINK1></ph>, and the <ph name="BEGIN_LINK2"><LINK2></ph>Google Chrome and ChromeOS Additional Terms of Service<ph name="END_LINK2"></LINK2></ph>. The <ph name="BEGIN_LINK3"><LINK3></ph>Privacy Policy<ph name="END_LINK3"></LINK3></ph> also applies.
|
||||
</message>
|
||||
<message name="IDS_FRE_ACCEPT_CONTINUE" desc="Text for first page accept and continue button [CHAR_LIMIT=20]">
|
||||
|
||||
@@ -8,7 +8,7 @@ Subject: bromite build utils
|
||||
build/bromite/bromite_utils.gni | 79 +++++++++++++
|
||||
build/bromite/gyp/cpp_bromite_include.py | 35 ++++++
|
||||
build/bromite/gyp/cpp_bromite_include.pydeps | 9 ++
|
||||
build/bromite/gyp/java_bromite_impl.py | 108 ++++++++++++++++++
|
||||
build/bromite/gyp/java_bromite_impl.py | 107 ++++++++++++++++++
|
||||
build/bromite/gyp/java_bromite_impl.pydeps | 9 ++
|
||||
build/config/BUILDCONFIG.gn | 1 +
|
||||
build/config/android/rules.gni | 6 +-
|
||||
@@ -20,7 +20,7 @@ Subject: bromite build utils
|
||||
mojo/public/tools/mojom/mojom_parser.py | 22 +++-
|
||||
tools/grit/grit/grd_reader.py | 27 ++++-
|
||||
tools/grit/preprocess_if_expr.py | 32 +++++-
|
||||
17 files changed, 488 insertions(+), 19 deletions(-)
|
||||
17 files changed, 487 insertions(+), 19 deletions(-)
|
||||
create mode 100644 build/bromite/bromite_utils.gni
|
||||
create mode 100644 build/bromite/gyp/cpp_bromite_include.py
|
||||
create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps
|
||||
@@ -301,7 +301,7 @@ diff --git a/build/bromite/gyp/java_bromite_impl.py b/build/bromite/gyp/java_bro
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/build/bromite/gyp/java_bromite_impl.py
|
||||
@@ -0,0 +1,108 @@
|
||||
@@ -0,0 +1,107 @@
|
||||
+#!/usr/bin/env python3
|
||||
+
|
||||
+import argparse
|
||||
@@ -338,8 +338,7 @@ new file mode 100644
|
||||
+
|
||||
+ import_clause = '\n'.join(
|
||||
+ ['import ' + namespace + '.' + f + ';' for f in strings])
|
||||
+ print(namespace)
|
||||
+ print(static_classes)
|
||||
+
|
||||
+ if static_classes:
|
||||
+ add_clause = '\n\t'.join(['\tadd(' + f + '.getInstance());' for f in strings])
|
||||
+ else:
|
||||
|
||||
+5
-1
@@ -137,13 +137,16 @@
|
||||
|**Enable -fwrapv in Clang for non-UBSan builds** <br><sub><nobr> Thu, 22 Dec 2016 07:15:34 -0500</nobr> <br>File: [Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch](/build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch) <br><nobr>Author: Daniel</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Using -fwrapv (notably only when not using signed integer overflow checking -<br>since it will override it and result in not performing checks) is just common<br>sense since it eliminates the chance of security vulnerabilities being<br>introduced by optimizations based on signed overflow being undefined.<br>That has happened before, and those optimizations don't even add up to a 0.1%<br>performance increase for this kind of software. It's not worth having.<br>The Linux kernel passes -fwrapv and also -fno-strict-aliasing to disable those<br>dangerous optimizations (since there is so much incorrect code they can break).<br>In fact, it is easy to point to dozens of known examples of invalid code that<br>could potentially be broken by those optimizations.<br>It is not acceptable for projects to be using optimizations that are known to<br>be broken with a bunch of code in their tree.<br>They put barely any effort into even fixing the known cases.<br>Chromium has blacklists for UBSan for 'false positives' (none of which are<br>actually false positives, but rather "undefined, but not a bug beyond<br>potentially being broken by optimizations or even code generation without<br>them") and also for components too full of these bugs for them to currently<br>want to bother with it. That includes a bunch of signed overflow issues<br>(there is sadly no detection for aliasing violations, which are fairly common,<br>but not that common).<br>Ideally, -fwrapv could be always passed, but unfortunately the way it is<br>implemented has silly interactions with other switches.<br>The reason it would still make sense to pass it is because due to their UBSan<br>blacklists, they get far from full coverage with it, so -fwrapv would still<br>be better than nothing where it's not being used.<br>Since -fwrapv makes signed integer overflow well-defined, Clang will disable<br>the UBSan checks for signed integer overflow, including in the<br>production-oriented trapping mode used for hardening.<br>Excerpt from https://github.com/bromite/bromite/issues/226|
|
||||
|**Enable Android Dynamic Performance Framework** <br><sub><nobr> Wed, 23 Aug 2023 13:49:19 +0000</nobr> <br>File: [Enable-Android-Dynamic-Performance-Framework.patch](/build/patches/Enable-Android-Dynamic-Performance-Framework.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Enable Certificate Transparency** <br><sub><nobr> Fri, 10 Jun 2022 14:20:02 +0200</nobr> <br>File: [Enable-Certificate-Transparency.patch](/build/patches/Enable-Certificate-Transparency.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Reporting/auditing functionalities are disabled; a flag is exposed.<br>Add guard to make sure that certificate transparency stays enabled<br>by default.|
|
||||
|**Enable Do-Not-Track by default** <br><sub><nobr> Wed, 29 May 2024 13:49:01 +0000</nobr> <br>File: [Enable-Do-Not-Track-by-default.patch](/build/patches/Enable-Do-Not-Track-by-default.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Enable Document Open Inheritance Removal** <br><sub><nobr> Tue, 28 Mar 2023 15:43:18 +0000</nobr> <br>File: [Enable-Document-Open-Inheritance-Removal.patch](/build/patches/Enable-Document-Open-Inheritance-Removal.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Enable Global Privacy Control** <br><sub><nobr> Wed, 29 May 2024 13:43:50 +0000</nobr> <br>File: [Enable-Global-Privacy-Control.patch](/build/patches/Enable-Global-Privacy-Control.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Enable HEVC by default** <br><sub><nobr> Tue, 27 Sep 2022 23:39:54 +0200</nobr> <br>File: [Enable-HEVC-by-default.patch](/build/patches/Enable-HEVC-by-default.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Add a guard to avoid setting to be disabled upstream.|
|
||||
|**Enable ImprovedBookmarks by default** <br><sub><nobr> Tue, 12 Sep 2023 12:39:23 +0000</nobr> <br>File: [Enable-ImprovedBookmarks-by-default.patch](/build/patches/Enable-ImprovedBookmarks-by-default.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Enable PermuteTLSExtensions by default** <br><sub><nobr> Fri, 2 Dec 2022 01:18:14 +0100</nobr> <br>File: [Enable-PermuteTLSExtensions-by-default.patch](/build/patches/Enable-PermuteTLSExtensions-by-default.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> ||
|
||||
|**Enable StrictOriginIsolation and SitePerProcess** <br><sub><nobr> Sat, 29 Jan 2022 15:25:19 +0000</nobr> <br>File: [Enable-StrictOriginIsolation-and-SitePerProcess.patch](/build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Enable the StrictOriginIsolation feature and the SitePerProcess preference.<br>SitePerProcess: bypass any device memory size check.<br>SitePerProcess: always consider enterprise policies applicable.|
|
||||
|**Enable darken websites checkbox in themes** <br><sub><nobr> Thu, 20 Aug 2020 20:15:34 +0200</nobr> <br>File: [Enable-darken-websites-checkbox-in-themes.patch](/build/patches/Enable-darken-websites-checkbox-in-themes.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Unexpire #darken-websites-checkbox-in-themes-setting|
|
||||
|**Enable gwp asan on Android** <br><sub><nobr> Fri, 12 Jan 2024 15:04:40 +0000</nobr> <br>File: [Enable-gwp-asan-on-Android.patch](/build/patches/Enable-gwp-asan-on-Android.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: </nobr> |the patch enables gwp asan in android and changes the activation<br>conditions to 50% for all build configs.<br>in android there is a test function accessible in the developer settings.|
|
||||
|**Enable menu on reload button** <br><sub><nobr> Sat, 25 May 2024 10:34:38 +0000</nobr> <br>File: [Enable-menu-on-reload-button.patch](/build/patches/Enable-menu-on-reload-button.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> |Activate right-button submenu in reload (desktop platforms).<br>Patch derived from the ungoogled-chromium patch of the same name.|
|
||||
|**Enable native Android autofill** <br><sub><nobr> Sun, 24 Oct 2021 16:54:04 +0000</nobr> <br>File: [Enable-native-Android-autofill.patch](/build/patches/Enable-native-Android-autofill.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |There are 2 different types of autofill: one managed via GCM and the<br>native Android one that uses the provider assigned by the user<br>(which can be any user installed app like Bitwarden for example).<br>In chromium GCM is active while in the WebView the latter.<br>This patch uses WebView code to enable native Android autofill<br>along with browser-managed autofill.<br>A separate toggle is introduced to enable autofill in incognito mode.<br>See also: https://github.com/bromite/bromite/issues/547|
|
||||
|**Enable network isolation features** <br><sub><nobr> Thu, 10 Dec 2020 21:52:35 +0100</nobr> <br>File: [Enable-network-isolation-features.patch](/build/patches/Enable-network-isolation-features.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Enable SplitCacheByNetworkIsolationKey, kSplitHostCacheByNetworkIsolationKey,<br>kPartitionConnectionsByNetworkIsolationKey, kPartitionHttpServerPropertiesByNetworkIsolationKey,<br>kPartitionSSLSessionsByNetworkIsolationKey, PartitionExpectCTStateByNetworkIsolationKey,<br>PartitionNelAndReportingByNetworkIsolationKey|
|
||||
|**Enable percent based scrolling on Windows** <br><sub><nobr> Tue, 27 Feb 2024 08:53:37 +0000</nobr> <br>File: [Enable-percent-based-scrolling-on-Windows.patch](/build/patches/Enable-percent-based-scrolling-on-Windows.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> |mousewheel and keyboard scrolls will scroll by a<br>percentage of the scroller size and the default scroll<br>animation is replaced with Impulse-style scroll animations|
|
||||
@@ -182,6 +185,7 @@
|
||||
|**Lock Profile Cookie Database** <br><sub><nobr> Mon, 17 Jul 2023 15:24:54 +0000</nobr> <br>File: [Lock-Profile-Cookie-Database.patch](/build/patches/Lock-Profile-Cookie-Database.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|**Log dangling attributes in some html elements** <br><sub><nobr> Mon, 5 Jun 2023 17:06:03 +0000</nobr> <br>File: [Log-dangling-attributes-in-some-html-elements.patch](/build/patches/Log-dangling-attributes-in-some-html-elements.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> |Log for iframes and the base tag all attributes<br>containing newlines or the less-then sign that can be exploited<br>to extract or send otherwise inaccessible information.<br>under enable-log-dangling-attributes about flag|
|
||||
|**Logcat crash reports UI** <br><sub><nobr> Tue, 15 Jun 2021 11:49:43 +0000</nobr> <br>File: [Logcat-crash-reports-UI.patch](/build/patches/Logcat-crash-reports-UI.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> ||
|
||||
|**Media fingerprinting mitigations** <br><sub><nobr> Thu, 30 May 2024 11:42:21 +0000</nobr> <br>File: [Media-fingerprinting-mitigations.patch](/build/patches/Media-fingerprinting-mitigations.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> |Removes the ability to understand the capabilities of the video card in windows.<br>See https://github.com/uazo/cromite/issues/862|
|
||||
|**Modify default preferences** <br><sub><nobr> Sat, 2 May 2020 00:25:25 +0200</nobr> <br>File: [Modify-default-preferences.patch](/build/patches/Modify-default-preferences.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> ||
|
||||
|**Move navigation bar to bottom** <br><sub><nobr> Tue, 18 Jan 2022 07:43:32 +0000</nobr> <br>File: [Move-navigation-bar-to-bottom.patch](/build/patches/Move-navigation-bar-to-bottom.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Adds an accessibility flag that allows navigation bar to be moved to the bottom.<br>Unlike what is present in other browsers, this actually moves the bar below,<br>without creating other elements.<br>The bottom bar will also be colored as the navigation bar to make the interface<br>more pleasant and fixes upstream bug 1285311.<br>Support for tablet mode is also included.<br>Need: bromite-build-utils.patch|
|
||||
|**Move some account settings back to privacy settings** <br><sub><nobr> Sun, 4 Oct 2020 12:58:17 +0200</nobr> <br>File: [Move-some-account-settings-back-to-privacy-settings.patch](/build/patches/Move-some-account-settings-back-to-privacy-settings.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Search suggestions, autofill assistant and contextual search|
|
||||
@@ -246,7 +250,7 @@
|
||||
|**Use 64-bit WebView processes** <br><sub><nobr> Thu, 26 Jan 2017 01:30:12 -0500</nobr> <br>File: [Use-64-bit-WebView-processes.patch](/build/patches/Use-64-bit-WebView-processes.patch) <br><nobr>Author: Daniel</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |64-bit processes introduce 10% or so higher memory consumption.<br>The reason for preferring 64-bit processes is providing substantially better<br>exploit mitigations at the expense of slightly more memory usage.<br>In addition to the standard mitigations, it also enables usage of<br>https://github.com/AndroidHardening/hardened_malloc (where available).<br>It will provide high entropy ASLR (24-bit to 32-bit depending on whether the<br>kernel uses 3 or 4 level page tables rather than 16-bit for 32-bit processes),<br>high entropy stack canaries (56/64-bit instead of 24/32-bit depending on<br>whether a zero byte is used) and also features like pointer authentication and<br>memory tagging when those are made available in the future.<br>The reason why upstream started preferring 32-bit processes is to save memory,<br>particularly since saving memory makes it feasible to use finer-grained<br>sandboxing.|
|
||||
|**Use dummy DFM installer** <br><sub><nobr> Sun, 15 Dec 2019 19:40:37 +0100</nobr> <br>File: [Use-dummy-DFM-installer.patch](/build/patches/Use-dummy-DFM-installer.patch) <br><nobr>Author: csagan5</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> ||
|
||||
|**Use list mode for tab switcher** <br><sub><nobr> Tue, 12 Dec 2023 16:38:10 +0000</nobr> <br>File: [Use-list-mode-for-tab-switcher.patch](/build/patches/Use-list-mode-for-tab-switcher.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> |Added a setting for the option<br>need: Add-cromite-flags-support.patch|
|
||||
|**User agent customization** <br><sub><nobr> Fri, 9 Apr 2021 20:09:08 +0000</nobr> <br>File: [User-agent-customization.patch](/build/patches/User-agent-customization.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Add flag to always view the desktop site for all websites<br>Add possibility to define a custom User agent for mobile and desktop mode.<br>Add possibility to reactivate the metatag view for desktop mode, allowing users to choose<br>to use the flag in the hamburger menu to navigate with a custom useragent leaving the standard navigation unchanged.|
|
||||
|**User agent customization** <br><sub><nobr> Fri, 9 Apr 2021 20:09:08 +0000</nobr> <br>File: [User-agent-customization.patch](/build/patches/User-agent-customization.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-3.0-only</nobr> |Add possibility to define a custom User agent for mobile and desktop mode.<br>Add possibility to reactivate the metatag view for desktop mode.<br>The menu item in the hamburger menu applies to the tab only,<br>whereas the content setting is intended for use in a specific site.|
|
||||
|**Viewport Protection flag** <br><sub><nobr> Tue, 20 Dec 2022 11:06:42 +0000</nobr> <br>File: [Viewport-Protection-flag.patch](/build/patches/Viewport-Protection-flag.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: </nobr> |Scale the viewport and the screen by a random factor to<br>prevent coordinate-based fingerprinting scripts.<br>The factor is changed at each change of origin.<br>The feature is controlled by a feature flag (default enabled)<br>Require: Content-settings-infrastructure.patch|
|
||||
|**WIN Add some prefs to secure preferences** <br><sub><nobr> Mon, 15 May 2023 13:35:24 +0000</nobr> <br>File: [WIN-Add-some-prefs-to-secure-preferences.patch](/build/patches/WIN-Add-some-prefs-to-secure-preferences.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: </nobr> ||
|
||||
|**WIN Disable TabHoverCard images** <br><sub><nobr> Tue, 14 Mar 2023 15:58:00 +0000</nobr> <br>File: [WIN-Disable-TabHoverCard-images.patch](/build/patches/WIN-Disable-TabHoverCard-images.patch) <br><nobr>Author: uazo</nobr> <br><nobr>Context: </nobr> <br><nobr>License: GPL-2.0-or-later</nobr> ||
|
||||
|
||||
@@ -1 +1 @@
|
||||
125.0.6422.76
|
||||
125.0.6422.113
|
||||
|
||||
Reference in New Issue
Block a user