From 896eecc4d47bbb241a531663a3d88df433a12612 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Thu, 22 Sep 2022 20:50:30 +0200 Subject: [PATCH] adapted for v106 --- .../Add-an-always-incognito-mode.patch | 39 +++- ...Add-lifetime-options-for-permissions.patch | 15 +- build/patches/Add-webGL-site-setting.patch | 2 +- build/patches/Add-webRTC-site-settings.patch | 16 +- build/patches/Client-hints-overrides.patch | 14 +- .../Content-settings-infrastructure.patch | 54 +++--- build/patches/Disable-safe-browsing.patch | 94 ++++++++-- .../Experimental-user-scripts-support.patch | 170 +++--------------- build/patches/JIT-site-settings.patch | 8 +- .../Move-navigation-bar-to-bottom.patch | 24 +-- ...-modal-dialog-flag-to-close-all-tabs.patch | 2 +- .../Remove-binary-blob-integrations.patch | 77 ++++++-- .../Remove-contextual-search-manager.patch | 38 ++-- ...price-shopping-commerce-integrations.patch | 152 +++++++++++++--- .../Remove-segmentation-platform.patch | 14 +- .../Remove-signin-and-sync-integrations.patch | 93 +++++----- ...Remove-voice-recognition-integration.patch | 14 +- .../Restore-Search-Ready-Omnibox-flag.patch | 4 +- .../Restore-Simplified-NTP-launch.patch | 4 +- .../Restore-offline-indicator-v2-flag.patch | 4 +- ...moval-of-an-option-to-block-autoplay.patch | 8 +- build/patches/Site-setting-for-images.patch | 10 +- build/patches/Timezone-customization.patch | 51 +++--- 23 files changed, 525 insertions(+), 382 deletions(-) diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 40901052..67bcc5f3 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -58,11 +58,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/history/history_tab_helper.h | 10 +- .../android/offline_page_bridge.cc | 13 +- .../android/offline_page_model_factory.cc | 21 ++- - .../android/request_coordinator_factory.cc | 17 ++ + .../android/request_coordinator_factory.cc | 21 ++- .../offline_page_model_factory.h | 1 + .../offline_pages/recent_tab_helper.cc | 19 ++- .../browser/offline_pages/recent_tab_helper.h | 3 + - .../request_coordinator_factory.h | 2 + + .../request_coordinator_factory.h | 4 +- chrome/browser/prefs/browser_prefs.cc | 5 + .../browser/ui/android/native_page/BUILD.gn | 2 + .../browser/ui/native_page/NativePage.java | 12 +- @@ -82,7 +82,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../omnibox/browser/base_search_provider.cc | 2 +- components/omnibox/browser/search_provider.cc | 4 +- .../host_content_settings_map_factory.cc | 1 + - 63 files changed, 676 insertions(+), 72 deletions(-) + 63 files changed, 680 insertions(+), 74 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -1413,7 +1413,15 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc b/chrome/browser/offline_pages/android/request_coordinator_factory.cc --- a/chrome/browser/offline_pages/android/request_coordinator_factory.cc +++ b/chrome/browser/offline_pages/android/request_coordinator_factory.cc -@@ -28,6 +28,11 @@ +@@ -19,6 +19,7 @@ + #include "chrome/browser/ui/android/tab_model/tab_model.h" + #include "chrome/browser/ui/android/tab_model/tab_model_list.h" + #include "chrome/common/chrome_constants.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" + #include "components/offline_pages/core/background/offliner.h" + #include "components/offline_pages/core/background/offliner_policy.h" + #include "components/offline_pages/core/background/request_coordinator.h" +@@ -28,6 +29,11 @@ #include "components/offline_pages/core/offline_page_feature.h" #include "content/public/browser/web_contents.h" @@ -1425,7 +1433,17 @@ diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc namespace network { class NetworkQualityTracker; } -@@ -111,4 +116,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( +@@ -61,7 +67,8 @@ class ActiveTabInfo : public RequestCoordinator::ActiveTabInfo { + }; + + RequestCoordinatorFactory::RequestCoordinatorFactory() +- : ProfileKeyedServiceFactory("OfflineRequestCoordinator") { ++ : BrowserContextKeyedServiceFactory("OfflineRequestCoordinator", ++ BrowserContextDependencyManager::GetInstance()) { + // Depends on OfflinePageModelFactory in SimpleDependencyManager. + } + +@@ -111,4 +118,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( return request_coordinator; } @@ -1512,6 +1530,15 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/o diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome/browser/offline_pages/request_coordinator_factory.h --- a/chrome/browser/offline_pages/request_coordinator_factory.h +++ b/chrome/browser/offline_pages/request_coordinator_factory.h +@@ -18,7 +18,7 @@ namespace offline_pages { + class RequestCoordinator; + + // A factory to create one unique RequestCoordinator. +-class RequestCoordinatorFactory : public ProfileKeyedServiceFactory { ++class RequestCoordinatorFactory : public BrowserContextKeyedServiceFactory { + public: + static RequestCoordinatorFactory* GetInstance(); + static RequestCoordinator* GetForBrowserContext( @@ -36,6 +36,8 @@ class RequestCoordinatorFactory : public ProfileKeyedServiceFactory { KeyedService* BuildServiceInstanceFor( @@ -1606,7 +1633,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ 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 -@@ -1168,6 +1168,37 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1171,6 +1171,37 @@ Your Google account may have other forms of browsing history like searches and a Clears history from all synced devices. diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index f506063d..037a7395 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -83,14 +83,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../android/permissions_android_strings.grd | 17 ++++ .../geolocation_permission_context_android.cc | 35 ++++++-- .../geolocation_permission_context_android.h | 13 ++- - .../permissions/permission_context_base.cc | 49 +++++++++-- + .../permissions/permission_context_base.cc | 49 ++++++++++- .../permissions/permission_context_base.h | 24 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 34 +++++++- components/permissions/permission_request.h | 17 +++- .../permissions/permission_request_manager.cc | 37 ++++++--- .../permissions/permission_request_manager.h | 11 ++- - 38 files changed, 480 insertions(+), 61 deletions(-) + 38 files changed, 481 insertions(+), 60 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -1092,7 +1092,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } UpdateTabContext(id, requesting_origin, -@@ -526,13 +556,22 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -526,6 +556,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time) { @@ -1108,14 +1108,15 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); DCHECK(content_setting == CONTENT_SETTING_ALLOW || - content_setting == CONTENT_SETTING_BLOCK); - +@@ -534,6 +573,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, content_settings::ContentSettingConstraints constraints = { -- base::Time(), is_one_time ? content_settings::SessionModel::OneTime -+ base::Time(), is_one_time ? content_settings::GetConstraintSessionExpiration(lifetime_option) + base::Time(), is_one_time ? content_settings::SessionModel::OneTime : content_settings::SessionModel::Durable}; ++ if (is_one_time) ++ constraints = content_settings::GetConstraintSessionExpiration(lifetime_option); #if !BUILDFLAG(IS_ANDROID) + if (base::FeatureList::IsEnabled( diff --git a/components/permissions/permission_context_base.h b/components/permissions/permission_context_base.h --- a/components/permissions/permission_context_base.h +++ b/components/permissions/permission_context_base.h diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 710d9503..3926c7ab 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -232,7 +232,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. + AllowlistedSchemes(), + ValidSettings(CONTENT_SETTING_ALLOW, + CONTENT_SETTING_BLOCK), -+ WebsiteSettingsInfo::SINGLE_ORIGIN_WITH_EMBEDDED_EXCEPTIONS_SCOPE, ++ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::PLATFORM_ANDROID, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + ContentSettingsInfo::PERSISTENT, diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index cfb32f51..00c967a8 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -25,8 +25,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/content_settings_agent_impl.cc | 9 ++ .../renderer/content_settings_agent_impl.h | 1 + .../platform/web_content_settings_client.h | 2 + - .../peer_connection_dependency_factory.cc | 5 ++ - 19 files changed, 160 insertions(+), 4 deletions(-) + .../peer_connection_dependency_factory.cc | 6 ++ + 19 files changed, 161 insertions(+), 4 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteWebRTCContentSetting.java create mode 100644 components/browser_ui/strings/android/webrtc.grdp @@ -228,7 +228,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. + AllowlistedSchemes(), + ValidSettings(CONTENT_SETTING_ALLOW, + CONTENT_SETTING_BLOCK), -+ WebsiteSettingsInfo::SINGLE_ORIGIN_WITH_EMBEDDED_EXCEPTIONS_SCOPE, ++ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::PLATFORM_ANDROID, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + ContentSettingsInfo::PERSISTENT, @@ -377,7 +377,15 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -767,6 +767,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -33,6 +33,7 @@ + #include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h" + #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" + #include "third_party/blink/public/platform/platform.h" ++#include "third_party/blink/public/platform/web_content_settings_client.h" + #include "third_party/blink/public/platform/web_url.h" + #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" + #include "third_party/blink/public/web/web_document.h" +@@ -767,6 +768,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // origin. WebRTCIPHandlingPolicy policy = GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy); diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index ce456bba..dc51fd86 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -8,7 +8,6 @@ use Google Chrome branding for client hints License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/prefs/browser_prefs.cc | 1 + components/embedder_support/user_agent_utils.cc | 4 +--- content/browser/client_hints/client_hints.cc | 3 ++- content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ @@ -19,19 +18,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/blink/common/client_hints/client_hints.cc | 1 + .../blink/common/client_hints/enabled_client_hints.cc | 4 +++- third_party/blink/common/features.cc | 4 ++-- - 11 files changed, 20 insertions(+), 18 deletions(-) + 10 files changed, 19 insertions(+), 18 deletions(-) -diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc ---- a/chrome/browser/prefs/browser_prefs.cc -+++ b/chrome/browser/prefs/browser_prefs.cc -@@ -778,6 +778,7 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { - registry->RegisterBooleanPref(kCloudPolicyOverridesPlatformPolicy, false); - - registry->RegisterIntegerPref(kStabilityRendererHangCount, 0); -+ registry->RegisterBooleanPref(kUserAgentClientHintsEnabled, false); - registry->RegisterIntegerPref(kStabilityIncompleteSessionEndCount, 0); - registry->RegisterBooleanPref(kStabilitySessionEndCompleted, true); - diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc --- a/components/embedder_support/user_agent_utils.cc +++ b/components/embedder_support/user_agent_utils.cc diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 3dbaeed8..240bf30b 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../BromiteCustomContentSettingImpl.java | 270 ++++++++++++++++++ .../BromiteCustomContentSetting_README.md | 151 ++++++++++ .../ContentSettingsResources.java | 13 +- - .../site_settings/SingleCategorySettings.java | 28 +- + .../site_settings/SingleCategorySettings.java | 30 +- .../site_settings/SingleWebsiteSettings.java | 24 +- .../site_settings/SiteSettings.java | 3 +- .../site_settings/SiteSettingsCategory.java | 9 +- @@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../android/page_info_controller_android.cc | 18 ++ components/page_info/page_info.cc | 23 +- components/page_info/page_info_ui.cc | 18 ++ - 23 files changed, 731 insertions(+), 28 deletions(-) + 23 files changed, 733 insertions(+), 28 deletions(-) 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 create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting_README.md @@ -307,7 +307,7 @@ new file mode 100644 + BrowserContextHandle browserContextHandle, + Preference preference, Object newValue) { + for (BromiteCustomContentSetting cs : mItemList) { -+ if (!category.showSites(cs.getSiteSettingsCategory())) { ++ if (category.getType() != cs.getSiteSettingsCategory()) { + continue; + } + @@ -340,7 +340,7 @@ new file mode 100644 + + public static @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { + for (BromiteCustomContentSetting cs : mItemList) { -+ if (category.showSites(cs.getSiteSettingsCategory())) { ++ if (category.getType() == cs.getSiteSettingsCategory()) { + return cs.considerException(category, value); + } + } @@ -349,7 +349,7 @@ new file mode 100644 + + public static int getAddExceptionDialogMessage(SiteSettingsCategory category) { + for (BromiteCustomContentSetting cs : mItemList) { -+ if (category.showSites(cs.getSiteSettingsCategory())) { ++ if (category.getType() == cs.getSiteSettingsCategory()) { + return cs.getAddExceptionDialogMessage(); + } + } @@ -358,7 +358,7 @@ new file mode 100644 + + public static @Nullable Boolean allowSpecifyingExceptions(SiteSettingsCategory category) { + for (BromiteCustomContentSetting cs : mItemList) { -+ if (category.showSites(cs.getSiteSettingsCategory())) { ++ if (category.getType() == cs.getSiteSettingsCategory()) { + return cs.isExceptionAllowed(); + } + } @@ -667,16 +667,18 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -241,6 +241,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment - return ContentSettingValues.ALLOW != contentSetting; - else - return ContentSettingValues.BLOCK == contentSetting; -+ if (BromiteCustomContentSettingImpl.processOnBlockList(contentSetting, contentSetting)) -+ return BromiteCustomContentSettingImpl.isOnBlockList(contentSetting, website, contentSetting); - } - return false; - } -@@ -390,6 +392,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -236,6 +236,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment + @ContentSettingValues + Integer contentSetting = website.site().getContentSetting( + browserContextHandle, mCategory.getContentSettingsType()); ++ if (contentSetting != null && ++ BromiteCustomContentSettingImpl.processOnBlockList(contentSetting, contentSetting)) { ++ return BromiteCustomContentSettingImpl.isOnBlockList(contentSetting, website, contentSetting); ++ } + if (contentSetting != null) { + if (mCategory.getContentSettingsType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + return ContentSettingValues.ALLOW != contentSetting; +@@ -391,6 +395,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -684,7 +686,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); setHasOptionsMenu(true); -@@ -489,6 +492,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -490,6 +495,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -696,8 +698,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); -@@ -644,6 +652,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment - } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { +@@ -645,6 +655,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment + } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { resource = R.string.website_settings_category_timezone_override_allowed; } + if (resource == 0) @@ -705,9 +707,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert resource > 0; return getString(resource); } -@@ -756,6 +766,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -757,6 +769,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment allowSpecifyingExceptions = true; - } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { + } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { allowSpecifyingExceptions = true; + } else { + Boolean allow = BromiteCustomContentSettingImpl.allowSpecifyingExceptions(mCategory); @@ -715,7 +717,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } if (allowSpecifyingExceptions) { getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(), -@@ -927,6 +940,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -928,6 +943,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment TriStateSiteSettingsPreference triStateToggle = (TriStateSiteSettingsPreference) getPreferenceScreen().findPreference( TRI_STATE_TOGGLE_KEY); @@ -726,15 +728,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (triStateToggle != null) return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); -@@ -1005,6 +1022,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment - if (!(mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE))) { +@@ -1006,6 +1025,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment + if (mCategory.getType() != SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { screen.removePreference(screen.findPreference(TIMEOVERRIDE_INFO_TEXT)); } + BromiteCustomContentSettingImpl.configureGlobalToggles(mCategory, screen); if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1131,7 +1149,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1132,7 +1152,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -743,7 +745,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureTimeOverrideStateToggle( -@@ -1242,6 +1260,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1243,6 +1263,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); diff --git a/build/patches/Disable-safe-browsing.patch b/build/patches/Disable-safe-browsing.patch index 29deefe5..bc99a31e 100644 --- a/build/patches/Disable-safe-browsing.patch +++ b/build/patches/Disable-safe-browsing.patch @@ -32,7 +32,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/download/download_item_model.cc | 15 +++- chrome/browser/download/download_item_model.h | 4 + chrome/browser/download/download_prefs.cc | 17 ++-- - chrome/browser/download/download_stats.cc | 4 + + chrome/browser/download/download_stats.cc | 6 ++ .../download/download_target_determiner.cc | 66 +++++----------- .../download/download_target_determiner.h | 6 ++ .../browser/download/download_target_info.cc | 4 + @@ -42,7 +42,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../extensions/api/downloads/downloads_api.cc | 41 +--------- .../extensions/api/downloads/downloads_api.h | 12 --- .../webstore_private/webstore_private_api.cc | 18 +---- - ...e_file_system_access_permission_context.cc | 6 ++ + ...e_file_system_access_permission_context.cc | 12 +++ ...me_file_system_access_permission_context.h | 5 +- .../lookalike_url_controller_client.cc | 4 - .../metrics/chrome_metrics_service_client.cc | 3 - @@ -66,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ssl/security_state_tab_helper.cc | 10 +-- ...urce_filter_web_contents_helper_factory.cc | 4 + chrome/browser/ui/BUILD.gn | 2 - - .../strings/android_chrome_strings.grd | 9 --- + .../strings/android_chrome_strings.grd | 21 ----- chrome/browser/ui/tab_helpers.cc | 8 ++ .../ui/webui/interstitials/interstitial_ui.cc | 12 +-- chrome/common/safe_browsing/BUILD.gn | 7 -- @@ -91,7 +91,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../file_system_access_permission_context.h | 6 -- weblayer/BUILD.gn | 4 - weblayer/test/BUILD.gn | 1 - - 82 files changed, 202 insertions(+), 694 deletions(-) + 82 files changed, 210 insertions(+), 706 deletions(-) diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrome/android/java/res/xml/google_services_preferences.xml --- a/chrome/android/java/res/xml/google_services_preferences.xml @@ -1207,6 +1207,22 @@ diff --git a/chrome/browser/download/download_stats.cc b/chrome/browser/download } void RecordOpenedDangerousConfirmDialog( +@@ -41,6 +45,7 @@ void RecordOpenedDangerousConfirmDialog( + + void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, + const std::string& mime_type_string) { ++#if defined(FULL_SAFE_BROWSING) + base::RecordAction(base::UserMetricsAction("Download.Open")); + base::UmaHistogramEnumeration("Download.OpenMethod", open_method, + DOWNLOAD_OPEN_METHOD_LAST_ENTRY); +@@ -49,6 +54,7 @@ void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, + mime_type_string, /*record_content_subcategory=*/false); + base::UmaHistogramEnumeration("Download.Open.ContentType", download_content, + download::DownloadContent::MAX); ++#endif + } + + void RecordDatabaseAvailability(bool is_available) { diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc --- a/chrome/browser/download/download_target_determiner.cc +++ b/chrome/browser/download/download_target_determiner.cc @@ -1680,7 +1696,33 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss #include "chrome/browser/ui/file_system_access_dialogs.h" #include "chrome/common/chrome_paths.h" #include "chrome/grit/generated_resources.h" -@@ -342,6 +344,7 @@ BindResultCallbackToCurrentSequence( +@@ -46,7 +48,9 @@ + #include "components/content_settings/core/common/content_settings_utils.h" + #include "components/permissions/permission_util.h" + #include "components/safe_browsing/buildflags.h" ++#if defined(FULL_SAFE_BROWSING) + #include "components/safe_browsing/content/common/file_type_policies.h" ++#endif + #include "content/public/browser/browser_task_traits.h" + #include "content/public/browser/browser_thread.h" + #include "content/public/browser/disallow_activation_reason.h" +@@ -144,6 +148,7 @@ void ShowFileSystemAccessRestrictedDirectoryDialogOnUIThread( + origin, path, handle_type, std::move(callback), web_contents); + } + ++#if defined(FULL_SAFE_BROWSING) + void ShowFileSystemAccessDangerousFileDialogOnUIThread( + content::GlobalRenderFrameHostId frame_id, + const url::Origin& origin, +@@ -172,6 +177,7 @@ void ShowFileSystemAccessDangerousFileDialogOnUIThread( + ShowFileSystemAccessDangerousFileDialog(origin, path, std::move(callback), + web_contents); + } ++#endif + + // Sentinel used to indicate that no PathService key is specified for a path in + // the struct below. +@@ -342,6 +348,7 @@ BindResultCallbackToCurrentSequence( base::SequencedTaskRunnerHandle::Get(), std::move(callback)); } @@ -1688,7 +1730,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void DoSafeBrowsingCheckOnUIThread( content::GlobalRenderFrameHostId frame_id, std::unique_ptr item, -@@ -418,6 +421,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { +@@ -418,6 +425,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { NOTREACHED(); return ChromeFileSystemAccessPermissionContext::AfterWriteCheckResult::kBlock; } @@ -1696,7 +1738,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss std::string GenerateLastPickedDirectoryKey(const std::string& id) { return id.empty() ? kDefaultLastPickedDirectoryKey -@@ -1200,6 +1204,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( +@@ -1200,6 +1208,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( frame_id, std::move(callback))); } @@ -1704,7 +1746,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( std::unique_ptr item, content::GlobalRenderFrameHostId frame_id, -@@ -1221,6 +1226,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( +@@ -1221,6 +1230,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( }, base::SequencedTaskRunnerHandle::Get(), std::move(callback)))); } @@ -1712,6 +1754,22 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void ChromeFileSystemAccessPermissionContext:: DidConfirmSensitiveDirectoryAccess( +@@ -1235,6 +1245,7 @@ void ChromeFileSystemAccessPermissionContext:: + if (!should_block) { + // If attempting to save a file with a dangerous extension, prompt the user + // to make them confirm they actually want to save the file. ++#if defined(FULL_SAFE_BROWSING) + if (dialog_type == ui::SelectFileDialog::SELECT_SAVEAS_FILE) { + safe_browsing::DownloadFileType::DangerLevel danger_level = + safe_browsing::FileTypePolicies::GetInstance()->GetFileDangerLevel( +@@ -1254,6 +1265,7 @@ void ChromeFileSystemAccessPermissionContext:: + return; + } + } ++#endif + std::move(callback).Run(SensitiveEntryResult::kAllowed); + return; + } diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h @@ -2399,10 +2457,22 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn 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 -@@ -411,12 +411,6 @@ CHAR_LIMIT guidelines: - - For more settings that relate to privacy, security, and data collection, see <link>Google services</link> +@@ -399,24 +399,6 @@ CHAR_LIMIT guidelines: + + Make searches and browsing better +- +- Sends URLs of pages you visit to Google +- +- +- For more settings that relate to privacy, security, and data collection, see <link>Sync and Google services</link> +- +- +- For more settings that relate to privacy, security, and data collection, see <link1>Sync</link1> and <link2>Google services</link2> +- +- +- For more settings that relate to privacy, security, and data collection, see <link>Google services</link> +- - - Help improve Chrome\u2019s features and performance - @@ -2412,7 +2482,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4846,9 +4840,6 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

<link>Make searches and browsing better</link> must be turned on diff --git a/build/patches/Experimental-user-scripts-support.patch b/build/patches/Experimental-user-scripts-support.patch index cafa70a5..713071ec 100644 --- a/build/patches/Experimental-user-scripts-support.patch +++ b/build/patches/Experimental-user-scripts-support.patch @@ -106,7 +106,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../common/user_scripts_features.h | 34 + components/user_scripts/common/view_type.cc | 39 + components/user_scripts/common/view_type.h | 48 ++ - components/user_scripts/renderer/BUILD.gn | 67 ++ + components/user_scripts/renderer/BUILD.gn | 65 ++ .../renderer/extension_frame_helper.cc | 95 +++ .../renderer/extension_frame_helper.h | 91 ++ .../user_scripts/renderer/injection_host.cc | 12 + @@ -114,11 +114,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/resources/greasemonkey_api.js | 82 ++ .../user_scripts_renderer_resources.grd | 14 + .../user_scripts/renderer/script_context.cc | 215 +++++ - .../user_scripts/renderer/script_context.h | 69 ++ - .../user_scripts/renderer/script_injection.cc | 343 ++++++++ - .../user_scripts/renderer/script_injection.h | 154 ++++ - .../renderer/script_injection_callback.cc | 25 + - .../renderer/script_injection_callback.h | 38 + + .../user_scripts/renderer/script_context.h | 68 ++ + .../user_scripts/renderer/script_injection.cc | 309 +++++++ + .../user_scripts/renderer/script_injection.h | 155 ++++ .../renderer/script_injection_manager.cc | 417 +++++++++ .../renderer/script_injection_manager.h | 101 +++ .../user_scripts/renderer/script_injector.h | 96 +++ @@ -136,9 +134,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/user_scripts_renderer_client.h | 37 + .../renderer/web_ui_injection_host.cc | 40 + .../renderer/web_ui_injection_host.h | 27 + - .../strings/userscripts_strings.grdp | 57 ++ + .../strings/userscripts_strings.grdp | 54 ++ tools/gritsettings/resource_ids.spec | 6 + - 111 files changed, 9595 insertions(+), 2 deletions(-) + 109 files changed, 9493 insertions(+), 2 deletions(-) create mode 100644 components/user_scripts/README.md create mode 100755 components/user_scripts/android/BUILD.gn create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml @@ -206,8 +204,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html create mode 100755 components/user_scripts/renderer/script_context.h create mode 100755 components/user_scripts/renderer/script_injection.cc create mode 100755 components/user_scripts/renderer/script_injection.h - create mode 100755 components/user_scripts/renderer/script_injection_callback.cc - create mode 100755 components/user_scripts/renderer/script_injection_callback.h create mode 100755 components/user_scripts/renderer/script_injection_manager.cc create mode 100755 components/user_scripts/renderer/script_injection_manager.h create mode 100755 components/user_scripts/renderer/script_injector.h @@ -413,7 +409,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/autofill_assistant/password_change/apc_client.h" #include "chrome/browser/cart/cart_service.h" -@@ -1324,6 +1325,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1323,6 +1324,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, translate::TranslatePrefs::RegisterProfilePrefs(registry); omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); @@ -7349,7 +7345,7 @@ diff --git a/components/user_scripts/renderer/BUILD.gn b/components/user_scripts new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/BUILD.gn -@@ -0,0 +1,67 @@ +@@ -0,0 +1,65 @@ +# Copyright 2015 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. @@ -7383,8 +7379,6 @@ new file mode 100755 + "injection_host.h", + "script_injection_manager.cc", + "script_injection_manager.h", -+ "script_injection_callback.cc", -+ "script_injection_callback.h", + "script_injection.cc", + "script_injection.h", + "script_injector.h", @@ -8006,7 +8000,7 @@ diff --git a/components/user_scripts/renderer/script_context.h b/components/user new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/script_context.h -@@ -0,0 +1,69 @@ +@@ -0,0 +1,68 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -8024,7 +8018,6 @@ new file mode 100755 +#include "base/threading/thread_checker.h" +#include "base/unguessable_token.h" +#include "../common/script_constants.h" -+#include "script_injection_callback.h" +#include "url/gurl.h" +#include "v8/include/v8.h" + @@ -8080,7 +8073,7 @@ diff --git a/components/user_scripts/renderer/script_injection.cc b/components/u new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/script_injection.cc -@@ -0,0 +1,343 @@ +@@ -0,0 +1,309 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -8101,7 +8094,6 @@ new file mode 100755 +#include "content/public/renderer/render_frame_observer.h" +#include "content/public/renderer/v8_value_converter.h" +#include "../common/host_id.h" -+#include "script_injection_callback.h" +#include "scripts_run_info.h" +#include "third_party/blink/public/platform/web_isolated_world_info.h" +#include "third_party/blink/public/platform/web_security_origin.h" @@ -8159,38 +8151,6 @@ new file mode 100755 + return id; +} + -+// This class manages its own lifetime. -+class TimedScriptInjectionCallback : public ScriptInjectionCallback { -+ public: -+ TimedScriptInjectionCallback(base::WeakPtr injection) -+ : ScriptInjectionCallback( -+ base::BindOnce(&TimedScriptInjectionCallback::OnCompleted, -+ base::Unretained(this))), -+ injection_(injection) {} -+ ~TimedScriptInjectionCallback() override {} -+ -+ void OnCompleted(const std::vector>& result) { -+ if (injection_) { -+ base::TimeTicks timestamp(base::TimeTicks::Now()); -+ absl::optional elapsed; -+ // If the script will never execute (such as if the context is destroyed), -+ // willExecute() will not be called, but OnCompleted() will. Only log a -+ // time for execution if the script, in fact, executed. -+ if (!start_time_.is_null()) -+ elapsed = timestamp - start_time_; -+ injection_->OnJsInjectionCompleted(result, elapsed); -+ } -+ } -+ -+ void WillExecute() override { -+ start_time_ = base::TimeTicks::Now(); -+ } -+ -+ private: -+ base::WeakPtr injection_; -+ base::TimeTicks start_time_; -+}; -+ +} // namespace + +// Watches for the deletion of a RenderFrame, after which is_valid will return @@ -8339,10 +8299,6 @@ new file mode 100755 + run_location_, executing_scripts, num_injected_js_scripts); + DCHECK(!sources.empty()); + int world_id = GetIsolatedWorldIdForInstance(injection_host_.get()); -+ bool is_user_gesture = injector_->IsUserGesture(); -+ -+ std::unique_ptr callback( -+ new TimedScriptInjectionCallback(weak_ptr_factory_.GetWeakPtr())); + + base::ElapsedTimer exec_timer; + @@ -8357,21 +8313,24 @@ new file mode 100755 + injector_->script_type() == UserScript::CONTENT_SCRIPT && + (run_location_ == UserScript::DOCUMENT_END || + run_location_ == UserScript::DOCUMENT_IDLE); -+ blink::WebLocalFrame::ScriptExecutionType execution_option = ++ blink::mojom::EvaluationTiming execution_option = + should_execute_asynchronously -+ ? blink::WebLocalFrame::kAsynchronousBlockingOnload -+ : blink::WebLocalFrame::kSynchronous; ++ ? blink::mojom::EvaluationTiming::kAsynchronous ++ : blink::mojom::EvaluationTiming::kSynchronous; + + render_frame_->GetWebFrame()->RequestExecuteScript( -+ world_id, sources, is_user_gesture, -+ execution_option, callback.release(), ++ world_id, sources, blink::mojom::UserActivationOption::kDoNotActivate, ++ execution_option, ++ blink::mojom::LoadEventBlockingOption::kBlock, ++ base::BindOnce(&ScriptInjection::OnJsInjectionCompleted, ++ weak_ptr_factory_.GetWeakPtr()), + blink::BackForwardCacheAware::kPossiblyDisallow, -+ blink::WebLocalFrame::PromiseBehavior::kDontWait); -+} ++ blink::mojom::PromiseResultOption::kDoNotWait); ++ } + +void ScriptInjection::OnJsInjectionCompleted( -+ const std::vector>& results, -+ absl::optional elapsed) { ++ const blink::WebVector>& results, ++ base::TimeTicks start_time) { + DCHECK(!did_inject_js_); + + bool expects_results = injector_->ExpectsResults(); @@ -8428,7 +8387,7 @@ diff --git a/components/user_scripts/renderer/script_injection.h b/components/us new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/script_injection.h -@@ -0,0 +1,154 @@ +@@ -0,0 +1,155 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -8446,6 +8405,7 @@ new file mode 100755 +#include "../common/user_script.h" +#include "injection_host.h" +#include "script_injector.h" ++#include "third_party/blink/public/web/web_script_execution_callback.h" + +struct HostID; + @@ -8518,8 +8478,8 @@ new file mode 100755 + + // Called when JS injection for the given frame has been completed or + // cancelled. -+ void OnJsInjectionCompleted(const std::vector>& results, -+ absl::optional elapsed); ++ void OnJsInjectionCompleted(const blink::WebVector>& results, ++ base::TimeTicks start_time); + + private: + class FrameWatcher; @@ -8583,79 +8543,6 @@ new file mode 100755 +} // namespace extensions + +#endif // USERSCRIPTS_RENDERER_SCRIPT_INJECTION_H_ -diff --git a/components/user_scripts/renderer/script_injection_callback.cc b/components/user_scripts/renderer/script_injection_callback.cc -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/renderer/script_injection_callback.cc -@@ -0,0 +1,25 @@ -+// Copyright 2015 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#include "script_injection_callback.h" -+ -+#include "third_party/blink/public/platform/web_vector.h" -+ -+namespace user_scripts { -+ -+ScriptInjectionCallback::ScriptInjectionCallback( -+ CompleteCallback injection_completed_callback) -+ : injection_completed_callback_(std::move(injection_completed_callback)) {} -+ -+ScriptInjectionCallback::~ScriptInjectionCallback() { -+} -+ -+void ScriptInjectionCallback::Completed( -+ const blink::WebVector>& result) { -+ std::vector> stl_result(result.begin(), result.end()); -+ std::move(injection_completed_callback_).Run(stl_result); -+ delete this; -+} -+ -+} // namespace extensions -diff --git a/components/user_scripts/renderer/script_injection_callback.h b/components/user_scripts/renderer/script_injection_callback.h -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/renderer/script_injection_callback.h -@@ -0,0 +1,38 @@ -+// Copyright 2015 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef USERSCRIPTS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_ -+#define USERSCRIPTS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_ -+ -+#include -+ -+#include "base/callback.h" -+#include "third_party/blink/public/web/web_script_execution_callback.h" -+#include "v8/include/v8.h" -+ -+namespace user_scripts { -+ -+// A wrapper around a callback to notify a script injection when injection -+// completes. -+// This class manages its own lifetime. -+class ScriptInjectionCallback : public blink::WebScriptExecutionCallback { -+ public: -+ ScriptInjectionCallback(const ScriptInjectionCallback&) = delete; -+ ScriptInjectionCallback& operator=(const ScriptInjectionCallback&) = delete; -+ using CompleteCallback = -+ base::OnceCallback>& result)>; -+ -+ explicit ScriptInjectionCallback( -+ CompleteCallback injection_completed_callback); -+ ~ScriptInjectionCallback() override; -+ -+ void Completed(const blink::WebVector>& result) override; -+ -+ private: -+ CompleteCallback injection_completed_callback_; -+}; -+ -+} // namespace extensions -+ -+#endif // USERSCRIPTS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_ diff --git a/components/user_scripts/renderer/script_injection_manager.cc b/components/user_scripts/renderer/script_injection_manager.cc new file mode 100755 --- /dev/null @@ -10570,7 +10457,7 @@ diff --git a/components/user_scripts/strings/userscripts_strings.grdp b/componen new file mode 100755 --- /dev/null +++ b/components/user_scripts/strings/userscripts_strings.grdp -@@ -0,0 +1,57 @@ +@@ -0,0 +1,54 @@ + + + @@ -10620,9 +10507,6 @@ new file mode 100755 + +NOTE: only install user scripts that you have verified are secure, user scripts can steal your credentials and data. + -+ -+ Yes -+ + + No + diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 7841dd42..b88cfe0c 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -214,11 +214,11 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -609,6 +609,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -610,6 +610,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment browserContextHandle, ContentSettingsType.JAVASCRIPT) ? R.string.website_settings_add_site_description_javascript_block : R.string.website_settings_add_site_description_javascript_allow; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT_JIT)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT_JIT) { + resource = WebsitePreferenceBridge.isCategoryEnabled( + browserContextHandle, ContentSettingsType.JAVASCRIPT_JIT) + ? R.string.website_settings_add_site_description_javascript_jit_block @@ -226,11 +226,11 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (mCategory.getType() == SiteSettingsCategory.Type.SOUND) { resource = WebsitePreferenceBridge.isCategoryEnabled( browserContextHandle, ContentSettingsType.SOUND) -@@ -731,6 +736,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -732,6 +737,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment allowSpecifyingExceptions = true; } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT) { allowSpecifyingExceptions = true; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT_JIT)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT_JIT) { + allowSpecifyingExceptions = true; } else if (mCategory.getType() == SiteSettingsCategory.Type.COOKIES) { allowSpecifyingExceptions = true; diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 7951e95f..48b83cdb 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -45,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/settings/SettingsActivity.java | 5 ++ .../StatusIndicatorCoordinator.java | 10 ++++ .../StatusIndicatorSceneLayer.java | 7 ++- - .../browser/toolbar/ToolbarManager.java | 35 +++++++++++-- + .../browser/toolbar/ToolbarManager.java | 37 +++++++++++-- .../chrome/browser/ui/BottomContainer.java | 19 +++++++ chrome/browser/about_flags.cc | 5 ++ .../scene_layer/tab_strip_scene_layer.cc | 16 ++++-- @@ -82,7 +82,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../accessibility/AccessibilitySettings.java | 16 ++++++ .../AccessibilitySettingsDelegate.java | 6 +++ .../render_widget_host_view_android.cc | 3 ++ - 70 files changed, 752 insertions(+), 55 deletions(-) + 70 files changed, 753 insertions(+), 56 deletions(-) diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc @@ -1302,7 +1302,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -179,6 +179,9 @@ import org.chromium.url.GURL; +@@ -178,6 +178,9 @@ import org.chromium.url.GURL; import java.util.List; @@ -1312,7 +1312,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar /** * Contains logic for managing the toolbar visual component. This class manages the interactions * with the rest of the application to ensure the toolbar is always visually up to date. -@@ -662,7 +665,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -661,7 +664,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve mEphemeralTabCoordinatorSupplier); // clang-format off LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator( @@ -1321,7 +1321,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar PrivacyPreferencesManagerImpl.getInstance(), mLocationBarModel, mActionModeController.getActionModeCallback(), new WindowDelegate(mActivity.getWindow()), windowAndroid, mActivityTabProvider, -@@ -915,11 +918,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -914,11 +917,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1335,7 +1335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener(mLayoutChangeListener); mLayoutChangeListener = null; } -@@ -1300,13 +1305,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1299,13 +1304,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return mLocationBar.getOmniboxStub().isUrlBarFocused(); } @@ -1363,17 +1363,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mScrimCoordinator, mOmniboxFocusStateSupplier, mBottomSheetController, mActivityLifecycleDispatcher, mIsWarmOnResumeSupplier, mTabModelSelector, mTabContentManager, mCompositorViewHolder, -@@ -1316,7 +1333,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1314,8 +1331,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve + mBottomControlsCoordinatorSupplier.set( new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager, mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer, - mFullscreenManager, (ScrollingBottomViewResourceFrameLayout) root, +- mFullscreenManager, (ScrollingBottomViewResourceFrameLayout) root, - mTabGroupUi, mOverlayPanelVisibilitySupplier, mConstraintsProxy)); ++ mFullscreenManager, (ScrollingBottomViewResourceFrameLayout) bottomRoot, + mTabGroupUi, mOverlayPanelVisibilitySupplier, mConstraintsProxy, + mTopUiThemeColorProvider, mActivityTabProvider)); } /** -@@ -2083,6 +2101,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2067,6 +2085,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve private void setControlContainerTopMargin(int margin) { final ViewGroup.MarginLayoutParams layoutParams = ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams()); @@ -1597,7 +1599,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse #include "base/metrics/field_trial_params.h" #include "base/no_destructor.h" #include "base/strings/string_piece_forward.h" -@@ -257,6 +258,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -256,6 +257,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kKitKatSupported, &kLensCameraAssistedSearch, &kLensOnQuickActionSearchWidget, @@ -1977,7 +1979,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 -@@ -1474,6 +1474,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1477,6 +1477,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode diff --git a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch index a007a481..f59c9913 100644 --- a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch +++ b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch @@ -185,7 +185,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kCloseTabSuggestions, &kBookmarksExportUseSaf, &kCriticalPersistedTabData, -@@ -513,6 +514,9 @@ const base::Feature kBulkTabRestore{"BulkTabRestore", +@@ -512,6 +513,9 @@ const base::Feature kBulkTabRestore{"BulkTabRestore", const base::Feature kConditionalTabStripAndroid{ "ConditionalTabStripAndroid", base::FEATURE_DISABLED_BY_DEFAULT}; diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index ee10aa0e..70c2cc93 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../language/settings/LanguageSettings.java | 6 - .../prefetch/prefetch_service_factory.cc | 16 - .../browser/password_manager/android/BUILD.gn | 4 - - .../PasswordManagerAndroidBackendUtil.java | 31 +- + .../PasswordManagerAndroidBackendUtil.java | 40 +- .../PasswordSettingsUpdaterBridge.java | 11 - ...swordSyncControllerDelegateBridgeImpl.java | 7 - .../push_messaging_service_factory.cc | 8 +- @@ -95,7 +95,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/signin/public/android/BUILD.gn | 3 - .../signin/AccountRenameChecker.java | 16 - components/webauthn/android/BUILD.gn | 10 - - .../webauthn/AuthenticatorImpl.java | 24 - + .../webauthn/AuthenticatorImpl.java | 43 +- .../webauthn/Fido2ApiCallHelper.java | 23 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - @@ -109,7 +109,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/android_deps/BUILD.gn | 539 +----------------- .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 10 +- - 85 files changed, 86 insertions(+), 1984 deletions(-) + 85 files changed, 88 insertions(+), 2010 deletions(-) diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -1089,17 +1089,18 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java -@@ -10,9 +10,6 @@ import android.app.PendingIntent; +@@ -9,10 +9,6 @@ import android.app.PendingIntent; + import androidx.annotation.Nullable; - import com.google.android.gms.common.ConnectionResult; +-import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.ResolvableApiException; - import org.chromium.base.Log; import org.chromium.chrome.browser.password_manager.CredentialManagerLauncher.CredentialManagerError; -@@ -29,9 +26,6 @@ class PasswordManagerAndroidBackendUtil { +@@ -29,9 +25,6 @@ class PasswordManagerAndroidBackendUtil { if (exception instanceof PasswordStoreAndroidBackend.BackendException) { return ((PasswordStoreAndroidBackend.BackendException) exception).errorCode; } @@ -1109,7 +1110,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom return AndroidBackendErrorType.UNCATEGORIZED; } -@@ -40,17 +34,11 @@ class PasswordManagerAndroidBackendUtil { +@@ -40,44 +33,15 @@ class PasswordManagerAndroidBackendUtil { return ((PasswordCheckupClientHelper.PasswordCheckBackendException) exception) .errorCode; } @@ -1128,10 +1129,15 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom } @Nullable -@@ -63,21 +51,4 @@ class PasswordManagerAndroidBackendUtil { - - return connectionResult.getErrorCode(); - } + static Integer getConnectionResultCode(Exception exception) { +- if (!(exception instanceof ApiException)) return null; +- +- ConnectionResult connectionResult = +- ((ApiException) exception).getStatus().getConnectionResult(); +- if (connectionResult == null) return null; +- +- return connectionResult.getErrorCode(); +- } - - static void handleResolvableApiException(ResolvableApiException exception) { - if (!usesUnifiedPasswordManagerUI()) return; @@ -1148,7 +1154,8 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom - } catch (PendingIntent.CanceledException e) { - Log.e(TAG, "Can not launch error resolution intent", e); - } -- } ++ return null; + } } diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java @@ -3324,7 +3331,35 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java -@@ -136,15 +136,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -67,8 +67,6 @@ public final class AuthenticatorImpl implements Authenticator { + private Queue> + mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue = new LinkedList<>(); + +- private static Fido2CredentialRequest sFido2CredentialRequestOverrideForTesting; +- + /** + * Builds the Authenticator service implementation. + * +@@ -97,18 +95,6 @@ public final class AuthenticatorImpl implements Authenticator { + mGmsCorePackageVersion = PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME); + } + +- public static void overrideFido2CredentialRequestForTesting(Fido2CredentialRequest request) { +- sFido2CredentialRequestOverrideForTesting = request; +- } +- +- private Fido2CredentialRequest getFido2CredentialRequest() { +- if (sFido2CredentialRequestOverrideForTesting != null) { +- return sFido2CredentialRequestOverrideForTesting; +- } +- +- return new Fido2CredentialRequest(mIntentSender, mSupportLevel); +- } +- + /** + * Called by InternalAuthenticatorAndroid, which facilitates WebAuthn for processes that + * originate from the browser process. Since the request is from the browser process, the +@@ -136,15 +122,7 @@ public final class AuthenticatorImpl implements Authenticator { mMakeCredentialCallback = callback; mIsOperationPending = true; @@ -3340,7 +3375,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -157,15 +149,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -157,15 +135,7 @@ public final class AuthenticatorImpl implements Authenticator { mGetAssertionCallback = callback; mIsOperationPending = true; @@ -3356,7 +3391,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -178,15 +162,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -178,15 +148,7 @@ public final class AuthenticatorImpl implements Authenticator { callback.call(isUvpaa); }; @@ -3371,6 +3406,18 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - isUvpaa -> onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa)); } + @Override +@@ -202,10 +164,7 @@ public final class AuthenticatorImpl implements Authenticator { + // reason, this method will return true but chrome will ignore conditional requests. + // Android surfaces only platform credentials on conditional requests, use IsUVPAA as a + // proxy for availability. +- mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(callback); +- getFido2CredentialRequest().handleIsUserVerifyingPlatformAuthenticatorAvailableRequest( +- mRenderFrameHost, +- isUvpaa -> onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa)); ++ callback.call(false); + } + @Override diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java diff --git a/build/patches/Remove-contextual-search-manager.patch b/build/patches/Remove-contextual-search-manager.patch index 91ce218e..3e8bf8bb 100644 --- a/build/patches/Remove-contextual-search-manager.patch +++ b/build/patches/Remove-contextual-search-manager.patch @@ -31,15 +31,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../privacy/settings/PrivacySettings.java | 9 -- .../chrome/browser/tab/TabHelpers.java | 2 - .../tabbed_mode/TabbedRootUiCoordinator.java | 5 +- - .../chrome/browser/ui/RootUiCoordinator.java | 28 +----- + .../chrome/browser/ui/RootUiCoordinator.java | 27 +----- chrome/browser/BUILD.gn | 17 ---- chrome/browser/about_flags.cc | 25 ------ + .../flags/android/chrome_feature_list.cc | 1 - ...nfiguration_policy_handler_list_factory.cc | 6 +- .../strings/android_chrome_strings.grd | 59 ------------- content/browser/browser_interface_binders.cc | 1 - third_party/blink/public/mojom/BUILD.gn | 2 +- third_party/blink/public/public_features.gni | 2 +- - 35 files changed, 17 insertions(+), 535 deletions(-) + 36 files changed, 17 insertions(+), 535 deletions(-) delete mode 100644 chrome/android/java/res/layout/contextual_search_caption_view.xml delete mode 100644 chrome/android/java/res/layout/contextual_search_card_icon_view.xml delete mode 100644 chrome/android/java/res/layout/contextual_search_context_view.xml @@ -941,15 +942,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mActionModeControllerCallback = new ToolbarActionModeCallback(); mTabModelSelectorSupplier = tabModelSelectorSupplier; -@@ -593,7 +590,6 @@ public class RootUiCoordinator - if (mBottomSheetController != null) { - if (mBottomSheetObserver != null) { - mBottomSheetController.removeObserver(mBottomSheetObserver); -- } - BottomSheetControllerFactory.detach(mBottomSheetController); - mBottomSheetController.destroy(); - } -@@ -997,15 +993,6 @@ public class RootUiCoordinator +@@ -997,15 +994,6 @@ public class RootUiCoordinator @Override public boolean canShowAppMenu() { @@ -965,7 +958,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi // Do not show the menu if we are in find in page view. if (mFindToolbarManager != null && mFindToolbarManager.isShowing() && !DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) { -@@ -1221,10 +1208,6 @@ public class RootUiCoordinator +@@ -1221,10 +1209,6 @@ public class RootUiCoordinator public void onStartedShowing(int layoutType, boolean showToolbar) { if (layoutType != LayoutType.BROWSING && layoutType != LayoutType.SIMPLE_ANIMATION) { @@ -976,7 +969,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } if (layoutType == LayoutType.TAB_SWITCHER) { -@@ -1350,10 +1333,6 @@ public class RootUiCoordinator +@@ -1350,10 +1334,6 @@ public class RootUiCoordinator * cross-feature interaction, e.g. hide other features when this feature is shown. */ protected void onFindToolbarShown() { @@ -987,7 +980,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } /** -@@ -1498,9 +1477,6 @@ public class RootUiCoordinator +@@ -1498,9 +1478,6 @@ public class RootUiCoordinator case SheetState.FULL: if (!mOpened) { mOpened = true; @@ -997,7 +990,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } // On visible bottom sheet, hide page zoom dialog -@@ -1508,8 +1484,6 @@ public class RootUiCoordinator +@@ -1508,8 +1485,6 @@ public class RootUiCoordinator break; case SheetState.HIDDEN: mOpened = false; @@ -1096,6 +1089,17 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc {"explore-sites", flag_descriptions::kExploreSitesName, flag_descriptions::kExploreSitesDescription, kOsAndroid, FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kExploreSites, +diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc +--- a/chrome/browser/flags/android/chrome_feature_list.cc ++++ b/chrome/browser/flags/android/chrome_feature_list.cc +@@ -221,7 +221,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kContextMenuSearchAndShopWithGoogleLens, + &kContextMenuTranslateWithGoogleLens, + &kContextMenuPopupStyle, +- &kContextualSearchDebug, + &kContextualSearchDelayedIntelligence, + &kContextualSearchDisableOnlineDetection, + &kContextualSearchForceCaption, diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc @@ -1122,7 +1126,7 @@ diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc 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 -@@ -806,33 +806,6 @@ CHAR_LIMIT guidelines: +@@ -809,33 +809,6 @@ CHAR_LIMIT guidelines: Privacy and security @@ -1156,7 +1160,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro “Do Not Track” -@@ -4032,38 +4005,6 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

diff --git a/build/patches/Remove-price-shopping-commerce-integrations.patch b/build/patches/Remove-price-shopping-commerce-integrations.patch index ae7a3a89..8d0cba68 100644 --- a/build/patches/Remove-price-shopping-commerce-integrations.patch +++ b/build/patches/Remove-price-shopping-commerce-integrations.patch @@ -7,42 +7,43 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/BUILD.gn | 24 --- chrome/android/chrome_java_sources.gni | 4 - chrome/android/features/tab_ui/BUILD.gn | 7 - - .../res/layout/large_message_card_item.xml | 9 -- + .../res/layout/large_message_card_item.xml | 9 - .../java/res/layout/tab_grid_card_item.xml | 8 - - .../tab_management/LargeMessageCardView.java | 30 ---- + .../tab_management/LargeMessageCardView.java | 30 --- .../LargeMessageCardViewBinder.java | 1 - .../MessageCardProviderMediator.java | 6 +- .../StoreTrackingUtilities.java | 4 +- .../TabGridDialogCoordinator.java | 2 +- - .../tab_management/TabGridViewBinder.java | 37 ----- + .../tab_management/TabGridViewBinder.java | 37 ---- .../tab_management/TabGroupUiCoordinator.java | 2 +- .../tab_management/TabListCoordinator.java | 25 +-- - .../tasks/tab_management/TabListMediator.java | 153 +----------------- + .../tasks/tab_management/TabListMediator.java | 177 +----------------- .../tasks/tab_management/TabProperties.java | 5 +- .../TabSelectionEditorCoordinator.java | 2 +- - .../TabSwitcherCoordinator.java | 102 +----------- - .../tab_management/TabSwitcherMediator.java | 57 ------- + .../TabSwitcherCoordinator.java | 102 +--------- + .../tab_management/TabSwitcherMediator.java | 57 ------ .../chrome/browser/app/ChromeActivity.java | 17 -- - .../AppMenuPropertiesDelegateImpl.java | 46 +----- - .../browser/bookmarks/BookmarkBridge.java | 85 ---------- + .../AppMenuPropertiesDelegateImpl.java | 46 +---- + .../browser/bookmarks/BookmarkBridge.java | 85 --------- .../bookmarks/BookmarkItemsAdapter.java | 23 --- .../browser/bookmarks/BookmarkManager.java | 11 -- - .../BookmarkSaveFlowCoordinator.java | 37 +---- - .../bookmarks/BookmarkSaveFlowMediator.java | 54 +------ + .../BookmarkSaveFlowCoordinator.java | 37 +--- + .../bookmarks/BookmarkSaveFlowMediator.java | 54 +----- .../browser/bookmarks/BookmarkUtils.java | 12 +- .../init/ProcessInitializationHandler.java | 5 - - .../chrome/browser/tab/TabHelpers.java | 9 -- + .../chrome/browser/tab/TabHelpers.java | 9 - .../tabbed_mode/TabbedRootUiCoordinator.java | 22 --- .../ToolbarButtonInProductHelpController.java | 26 --- - .../browser/toolbar/ToolbarManager.java | 17 -- - .../chrome/browser/ui/RootUiCoordinator.java | 21 --- + .../browser/toolbar/ToolbarManager.java | 33 ---- + .../chrome/browser/ui/RootUiCoordinator.java | 20 -- chrome/android/java_sources.gni | 8 - .../price_tracking/PriceTrackingFeatures.java | 2 +- + .../price_tracking_notification_bridge.cc | 10 - .../commerce/subscriptions/android/BUILD.gn | 1 - - .../CommerceSubscriptionsService.java | 36 +---- + .../CommerceSubscriptionsService.java | 36 +--- .../SubscriptionsManagerImpl.java | 26 +-- chrome/browser/persisted_state_db/BUILD.gn | 1 - - 38 files changed, 22 insertions(+), 915 deletions(-) + 39 files changed, 22 insertions(+), 964 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -625,7 +626,45 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser if (areTabsUnchanged(tabsList)) { if (tabsList == null) return true; for (int i = 0; i < tabsList.size(); i++) { -@@ -1839,34 +1754,6 @@ class TabListMediator { +@@ -1284,11 +1199,6 @@ class TabListMediator { + + void hardCleanup() { + assert !mVisible; +- if (PriceTrackingUtilities.isTrackPricesOnTabsEnabled() +- && (PriceTrackingFeatures.isPriceDropIphEnabled() +- || PriceTrackingFeatures.isPriceDropBadgeEnabled())) { +- saveSeenPriceDrops(); +- } + sViewedTabIds.clear(); + } + +@@ -1443,25 +1353,6 @@ class TabListMediator { + * @param recyclerView the {@link TabListRecyclerView} to add the listener too. + */ + void registerOnScrolledListener(RecyclerView recyclerView) { +- if (PriceTrackingUtilities.isTrackPricesOnTabsEnabled() +- && (PriceTrackingFeatures.isPriceDropIphEnabled() +- || PriceTrackingFeatures.isPriceDropBadgeEnabled())) { +- mRecyclerView = recyclerView; +- mOnScrollListener = new OnScrollListener() { +- @Override +- public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { +- if (!mTabModelSelector.isIncognitoSelected()) { +- for (int i = 0; i < mRecyclerView.getChildCount(); i++) { +- if (mRecyclerView.getLayoutManager().isViewPartiallyVisible( +- mRecyclerView.getChildAt(i), false, true)) { +- addViewedTabId(i); +- } +- } +- } +- } +- }; +- mRecyclerView.addOnScrollListener(mOnScrollListener); +- } + } + + private void unregisterOnScrolledListener() { +@@ -1839,34 +1730,6 @@ class TabListMediator { } private void setupPersistedTabDataFetcherForTab(PseudoTab pseudoTab, int index) { @@ -660,7 +699,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } @VisibleForTesting -@@ -1974,23 +1861,6 @@ class TabListMediator { +@@ -1974,23 +1837,6 @@ class TabListMediator { return false; } @@ -684,7 +723,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Update the layout of tab switcher to make it compact. Because now we have messages within the * tabs like PriceMessage and these messages take up the entire row, some operations like -@@ -2001,7 +1871,7 @@ class TabListMediator { +@@ -2001,7 +1847,7 @@ class TabListMediator { void updateLayout() { // Right now we need to update layout only if there is a price welcome message card in tab // switcher. @@ -693,7 +732,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser assert mGridLayoutManager != null; int spanCount = mGridLayoutManager.getSpanCount(); GridLayoutManager.SpanSizeLookup spanSizeLookup = mGridLayoutManager.getSpanSizeLookup(); -@@ -2093,25 +1963,4 @@ class TabListMediator { +@@ -2093,25 +1939,4 @@ class TabListMediator { private boolean isShowingTabsInMRUOrder() { return TabSwitcherCoordinator.isShowingTabsInMRUOrder(mMode); } @@ -1840,15 +1879,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -92,7 +92,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; +@@ -92,8 +92,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; -import org.chromium.chrome.browser.price_tracking.PriceTrackingFeatures; - import org.chromium.chrome.browser.price_tracking.PriceTrackingUtilities; +-import org.chromium.chrome.browser.price_tracking.PriceTrackingUtilities; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; -@@ -1967,22 +1966,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve + import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +@@ -1967,22 +1965,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve @VisibleForTesting public void showPriceDropIPH() { @@ -1871,21 +1911,43 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } /** +@@ -1991,21 +1973,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve + * viewed in the tab switcher grid. + */ + private void maybeShowPriceDropIPH() { +- if (!PriceTrackingUtilities.isTrackPricesOnTabsEnabled() +- || !PriceTrackingFeatures.isPriceDropIphEnabled() || mTabModelSelector == null +- || mTabModelSelector.isIncognitoSelected()) { +- return; +- } +- TabModel tabModel = mTabModelSelector.getCurrentModel(); +- for (int i = 0; i < tabModel.getCount(); i++) { +- ShoppingPersistedTabData.from(tabModel.getTabAt(i), (shoppingPersistedTabData) -> { +- if (shoppingPersistedTabData != null +- && shoppingPersistedTabData.getPriceDrop() != null +- && !shoppingPersistedTabData.getIsCurrentPriceDropSeen()) { +- showPriceDropIPH(); +- } +- }); +- } + } + + private void checkIfNtpLoaded() { 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 -@@ -44,10 +44,7 @@ import org.chromium.chrome.browser.app.omnibox.OmniboxPedalDelegateImpl; +@@ -44,10 +44,8 @@ import org.chromium.chrome.browser.app.omnibox.OmniboxPedalDelegateImpl; import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkBridge; -import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; import org.chromium.chrome.browser.bookmarks.TabBookmarker; --import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; + import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; -import org.chromium.chrome.browser.commerce.ShoppingFeatures; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel; import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager; -@@ -92,7 +89,6 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; +@@ -92,7 +90,6 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceInteractionSource; import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; @@ -1893,7 +1955,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.segmentation_platform.ContextualPageActionController; -@@ -103,7 +99,6 @@ import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; +@@ -103,7 +100,6 @@ import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; import org.chromium.chrome.browser.share.ShareUtils; import org.chromium.chrome.browser.share.qrcode.QrCodeDialog; import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager; @@ -1901,7 +1963,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController; import org.chromium.chrome.browser.tab.RequestDesktopUtils; -@@ -776,17 +771,6 @@ public class RootUiCoordinator +@@ -777,17 +773,6 @@ public class RootUiCoordinator initMerchantTrustSignals(); initScrollCapture(); @@ -1919,7 +1981,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi new OneShotCallback<>(mProfileSupplier, this::initHistoryClustersCoordinator); if (RequestDesktopUtils.maybeDefaultEnableGlobalSetting( -@@ -1087,9 +1071,6 @@ public class RootUiCoordinator +@@ -1088,9 +1073,6 @@ public class RootUiCoordinator mIdentityDiscController = new IdentityDiscController( mActivity, mActivityLifecycleDispatcher, mProfileSupplier); @@ -1929,7 +1991,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi ShareButtonController shareButtonController = new ShareButtonController(mActivity, AppCompatResources.getDrawable( mActivity, R.drawable.ic_toolbar_share_offset_24dp), -@@ -1135,8 +1116,6 @@ public class RootUiCoordinator +@@ -1136,8 +1118,6 @@ public class RootUiCoordinator AdaptiveToolbarButtonVariant.SHARE, shareButtonController); adaptiveToolbarButtonController.addButtonVariant( AdaptiveToolbarButtonVariant.VOICE, voiceToolbarButtonController); @@ -1980,6 +2042,38 @@ diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromiu } private static boolean isSignedIn() { +diff --git a/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc b/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc +--- a/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc ++++ b/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc +@@ -6,7 +6,6 @@ + + #include "base/android/jni_array.h" + #include "base/memory/ptr_util.h" +-#include "chrome/browser/commerce/price_tracking/android/jni_headers/PriceTrackingNotificationBridge_jni.h" + #include "content/public/browser/browser_context.h" + + using OptimizationType = optimization_guide::proto::OptimizationType; +@@ -26,10 +25,6 @@ PriceTrackingNotificationBridge::GetForBrowserContext( + } + + PriceTrackingNotificationBridge::PriceTrackingNotificationBridge() { +- JNIEnv* env = base::android::AttachCurrentThread(); +- java_obj_.Reset(env, Java_PriceTrackingNotificationBridge_create( +- env, reinterpret_cast(this)) +- .obj()); + } + + PriceTrackingNotificationBridge::~PriceTrackingNotificationBridge() = default; +@@ -42,9 +37,4 @@ void PriceTrackingNotificationBridge::OnNotificationPayload( + !payload.has_value()) { + return; + } +- +- // Pass the payload to Java. +- JNIEnv* env = base::android::AttachCurrentThread(); +- Java_PriceTrackingNotificationBridge_showNotification( +- env, java_obj_, base::android::ToJavaByteArray(env, payload.value())); + } diff --git a/chrome/browser/commerce/subscriptions/android/BUILD.gn b/chrome/browser/commerce/subscriptions/android/BUILD.gn --- a/chrome/browser/commerce/subscriptions/android/BUILD.gn +++ b/chrome/browser/commerce/subscriptions/android/BUILD.gn diff --git a/build/patches/Remove-segmentation-platform.patch b/build/patches/Remove-segmentation-platform.patch index 2f24c9b5..a5df7370 100644 --- a/build/patches/Remove-segmentation-platform.patch +++ b/build/patches/Remove-segmentation-platform.patch @@ -8,7 +8,8 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../chrome_browser_main_extra_parts_segmentation_platform.cc | 4 ++++ - 1 file changed, 4 insertions(+) + components/segmentation_platform/embedder/BUILD.gn | 1 - + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc b/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc --- a/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc @@ -41,5 +42,16 @@ diff --git a/chrome/browser/segmentation_platform/chrome_browser_main_extra_part + if ((true)) return; segmentation_platform::UkmDatabaseClient::GetInstance().PostMessageLoopRun(); } +diff --git a/components/segmentation_platform/embedder/BUILD.gn b/components/segmentation_platform/embedder/BUILD.gn +--- a/components/segmentation_platform/embedder/BUILD.gn ++++ b/components/segmentation_platform/embedder/BUILD.gn +@@ -21,7 +21,6 @@ source_set("embedder") { + "//components/optimization_guide/core", + "//components/optimization_guide/core:features", + "//components/segmentation_platform/internal", +- "//components/segmentation_platform/internal:optimization_guide_segmentation_handler", + "//components/segmentation_platform/internal/proto", + "//components/segmentation_platform/public", + "//url", -- 2.25.1 diff --git a/build/patches/Remove-signin-and-sync-integrations.patch b/build/patches/Remove-signin-and-sync-integrations.patch index 5410f9db..576b37a2 100644 --- a/build/patches/Remove-signin-and-sync-integrations.patch +++ b/build/patches/Remove-signin-and-sync-integrations.patch @@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../identity_disc/IdentityDiscController.java | 104 +------- .../init/ChromeBrowserInitializer.java | 2 - .../init/ProcessInitializationHandler.java | 9 - - .../chrome/browser/ntp/RecentTabsManager.java | 81 +----- + .../chrome/browser/ntp/RecentTabsManager.java | 109 +-------- .../browser/ntp/RecentTabsRowAdapter.java | 30 +-- .../browser/ntp/search/SearchBoxMediator.java | 1 - .../browser/omaha/RequestGenerator.java | 3 - @@ -90,7 +90,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/search_resumption/BUILD.gn | 4 - .../SearchResumptionModuleMediator.java | 37 +-- .../SearchResumptionModuleUtils.java | 12 - - .../ManageAccountDevicesLinkView.java | 24 +- + .../ManageAccountDevicesLinkView.java | 26 +- .../SendTabToSelfCoordinator.java | 151 ------------ .../account_consistency_mode_manager.cc | 7 +- .../signin/identity_manager_factory.cc | 5 - @@ -107,7 +107,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ui/signin/SyncConsentFragmentBase.java | 53 +--- .../WebSigninAccountPickerDelegate.java | 23 -- .../ui/signin/fre/SigninFirstRunMediator.java | 71 +----- - .../strings/android_chrome_strings.grd | 18 -- + .../strings/android_chrome_strings.grd | 3 - .../core/browser/leak_detection_delegate.cc | 2 +- .../core/browser/password_form_manager.cc | 34 +-- .../browser/password_manager_client_helper.cc | 43 +--- @@ -119,7 +119,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ProfileOAuth2TokenServiceDelegate.java | 52 ---- .../net/HttpNegotiateAuthenticator.java | 88 +------ .../chromoting/base/OAuthTokenFetcher.java | 2 - - 100 files changed, 92 insertions(+), 2526 deletions(-) + 100 files changed, 91 insertions(+), 2542 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -2413,10 +2413,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM } /** -@@ -425,42 +387,16 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -418,80 +380,12 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, + return mPrefs.getSyncPromoCollapsed(); } - private @SyncPromoState int calculatePromoState() { +- /** Returns the current promo state. */ +- @SyncPromoState +- int getPromoState() { +- return mPromoState; +- } +- +- private @SyncPromoState int calculatePromoState() { - if (!mSignInManager.getIdentityManager().hasPrimaryAccount(ConsentLevel.SYNC)) { - if (!mSignInManager.isSyncOptInAllowed()) { - return SyncPromoState.NO_PROMO; @@ -2431,10 +2438,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM - return SyncPromoState.NO_PROMO; - } - return SyncPromoState.PROMO_FOR_SYNC_TURNED_OFF_STATE; -+ return SyncPromoState.NO_PROMO; - } - - private void updatePromoState() { +- } +- +- private void updatePromoState() { - final @SyncPromoState int newState = calculatePromoState(); - if (newState == mPromoState) return; - @@ -2447,17 +2453,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM - mSyncPromoController.increasePromoShowCount(); - } - mPromoState = newState; - } - - /** - * Sets up the sync promo view. - */ - void setUpSyncPromoView(PersonalizedSigninPromoView view) { +- } +- +- /** +- * Sets up the sync promo view. +- */ +- void setUpSyncPromoView(PersonalizedSigninPromoView view) { - mSyncPromoController.setUpSyncPromoView(mProfileDataCache, view, null); - } - - // SignInStateObserver implementation. -@@ -480,18 +416,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +- } +- +- // SignInStateObserver implementation. +- @Override +- public void onSignedIn() { +- update(); +- } +- +- @Override +- public void onSignedOut() { +- update(); +- } +- + // AccountsChangeObserver implementation. + @Override + public void onAccountsChanged() { update(); } @@ -2476,7 +2494,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM private void onUpdateDone() { if (mUpdatedCallback != null) { mUpdatedCallback.onUpdated(); -@@ -499,7 +423,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -499,7 +393,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, } private void update() { @@ -3913,7 +3931,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s import org.chromium.components.browser_ui.widget.RoundedCornerImageView; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.signin.base.AccountInfo; -@@ -73,25 +72,11 @@ public class ManageAccountDevicesLinkView extends LinearLayout { +@@ -73,32 +72,16 @@ public class ManageAccountDevicesLinkView extends LinearLayout { LayoutInflater.from(getContext()) .inflate(R.layout.send_tab_to_self_manage_devices_link, this); @@ -3940,7 +3958,14 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s new SpanApplier.SpanInfo("", "", new NoUnderlineClickableSpan( getContext(), this::openManageDevicesPageInNewTab))); -@@ -116,11 +101,4 @@ public class ManageAccountDevicesLinkView extends LinearLayout { + linkView.setText(linkText); + linkView.setMovementMethod(LinkMovementMethod.getInstance()); +- } else { +- linkView.setText(account.getEmail()); + } + } + +@@ -116,11 +99,4 @@ public class ManageAccountDevicesLinkView extends LinearLayout { IntentUtils.addTrustedIntentExtras(intent); getContext().startActivity(intent); } @@ -4722,28 +4747,6 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Sync and personalize across devices -@@ -396,21 +393,6 @@ CHAR_LIMIT guidelines: - - Because the preloaded pages are encrypted, Google will not learn anything about the preloaded page content. Google servers will learn which sites are privately preloaded. This information is only used to preload the pages, and is not linked to other information from your Google Account. - -- -- Make searches and browsing better -- -- -- Sends URLs of pages you visit to Google -- -- -- For more settings that relate to privacy, security, and data collection, see <link>Sync and Google services</link> -- -- -- For more settings that relate to privacy, security, and data collection, see <link1>Sync</link1> and <link2>Google services</link2> -- -- -- For more settings that relate to privacy, security, and data collection, see <link>Google services</link> -- - - - diff --git a/components/password_manager/core/browser/leak_detection_delegate.cc b/components/password_manager/core/browser/leak_detection_delegate.cc --- a/components/password_manager/core/browser/leak_detection_delegate.cc +++ b/components/password_manager/core/browser/leak_detection_delegate.cc diff --git a/build/patches/Remove-voice-recognition-integration.patch b/build/patches/Remove-voice-recognition-integration.patch index 1126764b..9ba62f28 100644 --- a/build/patches/Remove-voice-recognition-integration.patch +++ b/build/patches/Remove-voice-recognition-integration.patch @@ -481,8 +481,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; - import org.chromium.chrome.browser.price_tracking.PriceTrackingUtilities; -@@ -2051,11 +2050,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve + import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; +@@ -2035,11 +2034,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return mLocationBar.getOmniboxStub(); } @@ -497,7 +497,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar 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 -@@ -85,8 +85,6 @@ import org.chromium.chrome.browser.messages.MessagesResourceMapperInitializer; +@@ -86,8 +86,6 @@ import org.chromium.chrome.browser.messages.MessagesResourceMapperInitializer; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; @@ -506,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.profiles.Profile; -@@ -266,7 +264,6 @@ public class RootUiCoordinator +@@ -267,7 +265,6 @@ public class RootUiCoordinator protected OneshotSupplierImpl mPromoShownOneshotSupplier = new OneshotSupplierImpl<>(); protected Supplier mStartSurfaceParentTabSupplier; @Nullable @@ -514,7 +514,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi private MediaCaptureOverlayController mCaptureController; private @Nullable ScrollCaptureManager mScrollCaptureManager; protected final ActivityLifecycleDispatcher mActivityLifecycleDispatcher; -@@ -541,9 +538,6 @@ public class RootUiCoordinator +@@ -542,9 +539,6 @@ public class RootUiCoordinator } if (mToolbarManager != null) { @@ -524,7 +524,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mToolbarManager.destroy(); mToolbarManager = null; } -@@ -1081,19 +1075,11 @@ public class RootUiCoordinator +@@ -1083,19 +1077,11 @@ public class RootUiCoordinator new VoiceToolbarButtonController.VoiceSearchDelegate() { @Override public boolean isVoiceSearchEnabled() { @@ -545,7 +545,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } }; VoiceToolbarButtonController voiceToolbarButtonController = -@@ -1143,13 +1129,6 @@ public class RootUiCoordinator +@@ -1145,13 +1131,6 @@ public class RootUiCoordinator if (!mSupportsAppMenuSupplier.getAsBoolean()) { mToolbarManager.getToolbar().disableMenuButton(); } diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index f4026a3b..6abcc5f4 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -78,7 +78,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -273,6 +273,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -272,6 +272,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kReachedCodeProfiler, &kReaderModeInCCT, &kReengagementNotification, @@ -86,7 +86,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kRelatedSearches, &kRelatedSearchesAlternateUx, &kRelatedSearchesInBar, -@@ -806,6 +807,9 @@ const base::Feature kRequestDesktopSiteDefaults{ +@@ -805,6 +806,9 @@ const base::Feature kRequestDesktopSiteDefaults{ const base::Feature kSafeModeForCachedFlags{"SafeModeForCachedFlags", base::FEATURE_DISABLED_BY_DEFAULT}; diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index e326a77c..54aba678 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -356,7 +356,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -249,6 +249,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -248,6 +248,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kIncognitoReauthenticationForAndroid, &kIncognitoScreenshot, &kInfobarScrollOptimization, @@ -364,7 +364,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kInstanceSwitcher, &kInstantStart, &kIsVoiceSearchEnabledCache, -@@ -748,6 +749,9 @@ const base::Feature kNotificationPermissionVariant{ +@@ -747,6 +748,9 @@ const base::Feature kNotificationPermissionVariant{ const base::Feature kInstanceSwitcher{"InstanceSwitcher", base::FEATURE_ENABLED_BY_DEFAULT}; diff --git a/build/patches/Restore-offline-indicator-v2-flag.patch b/build/patches/Restore-offline-indicator-v2-flag.patch index c0ea36ab..32734c2e 100644 --- a/build/patches/Restore-offline-indicator-v2-flag.patch +++ b/build/patches/Restore-offline-indicator-v2-flag.patch @@ -183,7 +183,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -262,6 +262,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -261,6 +261,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNewTabPageTilesTitleWrapAround, &kNewWindowAppMenu, &kNotificationPermissionVariant, @@ -191,7 +191,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kPageAnnotationsService, &kInlineUpdateFlow, &kBookmarksImprovedSaveFlow, -@@ -764,6 +765,9 @@ const base::Feature kInstanceSwitcher{"InstanceSwitcher", +@@ -763,6 +764,9 @@ const base::Feature kInstanceSwitcher{"InstanceSwitcher", const base::Feature kSimplifiedNTP{"SimplifiedNTP", base::FEATURE_ENABLED_BY_DEFAULT}; diff --git a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch index 9eebc7c9..d609bd41 100644 --- a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch +++ b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch @@ -198,20 +198,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -600,6 +600,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -601,6 +601,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment int resource = 0; if (mCategory.getType() == SiteSettingsCategory.Type.AUTOMATIC_DOWNLOADS) { resource = R.string.website_settings_add_site_description_automatic_downloads; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.AUTOPLAY)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.AUTOPLAY) { + resource = R.string.website_settings_add_site_description_autoplay; } else if (mCategory.getType() == SiteSettingsCategory.Type.BACKGROUND_SYNC) { resource = R.string.website_settings_add_site_description_background_sync; } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT) { -@@ -725,6 +727,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -726,6 +728,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment boolean allowSpecifyingExceptions = false; if (mCategory.getType() == SiteSettingsCategory.Type.SOUND) { allowSpecifyingExceptions = true; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.AUTOPLAY)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.AUTOPLAY) { + allowSpecifyingExceptions = true; } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT) { allowSpecifyingExceptions = true; diff --git a/build/patches/Site-setting-for-images.patch b/build/patches/Site-setting-for-images.patch index 5b2a5898..ce782dfa 100644 --- a/build/patches/Site-setting-for-images.patch +++ b/build/patches/Site-setting-for-images.patch @@ -190,20 +190,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -619,6 +619,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -620,6 +620,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment browserContextHandle, ContentSettingsType.SOUND) ? R.string.website_settings_add_site_description_sound_block : R.string.website_settings_add_site_description_sound_allow; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.IMAGES)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.IMAGES) { + resource = R.string.website_settings_add_site_description_images; } else if (mCategory.getType() == SiteSettingsCategory.Type.COOKIES) { if (mRequiresFourStateSetting) { resource = cookieSettingsExceptionShouldBlock() -@@ -738,6 +740,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -739,6 +741,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment allowSpecifyingExceptions = true; - } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT_JIT)) { + } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT_JIT) { allowSpecifyingExceptions = true; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.IMAGES)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.IMAGES) { + allowSpecifyingExceptions = true; } else if (mCategory.getType() == SiteSettingsCategory.Type.COOKIES) { allowSpecifyingExceptions = true; diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 474567c2..485cce0c 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/xml/site_settings_preferences.xml | 4 + .../java/res/xml/website_preferences.xml | 9 + .../ContentSettingsResources.java | 35 +++- - .../site_settings/SingleCategorySettings.java | 77 ++++++- + .../site_settings/SingleCategorySettings.java | 78 ++++++- .../site_settings/SingleWebsiteSettings.java | 8 +- .../site_settings/SiteSettings.java | 2 +- .../site_settings/SiteSettingsCategory.java | 9 +- @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/content_settings_agent_impl.cc | 83 ++++++++ .../renderer/content_settings_agent_impl.h | 11 + .../WebLayerSiteSettingsDelegate.java | 3 + - 35 files changed, 701 insertions(+), 15 deletions(-) + 35 files changed, 702 insertions(+), 15 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java @@ -353,41 +353,42 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c // Keys for Allowed/Blocked preference groups/headers. private static final String ALLOWED_GROUP = "allowed_group"; -@@ -231,7 +237,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -231,7 +237,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment Integer contentSetting = website.site().getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); if (contentSetting != null) { - return ContentSettingValues.BLOCK == contentSetting; -+ if (i == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) -+ return ContentSettingValues.ALLOW != contentSetting; -+ else -+ return ContentSettingValues.BLOCK == contentSetting; ++ if (mCategory.getContentSettingsType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { ++ return ContentSettingValues.ALLOW != contentSetting; ++ } else { ++ return ContentSettingValues.BLOCK == contentSetting; ++ } } return false; } -@@ -401,7 +410,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -401,7 +411,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment if (queryHasChanged) getInfoForOrigins(); }); - if (getSiteSettingsDelegate().isHelpAndFeedbackEnabled()) { + if (getSiteSettingsDelegate().isHelpAndFeedbackEnabled() || -+ mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) ) { ++ mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { MenuItem help = menu.add( Menu.NONE, R.id.menu_id_site_settings_help, Menu.NONE, R.string.menu_help); help.setIcon(VectorDrawableCompat.create( -@@ -412,7 +422,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -412,7 +423,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.menu_id_site_settings_help) { - if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { -+ if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { ++ if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + getSiteSettingsDelegate() + .launchTimeZoneOverrideHelpAndFeedbackActivity(getActivity()); + } else if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate().launchProtectedContentHelpAndFeedbackActivity( getActivity()); } else { -@@ -507,6 +520,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -507,6 +521,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment WebsitePreferenceBridge.setDefaultContentSetting( browserContextHandle, mCategory.getContentSettingsType(), setting); getInfoForOrigins(); @@ -400,16 +401,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (FOUR_STATE_COOKIE_TOGGLE_KEY.equals(preference.getKey())) { setCookieSettingsPreference((CookieSettingsState) newValue); getInfoForOrigins(); -@@ -613,6 +632,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -613,6 +633,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment browserContextHandle, ContentSettingsType.FEDERATED_IDENTITY_API) ? R.string.website_settings_add_site_description_federated_identity_block : R.string.website_settings_add_site_description_federated_identity_allow; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + resource = R.string.website_settings_category_timezone_override_allowed; } assert resource > 0; return getString(resource); -@@ -653,6 +674,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -653,6 +675,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment if (mCategory.getType() == SiteSettingsCategory.Type.COOKIES && mRequiresFourStateSetting) { setting = cookieSettingsExceptionShouldBlock() ? ContentSettingValues.BLOCK : ContentSettingValues.ALLOW; @@ -423,16 +424,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else { setting = (WebsitePreferenceBridge.isCategoryEnabled( browserContextHandle, mCategory.getContentSettingsType())) -@@ -711,6 +739,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -711,6 +740,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment allowSpecifyingExceptions = true; } else if (mCategory.getType() == SiteSettingsCategory.Type.FEDERATED_IDENTITY_API) { allowSpecifyingExceptions = true; -+ } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { ++ } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + allowSpecifyingExceptions = true; } if (allowSpecifyingExceptions) { getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(), -@@ -882,7 +912,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -882,7 +913,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment TriStateSiteSettingsPreference triStateToggle = (TriStateSiteSettingsPreference) getPreferenceScreen().findPreference( TRI_STATE_TOGGLE_KEY); @@ -448,7 +449,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (mRequiresFourStateSetting) { FourStateCookieSettingsPreference fourStateCookieToggle = (FourStateCookieSettingsPreference) getPreferenceScreen().findPreference( -@@ -911,6 +948,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -911,6 +949,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment (FourStateCookieSettingsPreference) screen.findPreference( FOUR_STATE_COOKIE_TOGGLE_KEY); // TODO(crbug.com/1104836): Remove the old third-party cookie blocking UI @@ -458,12 +459,12 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY); mNotificationsQuietUiPref = screen.findPreference(NOTIFICATIONS_QUIET_UI_TOGGLE_KEY); mDesktopSitePeripheralPref = screen.findPreference(DESKTOP_SITE_PERIPHERAL_TOGGLE_KEY); -@@ -924,20 +964,32 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -924,20 +965,32 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment if (mRequiresTriStateSetting) { screen.removePreference(binaryToggle); screen.removePreference(fourStateCookieToggle); - configureTriStateToggle(triStateToggle, contentType); -+ if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) { ++ if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + screen.removePreference(triStateToggle); + configureTimeOverrideStateToggle(timeOverrideStatePreference); + } @@ -486,13 +487,13 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() != SiteSettingsCategory.Type.COOKIES) { screen.removePreference(screen.findPreference(COOKIE_INFO_TEXT_KEY)); } -+ if (!(mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE))) { ++ if (mCategory.getType() != SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) { + screen.removePreference(screen.findPreference(TIMEOVERRIDE_INFO_TEXT)); + } if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1067,6 +1119,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1067,6 +1120,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment triStateToggle.initialize(setting, descriptionIds); } @@ -508,7 +509,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { binaryToggle.setOnPreferenceChangeListener(this); binaryToggle.setTitle(ContentSettingsResources.getTitle(contentType)); -@@ -1168,9 +1229,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment +@@ -1168,9 +1230,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment CharSequence[] descriptions = new String[2]; descriptions[0] = @@ -1046,7 +1047,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. + ValidSettings(CONTENT_SETTING_ALLOW, // use system time + CONTENT_SETTING_ASK, // custom timezone, default UTC + CONTENT_SETTING_BLOCK), // random -+ WebsiteSettingsInfo::SINGLE_ORIGIN_WITH_EMBEDDED_EXCEPTIONS_SCOPE, ++ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::PLATFORM_ANDROID, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + ContentSettingsInfo::PERSISTENT,