From c6536fa008d602643c48b8660a599d95b14f4ac3 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Mon, 8 Sep 2025 12:48:13 +0000 Subject: [PATCH 01/10] Update chromium to v140.0.7339.51 --- versions.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/versions.txt b/versions.txt index a5287c86..2f90dd89 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,3 @@ -chromium_version="139.0.7258.158" -cromite_branch="v139.0.7258.158-6d6ce62db92b0a6b415c55e9b8fd861da13bfd6e" -ungoogled_chromium_branch="139.0.7258.154-1" +chromium_version="140.0.7339.51" +cromite_branch="v140.0.7339.81-edd60fee151cd499edd5b7522c4be832b4e3499d" +ungoogled_chromium_branch="140.0.7339.80-1" -- GitLab From 14c5cef354bd9360c8eb1f7b235f093d25418d2c Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Mon, 8 Sep 2025 12:49:45 +0000 Subject: [PATCH 02/10] [Auto] Update cromite patches --- .../Add-AllowUserCertificates-flag.patch | 18 +- ...dd-Alt-D-hotkey-to-focus-address-bar.patch | 2 +- .../Add-IsCleartextPermitted-flag.patch | 2 +- .../Add-a-proxy-configuration-page.patch | 20 +- .../Add-an-always-incognito-mode.patch | 212 +- .../Add-autoplay-site-setting.patch | 6 +- .../Add-bookmark-import-export-actions.patch | 339 +- .../Add-cromite-flags-support.patch | 121 +- ...dd-custom-tab-intents-privacy-option.patch | 84 +- .../cromite_patches/Add-exit-menu-item.patch | 10 +- ...g-for-omnibox-autocomplete-filtering.patch | 6 +- .../Add-flag-to-disable-IPv6-probes.patch | 4 +- ...-to-disable-external-intent-requests.patch | 26 +- .../Add-flag-to-disable-vibration.patch | 6 +- ...Add-lifetime-options-for-permissions.patch | 258 +- .../Add-menu-item-to-bookmark-all-tabs.patch | 60 +- .../Add-menu-item-to-view-source.patch | 12 +- .../Add-option-to-force-tablet-UI.patch | 87 +- ...-to-not-persist-tabs-across-sessions.patch | 12 +- .../Add-option-to-use-home-page-as-NTP.patch | 44 +- build/cromite_patches/Add-search-engine.patch | 12 +- .../Add-site-engagement-flag.patch | 2 +- .../Add-support-for-writing-URIs.patch | 2 +- .../Add-webGL-site-setting.patch | 12 +- .../Add-webRTC-site-settings.patch | 22 +- ...ow-building-without-enable_reporting.patch | 24 +- ...ow-building-without-supervised-users.patch | 28 +- .../Allow-playing-audio-in-background.patch | 6 +- ...e-new-tab-page-for-default-home-page.patch | 8 +- ...ioBuffer-AnalyserNode-fp-mitigations.patch | 38 +- .../Block-qjz9zk-or-trk-requests.patch | 10 +- .../Bromite-subresource-adblocker.patch | 26 +- .../Client-hints-overrides.patch | 8 +- .../Content-settings-infrastructure.patch | 317 +- ...ctionary-suggestions-for-the-Omnibox.patch | 8 +- ...ble-Accessibility-service-by-default.patch | 2 +- .../Disable-Android-Tab-Declutter.patch | 2 +- .../Disable-PrivacyGuide.patch | 2 +- .../Disable-TLS-resumption.patch | 14 +- .../Disable-UA-full-version.patch | 13 +- .../Disable-all-predictors-code.patch | 391 +- .../Disable-all-promo-dialogs.patch | 40 +- .../Disable-conversion-measurement-api.patch | 82 +- .../Disable-crash-reporting.patch | 8 +- .../Disable-feeds-support-by-default.patch | 2 +- ...Disable-fetching-of-all-field-trials.patch | 36 +- .../Disable-idle-detection.patch | 2 +- ...media-router-and-remoting-by-default.patch | 22 +- .../Disable-omission-of-URL-elements.patch | 4 +- .../Disable-plugins-enumeration.patch | 2 +- ...e-privacy-issues-in-password-manager.patch | 38 +- .../Disable-privacy-sandbox.patch | 36 +- ...e-references-to-fonts.googleapis.com.patch | 6 +- .../Disable-safety-check.patch | 133 +- .../Disable-smart-selection-by-default.patch | 12 +- .../Disable-text-fragments-by-default.patch | 4 +- .../Disable-third-party-origin-trials.patch | 10 +- .../Disable-update-scheduler.patch | 2 +- .../Disable-various-metrics.patch | 20 +- .../Do-not-build-API-keys-infobar.patch | 35 +- .../Do-not-compile-QR-code-sharing.patch | 14 +- ...ore-download-location-prompt-setting.patch | 9 +- .../Do-not-link-with-libatomic.patch | 2 +- .../Do-not-store-passwords-by-default.patch | 10 +- .../Enable-Certificate-Transparency.patch | 8 +- .../Enable-HEVC-by-default.patch | 2 +- ...ctOriginIsolation-and-SitePerProcess.patch | 6 +- ...e-darken-websites-checkbox-in-themes.patch | 4 +- ...fwrapv-in-Clang-for-non-UBSan-builds.patch | 2 +- .../Enable-native-Android-autofill.patch | 95 +- .../Enable-network-isolation-features.patch | 30 +- .../cromite_patches/Enable-share-intent.patch | 28 +- .../Experimental-user-scripts-support.patch | 684 +- .../Eyeo-Adblock-for-Cromite.patch | 526 +- .../Fix-chromium-build-bugs.patch | 44 +- ...story-number-of-days-privacy-setting.patch | 33 +- ...number-of-autocomplete-matches-to-10.patch | 4 +- .../Invalidate-components-public-key.patch | 2 +- build/cromite_patches/JIT-site-settings.patch | 16 +- .../Keep-empty-tabs-between-sessions.patch | 12 +- ...-allow-screenshots-in-Incognito-mode.patch | 5 +- .../Logcat-crash-reports-UI.patch | 2 +- .../Modify-default-preferences.patch | 20 +- .../Move-navigation-bar-to-bottom.patch | 412 +- ...nt-settings-back-to-privacy-settings.patch | 2 +- .../OpenSearch-miscellaneous.patch | 6 +- .../Override-Navigator-Language.patch | 2 +- .../Partition-Blink-memory-cache.patch | 20 +- .../Partition-blobs-by-top-frame-URL.patch | 375 +- ...-modal-dialog-flag-to-close-all-tabs.patch | 6 +- ...e-introduce-override_build_timestamp.patch | 8 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 6 +- .../Remove-EV-certificates.patch | 4 +- ...referrals-in-cross-origin-navigation.patch | 34 +- .../Remove-binary-blob-integrations.patch | 1017 ++- ...cklisted-URLs-upon-bookmark-creation.patch | 2 +- .../Remove-help-menu-item.patch | 71 +- .../Remove-segmentation-platform.patch | 2 +- ...Remove-voice-recognition-integration.patch | 96 +- ...ndow-name-on-cross-origin-navigation.patch | 4 +- ...ore-BookmarkToolbar-setCurrentFolder.patch | 2 +- .../Restore-LastTabStandingTracker.patch | 8 +- .../Restore-Search-Ready-Omnibox-flag.patch | 14 +- .../Restore-Simplified-NTP-launch.patch | 655 +- ...-button-in-top-toolbar-customization.patch | 10 +- .../Restore-chrome-password-store.patch | 6067 ++++++++++++++++- .../Restore-offline-indicator-v2-flag.patch | 8 +- ...emove-disable-pull-to-refresh-effect.patch | 4 +- ...l-of-execution-context-address-space.patch | 131 +- ...script-content-setting-secondary-url.patch | 6 +- ...tings-for-cookies-javascript-and-ads.patch | 10 +- .../Site-setting-for-images.patch | 20 +- .../Switch-to-fstack-protector-strong.patch | 4 +- .../Temp-disable-UseContextSnapshot.patch | 2 +- .../Timezone-customization.patch | 34 +- .../Use-browser-navigation-handler.patch | 16 +- .../User-agent-customization.patch | 52 +- build/cromite_patches/Welcome-screen.patch | 6 +- .../autofill-miscellaneous.patch | 48 +- .../cromite_patches/bromite-build-utils.patch | 4 +- .../disable-WebView-variations-support.patch | 12 +- ...IPv6-connectivity-probes-to-RIPE-DNS.patch | 2 +- .../enable-ftrivial-auto-var-init-zero.patch | 2 +- .../eyeo-133.0.6943.49-android_api.patch | 20 +- .../eyeo-133.0.6943.49-android_settings.patch | 20 +- .../eyeo-133.0.6943.49-base.patch | 130 +- ...yeo-133.0.6943.49-chrome_integration.patch | 93 +- .../eyeo-133.0.6943.49-extension_api.patch | 26 +- build/cromite_patches/kill-Auth.patch | 6 +- build/cromite_patches/kill-Vision.patch | 6 +- .../sharing-hub-always-use-visible-URL.patch | 23 +- ...gled-chromium-Disable-profile-avatar.patch | 4 +- ...romium-Disable-translate-integration.patch | 2 +- ...chromium-Disable-webRTC-log-uploader.patch | 2 +- ...ed-chromium-no-special-hosts-domains.patch | 144 +- ...RTC-do-not-expose-local-IP-addresses.patch | 6 +- ...iew-Hard-no-to-persistent-histograms.patch | 2 +- 137 files changed, 10227 insertions(+), 3769 deletions(-) diff --git a/build/cromite_patches/Add-AllowUserCertificates-flag.patch b/build/cromite_patches/Add-AllowUserCertificates-flag.patch index ed2df25e..b77fcca6 100644 --- a/build/cromite_patches/Add-AllowUserCertificates-flag.patch +++ b/build/cromite_patches/Add-AllowUserCertificates-flag.patch @@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -233,6 +233,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -236,6 +236,7 @@ import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.common.ContentSwitches; @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -977,6 +978,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -985,6 +986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier()); @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv 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 -@@ -179,6 +179,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -184,6 +184,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, @@ -59,16 +59,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY = "AdaptiveButtonInTopToolbarPageSummary"; public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = -@@ -728,6 +729,8 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sAndroidWindowPopupLargeScreen = - newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false); +@@ -768,6 +769,8 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn = + newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); + public static final CachedFlag sAllowUserCertificates = + newCachedFlag(ALLOW_USER_CERTIFICATES, false); + public static final CachedFlag sAppSpecificHistoryViewIntent = + newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true); public static final CachedFlag sAsyncNotificationManager = - newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true); - public static final CachedFlag sAsyncNotificationManagerForDownload = -@@ -1032,6 +1035,7 @@ public abstract class ChromeFeatureList { +@@ -1080,6 +1083,7 @@ public abstract class ChromeFeatureList { sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, sAndroidAppIntegration, diff --git a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index bec8195b..b9df368a 100644 --- a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -888,6 +888,11 @@ public class KeyboardShortcuts { +@@ -890,6 +890,11 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_B, (KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)); } diff --git a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch index de20f56d..e75cef12 100644 --- a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch +++ b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch @@ -44,7 +44,7 @@ new file mode 100644 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -398,6 +398,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -408,6 +408,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } } diff --git a/build/cromite_patches/Add-a-proxy-configuration-page.patch b/build/cromite_patches/Add-a-proxy-configuration-page.patch index 22244090..0c6a07a3 100644 --- a/build/cromite_patches/Add-a-proxy-configuration-page.patch +++ b/build/cromite_patches/Add-a-proxy-configuration-page.patch @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -372,6 +372,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -376,6 +376,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -215,6 +215,9 @@ +@@ -226,6 +226,9 @@ @@ -197,7 +197,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro 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 -@@ -206,6 +206,8 @@ +@@ -204,6 +204,8 @@ #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/extensions/background_mode_manager.h" #endif -@@ -1689,6 +1691,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1605,6 +1607,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -661,7 +661,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -194,6 +194,8 @@ static_library("ui") { +@@ -169,6 +169,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -673,7 +673,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -56,6 +56,9 @@ +@@ -58,6 +58,9 @@ #include "extensions/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" @@ -683,7 +683,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" #endif -@@ -415,7 +418,7 @@ void RegisterChromeWebUIConfigs() { +@@ -422,7 +425,7 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); #endif @@ -1135,7 +1135,7 @@ new file mode 100644 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc -@@ -51,6 +51,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -50,6 +50,7 @@ bool IsSystemWebUIHost(std::string_view host) { kChromeUILockScreenNetworkHost, kChromeUILockScreenStartReauthHost, kChromeUIMobileSetupHost, @@ -1143,7 +1143,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, kChromeUINotificationTesterHost, -@@ -72,6 +73,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -71,6 +72,7 @@ bool IsSystemWebUIHost(std::string_view host) { // These hosts will also be suggested by BuiltinProvider. base::span ChromeURLHosts() { static constexpr auto kChromeURLHosts = std::to_array({ @@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -180,6 +180,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -188,6 +188,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer"; diff --git a/build/cromite_patches/Add-an-always-incognito-mode.patch b/build/cromite_patches/Add-an-always-incognito-mode.patch index 0e1c53ec..f606f3f1 100644 --- a/build/cromite_patches/Add-an-always-incognito-mode.patch +++ b/build/cromite_patches/Add-an-always-incognito-mode.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../java/res/xml/incognito_preferences.xml | 37 ++++ .../java/res/xml/privacy_preferences.xml | 5 + .../AlwaysIncognitoLinkInterceptor.java | 54 ++++++ - .../chrome/browser/ChromeTabbedActivity.java | 28 ++- + .../chrome/browser/ChromeTabbedActivity.java | 25 ++- .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 7 +- .../ChromeContextMenuPopulator.java | 6 +- @@ -69,7 +69,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/profiles/profile_selections.h | 7 +- .../browser/ui/android/native_page/BUILD.gn | 2 + .../browser/ui/native_page/NativePage.java | 22 ++- - .../browser/omnibox/LocationBarMediator.java | 10 +- + .../browser/omnibox/LocationBarMediator.java | 8 + .../strings/android_chrome_strings.grd | 25 +++ .../browser/toolbar/LocationBarModel.java | 5 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + @@ -88,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + - 69 files changed, 800 insertions(+), 113 deletions(-) + 69 files changed, 797 insertions(+), 111 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 @@ -101,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -639,6 +639,7 @@ chrome_java_resources = [ +@@ -620,6 +620,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences_legacy.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", @@ -120,7 +120,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -902,6 +903,7 @@ chrome_java_sources = [ +@@ -908,6 +909,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", @@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.ExternalAppId; import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; -@@ -761,14 +765,19 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -794,14 +798,19 @@ public class ChromeTabbedActivity extends ChromeActivity { Profile profile = mTabModelSelector.getCurrentModel().getProfile(); // For saving non-incognito tab closures for Recent Tabs. @@ -285,18 +285,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct // Defer creation of this helper so it triggers after TabGroupModelFilter observers. mUndoRefocusHelper = new UndoRefocusHelper( -@@ -2951,8 +2960,9 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3152,7 +3161,7 @@ public class ChromeTabbedActivity extends ChromeActivity { + } // We determine the model as soon as possible so every systems get initialized coherently. - boolean startIncognito = -- savedInstanceState != null -- && savedInstanceState.getBoolean(IS_INCOGNITO_SELECTED, false); -+ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() -+ || (savedInstanceState != null -+ && savedInstanceState.getBoolean(IS_INCOGNITO_SELECTED, false)); - - mNextTabPolicySupplier = new ChromeNextTabPolicySupplier(mLayoutStateProviderSupplier); - +- boolean startIncognito = ++ boolean startIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() || + (mSupportedProfileType == SupportedProfileType.OFF_THE_RECORD) + || (mSupportedProfileType == SupportedProfileType.MIXED + && savedInstanceState != null diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java @@ -308,7 +305,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; import org.chromium.chrome.browser.download.DownloadManagerService; -@@ -1981,6 +1982,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2000,6 +2001,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -345,25 +342,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -34,6 +34,7 @@ import org.chromium.base.metrics.RecordUserAction; - import org.chromium.base.shared_preferences.SharedPreferencesManager; - import org.chromium.base.supplier.Supplier; +@@ -41,6 +41,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; - import org.chromium.chrome.browser.download.DownloadUtils; -@@ -370,6 +371,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { - public List> buildContextMenu() { + import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ContextMenuItemType; +@@ -420,6 +421,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { mShowEphemeralTabNewLabel = null; + mCustomActionMap.clear(); + boolean always_incognito = + AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); + - List> groupedItems = new ArrayList<>(); + List groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -438,7 +442,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -489,7 +493,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -424,15 +421,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -18,6 +18,7 @@ import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.Supplier; +@@ -21,6 +21,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -@@ -218,6 +219,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -221,6 +222,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat openInChromeItemVisible = false; tryAddingReadAloud = false; } @@ -445,7 +442,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -99,6 +99,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -101,6 +101,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -472,15 +469,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -36,6 +36,7 @@ import org.chromium.base.FileUtils; - import org.chromium.base.IntentUtils; - import org.chromium.base.Log; +@@ -39,6 +39,7 @@ import org.chromium.base.Log; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher; -@@ -78,6 +79,10 @@ import org.chromium.url.GURL; +@@ -82,6 +83,10 @@ import org.chromium.url.GURL; import java.io.File; @@ -489,9 +486,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo +import org.chromium.chrome.browser.preferences.Pref; + /** A class containing some utility static methods. */ + @NullMarked public class DownloadUtils { - private static final String TAG = "download"; -@@ -303,7 +308,13 @@ public class DownloadUtils { +@@ -313,7 +318,13 @@ public class DownloadUtils { public static boolean isAllowedToDownloadPage(Tab tab) { if (tab == null) return false; @@ -509,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java -@@ -302,7 +302,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -307,7 +307,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.generateFooterItems(); // Listen to changes in sign in state. @@ -520,7 +517,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // Create PrefChangeRegistrar to receive notifications on preference changes. mPrefChangeRegistrar = PrefServiceUtil.createFor(profile); -@@ -378,7 +380,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -383,7 +385,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.onDestroyed(); mLargeIconBridge.destroy(); mLargeIconBridge = null; @@ -533,7 +530,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -56,6 +56,14 @@ import org.chromium.ui.base.Clipboard; +@@ -57,6 +57,14 @@ import org.chromium.ui.base.Clipboard; import java.util.List; import java.util.function.Function; @@ -548,7 +545,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -161,7 +169,7 @@ public class HistoryManager +@@ -162,7 +170,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -557,7 +554,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -413,9 +421,22 @@ public class HistoryManager +@@ -415,9 +423,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -581,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -475,7 +496,7 @@ public class HistoryManager +@@ -477,7 +498,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -634,7 +631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -351,7 +352,8 @@ public class NativePageFactory { +@@ -371,7 +372,8 @@ public class NativePageFactory { String url, NativePage candidatePage, Tab tab, boolean isIncognito, PdfInfo pdfInfo) { NativePage page; @@ -647,7 +644,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java -@@ -40,6 +40,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; +@@ -44,6 +44,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.sync.SyncService; import org.chromium.url.GURL; @@ -663,7 +660,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM import java.util.HashMap; import java.util.List; import java.util.Map; -@@ -108,7 +117,8 @@ public class RecentTabsManager +@@ -113,7 +122,8 @@ public class RecentTabsManager Profile profile, Context context, Runnable showHistoryManager) { @@ -673,7 +670,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mActiveTab = tab; mTabModelSelector = tabModelSelector; mShowHistoryManager = showHistoryManager; -@@ -291,6 +301,22 @@ public class RecentTabsManager +@@ -301,6 +311,22 @@ public class RecentTabsManager */ public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { if (mIsDestroyed) return; @@ -879,7 +876,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; +@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings; import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; @@ -887,7 +884,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.FragmentSettingsNavigation; -@@ -244,6 +245,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -231,6 +232,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl SigninAndHistorySyncActivityLauncherImpl.get(), new SettingsCustomTabLauncherImpl())); } @@ -1006,15 +1003,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -25,6 +25,7 @@ import org.chromium.base.supplier.Supplier; - import org.chromium.build.BuildConfig; +@@ -27,6 +27,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.Contract; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ai.AiAssistantService; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; -@@ -219,7 +220,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -220,7 +221,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } // New Tab @@ -1029,7 +1026,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -218,6 +218,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto +@@ -212,6 +212,8 @@ import org.chromium.content_public.common.ContentSwitches; import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1038,7 +1035,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.display.DisplayUtil; -@@ -1238,7 +1240,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1247,7 +1249,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1050,7 +1047,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -52,6 +52,10 @@ import org.chromium.ui.base.PageTransition; +@@ -53,6 +53,10 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1061,9 +1058,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ @NullMarked public class ChromeTabCreator extends TabCreator -@@ -567,7 +571,6 @@ public class ChromeTabCreator extends TabCreator +@@ -580,7 +584,6 @@ public class ChromeTabCreator extends TabCreator // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. - public Tab launchUrlFromExternalApp( + public @Nullable Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { - assert !mIncognito; // Don't re-use tabs for intents from Chrome. Note that this can be spoofed so shouldn't be @@ -1092,16 +1089,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -54,6 +54,8 @@ import org.chromium.chrome.browser.tabwindow.TabWindowManager; +@@ -61,6 +61,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import java.io.BufferedInputStream; - import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; -@@ -844,6 +846,13 @@ public class TabPersistentStore { + import java.io.DataInputStream; +@@ -838,6 +840,13 @@ public class TabPersistentStore { } } } @@ -1126,7 +1123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -856,7 +857,7 @@ public class ToolbarManager +@@ -859,7 +860,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } @@ -1196,7 +1193,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and using base::android::JavaParamRef; using base::android::JavaRef; using base::android::ScopedJavaLocalRef; -@@ -104,7 +109,8 @@ std::vector> StringsToUuids( +@@ -101,7 +106,8 @@ std::vector> StringsToUuids( void CreateHistoricalTab( TabAndroid* tab_android, @@ -1206,7 +1203,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!tab_android) { return; } -@@ -115,9 +121,14 @@ void CreateHistoricalTab( +@@ -112,9 +118,14 @@ void CreateHistoricalTab( return; } @@ -1223,7 +1220,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!service) { return; } -@@ -181,7 +192,7 @@ void CreateHistoricalBulkClosure( +@@ -178,7 +189,7 @@ void CreateHistoricalBulkClosure( per_tab_optional_tab_group_ids, std::vector> tabs, std::vector web_contents_state) { @@ -1232,7 +1229,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and DCHECK_EQ(tab_group_ids.size(), group_titles.size()); DCHECK_EQ(tab_group_ids.size(), group_colors.size()); DCHECK_EQ(tab_group_ids.size(), tab_group_ids.size()); -@@ -294,11 +305,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -291,11 +302,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1250,8 +1247,8 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -418,6 +418,15 @@ ChromeAutocompleteProviderClient::GetTabGroupSyncService() const { - return tab_groups::TabGroupSyncServiceFactory::GetForProfile(profile_); +@@ -427,6 +427,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { + return AimEligibilityServiceFactory::GetForProfile(profile_); } +bool ChromeAutocompleteProviderClient::IsAlwaysIncognitoEnabled() const { @@ -1269,9 +1266,9 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h -@@ -96,6 +96,7 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient { - ProviderStateService* GetProviderStateService() const override; - tab_groups::TabGroupSyncService* GetTabGroupSyncService() const override; +@@ -99,6 +99,7 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient { + AimEligibilityService* GetAimEligibilityService() const override; + bool IsOffTheRecord() const override; + bool IsAlwaysIncognitoEnabled() const override; bool IsIncognitoProfile() const override; @@ -1313,7 +1310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" #include "chrome/browser/commerce/shopping_service_factory.h" -@@ -264,6 +265,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( +@@ -214,6 +215,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( if (!profile) return nullptr; @@ -1387,7 +1384,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -568,6 +571,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -598,6 +601,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1401,7 +1398,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -575,6 +585,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -605,6 +615,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1421,7 +1418,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h --- a/chrome/browser/history/history_tab_helper.h +++ b/chrome/browser/history/history_tab_helper.h -@@ -15,6 +15,8 @@ +@@ -17,6 +17,8 @@ #include "components/translate/core/browser/translate_driver.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" @@ -1430,8 +1427,8 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor namespace history { struct HistoryAddPageArgs; -@@ -54,6 +56,11 @@ class HistoryTabHelper - void SetAppId(const std::string& app_id) { app_id_ = app_id; } +@@ -59,6 +61,11 @@ class HistoryTabHelper + std::optional GetAppId() { return app_id_; } #endif + static void RegisterProfilePrefs(PrefRegistrySimple* registry); @@ -1442,7 +1439,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor private: explicit HistoryTabHelper(content::WebContents* web_contents); friend class content::WebContentsUserData; -@@ -91,9 +98,6 @@ class HistoryTabHelper +@@ -101,9 +108,6 @@ class HistoryTabHelper void OnLanguageDetermined( const translate::LanguageDetectionDetails& details) override; @@ -1465,7 +1462,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/OfflinePageBridge_jni.h" -@@ -757,9 +760,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( +@@ -731,9 +734,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( } if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { @@ -1750,7 +1747,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome 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 -@@ -256,6 +256,7 @@ +@@ -254,6 +254,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1758,7 +1755,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" #include "chrome/browser/android/preferences/browser_prefs_android.h" -@@ -2142,6 +2143,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2061,6 +2062,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1844,7 +1841,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ /** An interface for pages that will be using Android views instead of html/rendered Web content. */ @NullMarked public interface NativePage { -@@ -179,7 +181,8 @@ public interface NativePage { +@@ -187,7 +189,8 @@ public interface NativePage { */ static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean hasPdfDownload) { return url != null @@ -1854,7 +1851,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -189,7 +192,7 @@ public interface NativePage { +@@ -197,7 +200,7 @@ public interface NativePage { * not have chrome or chrome-native scheme. */ static boolean isChromePageUrl(GURL url, boolean isIncognito) { @@ -1863,7 +1860,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -201,11 +204,12 @@ public interface NativePage { +@@ -209,11 +212,12 @@ public interface NativePage { */ // TODO(crbug.com/40549331) - Convert to using GURL. static @NativePageType int nativePageType( @@ -1878,7 +1875,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -219,7 +223,8 @@ public interface NativePage { +@@ -227,7 +231,8 @@ public interface NativePage { GURL url, @Nullable NativePage candidatePage, boolean isIncognito, @@ -1888,7 +1885,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ if (hasPdfDownload) { // For navigation with associated pdf download (e.g. open a pdf link), pdf page should // be created. -@@ -237,7 +242,7 @@ public interface NativePage { +@@ -245,7 +250,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { @@ -1897,7 +1894,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } } -@@ -249,7 +254,7 @@ public interface NativePage { +@@ -257,7 +262,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ private static @NativePageType int chromePageType( @@ -1906,7 +1903,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ String host = url.getHost(); String scheme = url.getScheme(); if (!UrlConstants.CHROME_NATIVE_SCHEME.equals(scheme) -@@ -269,7 +274,8 @@ public interface NativePage { +@@ -277,7 +282,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -1919,7 +1916,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -91,6 +91,11 @@ import org.chromium.ui.base.WindowAndroid; +@@ -92,6 +92,11 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.Interpolators; import org.chromium.url.GURL; @@ -1931,25 +1928,20 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; import java.util.function.BooleanSupplier; -@@ -1300,10 +1305,13 @@ class LocationBarMediator - } +@@ -419,6 +424,9 @@ class LocationBarMediator + if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return; Tab tab = mLocationBarDataProvider.getTab(); - if (tab == null) return false; + if (tab == null) return; + PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); - // The save offline button should not be shown on native pages. Currently, trying to - // save an offline page in incognito crashes, so don't show it on incognito either. - return shouldShowPageActionButtons() -- && (!tab.isOffTheRecord() -+ && (!tab.isOffTheRecord() || historyEnabledInIncognito - || ChromeFeatureList.isEnabled( - ChromeFeatureList.ENABLE_SAVE_PACKAGE_FOR_OFF_THE_RECORD)); - } + boolean onNtp = UrlUtilities.isNtpUrl(tab.getUrl()); + + if (ChromeAccessibilityUtil.get().isAccessibilityEnabled() 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 -@@ -6796,6 +6796,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6675,6 +6675,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -2073,7 +2065,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -4090,6 +4090,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4108,6 +4108,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2089,7 +2081,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -111,10 +111,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -114,10 +114,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -2102,7 +2094,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -137,11 +139,13 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -140,11 +142,13 @@ PrefProvider::PrefProvider(PrefService* prefs, WebsiteSettingsRegistry* website_settings = WebsiteSettingsRegistry::GetInstance(); for (const WebsiteSettingsInfo* info : *website_settings) { @@ -2139,7 +2131,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -269,6 +269,7 @@ struct ContentSettingEntry { +@@ -287,6 +287,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2147,7 +2139,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -278,6 +279,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -296,6 +297,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2155,7 +2147,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. store_last_modified_(store_last_modified), allow_invalid_secondary_pattern_for_testing_(false), clock_(base::DefaultClock::GetInstance()) { -@@ -291,7 +293,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2167,7 +2159,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -83,6 +83,7 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -84,6 +84,7 @@ class HostContentSettingsMap : public content_settings::Observer, // profile or a guest session. HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2175,7 +2167,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -511,6 +512,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2187,7 +2179,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc --- a/components/omnibox/browser/autocomplete_provider_client.cc +++ b/components/omnibox/browser/autocomplete_provider_client.cc -@@ -65,3 +65,7 @@ base::WeakPtr +@@ -66,3 +66,7 @@ base::WeakPtr AutocompleteProviderClient::GetWeakPtr() { return nullptr; } @@ -2198,7 +2190,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h --- a/components/omnibox/browser/autocomplete_provider_client.h +++ b/components/omnibox/browser/autocomplete_provider_client.h -@@ -152,6 +152,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { +@@ -154,6 +154,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { virtual bool IsOffTheRecord() const = 0; virtual bool IsIncognitoProfile() const = 0; virtual bool IsGuestSession() const = 0; @@ -2209,7 +2201,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -413,7 +413,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( +@@ -431,7 +431,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( // Don't make a suggest request if in incognito mode; unless for the Lens // searchboxes. @@ -2221,7 +2213,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -915,7 +915,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -916,7 +916,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( // is required. // Request for suggestions in OTR contexts is not allowed; except for the Lens // searchboxes. diff --git a/build/cromite_patches/Add-autoplay-site-setting.patch b/build/cromite_patches/Add-autoplay-site-setting.patch index 3c4579ad..7b784340 100644 --- a/build/cromite_patches/Add-autoplay-site-setting.patch +++ b/build/cromite_patches/Add-autoplay-site-setting.patch @@ -279,9 +279,9 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -249,7 +249,7 @@ void ContentSettingsRegistry::Init() { +@@ -255,7 +255,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); - Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW, + Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK, @@ -329,7 +329,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.h b/third_party/blink/renderer/core/html/media/autoplay_policy.h --- a/third_party/blink/renderer/core/html/media/autoplay_policy.h +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.h -@@ -151,6 +151,10 @@ class CORE_EXPORT AutoplayPolicy final +@@ -148,6 +148,10 @@ class CORE_EXPORT AutoplayPolicy final // should use, if checking to see if an action is allowed. bool IsLockedPendingUserGesture() const; diff --git a/build/cromite_patches/Add-bookmark-import-export-actions.patch b/build/cromite_patches/Add-bookmark-import-export-actions.patch index 2ad28dbd..7754a013 100644 --- a/build/cromite_patches/Add-bookmark-import-export-actions.patch +++ b/build/cromite_patches/Add-bookmark-import-export-actions.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../app/bookmarks/BookmarkActivity.java | 31 ++ .../native_page/NativePageFactory.java | 9 +- chrome/browser/BUILD.gn | 11 +- - .../bookmarks/android/bookmark_bridge.cc | 266 ++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 197 ++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/BookmarkBridge.java | 39 +++ .../browser/bookmarks/BookmarkDelegate.java | 10 + @@ -36,11 +36,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/importer/profile_writer.h | 6 + .../preferences/ChromePreferenceKeys.java | 3 + .../strings/android_chrome_strings.grd | 18 ++ - chrome/common/BUILD.gn | 3 + - chrome/utility/BUILD.gn | 7 +- - .../utility/importer/bookmark_html_reader.cc | 28 +- - .../utility/importer/bookmark_html_reader.h | 8 + + chrome/utility/BUILD.gn | 7 + + .../importer/bookmarks_file_importer.cc | 4 + .../headless_select_file_dialog.cc | 4 + + .../content/content_bookmark_parser_utils.cc | 3 + .../add-bookmark-import-export-actions.inc | 12 + .../add-bookmark-import-export-actions.inc | 4 + .../add-bookmark-import-export-actions.inc | 1 + @@ -52,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 41 files changed, 905 insertions(+), 29 deletions(-) + 40 files changed, 809 insertions(+), 24 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -103,8 +102,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -@@ -55,7 +56,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; - * {@link ChromeTabbedActivity}. +@@ -60,7 +61,7 @@ import java.util.List; + * ChromeTabbedActivity}. */ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - private final Activity mActivity; @@ -112,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; -@@ -85,7 +86,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -91,7 +92,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( @@ -208,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -62,7 +63,7 @@ import org.chromium.ui.util.ColorUtils; +@@ -63,7 +64,7 @@ import org.chromium.ui.util.ColorUtils; * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. */ public class NativePageFactory { @@ -217,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier mCurrentTabSupplier; -@@ -85,7 +86,7 @@ public class NativePageFactory { +@@ -87,7 +88,7 @@ public class NativePageFactory { private static NativePage sTestPage; public NativePageFactory( @@ -226,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat @NonNull BottomSheetController sheetController, @NonNull BrowserControlsManager browserControlsManager, @NonNull Supplier currentTabSupplier, -@@ -157,7 +158,7 @@ public class NativePageFactory { +@@ -162,7 +163,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -235,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mNewTabPageCreationTracker; private final BrowserControlsManager mBrowserControlsManager; -@@ -262,7 +263,7 @@ public class NativePageFactory { +@@ -271,7 +272,7 @@ public class NativePageFactory { mBrowserControlsManager, mTabModelSelector, mEdgeToEdgeControllerSupplier), @@ -247,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -248,6 +248,8 @@ static_library("browser") { +@@ -245,6 +245,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -256,7 +255,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1760,6 +1762,13 @@ static_library("browser") { +@@ -1721,6 +1723,13 @@ static_library("browser") { ] } @@ -270,7 +269,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3684,8 +3693,6 @@ static_library("browser") { +@@ -3704,8 +3713,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -282,19 +281,20 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -68,6 +68,27 @@ +@@ -68,6 +68,28 @@ #include "content/public/browser/web_contents.h" #include "url/gurl.h" +#include "base/android/content_uri_utils.h" +#include "base/android/path_utils.h" +#include "base/strings/utf_string_conversions.h" -+#include "chrome/utility/importer/bookmark_html_reader.h" +#include "chrome/browser/bookmarks/bookmark_html_writer.h" +#include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "components/user_data_importer/common/imported_bookmark_entry.h" ++#include "components/user_data_importer/content/content_bookmark_parser.h" ++#include "components/user_data_importer/content/content_bookmark_parser_utils.h" +#include "chrome/common/url_constants.h" +#include "components/favicon_base/favicon_usage_data.h" +#include "components/search_engines/template_url.h" @@ -310,65 +310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/browser/bookmarks/android/jni_headers/BookmarkBridge_jni.h" -@@ -86,6 +107,57 @@ using bookmarks::android::JavaBookmarkIdGetType; - using content::BrowserThread; - using power_bookmarks::PowerBookmarkMeta; - -+namespace internal { -+ -+// Returns true if |url| has a valid scheme that we allow to import. We -+// filter out the URL with a unsupported scheme. -+bool CanImportURL(const GURL& url) { -+ // The URL is not valid. -+ if (!url.is_valid()) -+ return false; -+ -+ // Filter out the URLs with unsupported schemes. -+ const char* const kInvalidSchemes[] = {"wyciwyg", "place"}; -+ for (size_t i = 0; i < std::size(kInvalidSchemes); ++i) { -+ if (url.SchemeIs(kInvalidSchemes[i])) -+ return false; -+ } -+ -+ // Check if |url| is about:blank. -+ if (url == url::kAboutBlankURL) -+ return true; -+ -+ // If |url| starts with chrome:// or about:, check if it's one of the URLs -+ // that we support. -+ if (url.SchemeIs(content::kChromeUIScheme) || -+ url.SchemeIs(url::kAboutScheme)) { -+ if (url.host_piece() == chrome::kChromeUIAboutHost) -+ return true; -+ -+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string())); -+ const base::span hosts = chrome::ChromeURLHosts(); -+ for (const base::cstring_view host : hosts) { -+ if (fixed_url.DomainIs(host)) { -+ return true; -+ } -+ } -+ -+ if (base::Contains(chrome::ChromeDebugURLs(), fixed_url.spec())) { -+ return true; -+ } -+ -+ // If url has either chrome:// or about: schemes but wasn't found in the -+ // above lists, it means we don't support it, so we don't allow the user -+ // to import it. -+ return false; -+ } -+ -+ // Otherwise, we assume the url has a valid (importable) scheme. -+ return true; -+} -+ -+} // internal -+ - namespace { - // The key used to connect the instance of the bookmark bridge to the bookmark - // model. -@@ -296,6 +368,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -296,6 +318,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -379,7 +321,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { -@@ -847,6 +923,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -847,6 +873,177 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -527,43 +469,24 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +} + +void BookmarkBridge::FileSelectedImplOnUIThread(const base::FilePath& path, -+ const std::string& contents) { ++ const std::string& contents) { + if (contents.empty()) + return; + + // the following import logic comes from BookmarksFileImporter class -+ std::vector bookmarks; -+ std::vector search_engines; -+ favicon_base::FaviconUsageDataList favicons; -+ -+ bookmark_html_reader::ImportBookmarksFile( -+ base::RepeatingCallback(), -+ base::BindRepeating(internal::CanImportURL), -+ contents, -+ &bookmarks, -+ &search_engines, -+ &favicons); ++ user_data_importer::BookmarkParser::ParsedBookmarks parsed_bookmarks = ++ user_data_importer::ParseBookmarksUnsafe(contents); + + auto *writer = new ProfileWriter(profile_); + -+ if (!bookmarks.empty()) { ++ if (!parsed_bookmarks.bookmarks.empty()) { + // adding bookmarks will begin extensive changes to the model -+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, u"Imported"); -+ } -+ if (!search_engines.empty()) { -+ TemplateURLService::OwnedTemplateURLVector owned_template_urls; -+ for (const auto& search_engine : search_engines) { -+ std::unique_ptr owned_template_url = CreateTemplateURL( -+ search_engine.url, search_engine.keyword, search_engine.display_name); -+ if (owned_template_url) -+ owned_template_urls.push_back(std::move(owned_template_url)); -+ } -+ writer->AddKeywords(std::move(owned_template_urls), false); ++ writer->AddBookmarksWithModel(bookmark_model_, parsed_bookmarks.bookmarks, u"Imported"); + } + + std::stringstream message; -+ message << "Imported " << bookmarks.size() << " bookmarks and " << -+ search_engines.size() << " search engines from " << path.MaybeAsASCII(); ++ message << "Imported " << parsed_bookmarks.bookmarks.size() << " bookmarks " << ++ " from " << path.MaybeAsASCII(); + auto result = message.str(); + + select_file_dialog_->ShowToast(result); @@ -637,7 +560,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef& j_folders_obj, -@@ -390,6 +411,8 @@ class BookmarkBridge : public ProfileObserver, +@@ -385,6 +406,8 @@ class BookmarkBridge : public ProfileObserver, void CreateOrDestroyAccountReadingListManagerIfNeeded(); const raw_ptr profile_; // weak @@ -646,7 +569,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaGlobalRef java_bookmark_model_; const raw_ptr bookmark_model_; // weak const raw_ptr -@@ -404,6 +427,7 @@ class BookmarkBridge : public ProfileObserver, +@@ -399,6 +422,7 @@ class BookmarkBridge : public ProfileObserver, std::unique_ptr grouped_bookmark_actions_; PrefChangeRegistrar pref_change_registrar_; @@ -654,7 +577,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser // Information about the Partner bookmarks (must check for IsLoaded()). // This is owned by profile. -@@ -437,6 +461,10 @@ class BookmarkBridge : public ProfileObserver, +@@ -432,6 +456,10 @@ class BookmarkBridge : public ProfileObserver, base::TimeTicks load_start_time_; bool loading_notification_sent_ = false; @@ -724,7 +647,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Synchronously gets a list of bookmarks that match the specified search query. * -@@ -1124,6 +1159,10 @@ class BookmarkBridge { +@@ -1108,6 +1143,10 @@ class BookmarkBridge { void getChildIds( long nativeBookmarkBridge, long id, int type, List bookmarksList); @@ -784,7 +707,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java -@@ -62,6 +62,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; +@@ -63,6 +63,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.power_bookmarks.PowerBookmarkMeta; import org.chromium.components.power_bookmarks.PowerBookmarkType; @@ -793,7 +716,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.ui.accessibility.AccessibilityState; import org.chromium.ui.listmenu.ListMenu; import org.chromium.ui.listmenu.ListMenuItemProperties; -@@ -80,6 +82,47 @@ import java.util.function.BooleanSupplier; +@@ -81,6 +83,47 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -841,7 +764,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Responsible for BookmarkManager business logic. */ // TODO(crbug.com/40256938): Remove BookmarkDelegate if possible. @NullMarked -@@ -90,6 +133,9 @@ class BookmarkManagerMediator +@@ -91,6 +134,9 @@ class BookmarkManagerMediator private static boolean sPreventLoadingForTesting; @@ -851,7 +774,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Keeps track of whether drag is enabled / active for bookmark lists. */ private class BookmarkDragStateDelegate implements DragStateDelegate { private BookmarkDelegate mBookmarkDelegate; -@@ -596,6 +642,14 @@ class BookmarkManagerMediator +@@ -597,6 +643,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -866,7 +789,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** See BookmarkManager(Coordinator)#updateForUrl */ void updateForUrl(String url) { // Bookmark model is null if the manager has been destroyed. -@@ -768,6 +822,235 @@ class BookmarkManagerMediator +@@ -769,6 +823,235 @@ class BookmarkManagerMediator } } @@ -989,7 +912,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + // use the download ui and standard file saving + DownloadLocationDialogController controller = new DownloadLocationDialogController() { + @Override -+ public void onDownloadLocationDialogComplete(String returnedPath) {} ++ public void onDownloadLocationDialogComplete(String returnedPath, boolean didUserConfirm) {} + + @Override + public void onDownloadLocationDialogCanceled() {} @@ -1196,7 +1119,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java -@@ -140,6 +140,10 @@ class BookmarkToolbarMediator +@@ -139,6 +139,10 @@ class BookmarkToolbarMediator mBookmarkDelegate = bookmarkDelegate; mModel.set( BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE, this::onNavigateBack); @@ -1315,7 +1238,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse private boolean mLocationDialogManaged; -@@ -153,7 +153,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. +@@ -154,7 +154,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. * Called after retrieved the download directory options. * @param dirs An list of available download directories. */ @@ -1327,18 +1250,18 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -236,6 +236,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -251,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kBatchTabRestore, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, + &kBookmarksExportUseSaf, - &kBottomBrowserControlsRefactor, - &kTabClosureMethodRefactor, &kBrowserControlsDebugging, + &kBrowserControlsEarlyResize, + &kCacheActivityTaskID, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -662,6 +662,7 @@ public abstract class ChromeFeatureList { +@@ -689,6 +689,7 @@ public abstract class ChromeFeatureList { public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1401,7 +1324,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** Whether Chrome is set as the default browser. Default value is false. */ public static final String CHROME_DEFAULT_BROWSER = "applink.chrome_default_browser"; -@@ -1008,6 +1010,7 @@ public final class ChromePreferenceKeys { +@@ -1017,6 +1019,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1437,144 +1360,39 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Virtual Reality -diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn ---- a/chrome/common/BUILD.gn -+++ b/chrome/common/BUILD.gn -@@ -352,6 +352,9 @@ static_library("common_lib") { - "chrome_descriptors_android.h", - "media/chrome_media_drm_bridge_client.cc", - "media/chrome_media_drm_bridge_client.h", -+ ## Bromite dependencies for bookmark import functionality -+ "//components/user_data_importer/common/imported_bookmark_entry.cc", -+ "//components/user_data_importer/common/imported_bookmark_entry.h", - ] - } else { - # Non-Android. diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -88,8 +88,6 @@ static_library("utility") { - - if (!is_android) { - sources += [ -- "importer/bookmark_html_reader.cc", -- "importer/bookmark_html_reader.h", - "importer/bookmarks_file_importer.cc", - "importer/bookmarks_file_importer.h", - "importer/external_process_importer_bridge.cc", -@@ -222,6 +220,11 @@ static_library("utility") { +@@ -222,6 +222,13 @@ static_library("utility") { deps += [ "//chrome/services/pdf:lib" ] } -+ sources += [ -+ "importer/bookmark_html_reader.cc", -+ "importer/bookmark_html_reader.h", -+ ] ++ if (is_android) { ++ sources += [ ++ "importer/bookmarks_file_importer.cc", ++ "importer/bookmarks_file_importer.h", ++ ] ++ } + # NSS decryptor is not needed on ChromeOS. if (!is_chromeos && use_nss_certs) { sources += [ -diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc ---- a/chrome/utility/importer/bookmark_html_reader.cc -+++ b/chrome/utility/importer/bookmark_html_reader.cc -@@ -16,7 +16,9 @@ - #include "base/strings/string_util.h" - #include "base/strings/utf_string_conversions.h" - #include "base/time/time.h" -+#if !BUILDFLAG(IS_ANDROID) - #include "chrome/utility/importer/favicon_reencode.h" -+#endif - #include "components/search_engines/search_terms_data.h" - #include "components/search_engines/template_url.h" - #include "components/user_data_importer/common/imported_bookmark_entry.h" -@@ -55,6 +57,7 @@ bool GetAttribute(const std::string& attribute_list, - return true; - } - -+#if !BUILDFLAG(IS_ANDROID) - // Given the URL of a page and a favicon data URL, adds an appropriate record - // to the given favicon usage vector. - void DataURLToFaviconUsage(const GURL& link_url, -@@ -88,6 +91,7 @@ void DataURLToFaviconUsage(const GURL& link_url, +diff --git a/chrome/utility/importer/bookmarks_file_importer.cc b/chrome/utility/importer/bookmarks_file_importer.cc +--- a/chrome/utility/importer/bookmarks_file_importer.cc ++++ b/chrome/utility/importer/bookmarks_file_importer.cc +@@ -103,8 +103,12 @@ void BookmarksFileImporter::StartImport( + user_data_importer::ParseBookmarksUnsafe(raw_html); - favicons->push_back(usage); - } -+#endif - - } // namespace - -@@ -108,14 +112,29 @@ static std::string stripDt(const std::string& lineDt) { - } - - void ImportBookmarksFile( -- base::RepeatingCallback cancellation_callback, -- base::RepeatingCallback valid_url_callback, -+ const base::RepeatingCallback cancellation_callback, -+ const base::RepeatingCallback valid_url_callback, - const base::FilePath& file_path, - std::vector* bookmarks, - std::vector* search_engines, - favicon_base::FaviconUsageDataList* favicons) { - std::string content; -- base::ReadFileToString(file_path, &content); -+ if (!base::ReadFileToString(file_path, &content)) { -+ LOG(ERROR) << "Could not directly read bookmarks import file"; -+ return; -+ } -+ -+ ImportBookmarksFile(cancellation_callback, valid_url_callback, -+ content, bookmarks, search_engines, favicons); -+} -+ -+void ImportBookmarksFile( -+ base::RepeatingCallback cancellation_callback, -+ base::RepeatingCallback valid_url_callback, -+ const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, -+ favicon_base::FaviconUsageDataList* favicons) { - std::vector lines = base::SplitString( - content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); - -@@ -128,6 +147,7 @@ void ImportBookmarksFile( - std::vector path; - size_t toolbar_folder_index = 0; - std::string charset = "UTF-8"; // If no charset is specified, assume utf-8. -+ - for (size_t i = 0; - i < lines.size() && - (cancellation_callback.is_null() || !cancellation_callback.Run()); -@@ -219,10 +239,12 @@ void ImportBookmarksFile( - } - bookmarks->push_back(entry); - -+#if !BUILDFLAG(IS_ANDROID) - // Save the favicon. DataURLToFaviconUsage will handle the case where - // there is no favicon. - if (favicons) - DataURLToFaviconUsage(url, favicon, favicons); + if (!parsed_bookmarks.bookmarks.empty()) { ++#if BUILDFLAG(IS_ANDROID) ++ std::u16string first_folder_name; ++#else + std::u16string first_folder_name = + bridge_->GetLocalizedString(IDS_BOOKMARK_GROUP); +#endif - - continue; - } -diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h ---- a/chrome/utility/importer/bookmark_html_reader.h -+++ b/chrome/utility/importer/bookmark_html_reader.h -@@ -53,6 +53,14 @@ void ImportBookmarksFile( - std::vector* search_engines, - favicon_base::FaviconUsageDataList* favicons); - -+void ImportBookmarksFile( -+ const base::RepeatingCallback cancellation_callback, -+ const base::RepeatingCallback valid_url_callback, -+ const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, -+ favicon_base::FaviconUsageDataList* favicons); -+ - // Returns true if |url| should be imported as a search engine, i.e. because it - // has replacement terms. Chrome treats such bookmarks as search engines rather - // than true bookmarks. + std::erase_if(parsed_bookmarks.bookmarks, + [](user_data_importer::ImportedBookmarkEntry bookmark) { + return !internal::CanImportURL(bookmark.url); diff --git a/components/headless/select_file_dialog/headless_select_file_dialog.cc b/components/headless/select_file_dialog/headless_select_file_dialog.cc --- a/components/headless/select_file_dialog/headless_select_file_dialog.cc +++ b/components/headless/select_file_dialog/headless_select_file_dialog.cc @@ -1589,6 +1407,29 @@ diff --git a/components/headless/select_file_dialog/headless_select_file_dialog. SelectFileDialogCallback callback_; }; +diff --git a/components/user_data_importer/content/content_bookmark_parser_utils.cc b/components/user_data_importer/content/content_bookmark_parser_utils.cc +--- a/components/user_data_importer/content/content_bookmark_parser_utils.cc ++++ b/components/user_data_importer/content/content_bookmark_parser_utils.cc +@@ -89,6 +89,7 @@ std::optional GetTimeAttribute(const std::string& attribute_list, + + // Given the URL of a page and a favicon data URL, adds an appropriate record + // to the given favicon usage vector. ++[[maybe_unused]] + void DataURLToFaviconUsage(const GURL& link_url, + const GURL& favicon_data, + favicon_base::FaviconUsageDataList* favicons) { +@@ -438,9 +439,11 @@ BookmarkParser::ParsedBookmarks ParseBookmarksUnsafe( + } + parsing_result.bookmarks.push_back(std::move(entry)); + ++#if !BUILDFLAG(IS_ANDROID) + // Save the favicon. DataURLToFaviconUsage will handle the case where + // there is no favicon. + DataURLToFaviconUsage(url, favicon, &parsing_result.favicons); ++#endif + + continue; + } diff --git a/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc b/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc new file mode 100644 --- /dev/null @@ -1732,7 +1573,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc --- a/ui/shell_dialogs/select_file_dialog_android.cc +++ b/ui/shell_dialogs/select_file_dialog_android.cc -@@ -175,6 +175,12 @@ void SelectFileDialogImpl::SelectFileImpl( +@@ -171,6 +171,12 @@ void SelectFileDialogImpl::SelectFileImpl(Type type, owning_window->GetJavaObject()); } @@ -1748,7 +1589,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/s diff --git a/ui/shell_dialogs/select_file_dialog_android.h b/ui/shell_dialogs/select_file_dialog_android.h --- a/ui/shell_dialogs/select_file_dialog_android.h +++ b/ui/shell_dialogs/select_file_dialog_android.h -@@ -53,6 +53,8 @@ class SelectFileDialogImpl : public SelectFileDialog { +@@ -49,6 +49,8 @@ class SelectFileDialogImpl : public SelectFileDialog { gfx::NativeWindow owning_window, const GURL* caller) override; diff --git a/build/cromite_patches/Add-cromite-flags-support.patch b/build/cromite_patches/Add-cromite-flags-support.patch index 20709c0d..bf05f26f 100644 --- a/build/cromite_patches/Add-cromite-flags-support.patch +++ b/build/cromite_patches/Add-cromite-flags-support.patch @@ -42,7 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../placeholder.txt | 1 + chrome/browser/ui/ui_features.cc | 1 + chrome/browser/unexpire_flags.cc | 15 +- - chrome/common/chrome_features.cc | 1 + + chrome/common/chrome_features.cc | 2 +- .../browser_ui/accessibility/android/BUILD.gn | 1 + .../res/xml/accessibility_preferences.xml | 3 +- .../accessibility/AccessibilitySettings.java | 6 +- @@ -107,7 +107,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html third_party/blink/public/common/features.h | 1 + ui/base/ui_base_features.cc | 1 + ui/base/ui_base_features.h | 1 + - 94 files changed, 826 insertions(+), 30 deletions(-) + 94 files changed, 826 insertions(+), 31 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp @@ -153,7 +153,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1035,7 +1037,7 @@ component("base") { +@@ -1043,7 +1045,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -451,7 +451,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -38,7 +38,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -40,7 +40,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); @Override @@ -475,15 +475,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment; +@@ -11,6 +11,7 @@ import androidx.annotation.NonNull; + import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; - import org.chromium.base.IntentUtils; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.chrome.browser.LaunchIntentDispatcher; -@@ -76,18 +77,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl + import org.chromium.chrome.browser.accessibility.settings.ChromeAccessibilitySettingsDelegate; +@@ -70,18 +71,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl private final OneshotSupplier mSnackbarManagerSupplier; private final OneshotSupplier mBottomSheetControllerSupplier; private final ObservableSupplier mModalDialogManagerSupplier; @@ -506,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme } @Override -@@ -96,6 +100,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -90,6 +94,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl @NonNull Fragment fragment, @NonNull Context unusedContext) { // Common dependencies attachments. @@ -634,7 +634,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -407,6 +407,10 @@ using flags_ui::kOsLinux; +@@ -380,6 +380,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -645,9 +645,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4835,6 +4839,10 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { - }; - // LINT.ThenChange(//ios/chrome/browser/flags/about_flags.mm:DataSharingVersioningChoices) +@@ -4902,6 +4906,10 @@ const FeatureEntry::FeatureVariation + constexpr char kWebiumFlag[] = "webium"; + #endif // !BUILDFLAG(IS_ANDROID) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -656,7 +656,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. -@@ -4861,6 +4869,9 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { +@@ -4928,6 +4936,9 @@ constexpr char kWebiumFlag[] = "webium"; const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -669,7 +669,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc --- a/chrome/browser/browser_features.cc +++ b/chrome/browser/browser_features.cc -@@ -359,4 +359,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, +@@ -368,4 +368,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, "RemovalOfIWAsFromTabCapture", base::FEATURE_ENABLED_BY_DEFAULT); @@ -678,7 +678,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h -@@ -135,6 +135,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -121,6 +121,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -728,7 +728,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn 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 -@@ -1421,5 +1421,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1489,5 +1489,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -738,14 +738,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -318,6 +318,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutTextVariant( - "text_variant", +@@ -331,6 +331,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( + "snippet_as_subtitle", /*default_value=*/false); +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_h.inc" - } // namespace android - } // namespace chrome + } // namespace chrome::android + #endif // CHROME_BROWSER_FLAGS_ANDROID_CHROME_FEATURE_LIST_H_ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java @@ -760,7 +760,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -1015,7 +1019,7 @@ public abstract class ChromeFeatureList { +@@ -1063,7 +1067,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sWebApkMinShellApkVersion = newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); @@ -769,7 +769,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, -@@ -1152,6 +1156,13 @@ public abstract class ChromeFeatureList { +@@ -1205,6 +1209,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sWebApkMinShellApkVersion); @@ -959,8 +959,8 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -430,4 +430,5 @@ bool HasTabSearchToolbarButton() { - return has_tab_search_toolbar_button; +@@ -619,4 +619,5 @@ bool IsBookmarkTabGroupConversionEnabled() { + return base::FeatureList::IsEnabled(kBookmarkTabGroupConversion); } +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" @@ -968,7 +968,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc --- a/chrome/browser/unexpire_flags.cc +++ b/chrome/browser/unexpire_flags.cc -@@ -12,6 +12,7 @@ +@@ -8,6 +8,7 @@ #include "base/containers/contains.h" #include "base/containers/flat_map.h" #include "base/no_destructor.h" @@ -976,7 +976,7 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc #include "chrome/browser/expired_flags_list.h" #include "chrome/browser/unexpire_flags_gen.h" #include "chrome/common/chrome_version.h" -@@ -117,7 +118,19 @@ bool IsFlagExpired(const flags_ui::FlagsStorage* storage, +@@ -114,7 +115,19 @@ bool IsFlagExpired(const flags_ui::FlagsStorage* storage, // Otherwise, the flag is expired if its expiration mstone is less than the // mstone of this copy of Chromium. @@ -1000,10 +1000,11 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1866,4 +1866,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, - "DisableShortcutsEnableDiy", - base::FEATURE_ENABLED_BY_DEFAULT); - +@@ -1977,5 +1977,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, + BASE_FEATURE(kSilentPolicyAndDefaultAppUpdating, + "SilentPolicyAndDefaultAppUpdating", + base::FEATURE_DISABLED_BY_DEFAULT); +- +#include "cromite_flags/chrome_common_chrome_features_cc.inc" } // namespace features diff --git a/components/browser_ui/accessibility/android/BUILD.gn b/components/browser_ui/accessibility/android/BUILD.gn @@ -1151,7 +1152,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -167,5 +167,6 @@ BASE_FEATURE(kForceAllowStorageAccess, +@@ -181,5 +181,6 @@ BASE_FEATURE(kForceAllowStorageAccess, "ForceAllowStorageAccess", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1187,16 +1188,16 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc --- a/components/password_manager/core/browser/features/password_features.cc +++ b/components/password_manager/core/browser/features/password_features.cc -@@ -191,4 +191,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, - "ImprovedPasswordChangeService", +@@ -219,4 +219,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, base::FEATURE_DISABLED_BY_DEFAULT); + #endif // BUILDFLAG(IS_ANDROID) +#include "cromite_flags/components_password_manager_core_browser_features_password_features_cc.inc" } // namespace password_manager::features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -147,6 +147,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -139,6 +139,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, "OsAdditionalSecurityPermissionKillSwitch", base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -1629,16 +1630,16 @@ diff --git a/components/webui/version/version_handler_helper.cc b/components/web diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -583,4 +583,5 @@ BASE_FEATURE(kDisallowRasterInterfaceWithoutSkiaBackend, - - // Please keep features in alphabetical order. +@@ -743,4 +743,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { + blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); + } +#include "cromite_flags/content_common_features_cc.inc" } // namespace features diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1597,4 +1597,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1676,4 +1676,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1647,7 +1648,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -380,6 +380,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -400,6 +400,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -1993,7 +1994,7 @@ new file mode 100755 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -1891,5 +1891,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -2008,5 +2008,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2003,7 +2004,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -577,5 +577,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -601,5 +601,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2013,18 +2014,18 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -811,4 +811,5 @@ BASE_FEATURE_PARAM(int, - "TcpConnectionPoolSizeTrialWebSocket", - 256); +@@ -909,4 +909,5 @@ BASE_FEATURE_PARAM(bool, + "url_request_redirect_job", + false); +#include "cromite_flags/net_base_features_cc.inc" } // namespace net::features diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h +++ b/net/base/features.h -@@ -822,6 +822,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(int, kTcpConnectionPoolSizeTrialNormal); - NET_EXPORT BASE_DECLARE_FEATURE_PARAM(int, - kTcpConnectionPoolSizeTrialWebSocket); +@@ -896,6 +896,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, kNetTaskSchedulerURLRequestJob); + NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, + kNetTaskSchedulerURLRequestRedirectJob); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2033,18 +2034,18 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -637,4 +637,5 @@ BASE_FEATURE(kNetworkServiceScheduler, - "NetworkServiceScheduler", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -666,4 +666,5 @@ BASE_FEATURE_PARAM(bool, + "url_loader", + false); +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -355,6 +355,7 @@ BASE_DECLARE_FEATURE_PARAM(size_t, kSharedDictionaryCacheMaxSizeBytes); +@@ -366,6 +366,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) - BASE_DECLARE_FEATURE(kNetworkServiceScheduler); + BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerURLLoader); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace network::features @@ -2053,7 +2054,7 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2886,4 +2886,5 @@ bool IsLinkPreviewTriggerTypeEnabled(LinkPreviewTriggerType type) { +@@ -2927,4 +2927,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2062,7 +2063,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1888,6 +1888,7 @@ BLINK_COMMON_EXPORT bool IsUpdateComplexSafaAreaConstraintsEnabled(); +@@ -1912,6 +1912,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. @@ -2073,8 +2074,8 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc -@@ -504,4 +504,5 @@ bool IsPixelCanvasRecordingEnabled() { - return base::FeatureList::IsEnabled(features::kEnablePixelCanvasRecording); +@@ -483,4 +483,5 @@ bool IsHandleIMESpanChangesOnUpdateCompositionEnabled() { + features::kHandleIMESpanChangesOnUpdateComposition); } +#include "cromite_flags/ui_base_features_cc.inc" @@ -2082,9 +2083,9 @@ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h -@@ -247,6 +247,7 @@ BASE_DECLARE_FEATURE(kEnablePixelCanvasRecording); - - bool COMPONENT_EXPORT(UI_BASE_FEATURES) IsPixelCanvasRecordingEnabled(); +@@ -242,6 +242,7 @@ BASE_DECLARE_FEATURE(kHandleIMESpanChangesOnUpdateComposition); + COMPONENT_EXPORT(UI_BASE_FEATURES) + bool IsHandleIMESpanChangesOnUpdateCompositionEnabled(); +#include "cromite_flags/ui_base_features_h.inc" } // namespace features diff --git a/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch b/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch index f3e4de17..5073f0e6 100644 --- a/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch @@ -14,8 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../java/res/xml/privacy_preferences.xml | 15 ++++++ .../browser/LaunchIntentDispatcher.java | 21 ++++++++ - .../CustomTabIntentDataProvider.java | 4 +- - .../customtabs/CustomTabsConnection.java | 1 + + .../CustomTabIntentDataProvider.java | 22 ++++---- + .../customtabs/CustomTabsConnection.java | 3 +- .../IncognitoCustomTabIntentDataProvider.java | 14 +++++ .../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++ .../flags/android/chrome_feature_list.cc | 2 +- @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../OriginVerifier.java | 5 ++ .../core/common/language_experiments.cc | 1 + .../add-custom-tab-intents-privacy-option.inc | 1 + - 13 files changed, 146 insertions(+), 3 deletions(-) + 13 files changed, 156 insertions(+), 13 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -61,6 +61,9 @@ import java.lang.annotation.Retention; +@@ -62,6 +62,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Set; @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -263,6 +266,9 @@ public class LaunchIntentDispatcher { +@@ -264,6 +267,9 @@ public class LaunchIntentDispatcher { */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis Log.w( TAG, "CustomTabsIntent#shouldAlwaysUseBrowserUI() = " -@@ -291,6 +297,10 @@ public class LaunchIntentDispatcher { +@@ -292,6 +298,10 @@ public class LaunchIntentDispatcher { // Make sure the result of the CustomTabActivity is forwarded to the client. newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Since configureIntentForResizableCustomTab() might change the componenet/class // associated with the passed intent, it needs to be called after #setClassName(context, // CustomTabActivity.class.getName()); -@@ -483,6 +493,17 @@ public class LaunchIntentDispatcher { +@@ -490,6 +500,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -109,6 +109,49 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +@@ -233,16 +233,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + + // Extra whose value is an array of ints that is supplied to + // SyntheticTrialRegistry::RegisterExternalExperiments(). +- public static final String EXPERIMENT_IDS = +- "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS"; ++ // public static final String EXPERIMENT_IDS = ++ // "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS"; + + // These Extra Intent parameters allow an Intent to enable or disable a set of Features. + // The set of Features that may be enabled or disabled is restricted by the code, + // and initially only two Features may be enabled together, or disabled together. +- public static final String EXPERIMENTS_ENABLE = +- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE"; +- public static final String EXPERIMENTS_DISABLE = +- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE"; ++ // public static final String EXPERIMENTS_ENABLE = ++ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE"; ++ // public static final String EXPERIMENTS_DISABLE = ++ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE"; + + /** + * Extra that, if set, makes the Custom Tab Activity's height to be x pixels, the Custom Tab +@@ -682,7 +682,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION, + ScreenOrientation.DEFAULT)); + +- mGsaExperimentIds = IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS); ++ mGsaExperimentIds = null; //IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS); + + mBreakPointDp = getActivityBreakPointFromIntent(intent); + mInitialActivityHeight = getInitialActivityHeightFromIntent(intent); +@@ -695,8 +695,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT); + mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED; + +- mInteractWithBackground = CustomTabsIntent.isBackgroundInteractionEnabled(intent); +- if (IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) { ++ mInteractWithBackground = false; // CustomTabsIntent.isBackgroundInteractionEnabled(intent); ++ if (((false)) && IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) { + @BackgroundInteractBehavior + int backgroundInteractBehavior = + IntentUtils.safeGetIntExtra( @@ -1267,7 +1267,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() @@ -123,7 +166,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java -@@ -981,6 +981,7 @@ public class CustomTabsConnection { +@@ -780,7 +780,7 @@ public class CustomTabsConnection { + ThreadUtils.assertOnUiThread(); + if (extras == null) return; + int[] experimentIds = +- IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS); ++ null; //IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS); + if (experimentIds == null) return; + // When ids are set through cct, they should not override existing ids. + boolean override = false; +@@ -996,6 +996,7 @@ public class CustomTabsConnection { PostTask.postTask( TaskTraits.UI_DEFAULT, () -> { @@ -275,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -1051,7 +1051,7 @@ BASE_FEATURE(kMagicStackAndroid, +@@ -1093,7 +1093,7 @@ BASE_FEATURE(kMagicStackAndroid, // Enables an experimental feature which forces mayLaunchUrl to use a different // storage partition. This may reduce performance. This should not be enabled by // default. @@ -287,7 +339,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -895,6 +895,8 @@ public abstract class ChromeFeatureList { +@@ -943,6 +943,8 @@ public abstract class ChromeFeatureList { MOST_VISITED_TILES_CUSTOMIZATION, /* defaultValue= */ false, /* defaultValueInTests= */ true); @@ -296,9 +348,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sMostVisitedTilesReselect = newCachedFlag(MOST_VISITED_TILES_RESELECT, false); public static final CachedFlag sMultiInstanceApplicationStatusCleanup = -@@ -1111,6 +1113,7 @@ public abstract class ChromeFeatureList { - sMaliciousApkDownloadCheck, +@@ -1165,6 +1167,7 @@ public abstract class ChromeFeatureList { sMiniOriginBar, + sMitigateLegacySearchEnginePromoOverlap, sMostVisitedTilesCustomization, + sMayLaunchurlUsesSeparateStoragePartition, sMostVisitedTilesReselect, @@ -368,9 +420,9 @@ diff --git a/components/content_relationship_verification/android/java/src/org/c diff --git a/components/language/core/common/language_experiments.cc b/components/language/core/common/language_experiments.cc --- a/components/language/core/common/language_experiments.cc +++ b/components/language/core/common/language_experiments.cc -@@ -32,4 +32,5 @@ BASE_FEATURE(kDisableGeoLanguageModel, - // Params: - const char kContentLanguagesDisableObserversParam[] = "disable_observers"; +@@ -26,4 +26,5 @@ BASE_FEATURE(kDisableGeoLanguageModel, + "DisableGeoLanguageModel", + base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate); } // namespace language @@ -379,5 +431,5 @@ new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc @@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides); ++// explicitly empty -- diff --git a/build/cromite_patches/Add-exit-menu-item.patch b/build/cromite_patches/Add-exit-menu-item.patch index dc11da1b..574b16af 100644 --- a/build/cromite_patches/Add-exit-menu-item.patch +++ b/build/cromite_patches/Add-exit-menu-item.patch @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -331,6 +331,8 @@ import java.util.Map; +@@ -345,6 +345,8 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; @@ -37,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct /** * This is the main activity for ChromeMobile when not running in document mode. All the tabs are * accessible via a chrome specific tab switching UI. -@@ -3464,6 +3466,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3707,6 +3709,8 @@ public class ChromeTabbedActivity extends ChromeActivity { .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate; -@@ -2420,6 +2421,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2445,6 +2446,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return true; } @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -373,6 +373,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -384,6 +384,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm maybeAddDividerLine(modelList, R.id.menu_item_content_filter_divider_line_id); modelList.add(buildContentFilterHelpCenterMenuItem(currentTab)); } @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab 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 -@@ -4499,6 +4499,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4347,6 +4347,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Dark theme diff --git a/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 2c240dab..25b8ae3e 100644 --- a/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -22,6 +22,7 @@ +@@ -23,6 +23,7 @@ #include "base/check_op.h" #include "base/containers/contains.h" @@ -26,7 +26,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -568,6 +569,15 @@ AutocompleteController::AutocompleteController( +@@ -567,6 +568,15 @@ AutocompleteController::AutocompleteController( provider_client_->GetOmniboxTriggeredFeatureService()), steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION) { @@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ #include "base/functional/callback.h" #include "base/i18n/break_iterator.h" #include "base/i18n/case_conversion.h" -@@ -631,6 +632,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -632,6 +633,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { diff --git a/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch b/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch index aac5b4fa..1bf86135 100644 --- a/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,13 +45,13 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1152,6 +1152,7 @@ component("net") { +@@ -1157,6 +1157,7 @@ component("net") { ":net_deps", "//components/miracle_parameter/common", "//components/network_time/time_tracker", + "//components/network_session_configurator/common", "//net/http:transport_security_state_generated_files", - "//third_party/simdutf:simdutf", + "//third_party/simdutf", ] diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc diff --git a/build/cromite_patches/Add-flag-to-disable-external-intent-requests.patch b/build/cromite_patches/Add-flag-to-disable-external-intent-requests.patch index 740833d6..aa90eb26 100644 --- a/build/cromite_patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/cromite_patches/Add-flag-to-disable-external-intent-requests.patch @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java -@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; +@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.init.ChromeActivityNativeDelegate; -@@ -126,6 +127,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { +@@ -128,6 +129,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { @Override public boolean shouldDisableAllExternalIntents() { @@ -68,15 +68,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java -@@ -23,6 +23,7 @@ import org.chromium.base.IntentUtils; - import org.chromium.base.PackageManagerUtils; - import org.chromium.base.supplier.Supplier; +@@ -26,6 +26,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity2; +import org.chromium.chrome.browser.flags.cromite.sAllowExternalIntentRequests; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -@@ -113,7 +114,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat +@@ -117,7 +118,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat @Override public boolean shouldDisableExternalIntentRequestsForUrl(GURL url) { @@ -141,16 +141,16 @@ new file mode 100644 diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc --- a/components/external_intents/android/external_intents_features.cc +++ b/components/external_intents/android/external_intents_features.cc -@@ -28,7 +28,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kExternalNavigationDebugLogs, &kBlockIntentsToSelf, +@@ -29,7 +29,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNavigationCaptureRefactorAndroid, &kAuxiliaryNavigationStaysInBrowser, - &kReparentTopLevelNavigationFromPWA, &kReparentAuxiliaryNavigationFromPWA}; + &kReparentTopLevelNavigationFromPWA, &kReparentAuxiliaryNavigationFromPWA, + &kAuxiliaryNavigationStaysInPWA}; - } // namespace // Alphabetical: -@@ -57,7 +56,13 @@ BASE_FEATURE(kReparentAuxiliaryNavigationFromPWA, - "ReparentAuxiliaryNavigationFromPWA", +@@ -62,7 +61,13 @@ BASE_FEATURE(kAuxiliaryNavigationStaysInPWA, + "AuxiliaryNavigationStaysInPWA", base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture, @@ -193,7 +193,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java -@@ -1561,6 +1561,12 @@ public class ExternalNavigationHandler { +@@ -1558,6 +1558,12 @@ public class ExternalNavigationHandler { || ignoreBackForwardNav(params); } @@ -206,7 +206,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1629,6 +1635,21 @@ public class ExternalNavigationHandler { +@@ -1626,6 +1632,21 @@ public class ExternalNavigationHandler { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/cromite_patches/Add-flag-to-disable-vibration.patch b/build/cromite_patches/Add-flag-to-disable-vibration.patch index af5a9ba7..21ee820a 100644 --- a/build/cromite_patches/Add-flag-to-disable-vibration.patch +++ b/build/cromite_patches/Add-flag-to-disable-vibration.patch @@ -65,8 +65,8 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa static void EnableFluentOverlayScrollbars(bool); + static void EnableVibration(bool); - WebRuntimeFeatures() = delete; - }; + static void EnableLocalNetworkAccessWebRTC(bool); + diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc --- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc +++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc @@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -984,6 +984,10 @@ +@@ -1011,6 +1011,10 @@ { name: "CompositingDecisionAtAnimationPhaseBoundaries" }, diff --git a/build/cromite_patches/Add-lifetime-options-for-permissions.patch b/build/cromite_patches/Add-lifetime-options-for-permissions.patch index fb76237b..a3e22b0d 100644 --- a/build/cromite_patches/Add-lifetime-options-for-permissions.patch +++ b/build/cromite_patches/Add-lifetime-options-for-permissions.patch @@ -52,18 +52,17 @@ See also: https://github.com/bromite/bromite/issues/1549 Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../permissions/last_tab_standing_tracker.cc | 32 ++++++++ - .../one_time_permissions_tracker.cc | 33 +++++++- + .../permissions/last_tab_standing_tracker.cc | 33 ++++++++ + .../one_time_permissions_tracker.cc | 34 +++++++- .../one_time_permissions_tracker.h | 5 +- .../one_time_permissions_tracker_factory.cc | 2 +- .../views/permissions/chip/chip_controller.cc | 2 +- ...exclusive_access_permission_prompt_view.cc | 2 +- .../permission_prompt_bubble_base_view.cc | 2 +- - .../site_settings/PermissionInfo.java | 1 + .../site_settings/SingleWebsiteSettings.java | 9 ++ .../android/website_preference_bridge.cc | 2 +- .../strings/android/browser_ui_strings.grd | 5 ++ - .../core/browser/content_settings_utils.cc | 42 ++++++++-- + .../core/browser/content_settings_utils.cc | 44 ++++++++-- .../core/browser/content_settings_utils.h | 6 ++ .../core/common/content_settings_enums.mojom | 9 ++ .../page_info/PageInfoController.java | 4 +- @@ -72,7 +71,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/page_info/page_info.cc | 2 + components/page_info/page_info.h | 1 + .../permissions/PermissionDialogDelegate.java | 13 +++ - .../PermissionDialogModelFactory.java | 82 ++++++++++++++++++- + .../PermissionDialogModelFactory.java | 83 ++++++++++++++++++- .../embedded_permission_prompt_android.cc | 3 +- .../embedded_permission_prompt_android.h | 2 +- .../permission_dialog_delegate.cc | 24 +++++- @@ -81,16 +80,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ .../geolocation_permission_context_android.cc | 30 +++++-- - .../geolocation_permission_context_android.h | 10 ++- + .../geolocation_permission_context_android.h | 8 ++ .../embedded_permission_prompt_flow_model.cc | 2 +- - .../permissions/permission_context_base.cc | 64 +++++++++++++-- + .../permissions/permission_context_base.cc | 64 ++++++++++++-- .../permissions/permission_context_base.h | 26 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 34 +++++++- components/permissions/permission_request.h | 18 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 38 files changed, 506 insertions(+), 72 deletions(-) + 37 files changed, 507 insertions(+), 73 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 @@ -128,13 +127,14 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/br LastTabStandingTracker::LastTabStandingTracker(content::BrowserContext* context) : context_(context) {} -@@ -56,4 +82,10 @@ void LastTabStandingTracker::WebContentsUnloadedOrigin( +@@ -56,4 +82,11 @@ void LastTabStandingTracker::WebContentsUnloadedOrigin( for (auto& observer : observer_list_) { observer.OnLastPageFromOriginClosed(origin); } + HostContentSettingsMap* content_settings = + permissions::PermissionsClient::Get()->GetSettingsMap(context_); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION_WITH_OPTIONS); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); + } @@ -178,13 +178,14 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome OneTimePermissionsTracker::~OneTimePermissionsTracker() = default; OneTimePermissionsTracker::OriginTrackEntry::OriginTrackEntry() = default; -@@ -254,6 +280,11 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( +@@ -254,6 +280,12 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( for (auto& observer : observer_list_) { observer.OnLastPageFromOriginClosed(origin); } + HostContentSettingsMap* content_settings = + permissions::PermissionsClient::Get()->GetSettingsMap(context_); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION_WITH_OPTIONS); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); } @@ -232,7 +233,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc diff --git a/chrome/browser/ui/views/permissions/chip/chip_controller.cc b/chrome/browser/ui/views/permissions/chip/chip_controller.cc --- a/chrome/browser/ui/views/permissions/chip/chip_controller.cc +++ b/chrome/browser/ui/views/permissions/chip/chip_controller.cc -@@ -224,7 +224,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { +@@ -227,7 +227,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { active_chip_permission_request_manager_.value()->Accept(); break; case permissions::PermissionAction::GRANTED_ONCE: @@ -256,7 +257,7 @@ diff --git a/chrome/browser/ui/views/permissions/exclusive_access_permission_pro diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc -@@ -297,7 +297,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { +@@ -294,7 +294,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { delegate_->Accept(); return; case PermissionDialogButton::kAcceptOnce: @@ -265,21 +266,10 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v return; case PermissionDialogButton::kDeny: #if BUILDFLAG(IS_CHROMEOS) -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -@@ -12,6 +12,7 @@ import org.chromium.components.content_settings.SessionModel; - import org.chromium.components.permissions.PermissionsAndroidFeatureList; - import org.chromium.components.permissions.PermissionsAndroidFeatureMap; - import org.chromium.content_public.browser.BrowserContextHandle; -+import org.chromium.components.content_settings.SessionModel; - - import java.io.Serializable; - import java.util.Objects; diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -620,6 +620,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -630,6 +630,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } @RequiresNonNull({"mSite"}) @@ -291,12 +281,12 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void setUpClearDataPreference() { ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA); long usage = mSite.getTotalUsage(); -@@ -1292,6 +1297,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - AppCompatResources.getColorStateList(getContext(), mHighlightColor) - .getDefaultColor()); +@@ -1316,6 +1321,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + .getDefaultColor()); + } } -+ if (isSessionPermission(contentType)) { -+ switchPreference.setSummary(switchPreference.getSummary() + " " + ++ if (preference instanceof ChromeSwitchPreference && isSessionPermission(contentType)) { ++ ((ChromeSwitchPreference)preference).setSummary(preference.getSummary() + " " + + getString(R.string.page_info_android_permission_session_permission)); + } } @@ -305,7 +295,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -209,7 +209,7 @@ void GetOrigins(JNIEnv* env, +@@ -218,7 +218,7 @@ void GetOrigins(JNIEnv* env, seen_origins.push_back(origin); insertionFunc(env, static_cast(content_type), list, ConvertOriginToJavaString(env, origin), jembedder, @@ -317,7 +307,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -643,6 +643,11 @@ +@@ -646,6 +646,11 @@ URL truncated @@ -332,7 +322,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -157,6 +157,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { +@@ -182,6 +182,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { return constraints.session_model() == mojom::SessionModel::DURABLE; } @@ -373,23 +363,25 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc +} + bool CanTrackLastVisit(ContentSettingsType type) { - // Last visit is not tracked for notification permission as it shouldn't be - // auto-revoked. -@@ -240,9 +276,6 @@ const std::vector& GetTypesWithTemporaryGrants() { + DCHECK(WebsiteSettingsRegistry::GetInstance()->Get(type)) << type; + +@@ -261,10 +297,6 @@ const std::vector& GetTypesWithTemporaryGrants() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, - ContentSettingsType::GEOLOCATION, +- ContentSettingsType::GEOLOCATION_WITH_OPTIONS, - ContentSettingsType::MEDIASTREAM_MIC, - ContentSettingsType::MEDIASTREAM_CAMERA, ContentSettingsType::HAND_TRACKING, ContentSettingsType::SMART_CARD_DATA, ContentSettingsType::AR, -@@ -258,9 +291,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { +@@ -280,10 +312,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, - ContentSettingsType::GEOLOCATION, +- ContentSettingsType::GEOLOCATION_WITH_OPTIONS, - ContentSettingsType::MEDIASTREAM_MIC, - ContentSettingsType::MEDIASTREAM_CAMERA, ContentSettingsType::HAND_TRACKING, @@ -398,7 +390,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/content_settings_utils.h b/components/content_settings/core/browser/content_settings_utils.h --- a/components/content_settings/core/browser/content_settings_utils.h +++ b/components/content_settings/core/browser/content_settings_utils.h -@@ -73,6 +73,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); +@@ -78,6 +78,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); // Returns whether the given type supports tracking last_visit timestamps. bool CanTrackLastVisit(ContentSettingsType type); @@ -433,7 +425,7 @@ diff --git a/components/content_settings/core/common/content_settings_enums.mojo diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java -@@ -367,9 +367,9 @@ public class PageInfoController +@@ -378,9 +378,9 @@ public class PageInfoController String name, String nameMidSentence, int type, @@ -491,7 +483,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -171,6 +171,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -186,6 +186,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( std::map user_specified_settings_to_display; @@ -500,7 +492,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -179,6 +181,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -194,6 +196,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( if (setting_to_display) { user_specified_settings_to_display[permission.type] = *setting_to_display; @@ -509,7 +501,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } } -@@ -195,7 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -210,7 +214,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), @@ -519,7 +511,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } -@@ -208,7 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -223,7 +228,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info->content_settings_type), @@ -532,7 +524,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -1253,6 +1253,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1256,6 +1256,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); @@ -544,7 +536,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h --- a/components/page_info/page_info.h +++ b/components/page_info/page_info.h -@@ -150,6 +150,7 @@ class PageInfo : private content_settings::CookieControlsObserver, +@@ -151,6 +151,7 @@ class PageInfo : private content_settings::CookieControlsObserver, content_settings::SettingSource::kNone; // Whether the permission is a one-time grant. bool is_one_time = false; @@ -555,15 +547,15 @@ diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java -@@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked; +@@ -16,6 +16,7 @@ import org.jni_zero.NativeMethods; + import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; - import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.ui.base.WindowAndroid; +import org.chromium.components.content_settings.LifetimeMode; import java.util.ArrayList; - import java.util.Arrays; -@@ -72,6 +73,9 @@ public class PermissionDialogDelegate { + import java.util.List; +@@ -67,6 +68,9 @@ public class PermissionDialogDelegate { // Prompt(screen) variant we want to display on the dialog. private @EmbeddedPromptVariant int mEmbeddedPromptVariant; @@ -573,8 +565,8 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** * Defines a (potentially empty) list of ranges represented as pairs of , * which shall be used by the UI to format the specified ranges as bold text. -@@ -145,6 +149,15 @@ public class PermissionDialogDelegate { - .acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this); +@@ -139,6 +143,15 @@ public class PermissionDialogDelegate { + PermissionDialogDelegateJni.get().acceptThisTime(mNativeDelegatePtr); } + public void setSelectedLifetimeOption(int idx) { @@ -588,7 +580,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per + public void onDeny() { assert mNativeDelegatePtr != 0; - PermissionDialogDelegateJni.get().deny(mNativeDelegatePtr, PermissionDialogDelegate.this); + PermissionDialogDelegateJni.get().deny(mNativeDelegatePtr); diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java @@ -611,7 +603,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** This class creates the model for the permission dialog. */ @NullMarked class PermissionDialogModelFactory { -@@ -67,7 +79,75 @@ class PermissionDialogModelFactory { +@@ -67,7 +79,76 @@ class PermissionDialogModelFactory { ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE) .with(ModalDialogProperties.CHANGE_CUSTOM_VIEW_OR_BUTTONS, true); } @@ -620,6 +612,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per + PropertyModel pm = builder.build(); + int[] types = delegate.getContentSettingsTypes(); + if (contains(types, ContentSettingsType.GEOLOCATION) || ++ contains(types, ContentSettingsType.GEOLOCATION_WITH_OPTIONS) || + contains(types, ContentSettingsType.MEDIASTREAM_MIC) || + contains(types, ContentSettingsType.MEDIASTREAM_CAMERA)) + { @@ -691,7 +684,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc -@@ -119,7 +119,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { +@@ -118,7 +118,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { delegate()->FinalizeCurrentRequests(); } @@ -716,7 +709,7 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -139,6 +139,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { +@@ -137,6 +137,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { static_cast(permission_prompt_->GetEmbeddedPromptVariant())); } @@ -728,9 +721,9 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static std::unique_ptr PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -168,6 +173,13 @@ PermissionDialogDelegate::CreateForTesting( - void PermissionDialogDelegate::Accept(JNIEnv* env, - const JavaParamRef& obj) { +@@ -165,12 +170,22 @@ PermissionDialogDelegate::CreateForTesting( + + void PermissionDialogDelegate::Accept(JNIEnv* env) { CHECK(permission_prompt_); + content_settings::mojom::LifetimeMode lifetimeOption = + static_cast( @@ -742,9 +735,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } -@@ -175,7 +187,10 @@ void PermissionDialogDelegate::AcceptThisTime( - JNIEnv* env, - const JavaParamRef& obj) { + void PermissionDialogDelegate::AcceptThisTime(JNIEnv* env) { CHECK(permission_prompt_); - permission_prompt_->AcceptThisTime(); + content_settings::mojom::LifetimeMode lifetimeOption = @@ -753,10 +744,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ + permission_prompt_->AcceptThisTime(lifetimeOption); } - void PermissionDialogDelegate::Acknowledge(JNIEnv* env, -@@ -187,6 +202,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env, - void PermissionDialogDelegate::Deny(JNIEnv* env, - const JavaParamRef& obj) { + void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { +@@ -180,6 +195,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { + + void PermissionDialogDelegate::Deny(JNIEnv* env) { CHECK(permission_prompt_); + content_settings::mojom::LifetimeMode lifetimeOption = + static_cast( @@ -782,7 +773,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -84,8 +84,12 @@ void PermissionPromptAndroid::Accept() { +@@ -85,8 +85,12 @@ void PermissionPromptAndroid::Accept() { delegate_->Accept(); } @@ -865,71 +856,74 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, -- PermissionDecision::kDeny); -+ PermissionDecision::kDeny, lifetime_option); +- PermissionDecision::kDeny, ++ PermissionDecision::kDeny, lifetime_option, + request_data.prompt_options); return; } - -@@ -229,7 +240,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -230,7 +241,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, -- PermissionDecision::kDeny); -+ PermissionDecision::kDeny, lifetime_option); +- PermissionDecision::kDeny, ++ PermissionDecision::kDeny, lifetime_option, + request_data.prompt_options); return; } - -@@ -241,13 +252,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -243,14 +254,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( base::BindOnce( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, weak_factory_.GetWeakPtr(), request_data.requesting_origin, -- request_data.embedding_origin, persist, decision)); -+ request_data.embedding_origin, persist, decision, lifetime_option)); +- request_data.embedding_origin, persist, decision, ++ request_data.embedding_origin, persist, decision, lifetime_option, + request_data.prompt_options)); return; } FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), -- persist, decision); -+ persist, decision, lifetime_option); +- persist, decision, request_data.prompt_options); ++ persist, decision, lifetime_option, request_data.prompt_options); } content::PermissionResult -@@ -424,7 +435,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -427,7 +438,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& requesting_origin, const GURL& embedding_origin, bool persist, - PermissionDecision decision, + PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options, LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); - if (prompt_outcome == GRANTED) { -@@ -442,7 +453,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( - - FinishNotifyPermissionSet( - location_settings_dialog_request_id_, requesting_origin, embedding_origin, -- std::move(location_settings_dialog_callback_), persist, decision); -+ std::move(location_settings_dialog_callback_), persist, decision, -+ lifetime_option); +@@ -447,7 +458,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( + FinishNotifyPermissionSet(location_settings_dialog_request_id_, + requesting_origin, embedding_origin, + std::move(location_settings_dialog_callback_), +- persist, decision, prompt_options); ++ persist, decision, lifetime_option, prompt_options); location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -455,15 +467,15 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -460,7 +471,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( const GURL& embedding_origin, BrowserPermissionCallback callback, bool persist, -- PermissionDecision decision) { +- PermissionDecision decision, ++ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options) { + PermissionRequestData request_data( + this, id, +@@ -469,9 +480,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( + blink::PermissionType::GEOLOCATION)), + requesting_origin, embedding_origin); + request_data.prompt_options = prompt_options.value_or(std::monostate()); - GeolocationPermissionContext::NotifyPermissionSet( -+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option) { -+ GeolocationPermissionContext::NotifyPermissionSetWithLifetime( - PermissionRequestData(this, id, - content::PermissionRequestDescription( - content::PermissionDescriptorUtil:: - CreatePermissionDescriptorForPermissionType( - blink::PermissionType::GEOLOCATION)), - requesting_origin), ++ GeolocationPermissionContext::NotifyPermissionSetImpl( + request_data, - std::move(callback), persist, decision, /*is_final_decision=*/true); -+ std::move(callback), persist, decision, /*is_final_decision=*/true, lifetime_option); ++ std::move(callback), persist, decision, /*is_final_decision=*/true, ++ /*use_lifetime_option*/ true, lifetime_option); } void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting( @@ -954,19 +948,17 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool persist, PermissionDecision decision, + content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options, LocationSettingsDialogOutcome prompt_outcome); - void FinishNotifyPermissionSet(const PermissionRequestID& id, -@@ -143,7 +150,8 @@ class GeolocationPermissionContextAndroid - const GURL& embedding_origin, +@@ -145,6 +152,7 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, -- PermissionDecision decision); -+ PermissionDecision decision, -+ content_settings::mojom::LifetimeMode lifetime_option); + PermissionDecision decision, ++ content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options); std::unique_ptr location_settings_; - diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/components/permissions/embedded_permission_prompt_flow_model.cc --- a/components/permissions/embedded_permission_prompt_flow_model.cc +++ b/components/permissions/embedded_permission_prompt_flow_model.cc @@ -982,7 +974,7 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -257,6 +257,17 @@ PermissionContextBase::CreatePermissionRequest( +@@ -260,6 +260,17 @@ PermissionContextBase::CreatePermissionRequest( std::move(request_finished_callback), UsesAutomaticEmbargo()); } @@ -1000,7 +992,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -@@ -548,7 +559,8 @@ void PermissionContextBase::DecidePermission( +@@ -551,7 +562,8 @@ void PermissionContextBase::DecidePermission( void PermissionContextBase::PermissionDecided( PermissionDecision decision, bool is_final_decision, @@ -1010,7 +1002,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm UserMadePermissionDecision(request_data.id, request_data.requesting_origin, request_data.embedding_origin, decision); -@@ -561,11 +573,12 @@ void PermissionContextBase::PermissionDecided( +@@ -564,11 +576,12 @@ void PermissionContextBase::PermissionDecided( // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -1027,7 +1019,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -655,6 +668,30 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -653,6 +666,30 @@ void PermissionContextBase::NotifyPermissionSet( bool persist, PermissionDecision decision, bool is_final_decision) { @@ -1058,7 +1050,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // Note that rfh may be null, see crbug.com/426909787. -@@ -670,8 +707,8 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -668,8 +705,8 @@ void PermissionContextBase::NotifyPermissionSet( if (persist) { // Clone new value, because we need it again for the callback. @@ -1069,9 +1061,9 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -708,6 +745,17 @@ void PermissionContextBase::UpdateSetting( +@@ -706,6 +743,17 @@ void PermissionContextBase::UpdateSetting( const PermissionRequestData& request_data, - base::Value setting, + PermissionSetting setting, bool is_one_time) { + UpdateSettingImpl(request_data, std::move(setting), + is_one_time, @@ -1080,14 +1072,14 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm +} + +void PermissionContextBase::UpdateSettingImpl(const PermissionRequestData& request_data, -+ base::Value setting, ++ PermissionSetting setting, + bool is_one_time, + bool use_lifetime_option, + content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_EQ(request_data.requesting_origin, request_data.requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(request_data.embedding_origin, -@@ -717,6 +765,8 @@ void PermissionContextBase::UpdateSetting( +@@ -715,6 +763,8 @@ void PermissionContextBase::UpdateSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1123,12 +1115,12 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi // Store the decided permission state. Virtual since the permission might be // stored with different restrictions (for example for desktop notifications). + void UpdateSettingImpl(const PermissionRequestData& request_data, -+ base::Value setting, ++ PermissionSetting setting, + bool is_one_time, + bool use_lifetime_option, + content_settings::mojom::LifetimeMode lifetime_option); virtual void UpdateSetting(const PermissionRequestData& request_data, - base::Value setting, + PermissionSetting setting, bool is_one_time); @@ -238,6 +255,12 @@ class PermissionContextBase : public content_settings::Observer { PermissionRequest::PermissionDecidedCallback permission_decided_callback, @@ -1156,7 +1148,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi diff --git a/components/permissions/permission_prompt.h b/components/permissions/permission_prompt.h --- a/components/permissions/permission_prompt.h +++ b/components/permissions/permission_prompt.h -@@ -68,8 +68,9 @@ class PermissionPrompt { +@@ -70,8 +70,9 @@ class PermissionPrompt { virtual GURL GetEmbeddingOrigin() const = 0; virtual void Accept() = 0; @@ -1170,7 +1162,7 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc -@@ -33,6 +33,16 @@ PermissionRequest::PermissionRequest( +@@ -36,6 +36,16 @@ PermissionRequest::PermissionRequest( request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} @@ -1187,7 +1179,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { std::move(request_finished_callback_).Run(); } -@@ -419,20 +429,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -424,20 +434,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1233,7 +1225,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h -@@ -47,6 +47,12 @@ class PermissionRequest { +@@ -52,6 +52,12 @@ class PermissionRequest { bool /*is_final_decision*/, const PermissionRequestData& /*request_data*/)>; @@ -1246,7 +1238,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // `permission_decided_callback` is called when the permission request is // resolved by the user (see comment on PermissionDecidedCallback above). // `request_finished_callback` is called when the permission request is being -@@ -61,6 +67,11 @@ class PermissionRequest { +@@ -66,6 +72,11 @@ class PermissionRequest { base::OnceClosure request_finished_callback = base::DoNothing(), bool uses_automatic_embargo = true); @@ -1258,7 +1250,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -167,10 +178,10 @@ class PermissionRequest { +@@ -172,10 +183,10 @@ class PermissionRequest { // If |is_one_time| is true the permission will last until all tabs of // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. @@ -1271,7 +1263,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -224,6 +235,9 @@ class PermissionRequest { +@@ -237,6 +248,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1284,7 +1276,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -189,7 +189,7 @@ void PermissionRequestManager::AddRequest( +@@ -198,7 +198,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1293,7 +1285,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p return; } -@@ -258,7 +258,7 @@ void PermissionRequestManager::AddRequest( +@@ -267,7 +267,7 @@ void PermissionRequestManager::AddRequest( if (should_auto_approve_request) { if (should_auto_approve_request == PermissionAction::GRANTED) { @@ -1302,7 +1294,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } return; } -@@ -623,7 +623,8 @@ void PermissionRequestManager::Accept() { +@@ -626,7 +626,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1312,7 +1304,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -641,7 +642,7 @@ void PermissionRequestManager::Accept() { +@@ -644,7 +645,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } @@ -1321,7 +1313,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -655,7 +656,8 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -658,7 +659,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1331,7 +1323,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -663,6 +665,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -666,6 +668,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1347,7 +1339,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -685,7 +696,7 @@ void PermissionRequestManager::Deny() { +@@ -688,7 +699,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); @@ -1411,7 +1403,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h -@@ -165,8 +165,10 @@ class PermissionRequestManager +@@ -166,8 +166,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept() override; @@ -1423,7 +1415,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -394,9 +396,12 @@ class PermissionRequestManager +@@ -413,9 +415,12 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, @@ -1436,6 +1428,6 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe + bool is_one_time, + content_settings::mojom::LifetimeMode lifetime_option); // Calls Cancelled on a request and all its duplicates. - void CancelledIncludingDuplicates(PermissionRequest* request, - bool is_final_decision = true); + void CancelRequestIncludingDuplicates(PermissionRequest* request, + bool is_final_decision = true); -- diff --git a/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch index 3630cba2..f845e45f 100644 --- a/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -29,14 +29,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bookmarks/browser/bookmark_uuids.cc | 3 ++ components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 9 +++- - ...ookmark_model_merger_comparison_metrics.cc | 4 ++ .../bookmark_specifics_conversions.cc | 1 + - 27 files changed, 259 insertions(+), 14 deletions(-) + 26 files changed, 255 insertions(+), 14 deletions(-) diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml --- a/chrome/android/java/res/values/ids.xml +++ b/chrome/android/java/res/values/ids.xml -@@ -177,6 +177,7 @@ found in the LICENSE file. +@@ -180,6 +180,7 @@ found in the LICENSE file. @@ -55,26 +54,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -276,6 +277,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; +@@ -287,6 +288,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; - import org.chromium.chrome.browser.ui.extensions.ExtensionKeybindingRegistry; + import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityExtras.IntentOrigin; import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig; -@@ -285,6 +289,8 @@ import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController; - import org.chromium.chrome.browser.usage_stats.UsageStatsService; +@@ -298,6 +302,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; + import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionInitializerImpl; import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionManagerImpl; +import org.chromium.components.bookmarks.BookmarkId; +import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.edge_to_edge.SystemBarColorHelper; import org.chromium.components.browser_ui.edge_to_edge.TabbedSystemBarColorHelper; -@@ -3497,6 +3503,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3739,6 +3745,8 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModelSelectorSupplier().get(), closeAllTabsRunnable); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -83,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); -@@ -3610,6 +3618,41 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3863,6 +3871,41 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus); } @@ -128,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -264,6 +264,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -270,6 +270,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // Bookmarks modelList.add(buildBookmarksItem()); @@ -143,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Recent Tabs if (shouldShowRecentTabsItem()) modelList.add(buildRecentTabsItem()); -@@ -423,6 +431,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -434,6 +442,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } modelList.add(buildCloseAllTabsItem()); if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem()); @@ -160,7 +159,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -390,6 +390,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { +@@ -340,6 +340,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { return bookmark_model_->account_mobile_node() != nullptr; } @@ -194,7 +193,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url) { -@@ -502,6 +529,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -452,6 +479,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -202,7 +201,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -610,6 +638,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -560,6 +588,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(other_node); } @@ -212,7 +211,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse const BookmarkNode* reading_list_node = local_or_syncable_reading_list_manager_->GetRoot(); if (IsPermanentFolderVisible( -@@ -1337,6 +1368,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1237,6 +1268,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -244,7 +243,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaLocalRef GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url); const bookmarks::BookmarkNode* GetMostRecentlyAddedUserBookmarkIdForUrlImpl( -@@ -250,6 +254,10 @@ class BookmarkBridge : public ProfileObserver, +@@ -245,6 +249,10 @@ class BookmarkBridge : public ProfileObserver, const base::android::JavaParamRef& j_list, jint type); @@ -299,7 +298,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Returns Id representing the special "other" folder from bookmark model. */ public @Nullable BookmarkId getOtherFolderId() { ThreadUtils.assertOnUiThread(); -@@ -898,6 +911,29 @@ class BookmarkBridge { +@@ -882,6 +895,29 @@ class BookmarkBridge { .addToReadingList(mNativeBookmarkBridge, parentId, title, url); } @@ -329,7 +328,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Helper method to mark an item as read. * -@@ -1115,6 +1151,9 @@ class BookmarkBridge { +@@ -1099,6 +1135,9 @@ class BookmarkBridge { BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl( long nativeBookmarkBridge, @JniType("GURL") GURL url); @@ -339,7 +338,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type); void getTopLevelFolderIds( -@@ -1136,6 +1175,8 @@ class BookmarkBridge { +@@ -1120,6 +1159,8 @@ class BookmarkBridge { BookmarkId getRootFolderId(long nativeBookmarkBridge); @@ -460,7 +459,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -4604,6 +4604,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4482,6 +4482,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs @@ -904,27 +903,6 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks &sync_metadata_str)) { details->set_local_or_syncable_sync_metadata_str( std::move(sync_metadata_str)); -diff --git a/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc b/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc ---- a/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc -+++ b/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc -@@ -38,6 +38,7 @@ const char kOtherBookmarksTag[] = "other_bookmarks"; - constexpr char16_t kBookmarkBarFolderName[] = u"__Bookmarks bar__"; - constexpr char16_t kOtherBookmarksFolderName[] = u"__Other bookmarks__"; - constexpr char16_t kMobileBookmarksFolderName[] = u"__Mobile bookmarks__"; -+constexpr char16_t kTabsCollectionBookmarksFolderName[] = u"__Tabs collection__"; - - using RemoteForest = BookmarkModelMerger::RemoteForest; - using RemoteTreeNode = BookmarkModelMerger::RemoteTreeNode; -@@ -129,6 +130,9 @@ std::u16string_view GetBookmarkNodeTitle(const bookmarks::BookmarkNode* node) { - return kOtherBookmarksFolderName; - case bookmarks::BookmarkNode::MOBILE: - return kMobileBookmarksFolderName; -+ case bookmarks::BookmarkNode::TABS_COLLECTION: -+ return kTabsCollectionBookmarksFolderName; -+ - } - NOTREACHED(); - } diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc --- a/components/sync_bookmarks/bookmark_specifics_conversions.cc +++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc diff --git a/build/cromite_patches/Add-menu-item-to-view-source.patch b/build/cromite_patches/Add-menu-item-to-view-source.patch index db735818..abcc5bfc 100644 --- a/build/cromite_patches/Add-menu-item-to-view-source.patch +++ b/build/cromite_patches/Add-menu-item-to-view-source.patch @@ -23,11 +23,11 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va + - + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -3537,6 +3537,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3779,6 +3779,8 @@ public class ChromeTabbedActivity extends ChromeActivity { NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER); } RecordUserAction.record("MobileMenuDownloadManager"); @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2577,6 +2577,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2602,6 +2602,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return doOpenWebApk(currentTab); } @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -985,6 +985,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -957,6 +957,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties return false; } @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -367,6 +367,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -370,6 +370,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat modelList.add(buildAddToHomescreenListItem(currentTab, false)); } @@ -101,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -328,6 +328,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -334,6 +334,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildAddToHomescreenListItem(currentTab, shouldShowIconBeforeItem())); } diff --git a/build/cromite_patches/Add-option-to-force-tablet-UI.patch b/build/cromite_patches/Add-option-to-force-tablet-UI.patch index a91ef703..77221faa 100644 --- a/build/cromite_patches/Add-option-to-force-tablet-UI.patch +++ b/build/cromite_patches/Add-option-to-force-tablet-UI.patch @@ -43,7 +43,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml --- a/chrome/android/java/res/layout/custom_tabs_control_container.xml +++ b/chrome/android/java/res/layout/custom_tabs_control_container.xml -@@ -32,7 +32,7 @@ found in the LICENSE file. +@@ -31,7 +31,7 @@ found in the LICENSE file. android:id="@+id/find_toolbar_stub" android:inflatedId="@+id/find_toolbar" android:visibility="gone" @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -120,9 +120,13 @@ found in the LICENSE file. +@@ -119,9 +119,13 @@ found in the LICENSE file. 16dp @@ -99,15 +99,15 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java -@@ -56,6 +56,7 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats; - import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder; - import org.chromium.chrome.browser.night_mode.NightModeStateProvider; - import org.chromium.chrome.browser.night_mode.NightModeUtils; -+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; + import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerCreator; + import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeFieldTrialImpl; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; ++import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; + import org.chromium.chrome.browser.ui.edge_to_edge.SimpleEdgeToEdgeController; import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeManager; import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider; -@@ -132,6 +133,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity +@@ -145,6 +146,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java -@@ -66,6 +66,7 @@ import org.chromium.content_public.browser.WebContents; +@@ -69,6 +69,7 @@ import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContentsObserver; import org.chromium.net.NetId; import org.chromium.ui.LayoutInflaterUtils; @@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.display.DisplayUtil; import org.chromium.url.GURL; -@@ -481,7 +482,9 @@ public class WarmupManager { +@@ -491,7 +492,9 @@ public class WarmupManager { ControlContainer controlContainer = mainView.findViewById(R.id.control_container); if (toolbarId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -783,7 +783,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -791,7 +791,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Inflate the correct toolbar layout for the device. int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -123,6 +123,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -127,6 +127,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; import org.chromium.components.tab_group_sync.TriggerSource; import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.accessibility.AccessibilityState; @@ -192,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; -@@ -4545,8 +4546,13 @@ public class StripLayoutHelper +@@ -4955,8 +4956,13 @@ public class StripLayoutHelper mCloseButtonMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the close button menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -211,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -96,6 +96,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -105,6 +105,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.content_public.browser.LoadUrlParams; @@ -219,7 +219,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; -@@ -477,7 +478,10 @@ public class StripLayoutHelperManager +@@ -495,7 +496,10 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled( /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); @@ -248,7 +248,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen + // This will hide the tab strips if necessary. TabStripSceneLayerJni.get() - .beginBuildingFrame( + .beginBuildingFrame(mNativePtr, visible, resourceManager, layerTitleCache); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java @@ -271,7 +271,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -738,7 +738,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -747,7 +747,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public int getControlContainerHeightResource() { @@ -285,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab 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 -@@ -105,6 +105,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; +@@ -108,6 +108,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.pdf.PdfPage; @@ -294,7 +294,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.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; -@@ -1675,7 +1677,9 @@ public class RootUiCoordinator +@@ -1715,7 +1717,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -319,7 +319,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -313,6 +313,7 @@ public final class ChromePreferenceKeys { +@@ -317,6 +317,7 @@ public final class ChromePreferenceKeys { /** Whether the app-specific history info text was already seen by users. */ public static final String HISTORY_APP_SPECIFIC_INFO_SEEN = "Chrome.History.AppSpecificInfoSeen"; @@ -389,7 +389,7 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -860,7 +860,7 @@ public class LocationBarCoordinator +@@ -833,7 +833,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -401,7 +401,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 -@@ -1666,6 +1666,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1531,6 +1531,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -427,7 +427,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container - +- android:layout_marginTop="@dimen/control_container_height" /> ++ android:layout_marginTop="@dimen/control_container_height_cromite" /> -@@ -36,7 +36,7 @@ found in the LICENSE file. + = SCREEN_BUCKET_TABLET; } -@@ -153,6 +163,7 @@ public class DeviceFormFactor { +@@ -142,6 +152,7 @@ public class DeviceFormFactor { * @return The screen width bucket the device is in (see constants at the top of this class). */ private static int detectScreenWidthBucket(Context context) { @@ -722,7 +719,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -160,6 +171,7 @@ public class DeviceFormFactor { +@@ -149,6 +160,7 @@ public class DeviceFormFactor { ThreadUtils.assertOnUiThread(); Context context = windowAndroid.getContext().get(); if (context == null) return 0; @@ -730,7 +727,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -169,6 +181,7 @@ public class DeviceFormFactor { +@@ -158,6 +170,7 @@ public class DeviceFormFactor { */ @UiThread public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) { @@ -738,7 +735,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context)); } -@@ -177,6 +190,7 @@ public class DeviceFormFactor { +@@ -166,6 +179,7 @@ public class DeviceFormFactor { * layout. */ public static int getMinimumTabletWidthPx(DisplayAndroid display) { diff --git a/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch index 55ab9ce3..9274a221 100644 --- a/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.base.IntentUtils; import org.chromium.base.Log; import org.chromium.base.MemoryPressureListener; -@@ -1917,8 +1918,10 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2101,8 +2102,10 @@ public class ChromeTabbedActivity extends ChromeActivity { boolean hadCipherData = CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()); @@ -106,9 +106,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -5798,6 +5798,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d - - IMAGE +@@ -2901,6 +2901,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d + + All tabs + + Close all open tabs on exit @@ -116,7 +116,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + + Don't persist tabs between browsing sessions. Caution: parameters in urls allow linking between different sessions. + - - LINK + + Loading… -- diff --git a/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch b/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch index 728c0cc6..142e4f0d 100644 --- a/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java -@@ -115,6 +115,9 @@ import java.util.Objects; +@@ -120,6 +120,9 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -34,7 +34,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * A mediator for the TabGridDialog component, responsible for communicating with the components' * coordinator as well as managing the business logic for dialog show/hide. -@@ -1008,9 +1011,15 @@ public class TabGridDialogMediator +@@ -1035,9 +1038,15 @@ public class TabGridDialogMediator return; } @@ -45,7 +45,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + url = gurl != null ? gurl.getSpec() : url; + } TabGroupUtils.openUrlInGroup( - mCurrentTabGroupModelFilterSupplier.get(), + assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()), - UrlConstants.NTP_URL, + url, currentTab.getId(), @@ -54,7 +54,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java -@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory; +@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory; import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesConfig; import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator; import org.chromium.chrome.browser.layouts.LayoutStateProvider; @@ -62,7 +62,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.profiles.Profile; -@@ -415,10 +416,15 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -420,10 +421,15 @@ public class TabGroupUiMediator implements BackPressHandler { assert relatedTabs.size() > 0; Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); @@ -97,7 +97,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java -@@ -72,6 +72,9 @@ import org.chromium.ui.text.EmptyTextWatcher; +@@ -75,6 +75,9 @@ import org.chromium.ui.text.EmptyTextWatcher; import org.chromium.ui.widget.AnchoredPopupWindow.HorizontalOrientation; import org.chromium.ui.widget.RectProvider; @@ -107,10 +107,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over /** * A coordinator for the context menu on the tab strip by long-pressing on the group titles. It is * responsible for creating a list of menu items, setting up the menu and displaying the menu. -@@ -211,9 +214,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina +@@ -215,9 +218,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina /* didCloseCallback= */ null); RecordUserAction.record("MobileToolbarTabGroupMenu.DeleteGroup"); - } else if (menuId == org.chromium.chrome.R.id.open_new_tab_in_group) { + } else if (menuId == R.id.open_new_tab_in_group) { + String url = UrlConstants.NTP_URL; + if (UrlConstants.NTP_URL.equals(url) + && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { @@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -243,6 +243,22 @@ public class HomepageManager +@@ -258,6 +258,22 @@ public class HomepageManager notifyHomepageUpdated(); } @@ -153,15 +153,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -25,6 +25,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; +@@ -26,6 +26,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.url_formatter.UrlFormatter; import org.chromium.url.GURL; +import org.chromium.components.embedder_support.util.UrlConstants; /** Fragment that allows the user to configure homepage related preferences. */ - public class HomepageSettings extends ChromeBaseSettingsFragment { -@@ -33,6 +34,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { + @NullMarked +@@ -35,6 +36,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { @VisibleForTesting public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group"; @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin private HomepageManager mHomepageManager; private RadioButtonGroupHomepagePreference mRadioButtons; private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); -@@ -70,6 +73,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -78,6 +81,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { }); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); @@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java --- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java -@@ -113,7 +113,6 @@ public class LaunchMetrics { +@@ -117,7 +117,6 @@ public class LaunchMetrics { public static void recordHomePageLaunchMetrics( boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) { if (homepageGurl.isEmpty()) { @@ -200,17 +200,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFact - import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; +@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; +import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -552,6 +553,13 @@ public class ChromeTabCreator extends TabCreator +@@ -565,6 +566,13 @@ public class ChromeTabCreator extends TabCreator */ - public Tab launchUrl( + public @Nullable Tab launchUrl( String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) { + if (!mIncognito && url.equals(UrlConstants.NTP_URL)) { + if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { @@ -225,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -326,6 +326,7 @@ public final class ChromePreferenceKeys { +@@ -330,6 +330,7 @@ public final class ChromePreferenceKeys { public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; @@ -247,7 +247,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro 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 -@@ -1492,6 +1492,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1357,6 +1357,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -260,7 +260,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -107,6 +107,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -111,6 +111,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); @@ -272,7 +272,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1328,6 +1328,10 @@ inline constexpr char kPinSplitTabButton[] = "browser.pin_split_tab_button"; +@@ -1327,6 +1327,10 @@ inline constexpr char kPinSplitTabButton[] = "browser.pin_split_tab_button"; // by enterprise policy. inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; diff --git a/build/cromite_patches/Add-search-engine.patch b/build/cromite_patches/Add-search-engine.patch index 6a0e5475..edd96ac0 100644 --- a/build/cromite_patches/Add-search-engine.patch +++ b/build/cromite_patches/Add-search-engine.patch @@ -63,7 +63,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ -@@ -164,6 +165,7 @@ source_set("search_engine_utils") { +@@ -162,6 +163,7 @@ source_set("search_engine_utils") { ":search_engine_type", "//components/google/core/common", "//third_party/search_engines_data:prepopulated_engines", @@ -71,7 +71,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ "//url" ] -@@ -253,6 +255,7 @@ source_set("unit_tests") { +@@ -252,6 +254,7 @@ source_set("unit_tests") { "//testing/gmock", "//testing/gtest", "//third_party/search_engines_data:prepopulated_engines", @@ -141,7 +141,7 @@ new file mode 100644 diff --git a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc --- a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc +++ b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc -@@ -180,10 +180,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -155,10 +155,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -212,14 +212,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon std::unique_ptr GetPrepopulatedEngine( PrefService& prefs, std::vector -@@ -159,9 +172,13 @@ std::vector> GetLocalPrepopulatedEngines( +@@ -159,11 +172,15 @@ std::vector> GetLocalPrepopulatedEngines( return std::vector>(); } - return base::ToVector( + std::vector> t_urls = + base::ToVector( - regional_capabilities::GetPrepopulatedEngines(country_id, prefs), + regional_capabilities::GetPrepopulatedEngines( + country_id, prefs, + regional_capabilities::SearchEngineListType::kTopFive), &PrepopulatedEngineToTemplateURLData); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen)); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light)); diff --git a/build/cromite_patches/Add-site-engagement-flag.patch b/build/cromite_patches/Add-site-engagement-flag.patch index ccfccada..6e658917 100644 --- a/build/cromite_patches/Add-site-engagement-flag.patch +++ b/build/cromite_patches/Add-site-engagement-flag.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -166,6 +166,7 @@ +@@ -165,6 +165,7 @@ #include "components/sensitive_content/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" diff --git a/build/cromite_patches/Add-support-for-writing-URIs.patch b/build/cromite_patches/Add-support-for-writing-URIs.patch index e1041e0d..821d598b 100644 --- a/build/cromite_patches/Add-support-for-writing-URIs.patch +++ b/build/cromite_patches/Add-support-for-writing-URIs.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc --- a/base/android/content_uri_utils.cc +++ b/base/android/content_uri_utils.cc -@@ -134,6 +134,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, +@@ -136,6 +136,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, Time::FromMillisecondsSinceUnixEpoch(last_modified)); } diff --git a/build/cromite_patches/Add-webGL-site-setting.patch b/build/cromite_patches/Add-webGL-site-setting.patch index 1779c065..86a1d176 100644 --- a/build/cromite_patches/Add-webGL-site-setting.patch +++ b/build/cromite_patches/Add-webGL-site-setting.patch @@ -166,7 +166,7 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::WEBGL) @@ -206,7 +206,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -115,6 +115,8 @@ enum ReasonForCallingCanExecuteScripts { +@@ -114,6 +114,8 @@ enum ReasonForCallingCanExecuteScripts { enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag }; @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -343,6 +343,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( +@@ -345,6 +345,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( } } @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() { base::AutoLock locker(WebGLContextLimitLock()); DCHECK(webgl_context_limits_initialized_); -@@ -612,25 +619,6 @@ static String ExtractWebGLContextCreationError( +@@ -615,25 +622,6 @@ static String ExtractWebGLContextCreationError( const Platform::GraphicsInfo& info) { StringBuilder builder; builder.Append("Could not create a WebGL context"); @@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(), builder); builder.Append('.'); -@@ -690,6 +678,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -693,6 +681,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( const CanvasContextCreationAttributesCore& attributes, Platform::ContextType context_type, Platform::GraphicsInfo* graphics_info) { @@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h -@@ -1946,6 +1946,8 @@ class MODULES_EXPORT WebGLRenderingContextBase +@@ -1951,6 +1951,8 @@ class MODULES_EXPORT WebGLRenderingContextBase DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/cromite_patches/Add-webRTC-site-settings.patch b/build/cromite_patches/Add-webRTC-site-settings.patch index 07e95cad..b6e5800f 100644 --- a/build/cromite_patches/Add-webRTC-site-settings.patch +++ b/build/cromite_patches/Add-webRTC-site-settings.patch @@ -12,9 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bromite_content_settings/webrtc.inc | 22 +++++ .../bromite_content_settings/WEBRTC.inc | 1 + .../peer_connection_dependency_factory.cc | 6 ++ - .../peerconnection/rtc_rtp_receiver.cc | 10 ++ - .../modules/peerconnection/rtc_rtp_sender.cc | 10 ++ - 7 files changed, 170 insertions(+) + .../peerconnection/rtc_rtp_receiver.cc | 11 +++ + .../modules/peerconnection/rtc_rtp_sender.cc | 11 +++ + 7 files changed, 172 insertions(+) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java create mode 100644 components/browser_ui/strings/bromite_content_settings/webrtc.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc @@ -164,7 +164,7 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::WEBRTC) @@ -187,7 +187,7 @@ new file mode 100644 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 -@@ -41,6 +41,7 @@ +@@ -46,6 +46,7 @@ #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/task_type.h" @@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d #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" -@@ -936,6 +937,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -1062,6 +1063,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // |request_multiple_routes|. Whether local IP addresses could be // collected depends on if mic/camera permission is granted for this // origin. @@ -210,16 +210,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc -@@ -16,6 +16,8 @@ +@@ -16,6 +16,9 @@ #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/web/web_local_frame.h" ++#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" -@@ -288,6 +290,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, +@@ -288,6 +291,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; @@ -237,16 +238,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver. diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc -@@ -21,6 +21,8 @@ +@@ -21,6 +21,9 @@ #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/web/web_local_frame.h" ++#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" -@@ -1035,6 +1037,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1035,6 +1038,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; diff --git a/build/cromite_patches/Allow-building-without-enable_reporting.patch b/build/cromite_patches/Allow-building-without-enable_reporting.patch index 103e3926..fb54dbe0 100644 --- a/build/cromite_patches/Allow-building-without-enable_reporting.patch +++ b/build/cromite_patches/Allow-building-without-enable_reporting.patch @@ -43,7 +43,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc -@@ -1485,6 +1485,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1496,6 +1496,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { } } @@ -51,7 +51,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { std::vector urls; frame_host->ForEachRenderFrameHostImplWithAction( -@@ -1498,6 +1499,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1509,6 +1510,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -126,7 +126,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -15954,12 +15954,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -16153,12 +16153,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( } } } @@ -308,7 +308,7 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -493,14 +493,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -494,14 +494,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, @@ -340,7 +340,7 @@ diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/pu diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -1791,7 +1791,6 @@ mojom("mojom") { +@@ -1793,7 +1793,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -351,7 +351,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1234,6 +1234,7 @@ interface NetworkContext { +@@ -1240,6 +1240,7 @@ interface NetworkContext { // provided `network_anonymization_key`. // // Spec: https://w3c.github.io/reporting/#concept-reports @@ -359,7 +359,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueReport(string type, string group, url.mojom.Url url, -@@ -1241,6 +1242,7 @@ interface NetworkContext { +@@ -1247,6 +1248,7 @@ interface NetworkContext { NetworkAnonymizationKey network_anonymization_key, mojo_base.mojom.DictionaryValue body); @@ -367,7 +367,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueEnterpriseReport(string type, string group, url.mojom.Url url, -@@ -1251,6 +1253,7 @@ interface NetworkContext { +@@ -1257,6 +1259,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // `network_anonymization_key`. @@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" #include "base/feature_list.h" -@@ -1323,6 +1324,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1344,6 +1345,7 @@ void ContentSecurityPolicy::ReportViolation( ShouldBypassContentSecurityPolicy(KURL(violation_data->sourceFile()))) { return; } @@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c PostViolationReport(violation_data, context_frame, report_endpoints, use_reporting_api); -@@ -1330,6 +1332,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1351,6 +1353,7 @@ void ContentSecurityPolicy::ReportViolation( // `context_frame` (i.e. we're not processing 'frame-ancestors'). if (delegate_ && !context_frame) delegate_->DispatchViolationEvent(*violation_data, element); @@ -413,7 +413,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/source_location.mojom-blink.h" -@@ -2837,9 +2838,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2836,9 +2837,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -436,7 +436,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "net/storage_access_api/status.h" -@@ -680,7 +681,9 @@ class CORE_EXPORT LocalFrame final +@@ -671,7 +672,9 @@ class CORE_EXPORT LocalFrame final return client_hints_preferences_; } diff --git a/build/cromite_patches/Allow-building-without-supervised-users.patch b/build/cromite_patches/Allow-building-without-supervised-users.patch index 26c6f571..84dd6e1a 100644 --- a/build/cromite_patches/Allow-building-without-supervised-users.patch +++ b/build/cromite_patches/Allow-building-without-supervised-users.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -817,7 +817,6 @@ if (_is_default_toolchain) { +@@ -819,7 +819,6 @@ if (_is_default_toolchain) { "//components/offline_pages/core:offline_page_model_enums_java", "//components/sharing_message:sharing_dialog_type_generated_enum", "//components/sharing_message:sharing_send_message_result_generated_enum", @@ -65,15 +65,15 @@ diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc --- a/chrome/browser/prefs/chrome_pref_service_factory.cc +++ b/chrome/browser/prefs/chrome_pref_service_factory.cc -@@ -316,7 +316,7 @@ void PrepareFactory( +@@ -319,7 +319,7 @@ void PrepareFactory( policy::BrowserPolicyConnector* policy_connector) { factory->SetManagedPolicies(policy_service, policy_connector); factory->SetRecommendedPolicies(policy_service, policy_connector); - if (supervised_user_settings) { + if (((false)) && supervised_user_settings) { + // supervised_user_prefs handles the case when content_filters_service is + // nullptr. It's simply not subscribing to empty service's notifications. scoped_refptr supervised_user_prefs = - base::MakeRefCounted(supervised_user_settings); - DCHECK(async || supervised_user_prefs->IsInitializationComplete()); diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc @@ -89,7 +89,7 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -682,10 +682,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -684,10 +684,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1614,6 +1610,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1624,6 +1620,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -160,7 +160,7 @@ diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/w diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc -@@ -595,10 +595,6 @@ bool ManagementUIHandler::managed() const { +@@ -617,10 +617,6 @@ bool ManagementUIHandler::managed() const { void ManagementUIHandler::RegisterPrefChange( PrefChangeRegistrar& pref_registrar) { @@ -174,7 +174,7 @@ diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrom diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc --- a/components/supervised_user/core/browser/supervised_user_pref_store.cc +++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc -@@ -142,6 +142,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() = default; +@@ -175,6 +175,7 @@ void SupervisedUserPrefStore::OnNewContentFiltersStateAvailable( void SupervisedUserPrefStore::OnNewSettingsAvailable( const base::Value::Dict& settings) { @@ -203,12 +203,12 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences - return pref_service.GetString(prefs::kSupervisedUserId) == kChildAccountSUID; + return false; } - bool IsSubjectToUserControls(const PrefService& pref_service) { - return pref_service.GetString(prefs::kSupervisedUserId) == + + bool IsGoogleSafeSearchEnforced(const PrefService& pref_service) { diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc --- a/components/supervised_user/core/browser/supervised_user_service.cc +++ b/components/supervised_user/core/browser/supervised_user_service.cc -@@ -240,6 +240,7 @@ SupervisedUserService::SupervisedUserService( +@@ -249,6 +249,7 @@ SupervisedUserService::SupervisedUserService( } void SupervisedUserService::SetSettingsServiceActive(bool active) { @@ -219,7 +219,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_service.cc diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc --- a/components/supervised_user/core/common/features.cc +++ b/components/supervised_user/core/common/features.cc -@@ -35,7 +35,6 @@ BASE_FEATURE(kAllowSubframeLocalWebApprovals, +@@ -33,7 +33,6 @@ BASE_FEATURE(kAllowSubframeLocalWebApprovals, #else base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -227,8 +227,8 @@ diff --git a/components/supervised_user/core/common/features.cc b/components/sup #if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_WIN) const int kLocalWebApprovalBottomSheetLoadTimeoutDefaultValueMs = 5000; -@@ -138,4 +137,5 @@ BASE_FEATURE(kSupervisedUserInterstitialWithoutApprovals, - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -170,4 +169,5 @@ bool ClassifyUrlWithoutCredentialsForLocalSupervision() { + #endif +SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals); diff --git a/build/cromite_patches/Allow-playing-audio-in-background.patch b/build/cromite_patches/Allow-playing-audio-in-background.patch index a17df18e..0b428b3e 100644 --- a/build/cromite_patches/Allow-playing-audio-in-background.patch +++ b/build/cromite_patches/Allow-playing-audio-in-background.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -1335,6 +1335,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1330,6 +1330,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -24,7 +24,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( std::optional enabled_track_id) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3703,7 +3709,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3683,7 +3689,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { : HasAudio(); // Audio only stream is allowed to play when in background. @@ -39,7 +39,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h --- a/third_party/blink/renderer/platform/media/web_media_player_impl.h +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h -@@ -216,6 +216,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl +@@ -211,6 +211,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch b/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch index a17dd75c..c4b3e395 100644 --- a/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch @@ -19,12 +19,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -157,10 +157,6 @@ public class HomepageManager +@@ -160,10 +160,6 @@ public class HomepageManager * tab page if the homepage button is force enabled via flag. */ public GURL getDefaultHomepageGurl() { - if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) { -- return PartnerBrowserCustomizations.getInstance().getHomePageUrl(); +- return assumeNonNull(PartnerBrowserCustomizations.getInstance().getHomePageUrl()); - } - String homepagePartnerDefaultGurlSerialized = @@ -67,7 +67,7 @@ diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/b diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java +++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java -@@ -85,6 +85,7 @@ public class TemplateUrl { +@@ -88,6 +88,7 @@ public class TemplateUrl { * prepopulated_engines.json. */ public String getNewTabURL() { @@ -78,7 +78,7 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/ diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -420,6 +420,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -400,6 +400,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( jimage_translate_source_language_param_key, const base::android::JavaParamRef& jimage_translate_target_language_param_key) { diff --git a/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index a8b7cacb..45157964 100644 --- a/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -15,9 +15,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../modules/webaudio/base_audio_context.cc | 12 ++++++++++++ .../renderer/modules/webaudio/base_audio_context.h | 2 ++ .../modules/webaudio/offline_audio_context.cc | 1 + - .../renderer/modules/webaudio/realtime_analyser.cc | 7 +++++++ + .../renderer/modules/webaudio/realtime_analyser.cc | 9 ++++++++- .../platform/runtime_enabled_features.json5 | 5 ++--- - 11 files changed, 56 insertions(+), 4 deletions(-) + 11 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc @@ -88,7 +88,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/mediastream/media_devices.h" #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" @@ -96,7 +96,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/web_audio_latency_hint.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -@@ -684,7 +685,9 @@ double AudioContext::baseLatency() const { +@@ -696,7 +697,9 @@ double AudioContext::baseLatency() const { DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_); DCHECK(destination()); @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" -@@ -716,6 +717,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -710,6 +711,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -162,25 +162,25 @@ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.c diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc --- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -@@ -36,6 +36,7 @@ - #include +@@ -32,6 +32,7 @@ #include + #include "base/compiler_specific.h" +#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" #include "third_party/blink/renderer/platform/audio/audio_bus.h" #include "third_party/blink/renderer/platform/audio/audio_utilities.h" #include "third_party/blink/renderer/platform/audio/vector_math.h" -@@ -160,6 +161,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( +@@ -156,6 +157,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; + kInputBufferSize]); + value = BaseAudioContext::ShuffleAudioData(value, i); - destination[i] = value; + UNSAFE_TODO(destination[i]) = value; } } -@@ -187,6 +189,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { +@@ -183,6 +185,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; + kInputBufferSize]); + value = BaseAudioContext::ShuffleAudioData(value, i); + @@ -194,20 +194,22 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ + scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); + // Clip to valid range. - destination[i] = + UNSAFE_TODO(destination[i]) = static_cast(ClampTo(scaled_value, 0, UCHAR_MAX)); -@@ -325,6 +331,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { - float linear_value = source[i]; +@@ -324,7 +330,8 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { + for (unsigned i = 0; i < len; ++i) { + float linear_value = UNSAFE_TODO(source[i]); double db_mag = audio_utilities::LinearToDecibels(linear_value); - destination[i] = static_cast(db_mag); -+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); +- UNSAFE_TODO(destination[i]) = static_cast(db_mag); ++ auto v = static_cast(db_mag); ++ UNSAFE_TODO(destination[i]) = BaseAudioContext::ShuffleAudioData(v, i); } } } diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -558,9 +558,8 @@ +@@ -575,9 +575,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch b/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch index 97f17996..ee02db19 100644 --- a/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch @@ -107,18 +107,18 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc -@@ -950,6 +950,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() +@@ -970,6 +970,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() RegisterPseudoScheme(url::kJavaScriptScheme); RegisterPseudoScheme(kViewSourceScheme); RegisterPseudoScheme(kGoogleChromeScheme); + RegisterWebSafeScheme(url::kTraceScheme); } - ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() { + ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() = default; diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1122,6 +1122,8 @@ component("net") { +@@ -1127,6 +1127,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", @@ -227,7 +227,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc -@@ -53,6 +53,7 @@ +@@ -55,6 +55,7 @@ #include "net/socket/network_binding_client_socket_factory.h" #include "net/ssl/ssl_config_service_defaults.h" #include "net/url_request/static_http_user_agent_settings.h" @@ -235,7 +235,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job_factory.h" #include "url/url_constants.h" -@@ -610,6 +611,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { +@@ -619,6 +620,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { job_factory->SetProtocolHandler(scheme_handler.first, std::move(scheme_handler.second)); } diff --git a/build/cromite_patches/Bromite-subresource-adblocker.patch b/build/cromite_patches/Bromite-subresource-adblocker.patch index ba0c6abe..a1830556 100644 --- a/build/cromite_patches/Bromite-subresource-adblocker.patch +++ b/build/cromite_patches/Bromite-subresource-adblocker.patch @@ -66,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -328,6 +328,7 @@ if (_is_default_toolchain) { +@@ -325,6 +325,7 @@ if (_is_default_toolchain) { "//chrome/android/features/tab_ui/public:ui_java_resources", "//chrome/android/modules/stack_unwinder/provider:java", "//chrome/android/webapk/libs/client:client_java", @@ -77,7 +77,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -438,6 +438,7 @@ chrome_java_resources = [ +@@ -419,6 +419,7 @@ chrome_java_resources = [ "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", "java/res/layout/app_history_filter.xml", @@ -85,7 +85,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_name_and_number.xml", -@@ -627,6 +628,7 @@ chrome_java_resources = [ +@@ -608,6 +609,7 @@ chrome_java_resources = [ "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", "java/res/xml/appearance_preferences.xml", @@ -96,7 +96,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -897,6 +897,8 @@ chrome_java_sources = [ +@@ -903,6 +903,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/permissions/PermissionBlockedDialog.java", "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java", @@ -462,7 +462,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -16862,6 +16862,16 @@ Please help our engineers fix this problem. Tell us what happened right before y +@@ -16888,6 +16888,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Never show this again. @@ -533,7 +533,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1271,6 +1271,34 @@ BrowserProcessImpl::component_updater() { +@@ -1273,6 +1273,34 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -571,7 +571,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -214,6 +214,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -212,6 +212,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -579,7 +579,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc MediaFileSystemRegistry* media_file_system_registry() override; WebRtcLogUploader* webrtc_log_uploader() override; network_time::NetworkTimeTracker* network_time_tracker() override; -@@ -431,6 +432,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -429,6 +430,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -590,7 +590,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -389,6 +389,9 @@ StartupProfileInfo CreateInitialProfile( +@@ -384,6 +384,9 @@ StartupProfileInfo CreateInitialProfile( // missing code in the above test. CHECK(profile_info.profile) << "Cannot get default profile."; @@ -701,9 +701,9 @@ new file mode 100755 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -653,6 +653,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { - StubResolverConfigReader::RegisterPrefs(registry); +@@ -721,6 +721,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { DefaultDnsOverHttpsConfigSource::RegisterPrefs(registry); + NetworkProcessLaunchWatcher::RegisterPrefs(registry); + registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false); + registry->RegisterStringPref(prefs::kAdBlockFiltersURL, @@ -756,7 +756,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -2885,6 +2885,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2907,6 +2907,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -771,7 +771,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -382,6 +382,9 @@ +@@ -391,6 +391,9 @@ This site shows intrusive or misleading ads diff --git a/build/cromite_patches/Client-hints-overrides.patch b/build/cromite_patches/Client-hints-overrides.patch index 00f110af..567c138b 100644 --- a/build/cromite_patches/Client-hints-overrides.patch +++ b/build/cromite_patches/Client-hints-overrides.patch @@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -207,9 +207,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( +@@ -202,9 +202,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( bool parse_result = base::StringToInt(major_version, &major_version_number); DCHECK(parse_result); std::optional brand; @@ -90,7 +90,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1380,6 +1380,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1674,6 +1674,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -255,7 +255,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -522,6 +522,11 @@ +@@ -532,6 +532,11 @@ name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, @@ -267,7 +267,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 { name: "AriaRowColIndexText", status: "stable", -@@ -896,8 +901,7 @@ +@@ -924,8 +929,7 @@ // Allows top-level sites to restrict collection of high-entropy UA client // hints (from 3Ps, or itself) via the getHighEntropyValues API. // crbug.com/385161047 diff --git a/build/cromite_patches/Content-settings-infrastructure.patch b/build/cromite_patches/Content-settings-infrastructure.patch index 48f572ad..db828f2f 100644 --- a/build/cromite_patches/Content-settings-infrastructure.patch +++ b/build/cromite_patches/Content-settings-infrastructure.patch @@ -45,8 +45,8 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSettingImpl.java | 412 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + .../ContentSettingsResources.java | 37 +- - .../site_settings/SingleCategorySettings.java | 60 ++- - .../site_settings/SingleWebsiteSettings.java | 58 ++- + .../site_settings/SingleCategorySettings.java | 57 ++- + .../site_settings/SingleWebsiteSettings.java | 53 ++- .../site_settings/SiteSettings.java | 33 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + @@ -85,7 +85,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 13 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 74 files changed, 1965 insertions(+), 112 deletions(-) + 74 files changed, 1962 insertions(+), 107 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -99,7 +99,7 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -69,6 +69,10 @@ import org.chromium.url.GURL; +@@ -70,6 +70,10 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Set; @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { private final Context mContext; -@@ -239,7 +243,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -247,7 +251,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -377,6 +381,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -385,6 +389,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc --- a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc -@@ -191,7 +191,7 @@ namespace { +@@ -190,7 +190,7 @@ namespace { void GetGuestViewDefaultContentSettingRules( bool incognito, RendererContentSettingRules* rules) { @@ -152,7 +152,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -295,6 +295,7 @@ build_webui("build") { +@@ -312,6 +312,7 @@ build_webui("build") { "privacy_sandbox/privacy_sandbox_browser_proxy.ts", "relaunch_mixin.ts", "reset_page/reset_browser_proxy.ts", @@ -160,7 +160,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "route.ts", "router.ts", "safety_hub/safety_hub_browser_proxy.ts", -@@ -306,7 +307,6 @@ build_webui("build") { +@@ -326,7 +327,6 @@ build_webui("build") { "site_settings/constants.ts", "site_settings/site_settings_mixin.ts", "site_settings/site_settings_prefs_browser_proxy.ts", @@ -171,14 +171,12 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1339,6 +1339,7 @@ +@@ -1342,4 +1342,5 @@ +
- -
[[dbdDeletionConfirmationToastLabel_]]
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts @@ -190,7 +188,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -79,8 +80,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -78,8 +79,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -296,7 +294,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html --- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html +++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html -@@ -53,5 +53,17 @@ +@@ -54,5 +54,17 @@ icon="[[blockOptionIcon]]" no-collapse> @@ -478,13 +476,12 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis import {ChooserType, ContentSetting, ContentSettingsTypes, SiteSettingSource} from './constants.js'; import {getTemplate} from './site_details_permission.html.js'; -@@ -293,15 +294,28 @@ export class SiteDetailsPermissionElement extends +@@ -293,14 +294,27 @@ export class SiteDetailsPermissionElement extends return ''; } + let obj = this.getSettingData(category); - if (defaultSetting === ContentSetting.ASK || - defaultSetting === ContentSetting.IMPORTANT_CONTENT) { + if (defaultSetting === ContentSetting.ASK) { + if (obj) { + let v = this.askSettingString_(category, ""); + if (v !== "") return "(Default) " + v; @@ -507,7 +504,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis if (this.useCustomSoundLabels_(category)) { return this.i18n('siteSettingsActionMuteDefault'); } -@@ -320,12 +334,40 @@ export class SiteDetailsPermissionElement extends +@@ -319,12 +333,40 @@ export class SiteDetailsPermissionElement extends private blockSettingString_( category: ContentSettingsTypes, blockString: string, muteString: string): string { @@ -548,7 +545,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis /** * @return true if |this| should be hidden. */ -@@ -416,6 +458,8 @@ export class SiteDetailsPermissionElement extends +@@ -415,6 +457,8 @@ export class SiteDetailsPermissionElement extends private showAskSetting_( category: ContentSettingsTypes, setting: ContentSetting, source: SiteSettingSource): boolean { @@ -736,16 +733,16 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -1732,6 +1732,7 @@ static_library("ui") { +@@ -1634,6 +1634,7 @@ static_library("ui") { "//components/commerce/core/mojom:mojo_bindings", "//components/commerce/core/webui", - "//components/endpoint_fetcher:endpoint_fetcher", + "//components/endpoint_fetcher", + "//components/content_settings/core/browser:browser", "//components/enterprise/common:files_scan_data", "//components/feedback/proto", "//components/headless/policy", -@@ -4950,6 +4951,7 @@ static_library("ui") { - "//components/power_bookmarks/core:core", +@@ -4821,6 +4822,7 @@ static_library("ui") { + "//components/power_bookmarks/core", "//components/power_bookmarks/storage", "//components/prefs", + "//components/strings:components_strings_grit", @@ -772,7 +769,7 @@ diff --git a/chrome/browser/ui/views/controls/rich_controls_container_view.h b/c diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc -@@ -59,6 +59,7 @@ +@@ -58,6 +58,7 @@ #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout.h" #include "ui/views/vector_icons.h" @@ -780,7 +777,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -284,8 +285,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -282,8 +283,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -803,7 +800,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -300,11 +313,16 @@ void PageInfoMainView::SetPermissionInfo( +@@ -298,11 +311,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -820,7 +817,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b toggle_row->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kStretch); syncable_permission_rows_.emplace(permission.type, toggle_row); -@@ -312,6 +330,8 @@ void PageInfoMainView::SetPermissionInfo( +@@ -310,6 +328,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -829,7 +826,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -322,6 +342,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -320,6 +340,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -852,7 +849,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -292,7 +294,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -290,7 +292,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -867,7 +864,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -593,6 +602,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -591,6 +600,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kPrinterIcon; break; default: @@ -888,7 +885,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h --- a/chrome/browser/ui/views/page_info/page_info_view_factory.h +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h -@@ -100,6 +100,11 @@ class PageInfoViewFactory { +@@ -97,6 +97,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); @@ -1216,7 +1213,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3842,6 +3846,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3912,6 +3916,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1286,7 +1283,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_types.h" @@ -261,13 +263,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::SUSPICIOUS_NOTIFICATION_IDS, nullptr}, + {ContentSettingsType::DEVICE_ATTRIBUTES, nullptr}, }); -static_assert( @@ -1354,7 +1351,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; } -@@ -673,6 +694,13 @@ std::vector GetVisiblePermissionCategories( +@@ -668,6 +689,13 @@ std::vector GetVisiblePermissionCategories( base_types->push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -1534,7 +1531,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -151,6 +151,23 @@ android_library("java") { +@@ -156,6 +156,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1558,7 +1555,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -200,6 +217,7 @@ robolectric_library("junit") { +@@ -205,6 +222,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1569,7 +1566,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml --- a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml +++ b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml -@@ -189,4 +189,11 @@ The order of the following items is from: http://crbug.com/610358. +@@ -193,4 +193,11 @@ The order of the following items is from: http://crbug.com/610358. android:title="@string/safety_hub_autorevocation_toggle_title" android:summary="@string/safety_hub_autorevocation_toggle_summary" /> @@ -2251,16 +2248,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -636,6 +657,8 @@ public class ContentSettingsResources { - R.string.website_settings_vr_ask, - R.string.website_settings_vr_block); +@@ -662,6 +683,8 @@ public class ContentSettingsResources { + R.string.website_settings_window_management_ask, + R.string.website_settings_window_management_block); } + ResourceItem ri = BromiteCustomContentSettingImpl.getResourceItem(contentType); + if (ri != null) return ri; assert false; // NOTREACHED return assumeNonNull(null); } -@@ -794,6 +817,14 @@ public class ContentSettingsResources { +@@ -820,6 +843,14 @@ public class ContentSettingsResources { return getResourceItem(contentType).getDefaultDisabledValue(); } @@ -2275,7 +2272,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -968,6 +999,8 @@ public class ContentSettingsResources { +@@ -994,6 +1025,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { @@ -2287,7 +2284,7 @@ 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 -@@ -343,6 +343,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -344,6 +344,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment website.site() .getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -2298,7 +2295,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -531,6 +535,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -532,6 +536,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2306,7 +2303,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -566,7 +571,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -567,7 +572,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2316,7 +2313,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -578,12 +584,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -579,12 +585,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2358,34 +2355,37 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // OnPreferenceClickListener: -@@ -962,21 +981,18 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - default: +@@ -963,17 +982,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment break; } -- -- int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); -- assert allowSpecifyingExceptions == (exceptionDialogMessageResourceId != 0); + + Boolean allow = BromiteCustomContentSettingImpl.allowSpecifyingExceptions(mCategory); -+ if (allow != null) allowSpecifyingExceptions = (boolean)allow; - if (allowSpecifyingExceptions) { ++ if (allow != null) shouldAddExceptionButton = (boolean)allow; ++ + int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); + assert shouldAddExceptionButton == (exceptionDialogMessageResourceId != 0); + + if (shouldAddExceptionButton) { + int blockAddingExceptionsReasonResourceId = + mCategory.getBlockAddingExceptionsReasonResourceId(); - boolean enableAddExceptionButton = - (!mCategory.isManaged() -- || mCategory.getType() -- == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES); -+ int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); -+ assert exceptionDialogMessageResourceId != 0; - getPreferenceScreen() - .addPreference( - new AddExceptionPreference( +- || mCategory.getType() +- == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES) +- && blockAddingExceptionsReasonResourceId == 0; + String exceptionDialogMessage = + exceptionDialogMessageResourceId != 0 + ? getString(exceptionDialogMessageResourceId) +@@ -984,7 +1001,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getStyledContext(), ADD_EXCEPTION_KEY, - getString(exceptionDialogMessageResourceId), + exceptionDialogMessage, - enableAddExceptionButton, -+ true, ++ /*enableAddExceptionButton*/ true, mCategory, this)); - } -@@ -1152,8 +1168,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + +@@ -1168,8 +1185,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2402,7 +2402,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1302,7 +1326,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1320,7 +1345,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (res_id != -1) { infoText.setSummary(res_id); } else { @@ -2415,7 +2415,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1341,6 +1369,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1359,6 +1388,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2423,7 +2423,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c maybeShowReasonToggleDisabled(screen); -@@ -1553,6 +1582,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1571,6 +1601,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType); } triStateToggle.initialize( @@ -2431,7 +2431,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setting, descriptionIds, iconIds, -@@ -1712,6 +1742,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1730,6 +1761,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2449,7 +2449,7 @@ 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/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -57,6 +57,7 @@ import java.util.Collection; +@@ -59,6 +59,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2457,21 +2457,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ @NullMarked -@@ -188,7 +189,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - case ContentSettingsType.LOCAL_NETWORK_ACCESS: - return "local_network_access"; +@@ -192,7 +193,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + case ContentSettingsType.WINDOW_MANAGEMENT: + return "window_management_permission_list"; default: - return null; + return BromiteCustomContentSettingImpl.getProfilePrefKey(type); } } -@@ -594,8 +595,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -598,14 +599,27 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { Preference permissionsHeaderPref = findPreference(PREF_PERMISSIONS_HEADER); mMaxPermissionOrder = permissionsHeaderPref.getOrder(); - for (@ContentSettingsType.EnumType int type : SiteSettingsUtil.SETTINGS_ORDER) { -- Preference preference = new ChromeSwitchPreference(getStyledContext()); + List order = BromiteCustomContentSettingImpl.getSettingsOrder(); + for (@ContentSettingsType.EnumType int type : order) { + @ContentSettingValues @Nullable Integer value = @@ -2481,20 +2480,27 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + value = WebsitePreferenceBridge.getDefaultContentSetting( + getSiteSettingsDelegate().getBrowserContextHandle(), type); + } -+ Preference preference = + Preference preference = + BromiteCustomContentSettingImpl + .createWebSitePreference(type, getStyledContext(), value); + if (preference == null) { -+ preference = new ChromeSwitchPreference(getStyledContext()); ++ preference = + (isOneTime(type) + && PermissionsAndroidFeatureMap.isEnabled( + PermissionsAndroidFeatureList + .APPROXIMATE_GEOLOCATION_PERMISSION)) + ? new ChromeImageViewPreference(getStyledContext()) + : new ChromeSwitchPreference(getStyledContext()); + } preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1280,20 +1294,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1290,7 +1304,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { - if (value == null) return; ++ @ContentSettingsType.EnumType + int content_type = getContentSettingsTypeFromPreferenceKey(preference.getKey()); + BromiteCustomContentSetting cs = + BromiteCustomContentSettingImpl.getContentSetting(content_type); @@ -2505,33 +2511,37 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + getSiteSettingsDelegate().getBrowserContextHandle(), content_type); + } setUpPreferenceCommon(preference, value); - -- ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference; -- @ContentSettingsType.EnumType -- int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -- switchPreference.setChecked(value == getEnabledValue(contentType)); -+ Preference switchPreference = preference; -+ if (preference instanceof ChromeSwitchPreference) { -+ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSettingValues.BLOCK); -+ } else { -+ BromiteCustomContentSettingImpl.setWebSitePreferenceValue(content_type, preference, value); -+ } - switchPreference.setSummary( + preference.setOnPreferenceChangeListener(this); + @ContentSettingsType.EnumType +@@ -1298,7 +1321,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + preference.setSummary( isEmbargoed ? getString(R.string.automatically_blocked) - : getString(ContentSettingsResources.getCategorySummary(value, isOneTime))); + : getString(ContentSettingsResources.getCategorySummary(content_type, value, isOneTime))); - switchPreference.setOnPreferenceChangeListener(this); -- if (contentType == mHighlightedPermission) { -- switchPreference.setBackgroundColor( -+ @ContentSettingsType.EnumType -+ int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -+ if (preference instanceof ChromeSwitchPreference && contentType == mHighlightedPermission) { -+ ((ChromeSwitchPreference)switchPreference).setBackgroundColor( - AppCompatResources.getColorStateList(getContext(), mHighlightColor) - .getDefaultColor()); - } -@@ -1518,14 +1544,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + if (preference instanceof ChromeImageViewPreference) { + ChromeImageViewPreference oneTimePreference = (ChromeImageViewPreference) preference; + oneTimePreference.setImageView( +@@ -1313,10 +1336,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + oneTimePreference.setBackgroundColor(mHighlightColor); + } + } else { +- ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference; +- switchPreference.setChecked(value == getEnabledValue(contentType)); +- if (contentType == mHighlightedPermission) { +- switchPreference.setBackgroundColor( ++ Preference switchPreference = preference; ++ if (preference instanceof ChromeSwitchPreference) { ++ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSettingValues.BLOCK); ++ } else { ++ BromiteCustomContentSettingImpl.setWebSitePreferenceValue(content_type, preference, value); ++ } ++ if (preference instanceof ChromeSwitchPreference && contentType == mHighlightedPermission) { ++ ((ChromeSwitchPreference)switchPreference).setBackgroundColor( + AppCompatResources.getColorStateList(getContext(), mHighlightColor) + .getDefaultColor()); + } +@@ -1542,14 +1569,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { permission = (Boolean) newValue ? getEnabledValue(type) : ContentSettingValues.BLOCK; } else { @@ -2622,25 +2632,25 @@ 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/SiteSettingsCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java -@@ -79,7 +79,7 @@ public class SiteSettingsCategory { - Type.JAVASCRIPT_OPTIMIZER, +@@ -80,7 +80,7 @@ public class SiteSettingsCategory { Type.SERIAL_PORT, Type.LOCAL_NETWORK_ACCESS, + Type.WINDOW_MANAGEMENT, - Type.NUM_ENTRIES + Type.NUM_ENTRIES_CHROMIUM }) @Retention(RetentionPolicy.SOURCE) public @interface Type { -@@ -123,7 +123,7 @@ public class SiteSettingsCategory { - int LOCAL_NETWORK_ACCESS = 35; +@@ -125,7 +125,7 @@ public class SiteSettingsCategory { + int WINDOW_MANAGEMENT = 36; /** Number of handled categories used for calculating array sizes. */ -- int NUM_ENTRIES = 36; -+ int NUM_ENTRIES_CHROMIUM = 36; +- int NUM_ENTRIES = 37; ++ int NUM_ENTRIES_CHROMIUM = 37; } private final BrowserContextHandle mBrowserContextHandle; -@@ -174,6 +174,9 @@ public class SiteSettingsCategory { +@@ -176,6 +176,9 @@ public class SiteSettingsCategory { } else { permission = ""; } @@ -2650,7 +2660,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return new SiteSettingsCategory(browserContextHandle, type, permission); } -@@ -182,7 +185,7 @@ public class SiteSettingsCategory { +@@ -184,7 +187,7 @@ public class SiteSettingsCategory { @ContentSettingsType.EnumType int contentSettingsType) { assert contentSettingsType != -1; assert Type.ALL_SITES == 0; @@ -2659,7 +2669,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSettingsType(i) == contentSettingsType) { return createFromType(browserContextHandle, i); } -@@ -193,7 +196,7 @@ public class SiteSettingsCategory { +@@ -195,7 +198,7 @@ public class SiteSettingsCategory { public static @Nullable SiteSettingsCategory createFromPreferenceKey( BrowserContextHandle browserContextHandle, String preferenceKey) { assert Type.ALL_SITES == 0; @@ -2668,7 +2678,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (preferenceKey(i).equals(preferenceKey)) { return createFromType(browserContextHandle, i); } -@@ -274,8 +277,7 @@ public class SiteSettingsCategory { +@@ -278,8 +281,7 @@ public class SiteSettingsCategory { case Type.TRACKING_PROTECTION: return ContentSettingsType.DEFAULT; // Conversion unavailable. } @@ -2678,7 +2688,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } /** -@@ -372,8 +374,12 @@ public class SiteSettingsCategory { +@@ -378,8 +380,12 @@ public class SiteSettingsCategory { case Type.ZOOM: return "zoom"; default: @@ -2694,7 +2704,7 @@ 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/SiteSettingsDelegate.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java -@@ -203,6 +203,8 @@ public interface SiteSettingsDelegate { +@@ -208,6 +208,8 @@ public interface SiteSettingsDelegate { */ String getRelatedWebsiteSetOwner(String memberOrigin); @@ -2769,19 +2779,19 @@ 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/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -115,7 +115,7 @@ public class WebsitePermissionsFetcher { - case ContentSettingsType.USB_GUARD: - return WebsitePermissionsType.CHOSEN_OBJECT_INFO; +@@ -124,7 +124,7 @@ public class WebsitePermissionsFetcher { + } + break; default: - return null; + return BromiteCustomContentSettingImpl.getPermissionsType(contentSettingsType); } + return null; } - diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -321,7 +321,7 @@ public class WebsitePreferenceBridge { +@@ -317,7 +317,7 @@ public class WebsitePreferenceBridge { case ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER: return true; default: @@ -2790,7 +2800,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -337,7 +337,6 @@ public class WebsitePreferenceBridge { +@@ -333,7 +333,6 @@ public class WebsitePreferenceBridge { public static boolean isCategoryEnabled( BrowserContextHandle browserContextHandle, @ContentSettingsType.EnumType int contentSettingsType) { @@ -2877,7 +2887,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn -@@ -77,6 +77,13 @@ static_library("browser") { +@@ -83,6 +83,13 @@ static_library("browser") { } configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -2900,7 +2910,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -16,6 +16,7 @@ +@@ -19,6 +19,7 @@ #include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/features.h" @@ -2908,10 +2918,10 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -864,6 +865,7 @@ void ContentSettingsRegistry::Init() { - WebsiteSettingsRegistry::PLATFORM_ANDROID, - ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -872,6 +873,7 @@ void ContentSettingsRegistry::Init() { + WebsiteSettingsRegistry::PLATFORM_CHROMEOS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +#include "components/content_settings/core/browser/bromite_content_settings.inc" } @@ -2919,7 +2929,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -222,11 +222,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -224,11 +224,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -2935,15 +2945,15 @@ diff --git a/components/content_settings/core/browser/content_settings_uma_util. diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -16,6 +16,7 @@ - #include "build/build_config.h" - #include "components/content_settings/core/browser/content_settings_registry.h" - #include "components/content_settings/core/browser/host_content_settings_map.h" +@@ -19,6 +19,7 @@ + #include "components/content_settings/core/browser/permission_settings_info.h" + #include "components/content_settings/core/browser/permission_settings_registry.h" + #include "components/content_settings/core/browser/website_settings_registry.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" -@@ -125,6 +126,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { +@@ -133,6 +134,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { void GetRendererContentSettingRules(const HostContentSettingsMap* map, RendererContentSettingRules* rules) { @@ -3060,7 +3070,7 @@ diff --git a/components/content_settings/core/common/BUILD.gn b/components/conte } source_set("unit_tests") { -@@ -91,6 +98,7 @@ mojom("content_settings_types") { +@@ -90,6 +97,7 @@ mojom("content_settings_types") { sources = [ "content_settings_types.mojom" ] public_deps = [ "//mojo/public/mojom/base" ] @@ -3077,11 +3087,12 @@ new file mode 100644 diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc --- a/components/content_settings/core/common/content_settings.cc +++ b/components/content_settings/core/common/content_settings.cc -@@ -16,10 +16,11 @@ +@@ -18,11 +18,12 @@ #include "components/content_settings/core/common/content_settings_metadata.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" +#include "components/content_settings/core/browser/website_settings_registry.h" + #include "third_party/abseil-cpp/absl/functional/overload.h" namespace { @@ -3090,7 +3101,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo const GURL& primary_url) { std::erase_if(settings, [&primary_url](const ContentSettingPatternSource& source) { -@@ -98,6 +99,13 @@ std::ostream& operator<<(std::ostream& os, +@@ -106,6 +107,13 @@ std::ostream& operator<<(std::ostream& os, // static bool RendererContentSettingRules::IsRendererContentSetting( ContentSettingsType content_type) { @@ -3104,7 +3115,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo return content_type == ContentSettingsType::IMAGES || content_type == ContentSettingsType::JAVASCRIPT || content_type == ContentSettingsType::POPUPS || -@@ -107,7 +115,10 @@ bool RendererContentSettingRules::IsRendererContentSetting( +@@ -115,7 +123,10 @@ bool RendererContentSettingRules::IsRendererContentSetting( void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( const GURL& outermost_main_frame_url) { @@ -3116,7 +3127,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo } RendererContentSettingRules::RendererContentSettingRules() = default; -@@ -127,7 +138,20 @@ RendererContentSettingRules& RendererContentSettingRules::operator=( +@@ -135,7 +146,20 @@ RendererContentSettingRules& RendererContentSettingRules::operator=( RendererContentSettingRules&& rules) = default; bool RendererContentSettingRules::operator==( @@ -3141,7 +3152,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -74,10 +74,22 @@ std::ostream& operator<<(std::ostream& os, +@@ -100,10 +100,22 @@ std::ostream& operator<<(std::ostream& os, typedef std::vector ContentSettingsForOneType; @@ -3167,7 +3178,7 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -74,6 +74,11 @@ struct RuleMetaData { +@@ -73,6 +73,11 @@ struct RuleMetaData { mojo_base.mojom.Value rule_options; }; @@ -3179,7 +3190,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co // This mirrors the C++ type in content_settings.h. struct ContentSettingPatternSource { ContentSettingsPattern primary_pattern; -@@ -87,5 +92,6 @@ struct ContentSettingPatternSource { +@@ -86,5 +91,6 @@ struct ContentSettingPatternSource { // This mirrors the C++ type in content_settings.h. // TODO(crbug.com/40282541): This should be removed. struct RendererContentSettingRules { @@ -3189,7 +3200,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -120,12 +120,22 @@ bool StructTraitsmetadata) && data.ReadSource(&out->source); } @@ -3254,10 +3265,10 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -491,5 +491,6 @@ enum ContentSettingsType { - // site. Used for recovering notification contents from the database if the - // user decides they would like to see all of these notifications. - SUSPICIOUS_NOTIFICATION_IDS, +@@ -498,5 +498,6 @@ enum ContentSettingsType { + // Setting for enabling the Device Attributes API. Spec link: + // https://wicg.github.io/WebApiDevice/device_attributes/ + DEVICE_ATTRIBUTES, +#include "components/content_settings/core/common/bromite_content_settings.inc" }; // LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue) @@ -3419,7 +3430,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/page_info/android/page_info_client.h" -@@ -169,6 +170,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -184,6 +185,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( permissions_to_display.push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -3435,7 +3446,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -228,6 +238,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -243,6 +253,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -3461,7 +3472,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1314,6 +1315,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1317,6 +1318,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3476,7 +3487,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1430,7 +1439,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1433,7 +1442,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3508,7 +3519,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -333,6 +334,13 @@ void CreateOppositeToDefaultSiteException( +@@ -317,6 +318,13 @@ void CreateOppositeToDefaultSiteException( std::u16string GetPermissionAskStateString(ContentSettingsType type) { int message_id = kInvalidResourceID; @@ -3522,7 +3533,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in switch (type) { case ContentSettingsType::GEOLOCATION: message_id = IDS_PAGE_INFO_STATE_TEXT_LOCATION_ASK; -@@ -626,6 +634,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -615,6 +623,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3535,7 +3546,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -636,6 +650,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -625,6 +639,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3548,7 +3559,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1077,6 +1097,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1051,6 +1071,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } @@ -3629,7 +3640,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -43,6 +43,7 @@ +@@ -42,6 +42,7 @@ #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink-forward.h" #include "third_party/blink/public/mojom/permissions_policy/policy_disposition.mojom-blink-forward.h" #include "third_party/blink/public/mojom/v8_cache_options.mojom-blink-forward.h" @@ -3637,7 +3648,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context #include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" -@@ -102,6 +103,10 @@ class SecurityOrigin; +@@ -101,6 +102,10 @@ class SecurityOrigin; class ScriptState; class ScriptWrappable; class TrustedTypePolicyFactory; diff --git a/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch index 5f32db1c..8e341a00 100644 --- a/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -23,11 +23,11 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re android:textAppearance="@style/TextAppearance.SearchBoxText" + android:inputType="textUri" android:hint="@string/omnibox_empty_hint" - android:importantForAutofill="no" /> + android:importantForAutofill="no"/> diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -321,8 +321,17 @@ class LocationBarMediator +@@ -307,8 +307,17 @@ class LocationBarMediator if (!mUrlFocusedWithPastedText && !shouldRetainOmniboxOnFocus && mLocationBarLayout.shouldClearTextOnFocus()) { @@ -58,7 +58,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import android.os.SystemClock; import android.text.Editable; import android.text.InputType; -@@ -113,6 +114,7 @@ public class UrlBar extends AutocompleteEditText { +@@ -115,6 +116,7 @@ public class UrlBar extends AutocompleteEditText { private boolean mAllowFocus = true; private boolean mShouldSendTypingStartedEvent; @@ -66,7 +66,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mPendingScroll; private boolean mIsInCct; -@@ -339,6 +341,28 @@ public class UrlBar extends AutocompleteEditText { +@@ -352,6 +354,28 @@ public class UrlBar extends AutocompleteEditText { fixupTextDirection(); mShouldSendTypingStartedEvent = focused; diff --git a/build/cromite_patches/Disable-Accessibility-service-by-default.patch b/build/cromite_patches/Disable-Accessibility-service-by-default.patch index bd529719..a0904552 100644 --- a/build/cromite_patches/Disable-Accessibility-service-by-default.patch +++ b/build/cromite_patches/Disable-Accessibility-service-by-default.patch @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java -@@ -1102,6 +1102,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa +@@ -1125,6 +1125,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa structure.setChildCount(0); return; } diff --git a/build/cromite_patches/Disable-Android-Tab-Declutter.patch b/build/cromite_patches/Disable-Android-Tab-Declutter.patch index b42e2745..d42754f1 100644 --- a/build/cromite_patches/Disable-Android-Tab-Declutter.patch +++ b/build/cromite_patches/Disable-Android-Tab-Declutter.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -105,7 +105,8 @@ for the previous order (main_preferences_legacy). --> +@@ -106,7 +106,8 @@ for the previous order (main_preferences_legacy). --> android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings" android:key="tabs" android:order="18" diff --git a/build/cromite_patches/Disable-PrivacyGuide.patch b/build/cromite_patches/Disable-PrivacyGuide.patch index 7096bbdc..dff42339 100644 --- a/build/cromite_patches/Disable-PrivacyGuide.patch +++ b/build/cromite_patches/Disable-PrivacyGuide.patch @@ -22,7 +22,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc -@@ -327,8 +327,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -326,8 +326,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // BUILDFLAG(IS_CHROMEOS) bool show_privacy_guide = diff --git a/build/cromite_patches/Disable-TLS-resumption.patch b/build/cromite_patches/Disable-TLS-resumption.patch index 929de04b..d8595af2 100644 --- a/build/cromite_patches/Disable-TLS-resumption.patch +++ b/build/cromite_patches/Disable-TLS-resumption.patch @@ -90,7 +90,7 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc --- a/net/quic/quic_session_pool.cc +++ b/net/quic/quic_session_pool.cc -@@ -85,6 +85,7 @@ +@@ -86,6 +86,7 @@ #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "third_party/boringssl/src/include/openssl/aead.h" @@ -98,7 +98,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc #include "url/gurl.h" #include "url/scheme_host_port.h" #include "url/url_constants.h" -@@ -371,6 +372,38 @@ void LogSessionKeyMismatch(QuicSessionKeyPartialMatchResult result, +@@ -372,6 +373,38 @@ void LogSessionKeyMismatch(QuicSessionKeyPartialMatchResult result, } // namespace @@ -137,7 +137,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {} QuicSessionRequest::~QuicSessionRequest() { -@@ -2376,7 +2409,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { +@@ -2373,7 +2406,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { cert_verifier_, transport_security_state_, sct_auditing_delegate_, HostsFromOrigins(params_.origins_to_force_quic_on), key.network_anonymization_key), @@ -149,7 +149,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -291,7 +291,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( +@@ -292,7 +292,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( CHECK(context_); } @@ -183,7 +183,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket Disconnect(); } -@@ -699,6 +725,8 @@ int SSLClientSocketImpl::Init() { +@@ -700,6 +726,8 @@ int SSLClientSocketImpl::Init() { } if (session) SSL_set_session(ssl_.get(), session.get()); @@ -192,7 +192,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket } transport_adapter_ = std::make_unique( -@@ -984,6 +1012,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { +@@ -985,6 +1013,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { : SSLHandshakeDetails::kTLS13Full; } } @@ -228,7 +228,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket UMA_HISTOGRAM_ENUMERATION("Net.SSLHandshakeDetails", details); // Measure TLS connections that implement the renegotiation_info and EMS -@@ -1618,6 +1675,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { +@@ -1624,6 +1681,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { } bool SSLClientSocketImpl::IsCachingEnabled() const { diff --git a/build/cromite_patches/Disable-UA-full-version.patch b/build/cromite_patches/Disable-UA-full-version.patch index a5434f2e..bb366b64 100644 --- a/build/cromite_patches/Disable-UA-full-version.patch +++ b/build/cromite_patches/Disable-UA-full-version.patch @@ -7,22 +7,23 @@ getHighEntropyValues will return only the major version Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../renderer/core/frame/navigator_ua_data.cc | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) + .../renderer/core/frame/navigator_ua_data.cc | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc --- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc +++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc -@@ -7,6 +7,8 @@ +@@ -7,6 +7,9 @@ #include "base/compiler_specific.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/common/features.h" +#include "base/version.h" +#include "base/strings/strcat.h" ++#include "base/strings/string_number_conversions.h" #include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h" #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h" #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" -@@ -65,6 +67,16 @@ void MaybeRecordMetric(bool record_identifiability, +@@ -65,6 +68,16 @@ void MaybeRecordMetric(bool record_identifiability, execution_context); } @@ -39,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ } // namespace NavigatorUAData::NavigatorUAData(ExecutionContext* context) -@@ -103,7 +115,7 @@ void NavigatorUAData::SetFullVersionList( +@@ -103,7 +116,7 @@ void NavigatorUAData::SetFullVersionList( const UserAgentBrandList& full_version_list) { for (const auto& brand_version : full_version_list) { AddBrandFullVersion(String::FromUTF8(brand_version.brand), @@ -48,7 +49,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ } } -@@ -125,7 +137,7 @@ void NavigatorUAData::SetModel(const String& model) { +@@ -125,7 +138,7 @@ void NavigatorUAData::SetModel(const String& model) { } void NavigatorUAData::SetUAFullVersion(const String& ua_full_version) { diff --git a/build/cromite_patches/Disable-all-predictors-code.patch b/build/cromite_patches/Disable-all-predictors-code.patch index 5ba6cce9..99b549e3 100644 --- a/build/cromite_patches/Disable-all-predictors-code.patch +++ b/build/cromite_patches/Disable-all-predictors-code.patch @@ -6,6 +6,7 @@ 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/BUILD.gn | 4 +--- + .../background_download_service_factory.cc | 2 +- .../preloading_model_keyed_service.cc | 3 +++ .../preloading_model_keyed_service_factory.cc | 4 +--- .../optimization_guide/chrome_hints_manager.cc | 1 + @@ -13,7 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../optimization_guide_keyed_service.cc | 1 - chrome/browser/permissions/BUILD.gn | 2 -- .../permissions/chrome_permissions_client.cc | 2 -- - .../prediction_model_handler_provider.cc | 2 +- + .../passage_embedder_delegate.cc | 2 ++ + .../prediction_model_handler_provider.cc | 9 ++++++--- .../predictors/autocomplete_action_predictor.cc | 2 ++ .../predictors/loading_predictor_config.cc | 4 ++-- chrome/browser/predictors/predictors_features.cc | 3 +-- @@ -24,6 +26,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...fication_content_detection_service_factory.cc | 6 ++++++ .../ui/autofill/chrome_autofill_client.cc | 15 --------------- chrome/browser/ui/tab_helpers.cc | 1 - + .../autofill_ml_internals_page_handler.cc | 2 ++ + .../autofill_ml_internals_page_handler.h | 3 +++ + .../autofill_ml_internals_ui.cc | 3 +++ .../read_anything/read_aloud_app_model.cc | 16 ++++++++++++++-- .../read_anything/read_aloud_app_model.h | 9 ++++++++- .../read_anything_app_controller.cc | 10 ++++++++++ @@ -32,13 +37,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/utility/services.cc | 8 -------- components/BUILD.gn | 2 +- .../autofill_optimization_guide.cc | 5 +++-- + .../field_classification_model_handler.cc | 12 ++++++++---- + .../field_classification_model_handler.h | 10 ++++++---- .../omnibox/browser/autocomplete_controller.cc | 4 ++++ .../omnibox/browser/base_search_provider.cc | 4 ++-- .../prediction_model_download_manager.cc | 6 ++++-- .../delivery/prediction_model_fetcher_impl.cc | 1 + .../core/hints/hints_fetcher.cc | 1 + - .../core/hints/hints_manager.cc | 1 + - .../core/optimization_guide_features.cc | 14 ++++++++------ + .../core/hints/hints_manager.cc | 2 ++ + .../core/optimization_guide_features.cc | 12 ++++++------ components/optimization_guide/features.gni | 3 +-- .../core/page_content_annotations_features.cc | 4 ++++ .../page_content_annotations_model_manager.cc | 1 + @@ -53,11 +60,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../features_cc/Disable-all-predictors-code.inc | 2 ++ services/webnn/BUILD.gn | 2 +- services/webnn/features.gni | 2 +- - services/webnn/webnn_context_provider_impl.cc | 11 ----------- + services/webnn/webnn_context_provider_impl.cc | 13 +------------ .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 52 files changed, 120 insertions(+), 76 deletions(-) + 59 files changed, 150 insertions(+), 88 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc @@ -69,7 +76,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -796,8 +796,6 @@ static_library("browser") { +@@ -797,8 +797,6 @@ static_library("browser") { "navigation_predictor/navigation_predictor_keyed_service_factory.h", "navigation_predictor/navigation_predictor_metrics_document_data.cc", "navigation_predictor/navigation_predictor_metrics_document_data.h", @@ -78,7 +85,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "navigation_predictor/preloading_model_keyed_service.cc", "navigation_predictor/preloading_model_keyed_service.h", "navigation_predictor/preloading_model_keyed_service_factory.cc", -@@ -2382,7 +2380,7 @@ static_library("browser") { +@@ -2400,7 +2398,7 @@ static_library("browser") { "//components/resources", "//components/safe_browsing/content/browser", "//components/safe_browsing/content/browser:safe_browsing_service", @@ -87,6 +94,18 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/safe_browsing/content/browser/password_protection", "//components/safe_browsing/content/browser/web_ui", "//components/safe_browsing/content/common/proto:download_file_types_proto", +diff --git a/chrome/browser/download/background_download_service_factory.cc b/chrome/browser/download/background_download_service_factory.cc +--- a/chrome/browser/download/background_download_service_factory.cc ++++ b/chrome/browser/download/background_download_service_factory.cc +@@ -179,7 +179,7 @@ BackgroundDownloadServiceFactory::BuildServiceInstanceFor( + } + #endif // BUILDFLAG(IS_CHROMEOS) + +- if (!key->IsOffTheRecord()) { ++ if (((false)) && !key->IsOffTheRecord()) { + clients->insert(std::make_pair( + download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS, + std::make_unique( diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc --- a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc +++ b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc @@ -190,7 +209,7 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -510,7 +510,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -410,7 +410,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -201,19 +220,19 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service. diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn --- a/chrome/browser/permissions/BUILD.gn +++ b/chrome/browser/permissions/BUILD.gn -@@ -40,8 +40,6 @@ source_set("permissions") { - "permission_revocation_request.h", - "permissions_aiv1_handler.cc", - "permissions_aiv1_handler.h", -- "prediction_based_permission_ui_selector.cc", -- "prediction_based_permission_ui_selector.h", - "prediction_model_handler_provider.cc", - "prediction_model_handler_provider.h", - "prediction_service_factory.cc", +@@ -44,8 +44,6 @@ source_set("permissions") { + "prediction_service/passage_embedder_delegate.h", + "prediction_service/permissions_aiv1_handler.cc", + "prediction_service/permissions_aiv1_handler.h", +- "prediction_service/prediction_based_permission_ui_selector.cc", +- "prediction_service/prediction_based_permission_ui_selector.h", + "prediction_service/prediction_model_handler_provider.cc", + "prediction_service/prediction_model_handler_provider.h", + "prediction_service/prediction_service_factory.cc", diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc -@@ -426,8 +426,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -475,8 +475,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( #endif selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); @@ -222,21 +241,52 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br return selectors; } -diff --git a/chrome/browser/permissions/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_model_handler_provider.cc ---- a/chrome/browser/permissions/prediction_model_handler_provider.cc -+++ b/chrome/browser/permissions/prediction_model_handler_provider.cc -@@ -13,10 +13,10 @@ - #include "chrome/browser/permissions/permissions_aiv1_handler.h" +diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +--- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc ++++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +@@ -17,11 +17,13 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) + : profile_(profile) {} + + Embedder* PassageEmbedderDelegate::get_passage_embedder() { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (auto* prediction_model_handler_provider = + PredictionModelHandlerProviderFactory::GetForBrowserContext( + profile_)) { + return prediction_model_handler_provider->GetPassageEmbedder(); + } ++#endif + return nullptr; + } + +diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +--- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc ++++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +@@ -13,11 +13,11 @@ + #include "chrome/browser/permissions/prediction_service/permissions_aiv1_handler.h" #include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h" #include "components/permissions/features.h" -#include "components/permissions/prediction_service/permissions_aiv3_handler.h" +-#include "components/permissions/prediction_service/permissions_aiv4_handler.h" #include "components/permissions/request_type.h" #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) +#include "components/permissions/prediction_service/permissions_aiv3_handler.h" ++#include "components/permissions/prediction_service/permissions_aiv4_handler.h" #include "components/permissions/prediction_service/prediction_model_handler.h" #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) +@@ -26,7 +26,10 @@ namespace permissions { + PredictionModelHandlerProvider::PredictionModelHandlerProvider( + OptimizationGuideKeyedService* optimization_guide, + passage_embeddings::Embedder* passage_embedder) +- : passage_embedder_(passage_embedder) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++ : passage_embedder_(passage_embedder) ++#endif ++ { + VLOG(1) << "[PermissionsAI] PredictionModelHandlerProvider ctor"; + // We set up model handlers if necessary in order of preference: + // Aiv4, Aiv3, Aiv1 diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc --- a/chrome/browser/predictors/autocomplete_action_predictor.cc +++ b/chrome/browser/predictors/autocomplete_action_predictor.cc @@ -290,7 +340,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_sett diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc --- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc +++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc -@@ -85,6 +85,7 @@ SearchPrefetchURLLoader::RequestHandler +@@ -84,6 +84,7 @@ SearchPrefetchURLLoader::RequestHandler SearchPrefetchURLLoaderInterceptor::MaybeCreateLoaderForRequest( const network::ResourceRequest& tentative_resource_request, content::FrameTreeNodeId frame_tree_node_id) { @@ -301,7 +351,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1184,7 +1184,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1196,7 +1196,6 @@ void ChromeBrowserMainExtraPartsProfiles:: base::FeatureList::IsEnabled( permissions::features::kPermissionOnDeviceGeolocationPredictions) || base::FeatureList::IsEnabled(permissions::features::kPermissionsAIv1)) { @@ -312,14 +362,14 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -47,7 +47,6 @@ static_library("safe_browsing") { +@@ -49,7 +49,6 @@ static_library("safe_browsing") { "//components/resources:components_resources_grit", "//components/safe_browsing:buildflags", "//components/safe_browsing/content/browser", -- "//components/safe_browsing/content/browser/notification_content_detection:notification_content_detection", +- "//components/safe_browsing/content/browser/notification_content_detection", "//components/safe_browsing/content/browser/triggers:suspicious_site_trigger", "//components/safe_browsing/content/browser/web_ui", - "//components/safe_browsing/core/browser", + "//components/safe_browsing/content/browser/web_ui:local_state_delegate", diff --git a/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc b/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc --- a/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc +++ b/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc @@ -360,7 +410,7 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc -@@ -504,11 +504,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { +@@ -516,11 +516,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { } AutofillAiManager* ChromeAutofillClient::GetAutofillAiManager() { @@ -372,7 +422,7 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/brows } AutofillAiModelCache* ChromeAutofillClient::GetAutofillAiModelCache() { -@@ -1179,18 +1175,7 @@ void ChromeAutofillClient::TriggerPlusAddressUserPerceptionSurvey( +@@ -1206,18 +1202,7 @@ void ChromeAutofillClient::TriggerPlusAddressUserPerceptionSurvey( optimization_guide::ModelQualityLogsUploaderService* ChromeAutofillClient::GetMqlsUploadService() { @@ -402,6 +452,66 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc OpenerHeuristicService::Get(web_contents->GetBrowserContext()); if (optimization_guide::features::IsOptimizationHintsEnabled()) { OptimizationGuideWebContentsObserver::CreateForWebContents(web_contents); +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc +@@ -12,9 +12,11 @@ AutofillMlInternalsPageHandlerImpl::AutofillMlInternalsPageHandlerImpl( + mojo::PendingReceiver receiver, + autofill::MLLogRouter* log_router) + : receiver_(this, std::move(receiver)) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (log_router) { + log_router_observation_.Observe(log_router); + } ++#endif + } + + void AutofillMlInternalsPageHandlerImpl::SetPage( +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h +@@ -8,6 +8,7 @@ + #include "base/scoped_observation.h" + #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" + #include "components/autofill/core/browser/ml_model/logging/ml_log_router.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" + #include "mojo/public/cpp/bindings/pending_receiver.h" + #include "mojo/public/cpp/bindings/receiver.h" + #include "mojo/public/cpp/bindings/remote.h" +@@ -35,8 +36,10 @@ class AutofillMlInternalsPageHandlerImpl + private: + mojo::Receiver receiver_; + mojo::Remote page_; ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + base::ScopedObservation + log_router_observation_{this}; ++#endif + }; + + #endif // CHROME_BROWSER_UI_WEBUI_AUTOFILL_ML_INTERNALS_AUTOFILL_ML_INTERNALS_PAGE_HANDLER_H_ +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc +@@ -11,6 +11,7 @@ + #include "chrome/grit/autofill_ml_internals_resources.h" + #include "chrome/grit/autofill_ml_internals_resources_map.h" + #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" + #include "content/public/browser/web_ui.h" + #include "content/public/browser/web_ui_data_source.h" + #include "ui/webui/webui_util.h" +@@ -29,9 +30,11 @@ AutofillMlInternalsUI::AutofillMlInternalsUI(content::WebUI* web_ui) + + void AutofillMlInternalsUI::BindInterface( + mojo::PendingReceiver receiver) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + page_handler_ = std::make_unique( + std::move(receiver), autofill::MLLogRouterFactory::GetForProfile( + Profile::FromWebUI(web_ui()))); ++#endif + } + + WEB_UI_CONTROLLER_TYPE_IMPL(AutofillMlInternalsUI) diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc --- a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc +++ b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc @@ -538,7 +648,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "chrome/renderer/accessibility/read_anything/read_anything_app_model.h" #include "chrome/renderer/accessibility/read_anything/read_anything_node_utils.h" -@@ -1594,6 +1596,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1733,6 +1735,7 @@ void ReadAnythingAppController::OnConnected() { render_frame()->GetBrowserInterfaceBroker().GetInterface( std::move(page_handler_factory_receiver)); @@ -546,7 +656,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr // Get the dependency parser model used by phrase-based highlighting. if (read_aloud_model_.GetDependencyParserModel().IsAvailable()) { return; -@@ -1602,6 +1605,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1741,6 +1744,7 @@ void ReadAnythingAppController::OnConnected() { page_handler_->GetDependencyParserModel( base::BindOnce(&ReadAnythingAppController::UpdateDependencyParserModel, weak_ptr_factory_.GetWeakPtr())); @@ -554,7 +664,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::OnCopy() const { -@@ -1833,8 +1837,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { +@@ -1972,8 +1976,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { } void ReadAnythingAppController::PreprocessTextForSpeech() { @@ -565,7 +675,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::MovePositionToNextGranularity() { -@@ -2057,14 +2063,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { +@@ -2196,14 +2202,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { void ReadAnythingAppController::UpdateDependencyParserModel( base::File model_file) { @@ -587,7 +697,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h --- a/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h +++ b/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h -@@ -46,7 +46,9 @@ class MojoUkmRecorder; +@@ -47,7 +47,9 @@ class MojoUkmRecorder; } // namespace ukm class AXTreeDistiller; @@ -597,7 +707,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr class ReadAnythingAppControllerTest; class ReadAnythingAppControllerScreen2xDataCollectionModeTest; -@@ -287,7 +289,9 @@ class ReadAnythingAppController +@@ -303,7 +305,9 @@ class ReadAnythingAppController // available. void UpdateDependencyParserModel(base::File model_file); @@ -610,19 +720,19 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -64,7 +64,7 @@ static_library("utility") { +@@ -66,7 +66,7 @@ static_library("utility") { "//printing/buildflags", "//services/data_decoder:lib", "//services/network:network_service", -- "//services/passage_embeddings:passage_embeddings", -+ # "//services/passage_embeddings:passage_embeddings", +- "//services/passage_embeddings", ++ # "//services/passage_embeddings", "//services/passage_embeddings/public/mojom", "//services/screen_ai/buildflags", "//services/service_manager/public/cpp", diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc --- a/chrome/utility/services.cc +++ b/chrome/utility/services.cc -@@ -241,13 +241,6 @@ auto RunMirroringService( +@@ -251,13 +251,6 @@ auto RunMirroringService( std::move(receiver), content::UtilityThread::Get()->GetIOTaskRunner()); } @@ -636,7 +746,7 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc #endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) -@@ -464,7 +457,6 @@ void RegisterMainThreadServices(mojo::ServiceFactory& services) { +@@ -475,7 +468,6 @@ void RegisterMainThreadServices(mojo::ServiceFactory& services) { #if !BUILDFLAG(IS_ANDROID) services.Add(RunProfileImporter); services.Add(RunMirroringService); @@ -647,19 +757,19 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -607,7 +607,7 @@ test("components_unittests") { +@@ -613,7 +613,7 @@ test("components_unittests") { "//components/media_router/common/providers/cast/channel:unit_tests", "//components/page_info:unit_tests", "//components/permissions:unit_tests", - "//components/permissions/prediction_service:unit_tests", + # "//components/permissions/prediction_service:unit_tests", - "//components/privacy_sandbox:unit_tests", "//components/privacy_sandbox/privacy_sandbox_attestations:unit_tests", "//components/safety_check:unit_tests", + "//components/security_interstitials/content:unit_tests", diff --git a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc --- a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc +++ b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc -@@ -259,6 +259,7 @@ void AutofillOptimizationGuide::OnDidParseForm( +@@ -264,6 +264,7 @@ void AutofillOptimizationGuide::OnDidParseForm( // If we do not have any optimization types to register, do not do anything. if (!optimization_types.empty()) { // Register all optimization types that we need based on `form_structure`. @@ -667,16 +777,16 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut decider_->RegisterOptimizationTypes( std::vector( std::move(optimization_types).extract())); -@@ -326,7 +327,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( +@@ -331,7 +332,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( const AutofillField* field) const { // If the field's storable type is `IBAN_VALUE`, check whether IBAN // suggestions should be blocked based on `url`. -- if (field->Type().GetStorableType() == IBAN_VALUE) { -+ if (decider_ && field->Type().GetStorableType() == IBAN_VALUE) { +- if (field->Type().GetTypes().contains(IBAN_VALUE)) { ++ if (decider_ && field->Type().GetTypes().contains(IBAN_VALUE)) { optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization( url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED, -@@ -352,7 +353,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( +@@ -357,7 +358,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( const CreditCard& card) const { if (auto optimization_type = GetVcnMerchantOptOutOptimizationTypeForCard(card); @@ -685,10 +795,113 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization(url, optimization_type, /*optimization_metadata=*/nullptr); +diff --git a/components/autofill/core/browser/ml_model/field_classification_model_handler.cc b/components/autofill/core/browser/ml_model/field_classification_model_handler.cc +--- a/components/autofill/core/browser/ml_model/field_classification_model_handler.cc ++++ b/components/autofill/core/browser/ml_model/field_classification_model_handler.cc +@@ -97,8 +97,7 @@ bool ParsingSupportsMultipleFieldsOfType(FieldType type) { + + FieldClassificationModelHandler::FieldClassificationModelHandler( + optimization_guide::OptimizationGuideModelProvider* model_provider, +- optimization_guide::proto::OptimizationTarget optimization_target, +- autofill::MLLogRouter* log_router) ++ optimization_guide::proto::OptimizationTarget optimization_target) + : optimization_guide::ModelHandler< + FieldClassificationModelEncoder::ModelOutput, + const FieldClassificationModelEncoder::ModelInput&>( +@@ -110,8 +109,7 @@ FieldClassificationModelHandler::FieldClassificationModelHandler( + optimization_target, + CreateModelMetadata()), + optimization_target_(optimization_target), +- predictions_cache_(kMaxPredictionsToCache), +- log_router_(log_router) { ++ predictions_cache_(kMaxPredictionsToCache) { + // Store the model in memory as soon as it is available and keep it loaded for + // the whole browser session since we query predictions very regularly. + // TODO(crbug.com/40276177): Maybe change both back to default behavior if we +@@ -160,6 +158,7 @@ void FieldClassificationModelHandler::ApplySmallFormRules( + } + } + ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + autofill_ml_internals::mojom::MLPredictionLogPtr + FieldClassificationModelHandler::CreateMLPredictionLog( + const FormStructure& form_structure) const { +@@ -231,6 +230,7 @@ FieldClassificationModelHandler::CreateMLPredictionLog( + prediction_log->start_time = base::Time::Now(); + return prediction_log; + } ++#endif + + void PopulateMLPredictionLogAfterInference( + autofill_ml_internals::mojom::MLPredictionLog& prediction_log, +@@ -259,9 +259,11 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( + + std::optional + prediction_log = std::nullopt; ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (log_router_ && log_router_->HasReceivers()) { + prediction_log = CreateMLPredictionLog(*form_structure); + } ++#endif + + // TODO(crbug.com/428686605) Set tokenized representation in `prediction_log`. + FieldClassificationModelEncoder::ModelInput encoded_input = +@@ -312,11 +314,13 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( + predicted_types); + } + } ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (self && output && prediction_log && self->log_router_) { + PopulateMLPredictionLogAfterInference(*(prediction_log.value()), + output.value()); + self->log_router_->ProcessLog(std::move(*prediction_log)); + } ++#endif + std::move(callback).Run(std::move(form_structure)); + }, + weak_ptr_factory_.GetWeakPtr(), std::move(prediction_log), +diff --git a/components/autofill/core/browser/ml_model/field_classification_model_handler.h b/components/autofill/core/browser/ml_model/field_classification_model_handler.h +--- a/components/autofill/core/browser/ml_model/field_classification_model_handler.h ++++ b/components/autofill/core/browser/ml_model/field_classification_model_handler.h +@@ -15,8 +15,11 @@ + #include "components/autofill/core/browser/field_types.h" + #include "components/autofill/core/browser/form_structure.h" + #include "components/autofill/core/browser/ml_model/field_classification_model_encoder.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" + #include "components/autofill/core/browser/ml_model/logging/ml_log_router.h" ++#endif + #include "components/keyed_service/core/keyed_service.h" + #include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h" + #include "components/optimization_guide/core/inference/model_handler.h" +@@ -42,8 +45,7 @@ class FieldClassificationModelHandler + + FieldClassificationModelHandler( + optimization_guide::OptimizationGuideModelProvider* model_provider, +- optimization_guide::proto::OptimizationTarget optimization_target, +- autofill::MLLogRouter* log_router = nullptr); ++ optimization_guide::proto::OptimizationTarget optimization_target); + ~FieldClassificationModelHandler() override; + + // This function asynchronously queries predictions for the `form_structure` +@@ -136,10 +138,10 @@ class FieldClassificationModelHandler + // Cached model classifications. + base::LRUCache> predictions_cache_; + +- raw_ptr log_router_ = nullptr; +- ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + autofill_ml_internals::mojom::MLPredictionLogPtr CreateMLPredictionLog( + const FormStructure& form_structure) const; ++#endif + + base::WeakPtrFactory weak_ptr_factory_{this}; + }; diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -51,7 +51,9 @@ +@@ -52,7 +52,9 @@ #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" @@ -698,7 +911,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "components/omnibox/browser/autocomplete_scoring_signals_annotator.h" #include "components/omnibox/browser/bookmark_provider.h" #include "components/omnibox/browser/bookmark_scoring_signals_annotator.h" -@@ -125,6 +127,7 @@ using ProviderType = AutocompleteProvider::Type; +@@ -126,6 +128,7 @@ using ProviderType = AutocompleteProvider::Type; constexpr bool is_android = !!BUILDFLAG(IS_ANDROID); @@ -706,7 +919,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ void RecordMlScoreCoverage(size_t matches_with_non_null_scores, size_t total_scored_matches) { int percent_score_coverage = -@@ -233,6 +236,7 @@ void RecordTotalMatchesScored(size_t num_scored) { +@@ -234,6 +237,7 @@ void RecordTotalMatchesScored(size_t num_scored) { base::UmaHistogramCounts1000("Omnibox.URLScoringModelExecuted.Matches", num_scored); } @@ -717,7 +930,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -99,14 +99,14 @@ BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type, +@@ -100,14 +100,14 @@ BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type, bool BaseSearchProvider::ShouldPrefetch(const AutocompleteMatch& match) { // TODO (manukh): `GetAdditionalInfoForDebugging()` shouldn't be used for // non-debugging purposes. @@ -737,7 +950,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc --- a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc +++ b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc -@@ -41,7 +41,7 @@ namespace { +@@ -44,7 +44,7 @@ namespace { // we require models to come from. constexpr std::array kPublisherKeyHash = { 0x66, 0xa1, 0xd9, 0x3e, 0x4e, 0x5a, 0x66, 0x8a, 0x0f, 0xd3, 0xfa, @@ -746,7 +959,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo 0x5c, 0x7f, 0xd0, 0x0c, 0xa1, 0x6e, 0xef, 0xdd, 0x63, 0x7a}; const net::NetworkTrafficAnnotationTag kOptimizationGuidePredictionModelsTrafficAnnotation = -@@ -100,7 +100,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( +@@ -104,7 +104,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( unzip::UnzipperFactory unzipper_factory, scoped_refptr background_task_runner) : download_service_(download_service), @@ -755,7 +968,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo api_key_(features::GetOptimizationGuideServiceAPIKey()), get_base_model_dir_for_download_callback_( get_base_model_dir_for_download_callback), -@@ -112,6 +112,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default; +@@ -117,6 +117,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default; void PredictionModelDownloadManager::StartDownload( const GURL& download_url, proto::OptimizationTarget optimization_target) { @@ -763,7 +976,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo download::DownloadParams download_params; download_params.client = download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS; -@@ -261,6 +262,7 @@ bool PredictionModelDownloadManager::VerifyDownload( +@@ -265,6 +266,7 @@ bool PredictionModelDownloadManager::VerifyDownload( const base::FilePath& download_file_path, const base::FilePath& base_model_dir, bool delete_file_on_error) { @@ -796,7 +1009,7 @@ diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/compone diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/components/optimization_guide/core/hints/hints_manager.cc --- a/components/optimization_guide/core/hints/hints_manager.cc +++ b/components/optimization_guide/core/hints/hints_manager.cc -@@ -412,6 +412,7 @@ void HintsManager::Shutdown() { +@@ -457,6 +457,7 @@ void HintsManager::Shutdown() { OptimizationGuideDecision HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision( OptimizationTypeDecision optimization_type_decision) { @@ -804,6 +1017,12 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone switch (optimization_type_decision) { case OptimizationTypeDecision::kAllowedByOptimizationFilter: case OptimizationTypeDecision::kAllowedByHint: +@@ -2040,4 +2041,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( + hint_cache_->RemoveHintsForHosts(std::move(on_success), hint_keys); + } + ++SET_CROMITE_FEATURE_DISABLED(kHintsBatchUpdateForActiveTabsAndTopHosts); + } // namespace optimization_guide diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc --- a/components/optimization_guide/core/optimization_guide_features.cc +++ b/components/optimization_guide/core/optimization_guide_features.cc @@ -819,7 +1038,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } // namespace -@@ -458,8 +454,7 @@ size_t MaxURLKeyedHintCacheSize() { +@@ -288,8 +284,7 @@ size_t MaxHostKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -829,14 +1048,12 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -926,5 +921,12 @@ bool IsPrivacyGuideAiSettingsEnabled() { +@@ -692,5 +687,10 @@ bool IsPrivacyGuideAiSettingsEnabled() { return base::FeatureList::IsEnabled(kPrivacyGuideAiSettings); } +SET_CROMITE_FEATURE_DISABLED(kOptimizationHints); -+SET_CROMITE_FEATURE_DISABLED(kRemoteOptimizationGuideFetching); +SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction); -+SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideModelDownloading); +SET_CROMITE_FEATURE_DISABLED(kPushNotifications); +SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP); @@ -858,7 +1075,7 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc --- a/components/page_content_annotations/core/page_content_annotations_features.cc +++ b/components/page_content_annotations/core/page_content_annotations_features.cc -@@ -286,4 +286,8 @@ bool ShouldAnnotatedPageContentStudyIncludeInnerText() { +@@ -291,4 +291,8 @@ bool ShouldAnnotatedPageContentStudyIncludeInnerText() { return kAnnotatedPageContentStudyIncludeInnerText.Get(); } @@ -881,7 +1098,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn --- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn +++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn -@@ -27,6 +27,13 @@ source_set("notification_content_detection") { +@@ -40,6 +40,13 @@ source_set("notification_content_detection") { ] } @@ -898,7 +1115,7 @@ diff --git a/components/safe_browsing/content/browser/notification_content_detec diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc -@@ -517,6 +517,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( +@@ -538,6 +538,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( scoped_refptr context, scoped_refptr version) { @@ -955,7 +1172,7 @@ new file mode 100644 diff --git a/services/webnn/BUILD.gn b/services/webnn/BUILD.gn --- a/services/webnn/BUILD.gn +++ b/services/webnn/BUILD.gn -@@ -167,7 +167,7 @@ component("webnn_service") { +@@ -170,7 +170,7 @@ component("webnn_service") { } } @@ -979,28 +1196,30 @@ diff --git a/services/webnn/features.gni b/services/webnn/features.gni diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webnn_context_provider_impl.cc --- a/services/webnn/webnn_context_provider_impl.cc +++ b/services/webnn/webnn_context_provider_impl.cc -@@ -211,17 +211,6 @@ void WebNNContextProviderImpl::CreateWebNNContext( - base::expected, mojom::ErrorPtr> - context_creation_results; - -- if (base::FeatureList::IsEnabled(mojom::features::kWebNNOnnxRuntime)) { -- context_creation_results = ort::CreateContextFromOptions( -- std::move(options), std::move(receiver), this); -- if (!context_creation_results.has_value()) { -- std::move(callback).Run(mojom::CreateContextResult::NewError( -- std::move(context_creation_results.error()))); -- return; +@@ -217,18 +217,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( + RecordDeviceType(options->device); + + #if BUILDFLAG(IS_WIN) +- if (ort::ShouldCreateOrtContext(*options)) { +- base::expected, std::string> +- env_creation_results = ort::Environment::Create(gpu_info_); +- if (!env_creation_results.has_value()) { +- LOG(ERROR) << "[WebNN] Failed to create ONNX Runtime context: " +- << env_creation_results.error(); +- } else { +- context_impl = std::make_unique( +- std::move(receiver), this, std::move(options), +- std::move(env_creation_results.value())); - } -- context_impl = std::move(context_creation_results.value()); -- } -- - if (!context_impl && dml::ShouldCreateDmlContext(*options)) { - context_creation_results = dml::CreateContextFromOptions( - std::move(options), gpu_feature_info_, gpu_info_, +- } else if (dml::ShouldCreateDmlContext(*options)) { ++ if (dml::ShouldCreateDmlContext(*options)) { + base::expected, mojom::ErrorPtr> + context_creation_results = dml::CreateContextFromOptions( + std::move(options), gpu_feature_info_, gpu_info_, diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc -@@ -1798,6 +1798,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( +@@ -1801,6 +1801,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( } bool HTMLDocumentParser::ShouldSkipPreloadScan() { @@ -1011,7 +1230,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc --- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc +++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc -@@ -660,6 +660,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { +@@ -662,6 +662,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { return; } @@ -1022,7 +1241,7 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3809,7 +3809,7 @@ +@@ -3734,7 +3734,7 @@ // // It also has some feature params defined throughout the codebase. name: "Prerender2", @@ -1030,5 +1249,5 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 + status: "test", }, { - name: "Presentation", + name: "PrerenderUntilScript", -- diff --git a/build/cromite_patches/Disable-all-promo-dialogs.patch b/build/cromite_patches/Disable-all-promo-dialogs.patch index 6b6512d7..76fee553 100644 --- a/build/cromite_patches/Disable-all-promo-dialogs.patch +++ b/build/cromite_patches/Disable-all-promo-dialogs.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1726,6 +1726,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1747,6 +1747,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } private boolean maybeShowPromo(Profile profile) { @@ -29,7 +29,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -167,7 +167,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -172,7 +172,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled, false); @@ -41,10 +41,10 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc --- a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc -@@ -40,6 +40,7 @@ ui::ElementContext ProfilePickerFeaturePromoController::GetAnchorContext() - user_education::FeaturePromoResult +@@ -36,6 +36,7 @@ user_education::FeaturePromoResult ProfilePickerFeaturePromoController::CanShowPromoForElement( - ui::TrackedElement* anchor_element) const { + ui::TrackedElement* anchor_element, + const user_education::UserEducationContextPtr&) const { + if ((true)) return user_education::FeaturePromoResult::kBlockedByUi; return ProfilePicker::IsOpen() ? user_education::FeaturePromoResult::Success() @@ -52,14 +52,14 @@ diff --git a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_contr diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc --- a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc +++ b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc -@@ -64,6 +64,7 @@ ui::ElementContext BrowserFeaturePromoController20::GetAnchorContext() const { - user_education::FeaturePromoResult +@@ -45,6 +45,7 @@ user_education::FeaturePromoResult BrowserFeaturePromoController20::CanShowPromoForElement( - ui::TrackedElement* anchor_element) const { + ui::TrackedElement* anchor_element, + const user_education::UserEducationContextPtr& context) const { + if ((true)) return user_education::FeaturePromoResult::kBlockedByUi; - // Trying to show an IPH while the browser is closing can cause problems; - // see https://crbug.com/346461762 for an example. This can also crash - // unit_tests that use a BrowserWindow but not a browser, so also check if + auto* const browser_context = context->AsA(); + CHECK(browser_context && browser_context->IsValid()); + auto* const browser_view = &browser_context->GetBrowserView(); diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java --- a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java +++ b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java @@ -74,7 +74,7 @@ diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/ diff --git a/chrome/browser/user_education/user_education_service_factory.cc b/chrome/browser/user_education/user_education_service_factory.cc --- a/chrome/browser/user_education/user_education_service_factory.cc +++ b/chrome/browser/user_education/user_education_service_factory.cc -@@ -113,6 +113,7 @@ UserEducationServiceFactory::BuildServiceInstanceForBrowserContextImpl( +@@ -112,6 +112,7 @@ UserEducationServiceFactory::BuildServiceInstanceForBrowserContextImpl( // static bool UserEducationServiceFactory::ProfileAllowsUserEducation(Profile* profile) { @@ -104,8 +104,8 @@ diff --git a/components/user_education/common/feature_promo/feature_promo_regist diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc --- a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc +++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc -@@ -100,6 +100,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon( - const FeaturePromoParams& params, +@@ -106,6 +106,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon( + const UserEducationContextPtr& context, ShowSource source, CanShowPromoOutputs* outputs) const { + if ((true)) return FeaturePromoResult::kBlockedByContext; @@ -115,17 +115,17 @@ diff --git a/components/user_education/common/feature_promo/impl/feature_promo_c diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc --- a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc +++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc -@@ -186,6 +186,7 @@ FeaturePromoController25::~FeaturePromoController25() { - +@@ -189,6 +189,7 @@ FeaturePromoController25::~FeaturePromoController25() { FeaturePromoResult FeaturePromoController25::CanShowPromo( - const FeaturePromoParams& params) const { + const FeaturePromoParams& params, + const UserEducationContextPtr& context) const { + if ((true)) return FeaturePromoResult::kBlockedByContext; auto* const spec = registry()->GetParamsForFeature(*params.feature); if (!spec) { return FeaturePromoResult::kError; -@@ -206,7 +207,7 @@ void FeaturePromoController25::MaybeShowStartupPromo( - - void FeaturePromoController25::MaybeShowPromo(FeaturePromoParams params) { +@@ -211,7 +212,7 @@ void FeaturePromoController25::MaybeShowStartupPromo( + void FeaturePromoController25::MaybeShowPromo(FeaturePromoParams params, + UserEducationContextPtr context) { auto* const spec = registry()->GetParamsForFeature(*params.feature); - if (!spec) { + if (((true)) || !spec) { diff --git a/build/cromite_patches/Disable-conversion-measurement-api.patch b/build/cromite_patches/Disable-conversion-measurement-api.patch index 334359a4..2dbba74e 100644 --- a/build/cromite_patches/Disable-conversion-measurement-api.patch +++ b/build/cromite_patches/Disable-conversion-measurement-api.patch @@ -12,7 +12,6 @@ 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 --- .../browser/aw_content_browser_client.cc | 3 + - ..._token_key_commitments_component_loader.cc | 1 + .../chromium/android_webview/AwSettings.java | 4 +- chrome/android/java/AndroidManifest.xml | 4 - .../ChromeSiteSettingsDelegate.java | 2 + @@ -47,14 +46,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/blink/renderer/core/page/page.cc | 2 +- .../platform/runtime_enabled_features.json5 | 20 +- ui/events/android/motion_event_android.cc | 8 +- - 36 files changed, 104 insertions(+), 430 deletions(-) + 35 files changed, 103 insertions(+), 430 deletions(-) create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1350,6 +1350,7 @@ network::mojom::AttributionSupport +@@ -1354,6 +1354,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, bool client_os_disabled) { @@ -62,7 +61,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv // WebView only supports OS-level attribution and not web-attribution. switch (state) { case AttributionReportingOsApiState::kDisabled: -@@ -1368,6 +1369,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -1372,6 +1373,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -71,21 +70,10 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv AwBrowserContext* aw_context = static_cast(browser_context); // WebView only supports OS-level attribution and not web-attribution. -diff --git a/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc b/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc ---- a/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc -+++ b/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc -@@ -20,6 +20,7 @@ namespace android_webview { - // Tokens is enabled. - void LoadTrustTokenKeyCommitmentsComponent( - ComponentLoaderPolicyVector& policies) { -+ if ((true)) return; - DVLOG(1) - << "Registering Trust Token Key Commitments component for loading in " - "embedded WebView."; diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java --- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java +++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java -@@ -173,7 +173,7 @@ public class AwSettings { +@@ -177,7 +177,7 @@ public class AwSettings { private boolean mSpatialNavigationEnabled; // Default depends on device features. private boolean mEnableSupportedHardwareAcceleratedFeatures; private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW; @@ -94,7 +82,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.ja @SpeculativeLoadingAllowedFlags private int mSpeculativeLoadingAllowedFlags = -@@ -1793,7 +1793,7 @@ public class AwSettings { +@@ -1804,7 +1804,7 @@ public class AwSettings { public void setAttributionBehavior(@AttributionBehavior int behavior) { synchronized (mAwSettingsLock) { if (mAttributionBehavior != behavior) { @@ -114,7 +102,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro $1 $i18n{title} @@ -65,7 +65,7 @@ diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_di diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js -@@ -109,7 +109,7 @@ function maybeSetWebFont() { +@@ -153,7 +153,7 @@ function maybeSetWebFont() { } const e = document.createElement('link'); diff --git a/build/cromite_patches/Disable-safety-check.patch b/build/cromite_patches/Disable-safety-check.patch index 14f16f36..33dd341a 100644 --- a/build/cromite_patches/Disable-safety-check.patch +++ b/build/cromite_patches/Disable-safety-check.patch @@ -4,27 +4,27 @@ Subject: Disable safety check License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 5 -- + chrome/android/BUILD.gn | 5 ---- chrome/android/chrome_java_sources.gni | 1 - .../android/java/res/xml/main_preferences.xml | 3 +- - .../PasswordCheckupLauncher.java | 57 +------------------ - .../settings/FragmentDependencyProvider.java | 32 ----------- + .../PasswordCheckupLauncher.java | 25 ---------------- + .../settings/FragmentDependencyProvider.java | 30 ------------------- .../chrome/browser/settings/MainSettings.java | 2 +- - .../settings/SettingsNavigationImpl.java | 13 +---- + .../settings/SettingsNavigationImpl.java | 13 ++------ chrome/browser/BUILD.gn | 1 - - chrome/browser/safety_check/android/BUILD.gn | 2 - - .../safety_check/SafetyCheckBridge.java | 4 +- - .../suggestions/action/OmniboxPedal.java | 3 - + chrome/browser/safety_check/android/BUILD.gn | 2 -- + .../safety_check/SafetyCheckBridge.java | 4 +-- + .../suggestions/action/OmniboxPedal.java | 3 -- chrome/browser/ui/tab_helpers.cc | 2 +- .../site_settings/SiteSettings.java | 2 +- .../Disable-safety-check.inc | 1 + - 14 files changed, 11 insertions(+), 117 deletions(-) + 14 files changed, 10 insertions(+), 84 deletions(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -466,7 +466,6 @@ if (_is_default_toolchain) { +@@ -459,7 +459,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:java", "//chrome/browser/regional_capabilities/android:java", "//chrome/browser/safe_browsing/android:java", @@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/safety_hub/android:java", "//chrome/browser/screenshot_monitor:java", "//chrome/browser/search_engines/android:java", -@@ -1120,8 +1119,6 @@ if (_is_default_toolchain) { +@@ -1136,8 +1135,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:junit", "//chrome/browser/recent_tabs/internal:junit", "//chrome/browser/safe_browsing/android:junit", @@ -41,7 +41,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/search_engines/android:junit", "//chrome/browser/search_resumption:junit", "//chrome/browser/serial/android:junit", -@@ -1400,8 +1397,6 @@ if (_is_default_toolchain) { +@@ -1425,8 +1422,6 @@ if (_is_default_toolchain) { "//chrome/browser/quick_delete:javatests", "//chrome/browser/renderer_host/android:javatests", "//chrome/browser/safe_browsing/android:javatests", @@ -53,7 +53,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -936,7 +936,6 @@ chrome_java_sources = [ +@@ -942,7 +942,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingPasswordReuseDialogBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingReferringAppBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingSettingsNavigation.java", @@ -77,24 +77,15 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java -@@ -18,7 +18,6 @@ import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.password_check.PasswordCheckFactory; +@@ -10,7 +10,6 @@ import org.chromium.base.supplier.ObservableSupplierImpl; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; import org.chromium.chrome.browser.settings.SettingsCustomTabLauncherImpl; import org.chromium.chrome.browser.settings.SettingsNavigationFactory; - import org.chromium.chrome.browser.sync.SyncServiceFactory; -@@ -32,8 +31,6 @@ public class PasswordCheckupLauncher { - @CalledByNative - private static void launchCheckupOnlineWithWindowAndroid( - @JniType("std::string") String checkupUrl, WindowAndroid windowAndroid) { -- if (windowAndroid.getContext().get() == null) return; // Window not available yet/anymore. -- launchCheckupOnlineWithActivity(checkupUrl, windowAndroid.getActivity().get()); - } - - @CalledByNative -@@ -42,75 +39,23 @@ public class PasswordCheckupLauncher { + import org.chromium.components.browser_ui.settings.SettingsNavigation.SettingsFragment; +@@ -26,38 +25,14 @@ public class PasswordCheckupLauncher { WindowAndroid windowAndroid, @PasswordCheckReferrer int passwordCheckReferrer, @Nullable String accountEmail) { @@ -103,46 +94,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage - assert profile != null; - - PasswordManagerHelper passwordManagerHelper = PasswordManagerHelper.getForProfile(profile); -- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LOGIN_DB_DEPRECATION_ANDROID)) { -- // This is invoked from the leak dialog if the compromised password is saved for other -- // sites. After the login DB deprecation, this code path is guaranteed to only be -- // executed for users with access to UPM, since they are the only ones with saved -- // passwords. -- passwordManagerHelper.showPasswordCheckup( -- windowAndroid.getContext().get(), -- passwordCheckReferrer, -- getModalDialogManagerSupplier(windowAndroid), -- accountEmail, -- new SettingsCustomTabLauncherImpl()); -- return; -- } -- -- // Force instantiation of GMSCore password check if GMSCore update is required. Password -- // check launch will fail and instead show the blocking dialog with the suggestion to -- // update. -- if (passwordManagerHelper.canUseUpm() -- || PasswordManagerUtilBridge.isGmsCoreUpdateRequired( -- UserPrefs.get(profile), SyncServiceFactory.getForProfile(profile))) { -- passwordManagerHelper.showPasswordCheckup( -- windowAndroid.getContext().get(), -- passwordCheckReferrer, -- getModalDialogManagerSupplier(windowAndroid), -- accountEmail, -- new SettingsCustomTabLauncherImpl()); -- return; -- } -- -- PasswordCheckFactory.getOrCreate() -- .showUi(windowAndroid.getContext().get(), passwordCheckReferrer); - } - - @CalledByNative - private static void launchCheckupOnlineWithActivity( - @JniType("std::string") String checkupUrl, Activity activity) { -- if (tryLaunchingNativePasswordCheckup(activity)) return; -- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(checkupUrl)); -- intent.setPackage(activity.getPackageName()); -- activity.startActivity(intent); +- // This is invoked from the leak dialog if the compromised password is saved for other +- // sites. After the login DB deprecation, this code path is guaranteed to only be +- // executed for users with access to UPM, since they are the only ones with saved +- // passwords. +- passwordManagerHelper.showPasswordCheckup( +- windowAndroid.getContext().get(), +- passwordCheckReferrer, +- getModalDialogManagerSupplier(windowAndroid), +- accountEmail, +- new SettingsCustomTabLauncherImpl()); } @CalledByNative @@ -162,19 +123,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage - .startSettings(windowAndroid.getContext().get(), SettingsFragment.SAFETY_CHECK); } - private static boolean tryLaunchingNativePasswordCheckup(Activity activity) { -- GooglePasswordManagerUIProvider googlePasswordManagerUiProvider = -- ServiceLoaderUtil.maybeCreate(GooglePasswordManagerUIProvider.class); -- if (googlePasswordManagerUiProvider == null) return false; -- return googlePasswordManagerUiProvider.launchPasswordCheckup(activity); -+ return false; - } - private static ObservableSupplier getModalDialogManagerSupplier( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -38,13 +38,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg +@@ -34,13 +34,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsBaseFragment; import org.chromium.chrome.browser.privacy_sandbox.TopicsManageFragment; import org.chromium.chrome.browser.profiles.Profile; @@ -188,17 +141,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate; -@@ -131,20 +124,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -127,18 +120,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl delegate.setSnackbarManagerSupplier(mSnackbarManagerSupplier); baseSiteSettingsFragment.setSiteSettingsDelegate(delegate); } - if (fragment instanceof SafetyCheckSettingsFragment) { - SafetyCheckCoordinator.create( - (SafetyCheckSettingsFragment) fragment, -- mProfile, - new SafetyCheckUpdatesDelegateImpl(), - new SafetyCheckBridge(mProfile), -- SigninAndHistorySyncActivityLauncherImpl.get(), - mModalDialogManagerSupplier, - SyncServiceFactory.getForProfile(mProfile), - UserPrefs.get(mProfile), @@ -206,10 +157,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme - PasswordManagerHelper.getForProfile(mProfile), - new SettingsCustomTabLauncherImpl()); - } - if (fragment instanceof PasswordCheckFragmentView) { - PasswordCheckComponentUiFactory.create( - (PasswordCheckFragmentView) fragment, -@@ -237,14 +216,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl + if (fragment instanceof CredentialEntryFragmentViewBase) { + CredentialEditUiFactory.create((CredentialEntryFragmentViewBase) fragment, mProfile); + } +@@ -224,14 +205,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl ((AutofillLocalIbanEditor) fragment) .setModalDialogManagerSupplier(mModalDialogManagerSupplier); } @@ -224,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } -@@ -259,8 +230,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -246,8 +219,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl if (fragment instanceof ManageSyncSettings) { ((ManageSyncSettings) fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } @@ -236,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -313,7 +313,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -306,7 +306,7 @@ public class MainSettings extends ChromeBaseSettingsFragment removePreferenceIfPresent(PREF_UI_THEME); } @@ -249,15 +200,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java @@ -18,8 +18,6 @@ import org.chromium.chrome.browser.autofill.settings.FinancialAccountsManagement + import org.chromium.chrome.browser.autofill.settings.NonCardPaymentMethodsManagementFragment; import org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragment; import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; -import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; -import org.chromium.chrome.browser.safety_hub.SafetyHubFragment; + import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings; import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; - import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; -@@ -46,10 +44,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { +@@ -47,10 +45,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { ClearBrowsingDataFragment.createFragmentArgs(context.getClass().getName()); break; case SettingsFragment.SAFETY_CHECK: @@ -269,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin case SettingsFragment.MAIN: case SettingsFragment.PAYMENT_METHODS: case SettingsFragment.SITE: -@@ -107,11 +102,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { +@@ -110,11 +105,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { case SettingsFragment.PAYMENT_METHODS: return AutofillPaymentMethodsFragment.class; case SettingsFragment.SAFETY_CHECK: @@ -285,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3442,7 +3442,6 @@ static_library("browser") { +@@ -3458,7 +3458,6 @@ static_library("browser") { "//chrome/browser/recent_tabs:jni_headers", "//chrome/browser/regional_capabilities", "//chrome/browser/safe_browsing/android:safe_browsing_enums", @@ -304,7 +255,7 @@ diff --git a/chrome/browser/safety_check/android/BUILD.gn b/chrome/browser/safet "//chrome/browser/signin:identity_manager_provider", "//components/password_manager/core/browser/leak_detection", "//components/prefs", -@@ -73,7 +72,6 @@ android_library("java") { +@@ -71,7 +70,6 @@ android_library("java") { srcjar_deps = [ ":bulk_leak_check_service_enums", @@ -336,7 +287,7 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java -@@ -56,9 +56,6 @@ public class OmniboxPedal extends OmniboxAction { +@@ -57,9 +57,6 @@ public class OmniboxPedal extends OmniboxAction { case OmniboxPedalId.UPDATE_CREDIT_CARD: delegate.openSettingsPage(SettingsFragment.PAYMENT_METHODS); break; diff --git a/build/cromite_patches/Disable-smart-selection-by-default.patch b/build/cromite_patches/Disable-smart-selection-by-default.patch index e625b2aa..502db654 100644 --- a/build/cromite_patches/Disable-smart-selection-by-default.patch +++ b/build/cromite_patches/Disable-smart-selection-by-default.patch @@ -45,18 +45,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearc 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 -@@ -257,6 +257,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kCCTEphemeralMode, +@@ -269,6 +269,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kCCTExtendTrustedCdnPublisher, &kCCTFixWarmup, &kCCTFreInSameTask, + &kChromeSmartSelection, &kCCTIncognitoAvailableToThirdParty, - &kCCTIntentFeatureOverrides, - &kCCTMinimized, + &kCCTMinimizedEnabledByDefault, + &kCCTNavigationalPrefetch, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -576,6 +576,7 @@ public abstract class ChromeFeatureList { +@@ -595,6 +595,7 @@ public abstract class ChromeFeatureList { "SearchInCCTAlternateTapHandlingIfEnabledByEmbedder"; public static final String SEARCH_RESUMPTION_MODULE_ANDROID = "SearchResumptionModuleAndroid"; public static final String SEED_ACCOUNTS_REVAMP = "SeedAccountsRevamp"; @@ -67,7 +67,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java -@@ -1089,7 +1089,6 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -1088,7 +1088,6 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper public boolean canWebSearch() { return hasSelection() && !isFocusedNodeEditable() diff --git a/build/cromite_patches/Disable-text-fragments-by-default.patch b/build/cromite_patches/Disable-text-fragments-by-default.patch index b79e95e0..5a15c353 100644 --- a/build/cromite_patches/Disable-text-fragments-by-default.patch +++ b/build/cromite_patches/Disable-text-fragments-by-default.patch @@ -74,7 +74,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -4794,9 +4794,14 @@ void Document::SetURL(const KURL& url) { +@@ -4944,9 +4944,14 @@ void Document::SetURL(const KURL& url) { TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, "url", new_url.GetString().Utf8()); @@ -92,7 +92,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -4973,10 +4973,9 @@ +@@ -4916,10 +4916,9 @@ }, { name: "TextFragmentIdentifiers", diff --git a/build/cromite_patches/Disable-third-party-origin-trials.patch b/build/cromite_patches/Disable-third-party-origin-trials.patch index 9476cf11..81f13caf 100644 --- a/build/cromite_patches/Disable-third-party-origin-trials.patch +++ b/build/cromite_patches/Disable-third-party-origin-trials.patch @@ -76,7 +76,7 @@ diff --git a/components/embedder_support/origin_trials/origin_trial_policy_impl. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -9581,7 +9581,6 @@ void NavigationRequest::SetSourceSiteInstanceToInitiatorIfNeeded() { +@@ -9693,7 +9693,6 @@ void NavigationRequest::SetSourceSiteInstanceToInitiatorIfNeeded() { void NavigationRequest::ForceEnableOriginTrials( const std::vector& trials) { DCHECK(!HasCommitted()); @@ -116,7 +116,7 @@ diff --git a/content/browser/renderer_host/origin_trial_state_host_impl.cc b/con diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -540,10 +540,6 @@ void FillNavigationParamsRequest( +@@ -530,10 +530,6 @@ void FillNavigationParamsRequest( common_params.initiator_origin.value(); } @@ -127,7 +127,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra navigation_params->was_discarded = commit_params.was_discarded; navigation_params->document_ukm_source_id = commit_params.document_ukm_source_id; -@@ -566,8 +562,8 @@ void FillNavigationParamsRequest( +@@ -556,8 +552,8 @@ void FillNavigationParamsRequest( navigation_params->had_transient_user_activation = common_params.has_user_gesture; @@ -138,7 +138,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra navigation_params->early_hints_preloaded_resources = base::ToVector( commit_params.early_hints_preloaded_resources, blink::ToWebURL); -@@ -654,7 +650,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams( +@@ -644,7 +640,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams( info->url_request.HasUserGesture(), info->url_request.HasTextFragmentToken(), info->should_check_main_world_content_security_policy, @@ -223,7 +223,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p } bool IsPagePopupRunningInWebTest(LocalFrame* frame) { -@@ -3239,10 +3229,6 @@ void DocumentLoader::CreateParserPostCommit() { +@@ -3228,10 +3218,6 @@ void DocumentLoader::CreateParserPostCommit() { mojom::blink::OriginTrialFeature::kTouchEventFeatureDetection); } diff --git a/build/cromite_patches/Disable-update-scheduler.patch b/build/cromite_patches/Disable-update-scheduler.patch index d72be243..15c241f3 100644 --- a/build/cromite_patches/Disable-update-scheduler.patch +++ b/build/cromite_patches/Disable-update-scheduler.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java -@@ -69,7 +69,7 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory { +@@ -73,7 +73,7 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory { case TaskIds.WEBAPK_UPDATE_JOB_ID: return new WebApkUpdateTask(); case TaskIds.COMPONENT_UPDATE_JOB_ID: diff --git a/build/cromite_patches/Disable-various-metrics.patch b/build/cromite_patches/Disable-various-metrics.patch index ef4374b7..0792410b 100644 --- a/build/cromite_patches/Disable-various-metrics.patch +++ b/build/cromite_patches/Disable-various-metrics.patch @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java -@@ -47,7 +47,7 @@ public abstract class FirstRunActivityBase extends FullscreenSigninAndHistorySyn +@@ -52,7 +52,7 @@ public abstract class FirstRunActivityBase extends FullscreenSigninAndHistorySyn static final String SHOW_SEARCH_ENGINE_PAGE = "ShowSearchEnginePage"; static final String SHOW_HISTORY_SYNC_PAGE = "ShowHistorySync"; @@ -54,15 +54,15 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br namespace { -@@ -270,7 +268,6 @@ void MostVisitedSitesBridge::RecordPageImpression( +@@ -263,7 +261,6 @@ void MostVisitedSitesBridge::AddOrRemoveBlockedUrl( + void MostVisitedSitesBridge::RecordPageImpression( JNIEnv* env, - const JavaParamRef& obj, jint jtiles_count) { - ntp_tiles::metrics::RecordPageImpression(jtiles_count); } void MostVisitedSitesBridge::RecordTileImpression( -@@ -282,15 +279,6 @@ void MostVisitedSitesBridge::RecordTileImpression( +@@ -274,15 +271,6 @@ void MostVisitedSitesBridge::RecordTileImpression( jint jtitle_source, jint jsource, const JavaParamRef& jurl) { @@ -78,7 +78,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br } void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( -@@ -300,11 +288,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( +@@ -291,11 +279,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( jint tile_type, jint title_source, jint source) { @@ -93,7 +93,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1165,7 +1165,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -1167,7 +1167,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { #endif // BUILDFLAG(IS_CHROMEOS) registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled, @@ -105,7 +105,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -1379,7 +1379,6 @@ ChromeContentBrowserClient::ChromeContentBrowserClient() { +@@ -1376,7 +1376,6 @@ ChromeContentBrowserClient::ChromeContentBrowserClient() { extra_parts_.push_back( std::make_unique()); #endif @@ -124,7 +124,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.c #include "chrome/browser/plugins/pdf_iframe_navigation_throttle.h" #include "chrome/browser/policy/policy_util.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/chrome_no_state_prefetch_contents_delegate.h" -@@ -252,18 +251,6 @@ void MaybeCreateAndAddVisitedLinkNavigationThrottle( +@@ -254,18 +253,6 @@ void MaybeCreateAndAddVisitedLinkNavigationThrottle( void CreateAndAddChromeThrottlesForNavigation( content::NavigationThrottleRegistry& registry) { content::NavigationHandle& handle = registry.GetNavigationHandle(); @@ -143,7 +143,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.c #if BUILDFLAG(IS_ANDROID) // TODO(davidben): This is insufficient to integrate with prerender properly. // https://crbug.com/370595 -@@ -369,8 +356,6 @@ void CreateAndAddChromeThrottlesForNavigation( +@@ -371,8 +358,6 @@ void CreateAndAddChromeThrottlesForNavigation( } } @@ -247,7 +247,7 @@ diff --git a/components/performance_manager/persistence/site_data/leveldb_site_d diff --git a/services/metrics/public/cpp/ukm_recorder.cc b/services/metrics/public/cpp/ukm_recorder.cc --- a/services/metrics/public/cpp/ukm_recorder.cc +++ b/services/metrics/public/cpp/ukm_recorder.cc -@@ -167,4 +167,5 @@ void UkmRecorder::RemoveObserver(Observer* observer) { +@@ -183,4 +183,5 @@ void UkmRecorder::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } diff --git a/build/cromite_patches/Do-not-build-API-keys-infobar.patch b/build/cromite_patches/Do-not-build-API-keys-infobar.patch index eb6ef860..8e41d7fa 100644 --- a/build/cromite_patches/Do-not-build-API-keys-infobar.patch +++ b/build/cromite_patches/Do-not-build-API-keys-infobar.patch @@ -4,26 +4,33 @@ Subject: Do not build API keys infobar License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/ui/BUILD.gn | 2 -- + chrome/browser/ui/startup/BUILD.gn | 2 -- chrome/browser/ui/startup/infobar_utils.cc | 4 ---- 2 files changed, 6 deletions(-) -diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn ---- a/chrome/browser/ui/BUILD.gn -+++ b/chrome/browser/ui/BUILD.gn -@@ -1132,8 +1132,6 @@ static_library("ui") { - "startup/default_browser_prompt/default_browser_prompt_manager.h", - "startup/default_browser_prompt/default_browser_prompt_prefs.cc", - "startup/default_browser_prompt/default_browser_prompt_prefs.h", -- "startup/google_api_keys_infobar_delegate.cc", -- "startup/google_api_keys_infobar_delegate.h", - "startup/infobar_utils.cc", - "startup/infobar_utils.h", - "startup/launch_mode_recorder.cc", +diff --git a/chrome/browser/ui/startup/BUILD.gn b/chrome/browser/ui/startup/BUILD.gn +--- a/chrome/browser/ui/startup/BUILD.gn ++++ b/chrome/browser/ui/startup/BUILD.gn +@@ -42,7 +42,6 @@ source_set("startup") { + if (!is_android) { + sources += [ + "automation_infobar_delegate.h", +- "google_api_keys_infobar_delegate.h", + "infobar_utils.h", + "launch_mode_recorder.h", + "obsolete_system_infobar_delegate.h", +@@ -155,7 +154,6 @@ source_set("impl") { + if (!is_android) { + sources += [ + "automation_infobar_delegate.cc", +- "google_api_keys_infobar_delegate.cc", + "infobar_utils.cc", + "launch_mode_recorder.cc", + "obsolete_system_infobar_delegate.cc", diff --git a/chrome/browser/ui/startup/infobar_utils.cc b/chrome/browser/ui/startup/infobar_utils.cc --- a/chrome/browser/ui/startup/infobar_utils.cc +++ b/chrome/browser/ui/startup/infobar_utils.cc -@@ -171,10 +171,6 @@ void AddInfoBarsIfNecessary(Browser* browser, +@@ -175,10 +175,6 @@ void AddInfoBarsIfNecessary(Browser* browser, infobars::ContentInfoBarManager* infobar_manager = infobars::ContentInfoBarManager::FromWebContents(web_contents); diff --git a/build/cromite_patches/Do-not-compile-QR-code-sharing.patch b/build/cromite_patches/Do-not-compile-QR-code-sharing.patch index 3f110c63..cc46034c 100644 --- a/build/cromite_patches/Do-not-compile-QR-code-sharing.patch +++ b/build/cromite_patches/Do-not-compile-QR-code-sharing.patch @@ -19,7 +19,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -3054,7 +3054,6 @@ if (_is_default_toolchain) { +@@ -3063,7 +3063,6 @@ if (_is_default_toolchain) { "../browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextBridge.java", "../browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabService.java", "../browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabServiceFactory.java", @@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -115,7 +115,6 @@ import org.chromium.chrome.browser.recent_tabs.RestoreTabsFeatureHelper; +@@ -118,7 +118,6 @@ import org.chromium.chrome.browser.recent_tabs.RestoreTabsFeatureHelper; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; @@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager; import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController; -@@ -590,10 +589,6 @@ public class RootUiCoordinator +@@ -609,10 +608,6 @@ public class RootUiCoordinator } public void onAttachFragment(Fragment fragment) { @@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi 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 -@@ -1953,7 +1953,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1868,7 +1868,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kUiAutomationProviderEnabled, false); #endif @@ -155,7 +155,7 @@ diff --git a/chrome/browser/sharing_hub/sharing_hub_features.cc b/chrome/browser diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc -@@ -1937,10 +1937,10 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { +@@ -1964,10 +1964,10 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { command_updater_.UpdateCommandEnabled(IDC_CHROME_WHATS_NEW, show_main_ui); #endif command_updater_.UpdateCommandEnabled(IDC_CONTENT_CONTEXT_SHARING_SUBMENU, @@ -172,7 +172,7 @@ diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc -@@ -1852,6 +1852,7 @@ void SendTabToSelf(Browser* browser) { +@@ -1871,6 +1871,7 @@ void SendTabToSelf(Browser* browser) { } bool CanGenerateQrCode(const Browser* browser) { @@ -183,7 +183,7 @@ diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_c diff --git a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc --- a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc +++ b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc -@@ -37,6 +37,7 @@ QRCodeGeneratorBubbleController::~QRCodeGeneratorBubbleController() { +@@ -38,6 +38,7 @@ QRCodeGeneratorBubbleController::~QRCodeGeneratorBubbleController() { // static bool QRCodeGeneratorBubbleController::IsGeneratorAvailable(const GURL& url) { diff --git a/build/cromite_patches/Do-not-ignore-download-location-prompt-setting.patch b/build/cromite_patches/Do-not-ignore-download-location-prompt-setting.patch index cd01c593..87e0fa77 100644 --- a/build/cromite_patches/Do-not-ignore-download-location-prompt-setting.patch +++ b/build/cromite_patches/Do-not-ignore-download-location-prompt-setting.patch @@ -10,13 +10,13 @@ Do not tick "Don't show again" by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../DownloadLocationDialogCoordinator.java | 16 ---------------- - 1 file changed, 16 deletions(-) + .../DownloadLocationDialogCoordinator.java | 17 ----------------- + 1 file changed, 17 deletions(-) diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java -@@ -159,22 +159,6 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. +@@ -160,23 +160,6 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. assertNonNull(mSuggestedPath); assertNonNull(mProfile); @@ -31,7 +31,8 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse - if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) { - assert !TextUtils.isEmpty(dir.location); - DownloadDialogBridge.setDownloadAndSaveFileDefaultDirectory(mProfile, dir.location); -- mController.onDownloadLocationDialogComplete(mSuggestedPath); +- mController.onDownloadLocationDialogComplete( +- mSuggestedPath, /* didUserConfirm= */ false); - } - return; - } diff --git a/build/cromite_patches/Do-not-link-with-libatomic.patch b/build/cromite_patches/Do-not-link-with-libatomic.patch index 78def690..75240599 100644 --- a/build/cromite_patches/Do-not-link-with-libatomic.patch +++ b/build/cromite_patches/Do-not-link-with-libatomic.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -1104,7 +1104,7 @@ component("base") { +@@ -1112,7 +1112,7 @@ component("base") { # more robust check for this. if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos)) && host_toolchain != "//build/toolchain/cros:host") { diff --git a/build/cromite_patches/Do-not-store-passwords-by-default.patch b/build/cromite_patches/Do-not-store-passwords-by-default.patch index baf2d031..60be8719 100644 --- a/build/cromite_patches/Do-not-store-passwords-by-default.patch +++ b/build/cromite_patches/Do-not-store-passwords-by-default.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc -@@ -411,7 +411,7 @@ void RecordProvisionalSaveFailure( +@@ -504,7 +504,7 @@ void HandleFailedLoginDetectionForPasswordChange( void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( @@ -19,7 +19,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); #if BUILDFLAG(IS_IOS) // Deprecated pref in profile prefs. -@@ -419,7 +419,7 @@ void PasswordManager::RegisterProfilePrefs( +@@ -512,7 +512,7 @@ void PasswordManager::RegisterProfilePrefs( false); #endif // BUILDFLAG(IS_IOS) registry->RegisterBooleanPref( @@ -28,7 +28,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); registry->RegisterBooleanPref( prefs::kWasAutoSignInFirstRunExperienceShown, false, -@@ -456,9 +456,9 @@ void PasswordManager::RegisterProfilePrefs( +@@ -549,9 +549,9 @@ void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref(prefs::kPasswordsPrefWithNewLabelUsed, false); #if BUILDFLAG(IS_ANDROID) @@ -37,7 +37,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp registry->RegisterBooleanPref(prefs::kAccountStorageNoticeShown, false); - registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, true); + registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, false); - registry->RegisterBooleanPref(prefs::kSettingsMigratedToUPMLocal, false); + RegisterLegacySplitStoresPref(registry); + registry->RegisterStringPref(prefs::kUPMErrorUIShownTimestamp, "0"); registry->RegisterIntegerPref( - prefs::kCurrentMigrationVersionToGoogleMobileServices, 0); -- diff --git a/build/cromite_patches/Enable-Certificate-Transparency.patch b/build/cromite_patches/Enable-Certificate-Transparency.patch index 248716ae..39875368 100644 --- a/build/cromite_patches/Enable-Certificate-Transparency.patch +++ b/build/cromite_patches/Enable-Certificate-Transparency.patch @@ -24,10 +24,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h -@@ -34,6 +34,7 @@ BASE_DECLARE_FEATURE(kAllowUnmutedAutoplayForTWA); - BASE_DECLARE_FEATURE(kAutocompleteActionPredictorConfidenceCutoff); +@@ -35,6 +35,7 @@ BASE_DECLARE_FEATURE(kAutocompleteActionPredictorConfidenceCutoff); BASE_DECLARE_FEATURE(kBookmarksTreeView); BASE_DECLARE_FEATURE(kBookmarkTriggerForPrerender2); + BASE_DECLARE_FEATURE(kBookmarkTriggerForPreconnect); +BASE_DECLARE_FEATURE(kCertificateTransparency); BASE_DECLARE_FEATURE(kCertificateTransparencyAskBeforeEnabling); BASE_DECLARE_FEATURE(kCertVerificationNetworkTime); @@ -35,7 +35,7 @@ diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -1042,7 +1042,7 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() { +@@ -1110,7 +1110,7 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() { // - on an opt-in basis for other builds and embedders, controlled with the // kCertificateTransparencyAskBeforeEnabling flag return base::FeatureList::IsEnabled( @@ -94,7 +94,7 @@ new file mode 100644 diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc -@@ -191,6 +191,7 @@ class HSTSPreloadDecoder : public extras::PreloadDecoder { +@@ -183,6 +183,7 @@ class HSTSPreloadDecoder : public extras::PreloadDecoder { bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { #if !BUILDFLAG(INCLUDE_TRANSPORT_SECURITY_STATE_PRELOAD_LIST) diff --git a/build/cromite_patches/Enable-HEVC-by-default.patch b/build/cromite_patches/Enable-HEVC-by-default.patch index 7210a08a..fe72fe85 100644 --- a/build/cromite_patches/Enable-HEVC-by-default.patch +++ b/build/cromite_patches/Enable-HEVC-by-default.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -328,8 +328,8 @@ BASE_FEATURE(kEnableTabMuting, +@@ -331,8 +331,8 @@ BASE_FEATURE(kEnableTabMuting, #if BUILDFLAG(ENABLE_PLATFORM_HEVC) // Enables HEVC hardware accelerated decoding. BASE_FEATURE(kPlatformHEVCDecoderSupport, diff --git a/build/cromite_patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch b/build/cromite_patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch index c73bc3a4..074e43a7 100644 --- a/build/cromite_patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch +++ b/build/cromite_patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch @@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -1402,7 +1402,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( +@@ -1399,7 +1399,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( registry->RegisterFilePathPref(prefs::kDiskCacheDir, base::FilePath()); registry->RegisterIntegerPref(prefs::kDiskCacheSize, 0); registry->RegisterStringPref(prefs::kIsolateOrigins, std::string()); @@ -49,7 +49,7 @@ diff --git a/components/site_isolation/site_isolation_policy.cc b/components/sit // The memory threshold behavior differs for desktop and Android: // - Android uses a 1900MB default threshold for partial site isolation modes // and a 3200MB default threshold for strict site isolation. See docs in -@@ -204,6 +205,7 @@ bool SiteIsolationPolicy::IsOriginIsolationForJsOptExceptionsEnabled() { +@@ -209,6 +210,7 @@ bool SiteIsolationPolicy::IsOriginIsolationForJsOptExceptionsSupported() { // static bool SiteIsolationPolicy::IsEnterprisePolicyApplicable() { @@ -57,7 +57,7 @@ diff --git a/components/site_isolation/site_isolation_policy.cc b/components/sit #if BUILDFLAG(IS_ANDROID) // https://crbug.com/844118: Limiting policy to devices with > 1GB RAM. // Using 1077 rather than 1024 because it helps ensure that devices with -@@ -219,6 +221,7 @@ bool SiteIsolationPolicy::IsEnterprisePolicyApplicable() { +@@ -224,6 +226,7 @@ bool SiteIsolationPolicy::IsEnterprisePolicyApplicable() { // static bool SiteIsolationPolicy::ShouldDisableSiteIsolationDueToMemoryThreshold( content::SiteIsolationMode site_isolation_mode) { diff --git a/build/cromite_patches/Enable-darken-websites-checkbox-in-themes.patch b/build/cromite_patches/Enable-darken-websites-checkbox-in-themes.patch index 3fbf0837..490248c5 100644 --- a/build/cromite_patches/Enable-darken-websites-checkbox-in-themes.patch +++ b/build/cromite_patches/Enable-darken-websites-checkbox-in-themes.patch @@ -14,13 +14,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -2053,9 +2053,9 @@ +@@ -2064,9 +2064,9 @@ "expiry_milestone": -1 }, { - "name": "darken-websites-checkbox-in-themes-setting", - "owners": [ "nemco@google.com", "wenyufu@google.com", "twellington@chromium.org" ], -- "expiry_milestone": 140 +- "expiry_milestone": 150 + "name": "darken-websites-checkbox-in-themes-setting", // this is always enabled in Bromite + "owners": [ "nemco@google.com", "wenyufu@google.com", "twellington@chromium.org" ], // - + "expiry_milestone": -1 diff --git a/build/cromite_patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch b/build/cromite_patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch index 40abf0f5..2e5487b3 100644 --- a/build/cromite_patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch +++ b/build/cromite_patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch @@ -45,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -417,6 +417,10 @@ config("compiler") { +@@ -452,6 +452,10 @@ config("compiler") { } } diff --git a/build/cromite_patches/Enable-native-Android-autofill.patch b/build/cromite_patches/Enable-native-Android-autofill.patch index d83077ed..875b166d 100644 --- a/build/cromite_patches/Enable-native-Android-autofill.patch +++ b/build/cromite_patches/Enable-native-Android-autofill.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../settings/PasswordSettings.java | 83 +++++++++++- .../chrome/browser/settings/MainSettings.java | 2 +- .../chromium/chrome/browser/tab/TabImpl.java | 41 +++++- - chrome/browser/about_flags.cc | 31 ----- + chrome/browser/about_flags.cc | 33 ----- chrome/browser/android/tab_android.cc | 3 +- chrome/browser/autofill/android/BUILD.gn | 2 +- .../autofill/AutofillClientProviderUtils.java | 2 +- @@ -49,23 +49,22 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../autofill/core/common/autofill_features.h | 22 ---- .../autofill/core/common/autofill_prefs.cc | 4 +- .../autofill/core/common/autofill_prefs.h | 5 + - 34 files changed, 277 insertions(+), 210 deletions(-) + 34 files changed, 277 insertions(+), 212 deletions(-) create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java -@@ -27,7 +27,9 @@ import androidx.preference.PreferenceCategory; +@@ -27,6 +27,8 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceGroup; import org.chromium.base.BuildInfo; +import org.chromium.base.StrictModeContext; - import org.chromium.base.metrics.RecordHistogram; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.build.annotations.Nullable; -@@ -60,6 +62,11 @@ import java.lang.annotation.Retention; +@@ -58,6 +60,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Locale; @@ -77,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage /** * The "Passwords" screen in Settings, which allows the user to enable or disable password saving, * to view saved passwords (just the username and URL), and to delete saved passwords. -@@ -69,7 +76,7 @@ import java.util.Locale; +@@ -65,7 +72,7 @@ import java.util.Locale; public class PasswordSettings extends ChromeBaseSettingsFragment implements PasswordListObserver, Preference.OnPreferenceClickListener, @@ -86,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage @IntDef({ TrustedVaultBannerState.NOT_SHOWN, TrustedVaultBannerState.OFFER_OPT_IN, -@@ -99,6 +106,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -95,6 +102,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment public static final String PREF_TRUSTED_VAULT_BANNER = "trusted_vault_banner"; public static final String PREF_KEY_MANAGE_ACCOUNT_LINK = "manage_account_link"; @@ -99,7 +98,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage private static final String PREF_KEY_CATEGORY_SAVED_PASSWORDS = "saved_passwords"; private static final String PREF_KEY_CATEGORY_EXCEPTIONS = "exceptions"; private static final String PREF_KEY_SAVED_PASSWORDS_NO_TEXT = "saved_passwords_no_text"; -@@ -131,6 +144,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -127,6 +140,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment private Preference mLinkPref; private Menu mMenu; @@ -108,7 +107,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage private @ManagePasswordsReferrer int mManagePasswordsReferrer; private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); -@@ -315,6 +330,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -321,6 +336,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment } createSavePasswordsSwitch(); @@ -116,7 +115,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage if (shouldShowAutoSigninOption()) { createAutoSignInCheckbox(); } -@@ -588,6 +604,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -589,6 +605,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE)); } @@ -191,7 +190,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -449,7 +449,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -442,7 +442,7 @@ public class MainSettings extends ChromeBaseSettingsFragment } private void updateAutofillPreferences() { @@ -217,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -1128,6 +1135,11 @@ class TabImpl implements Tab { +@@ -1133,6 +1140,11 @@ class TabImpl implements Tab { for (TabObserver observer : mObservers) observer.onDestroyed(this); mObservers.clear(); @@ -229,7 +228,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1436,6 +1448,7 @@ class TabImpl implements Tab { +@@ -1443,6 +1455,7 @@ class TabImpl implements Tab { * @return iff the AutofillProvider should provide a ViewStructure when prompted. */ boolean providesAutofillStructure() { @@ -237,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (!ChromeFeatureList.isEnabled( AutofillFeatures.AUTOFILL_VIRTUAL_VIEW_STRUCTURE_ANDROID)) { return false; -@@ -2243,16 +2256,21 @@ class TabImpl implements Tab { +@@ -2249,16 +2262,21 @@ class TabImpl implements Tab { * @return true if the the provider is available for the given WebContents. */ private boolean prepareAutofillProvider(WebContents newWebContents) { @@ -265,7 +264,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mAutofillProvider = new AutofillProvider( getContext(), -@@ -2261,7 +2279,16 @@ class TabImpl implements Tab { +@@ -2267,7 +2285,16 @@ class TabImpl implements Tab { getContext().getString(R.string.app_name)); TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid); } @@ -286,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -3957,28 +3957,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { +@@ -3989,28 +3989,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { std::size(kLinkPreviewTriggerTypeLongPress), nullptr}}; #endif // !BUILDFLAG(IS_ANDROID) @@ -315,10 +314,11 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::FeatureParam kGroupSuggestionEnableRecentlyOpenedOnly[] = { {"group_suggestion_enable_recently_opened", "true"}, {"group_suggestion_enable_switch_between", "false"}, -@@ -6574,15 +6552,6 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6617,17 +6595,6 @@ const FeatureEntry kFeatureEntries[] = { + SINGLE_VALUE_TYPE(ui_devtools::switches::kEnableUiDevTools)}, #endif // BUILDFLAG(IS_CHROMEOS) - #if BUILDFLAG(IS_ANDROID) +-#if BUILDFLAG(IS_ANDROID) - {"enable-autofill-virtual-view-structure", - flag_descriptions::kAutofillVirtualViewStructureAndroidName, - flag_descriptions::kAutofillVirtualViewStructureAndroidDescription, @@ -327,14 +327,15 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc - autofill::features::kAutofillVirtualViewStructureAndroid, - kAutofillVirtualViewStructureVariation, - "Skip AutofillService Check")}, +-#endif - - {"suppress-autofill-via-accessibility", - flag_descriptions::kAutofillDeprecateAccessibilityApiName, - flag_descriptions::kAutofillDeprecateAccessibilityApiDescription, + #if BUILDFLAG(IS_CHROMEOS) + {"enable-touchscreen-calibration", + flag_descriptions::kTouchscreenCalibrationName, diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc --- a/chrome/browser/android/tab_android.cc +++ b/chrome/browser/android/tab_android.cc -@@ -424,8 +424,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { +@@ -444,8 +444,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { ->MaybeInitKeyboardSuppressor(); return; } @@ -347,7 +348,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/android/BUILD.gn --- a/chrome/browser/autofill/android/BUILD.gn +++ b/chrome/browser/autofill/android/BUILD.gn -@@ -163,7 +163,7 @@ android_library("bottom_sheet_utils_java") { +@@ -164,7 +164,7 @@ android_library("bottom_sheet_utils_java") { generate_jni("jni_headers") { sources = [ "java/src/org/chromium/chrome/browser/autofill/AddressNormalizerFactory.java", @@ -383,7 +384,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -988,12 +988,6 @@ const char kAutofillVcnEnrollStrikeExpiryTimeDescription[] = +@@ -984,12 +984,6 @@ const char kAutofillVcnEnrollStrikeExpiryTimeDescription[] = "When enabled, changes the amount of time required for VCN enrollment " "prompt strikes to expire."; @@ -399,7 +400,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -588,9 +588,6 @@ extern const char kAutofillVcnEnrollRequestTimeoutDescription[]; +@@ -594,9 +594,6 @@ extern const char kAutofillUploadCardRequestTimeoutDescription[]; extern const char kAutofillVcnEnrollStrikeExpiryTimeName[]; extern const char kAutofillVcnEnrollStrikeExpiryTimeDescription[]; @@ -412,9 +413,9 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -709,6 +709,12 @@ For more settings that use data to improve your Chrome experience, go to - Save passwords +@@ -311,6 +311,12 @@ CHAR_LIMIT guidelines: + + You and Google + + Enable native Android autofill @@ -422,8 +423,8 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + + Enable native Android autofill in incognito + - - Auto Sign-in + + Sign in to Chrome diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/browser/ui/autofill/autofill_client_provider.cc --- a/chrome/browser/ui/autofill/autofill_client_provider.cc @@ -634,7 +635,7 @@ diff --git a/components/android_autofill/browser/BUILD.gn b/components/android_a diff --git a/components/android_autofill/browser/android_autofill_manager.cc b/components/android_autofill/browser/android_autofill_manager.cc --- a/components/android_autofill/browser/android_autofill_manager.cc +++ b/components/android_autofill/browser/android_autofill_manager.cc -@@ -34,6 +34,8 @@ AndroidAutofillManager::~AndroidAutofillManager() { +@@ -36,6 +36,8 @@ AndroidAutofillManager::~AndroidAutofillManager() { Reset(); } @@ -658,7 +659,7 @@ diff --git a/components/android_autofill/browser/android_autofill_manager.h b/co diff --git a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillManagerWrapper.java b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillManagerWrapper.java --- a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillManagerWrapper.java +++ b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillManagerWrapper.java -@@ -58,6 +58,7 @@ public class AutofillManagerWrapper { +@@ -59,6 +59,7 @@ public class AutofillManagerWrapper { AutofillManagerWrapper manager = mManager.get(); if (manager == null) return; manager.mIsAutofillInputUiShowing = (event == EVENT_INPUT_SHOWN); @@ -666,7 +667,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component if (event == EVENT_INPUT_SHOWN) manager.notifyInputUiChange(); } } -@@ -125,6 +126,7 @@ public class AutofillManagerWrapper { +@@ -129,6 +130,7 @@ public class AutofillManagerWrapper { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { ComponentName componentName = getAutofillServiceComponentName(autofillManager); @@ -674,7 +675,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component if (componentName != null) { mPackageName = componentName.getPackageName(); mIsAwGCurrentAutofillService = -@@ -346,7 +348,7 @@ public class AutofillManagerWrapper { +@@ -350,7 +352,7 @@ public class AutofillManagerWrapper { /** Always check isLoggable() before call this method. */ public static void log(String log) { // Log.i() instead of Log.d() is used here because Log.d() is stripped out in release build. @@ -683,7 +684,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component } public static boolean isLoggable() { -@@ -360,5 +362,6 @@ public class AutofillManagerWrapper { +@@ -364,5 +366,6 @@ public class AutofillManagerWrapper { // NOTE: See the comment on TAG above for why this is still AwAutofillManager. // Check the system setting directly. sIsLoggable = android.util.Log.isLoggable(TAG, Log.DEBUG); @@ -818,7 +819,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co }, source, Lift(source, std::forward(args))...); } -@@ -656,6 +663,10 @@ ContentAutofillDriver::GetAutofillAgent() { +@@ -657,6 +664,10 @@ ContentAutofillDriver::GetAutofillAgent() { return autofill_agent_; } @@ -845,7 +846,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com content::RenderFrameHost* render_frame_host() { return &*render_frame_host_; } const content::RenderFrameHost* render_frame_host() const { return &*render_frame_host_; -@@ -306,6 +312,10 @@ class ContentAutofillDriver : public AutofillDriver, +@@ -307,6 +313,10 @@ class ContentAutofillDriver : public AutofillDriver, // The factory that created this driver. Outlives `this`. const raw_ref owner_; @@ -888,7 +889,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc -@@ -1541,14 +1541,19 @@ void AutofillAgent::ShowSuggestions( +@@ -1554,14 +1554,19 @@ void AutofillAgent::ShowSuggestions( password_generation_agent_->ShowPasswordGenerationSuggestions( input_element, form_cache)) { is_popup_possibly_visible_ = true; @@ -926,7 +927,7 @@ diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/c diff --git a/components/autofill/core/browser/foundations/autofill_driver.h b/components/autofill/core/browser/foundations/autofill_driver.h --- a/components/autofill/core/browser/foundations/autofill_driver.h +++ b/components/autofill/core/browser/foundations/autofill_driver.h -@@ -150,6 +150,8 @@ class AutofillDriver { +@@ -151,6 +151,8 @@ class AutofillDriver { // Returns the AutofillManager owned by the AutofillDriver. virtual AutofillManager& GetAutofillManager() = 0; @@ -952,7 +953,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_driver_factor diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/components/autofill/core/browser/foundations/autofill_manager.h --- a/components/autofill/core/browser/foundations/autofill_manager.h +++ b/components/autofill/core/browser/foundations/autofill_manager.h -@@ -222,6 +222,8 @@ class AutofillManager +@@ -223,6 +223,8 @@ class AutofillManager LifecycleState new_state, base::PassKey pass_key); @@ -964,7 +965,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.cc b/components/autofill/core/browser/foundations/browser_autofill_manager.cc --- a/components/autofill/core/browser/foundations/browser_autofill_manager.cc +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.cc -@@ -730,6 +730,8 @@ base::WeakPtr BrowserAutofillManager::GetWeakPtr() { +@@ -753,6 +753,8 @@ base::WeakPtr BrowserAutofillManager::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } @@ -976,7 +977,7 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h --- a/components/autofill/core/browser/foundations/browser_autofill_manager.h +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h -@@ -121,6 +121,8 @@ class BrowserAutofillManager : public AutofillManager { +@@ -120,6 +120,8 @@ class BrowserAutofillManager : public AutofillManager { ~BrowserAutofillManager() override; @@ -988,7 +989,7 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -790,7 +790,7 @@ BASE_FEATURE(kAutofillThirdPartyModeContentProvider, +@@ -948,7 +948,7 @@ BASE_FEATURE(kAutofillThirdPartyModeContentProvider, BASE_FEATURE(kAutofillVirtualViewStructureAndroid, "AutofillVirtualViewStructureAndroid", base::FEATURE_ENABLED_BY_DEFAULT); @@ -1000,7 +1001,7 @@ diff --git a/components/autofill/core/common/autofill_features.cc b/components/a diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h -@@ -291,28 +291,6 @@ COMPONENT_EXPORT(AUTOFILL) +@@ -338,28 +338,6 @@ COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillThirdPartyModeContentProvider); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillVirtualViewStructureAndroid); @@ -1032,7 +1033,7 @@ diff --git a/components/autofill/core/common/autofill_features.h b/components/au diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc --- a/components/autofill/core/common/autofill_prefs.cc +++ b/components/autofill/core/common/autofill_prefs.cc -@@ -54,6 +54,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -56,6 +56,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(kAutofillCreditCardFidoAuthOfferCheckboxState, true); #endif @@ -1041,8 +1042,8 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto registry->RegisterIntegerPref(kAutocompleteLastVersionRetentionPolicy, 0); registry->RegisterStringPref(kAutofillUploadEncodingSeed, ""); registry->RegisterDictionaryPref(kAutofillVoteUploadEvents); -@@ -89,7 +91,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { - false); +@@ -95,7 +97,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { + #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) - registry->RegisterBooleanPref(kAutofillUsingVirtualViewStructure, false); diff --git a/build/cromite_patches/Enable-network-isolation-features.patch b/build/cromite_patches/Enable-network-isolation-features.patch index 85057218..76673151 100644 --- a/build/cromite_patches/Enable-network-isolation-features.patch +++ b/build/cromite_patches/Enable-network-isolation-features.patch @@ -9,27 +9,29 @@ PartitionNelAndReportingByNetworkIsolationKey, kSplitCacheByNavigationInitiator License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../browser/net/profile_network_context_service.cc | 2 +- + .../browser/net/profile_network_context_service.cc | 4 ++-- .../Enable-network-isolation-features.inc | 9 +++++++++ .../Enable-network-isolation-features.inc | 1 + net/http/http_cache.cc | 14 +++++++++----- net/http/http_cache.h | 2 +- - 5 files changed, 21 insertions(+), 7 deletions(-) + 5 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 cromite_flags/net/base/features_cc/Enable-network-isolation-features.inc create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Enable-network-isolation-features.inc diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -1285,7 +1285,7 @@ bool GetHttpCacheBackendResetParam(PrefService* local_state) { - field_trial = base::FeatureList::GetFieldTrial( - net::features::kSplitCacheByIncludeCredentials); - current_field_trial_status += -- (field_trial ? field_trial->group_name() : "None"); -+ (field_trial ? field_trial->group_name() : "EnableFeatureForTests"); +@@ -467,8 +467,8 @@ bool GetHttpCacheBackendResetParam(PrefService* local_state) { + experiment_parts.push_back(kDiskCacheExperimentNameNone); + // SplitCacheByIncludeCredentials experiment: + experiment_parts.push_back(credentials_field_trial +- ? credentials_field_trial->group_name() +- : kDiskCacheExperimentNameNone); ++ ? "EnableFeatureForTests" ++ : "EnableFeatureForTests"); - if (disk_cache::InBackendExperiment()) { - if (disk_cache::InSimpleBackendExperimentGroup()) { + // Add the disk cache backend experiment group if active. + std::string_view backend_experiment = GetDiskCacheBackendExperimentString(); diff --git a/cromite_flags/net/base/features_cc/Enable-network-isolation-features.inc b/cromite_flags/net/base/features_cc/Enable-network-isolation-features.inc new file mode 100644 --- /dev/null @@ -53,7 +55,7 @@ new file mode 100644 diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc --- a/net/http/http_cache.cc +++ b/net/http/http_cache.cc -@@ -652,7 +652,7 @@ bool HttpCache::CanGenerateCacheKeyForRequest(const HttpRequestInfo* request) { +@@ -671,7 +671,7 @@ bool HttpCache::CanGenerateCacheKeyForRequest(const HttpRequestInfo* request) { // static // Generate a key that can be used inside the cache. @@ -62,7 +64,7 @@ diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc const GURL& url, int load_flags, const NetworkIsolationKey& network_isolation_key, -@@ -690,8 +690,8 @@ std::string HttpCache::GenerateCacheKey( +@@ -709,8 +709,8 @@ std::string HttpCache::GenerateCacheKey( const bool is_initiator_cross_site = !net::SchemefulSite::IsSameSite(*initiator, url::Origin::Create(url)); if (is_initiator_cross_site) { @@ -73,7 +75,7 @@ diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc } } isolation_key = base::StrCat( -@@ -706,9 +706,11 @@ std::string HttpCache::GenerateCacheKey( +@@ -725,9 +725,11 @@ std::string HttpCache::GenerateCacheKey( // Strip out the reference, username, and password sections of the URL and // concatenate with the credential_key, the post_key, and the network // isolation key if we are splitting the cache. @@ -86,7 +88,7 @@ diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc } // static -@@ -731,11 +733,13 @@ HttpCache::GenerateCacheKeyForRequestWithAlternateURL( +@@ -750,11 +752,13 @@ HttpCache::GenerateCacheKeyForRequestWithAlternateURL( const int64_t upload_data_identifier = request->upload_data_stream ? request->upload_data_stream->identifier() : int64_t(0); diff --git a/build/cromite_patches/Enable-share-intent.patch b/build/cromite_patches/Enable-share-intent.patch index a91c2954..4dcda688 100644 --- a/build/cromite_patches/Enable-share-intent.patch +++ b/build/cromite_patches/Enable-share-intent.patch @@ -34,7 +34,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -582,6 +582,7 @@ chrome_java_resources = [ +@@ -570,6 +570,7 @@ chrome_java_resources = [ "java/res/layout/shopping_accessory_view_layout.xml", "java/res/layout/status_indicator_container.xml", "java/res/layout/suggestions_tile_view_condensed.xml", @@ -45,7 +45,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -982,6 +982,7 @@ chrome_java_sources = [ +@@ -988,6 +988,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/signin/SigninCheckerProvider.java", "java/src/org/chromium/chrome/browser/signin/SigninFirstRunFragment.java", "java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java", @@ -56,7 +56,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -253,12 +253,6 @@ by a child template that "extends" this file. +@@ -260,12 +260,6 @@ by a child template that "extends" this file. @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -337,6 +331,10 @@ by a child template that "extends" this file. +@@ -344,6 +338,10 @@ by a child template that "extends" this file. @@ -80,7 +80,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -373,6 +371,24 @@ by a child template that "extends" this file. +@@ -380,6 +378,24 @@ by a child template that "extends" this file. @@ -211,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j /** A hash code for the URL to verify intent data hasn't been modified. */ public static final String EXTRA_DATA_HASH_CODE = "org.chromium.chrome.browser.data_hash"; -@@ -1461,6 +1464,17 @@ public class IntentHandler { +@@ -1514,6 +1517,17 @@ public class IntentHandler { return TabGroupMetadata.maybeCreateFromBundle(bundle); } @@ -229,7 +229,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j /** * Creates an Intent that will launch a ChromeTabbedActivity on the new tab page. The Intent * will be trusted and therefore able to launch Incognito tabs. -@@ -1591,7 +1605,7 @@ public class IntentHandler { +@@ -1681,7 +1695,7 @@ public class IntentHandler { String headers = getExtraHeadersFromIntent(intent); headers = maybeAddAdditionalContentHeaders(intent, url, headers); @@ -241,7 +241,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -47,6 +47,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge; +@@ -48,6 +48,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; @@ -249,7 +249,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis import org.chromium.chrome.browser.searchwidget.SearchActivity; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient; -@@ -223,11 +224,22 @@ public class LaunchIntentDispatcher { +@@ -224,11 +225,22 @@ public class LaunchIntentDispatcher { String query = null; final String action = intent.getAction(); @@ -272,7 +272,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Only the ChromeLauncherActivity can handle search intents. Drop the intent and abort the // launch. -@@ -501,8 +513,8 @@ public class LaunchIntentDispatcher { +@@ -508,8 +520,8 @@ public class LaunchIntentDispatcher { /*incognito*/true); newIntent.setData(mIntent.getData()); newIntent.setPackage(applicationContext.getPackageName()); @@ -468,18 +468,18 @@ new file mode 100644 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 -@@ -378,6 +378,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -391,6 +391,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kRelatedSearchesAllLanguage, &kRelatedSearchesSwitch, &kReloadTabUiResourcesIfChanged, + &kSharedIntentUI, &kRemoveTabFocusOnShowingAndSelect, &kRightEdgeGoesForwardGestureNav, - &kSearchInCCT, + &kRobustWindowManagement, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -543,6 +543,7 @@ public abstract class ChromeFeatureList { +@@ -561,6 +561,7 @@ public abstract class ChromeFeatureList { "ReadAloudIPHMenuButtonHighlightCCT"; public static final String READALOUD_PLAYBACK = "ReadAloudPlayback"; public static final String READALOUD_TAP_TO_SEEK = "ReadAloudTapToSeek"; @@ -490,7 +490,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -6219,6 +6219,19 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6098,6 +6098,19 @@ To change this setting, BEGIN_LINKdelete the Chrome d Make sure a phone app is enabled on this device diff --git a/build/cromite_patches/Experimental-user-scripts-support.patch b/build/cromite_patches/Experimental-user-scripts-support.patch index fead5e56..989605b9 100644 --- a/build/cromite_patches/Experimental-user-scripts-support.patch +++ b/build/cromite_patches/Experimental-user-scripts-support.patch @@ -36,16 +36,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/about_flags.cc | 1 + chrome/browser/prefs/browser_prefs.cc | 4 + chrome/browser/profiles/BUILD.gn | 3 + - ...hrome_browser_main_extra_parts_profiles.cc | 7 + + ...hrome_browser_main_extra_parts_profiles.cc | 9 + chrome/browser/profiles/profile_manager.cc | 11 + chrome/browser/profiles/renderer_updater.cc | 19 +- chrome/browser/profiles/renderer_updater.h | 3 + - .../browser/ui/webui/chrome_web_ui_configs.cc | 6 + + .../browser/ui/webui/chrome_web_ui_configs.cc | 7 +- chrome/chrome_paks.gni | 2 + chrome/common/renderer_configuration.mojom | 1 + chrome/renderer/BUILD.gn | 6 + .../chrome_content_renderer_client.cc | 55 ++ - .../renderer/chrome_render_thread_observer.cc | 5 + + .../renderer/chrome_render_thread_observer.cc | 7 + components/components_strings.grd | 1 + components/user_scripts/README.md | 150 ++++ components/user_scripts/android/BUILD.gn | 103 +++ @@ -68,16 +68,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...Allow-playing-videos-in-background.user.js | 25 + .../assets/Dont-track-me-Google.user.js | 826 ++++++++++++++++++ .../user_scripts/assets/disable-amp.user.js | 127 +++ - components/user_scripts/browser/BUILD.gn | 77 ++ + components/user_scripts/browser/BUILD.gn | 79 ++ .../user_scripts/browser/file_task_runner.cc | 40 + .../user_scripts/browser/file_task_runner.h | 34 + + .../browser/renderer_startup_helper.cc | 102 +++ + .../browser/renderer_startup_helper.h | 105 +++ .../browser/resources/browser_resources.grd | 14 + .../browser/resources/user-script-ui/BUILD.gn | 8 + .../user-script-ui/user-scripts-ui.html | 14 + .../user-script-ui/user-scripts-ui.js | 9 + .../browser/ui/user_scripts_ui.cc | 146 ++++ .../user_scripts/browser/ui/user_scripts_ui.h | 46 + - .../browser/user_script_loader.cc | 723 +++++++++++++++ + .../browser/user_script_loader.cc | 726 +++++++++++++++ .../user_scripts/browser/user_script_loader.h | 168 ++++ .../browser/user_script_pref_info.cc | 34 + .../browser/user_script_pref_info.h | 72 ++ @@ -85,16 +87,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../user_scripts/browser/user_script_prefs.h | 62 ++ .../browser/userscripts_browser_client.cc | 78 ++ .../browser/userscripts_browser_client.h | 62 ++ - components/user_scripts/common/BUILD.gn | 48 + + components/user_scripts/common/BUILD.gn | 58 ++ components/user_scripts/common/constants.h | 15 + components/user_scripts/common/error_utils.cc | 54 ++ components/user_scripts/common/error_utils.h | 22 + - .../common/extension_message_generator.cc | 29 + - .../common/extension_message_generator.h | 11 + - .../user_scripts/common/extension_messages.cc | 40 + - .../user_scripts/common/extension_messages.h | 70 ++ components/user_scripts/common/host_id.cc | 31 + components/user_scripts/common/host_id.h | 35 + + .../user_scripts/common/mojom/renderer.mojom | 12 + .../user_scripts/common/script_constants.h | 33 + components/user_scripts/common/url_pattern.cc | 813 +++++++++++++++++ components/user_scripts/common/url_pattern.h | 306 +++++++ @@ -121,25 +120,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/script_injection_manager.h | 100 +++ .../user_scripts/renderer/script_injector.h | 100 +++ .../user_scripts/renderer/scripts_run_info.cc | 31 + - .../user_scripts/renderer/scripts_run_info.h | 69 ++ + .../user_scripts/renderer/scripts_run_info.h | 70 ++ .../renderer/user_script_injector.cc | 227 +++++ .../renderer/user_script_injector.h | 86 ++ .../user_scripts/renderer/user_script_set.cc | 264 ++++++ .../user_scripts/renderer/user_script_set.h | 101 +++ - .../renderer/user_script_set_manager.cc | 76 ++ - .../renderer/user_script_set_manager.h | 64 ++ - .../renderer/user_scripts_dispatcher.cc | 36 + - .../renderer/user_scripts_dispatcher.h | 49 ++ + .../renderer/user_script_set_manager.cc | 65 ++ + .../renderer/user_script_set_manager.h | 56 ++ + .../renderer/user_scripts_dispatcher.cc | 64 ++ + .../renderer/user_scripts_dispatcher.h | 67 ++ .../renderer/user_scripts_renderer_client.cc | 108 +++ .../renderer/user_scripts_renderer_client.h | 38 + .../renderer/web_ui_injection_host.cc | 40 + .../renderer/web_ui_injection_host.h | 31 + .../strings/userscripts_strings.grdp | 54 ++ - content/common/features.gni | 2 +- .../Experimental-user-scripts-support.inc | 13 + ipc/ipc_message_start.h | 1 + tools/gritsettings/resource_ids.spec | 6 + - 112 files changed, 10380 insertions(+), 3 deletions(-) + 110 files changed, 10495 insertions(+), 3 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 @@ -164,6 +162,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html create mode 100755 components/user_scripts/browser/BUILD.gn create mode 100755 components/user_scripts/browser/file_task_runner.cc create mode 100755 components/user_scripts/browser/file_task_runner.h + create mode 100644 components/user_scripts/browser/renderer_startup_helper.cc + create mode 100644 components/user_scripts/browser/renderer_startup_helper.h create mode 100644 components/user_scripts/browser/resources/browser_resources.grd create mode 100644 components/user_scripts/browser/resources/user-script-ui/BUILD.gn create mode 100644 components/user_scripts/browser/resources/user-script-ui/user-scripts-ui.html @@ -182,12 +182,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html create mode 100755 components/user_scripts/common/constants.h create mode 100755 components/user_scripts/common/error_utils.cc create mode 100755 components/user_scripts/common/error_utils.h - create mode 100755 components/user_scripts/common/extension_message_generator.cc - create mode 100755 components/user_scripts/common/extension_message_generator.h - create mode 100755 components/user_scripts/common/extension_messages.cc - create mode 100755 components/user_scripts/common/extension_messages.h create mode 100755 components/user_scripts/common/host_id.cc create mode 100755 components/user_scripts/common/host_id.h + create mode 100644 components/user_scripts/common/mojom/renderer.mojom create mode 100755 components/user_scripts/common/script_constants.h create mode 100755 components/user_scripts/common/url_pattern.cc create mode 100755 components/user_scripts/common/url_pattern.h @@ -233,7 +230,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -200,7 +200,11 @@ if (_is_default_toolchain) { +@@ -191,7 +191,11 @@ if (_is_default_toolchain) { sources = chrome_java_resources sources += [ "//chrome/android/java/res_app/layout/main.xml" ] @@ -246,7 +243,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn ":chrome_base_module_resources", ":ui_locale_string_resources", "//chrome/android/webapk/libs/common:splash_resources", -@@ -704,6 +708,7 @@ if (_is_default_toolchain) { +@@ -701,6 +705,7 @@ if (_is_default_toolchain) { "//components/ukm/android:java", "//components/url_formatter/android:url_formatter_java", "//components/user_prefs/android:java", @@ -254,7 +251,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/variations:variations_java", "//components/variations/android:variations_java", "//components/viz/service:service_java", -@@ -1668,6 +1673,7 @@ if (_is_default_toolchain) { +@@ -1695,6 +1700,7 @@ if (_is_default_toolchain) { java_group("chrome_public_non_pak_assets") { deps = [ "//chrome/android/webapk/libs/runtime_library:runtime_library_assets", @@ -280,7 +277,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -76,6 +76,7 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -80,6 +80,7 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.MimeTypeUtils; import org.chromium.ui.widget.Toast; import org.chromium.url.GURL; @@ -288,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo import java.io.File; -@@ -440,6 +441,11 @@ public class DownloadUtils { +@@ -451,6 +452,11 @@ public class DownloadUtils { String referrer, @DownloadOpenSource int source, Context context) { @@ -341,7 +338,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3662,6 +3662,13 @@ static_library("browser") { +@@ -3682,6 +3682,13 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -358,7 +355,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -187,6 +187,7 @@ +@@ -186,6 +186,7 @@ #include "components/ui_devtools/switches.h" #include "components/variations/variations_switches.h" #include "components/version_info/channel.h" @@ -369,15 +366,15 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -280,6 +280,7 @@ +@@ -278,6 +278,7 @@ #include "components/ntp_tiles/popular_sites_impl.h" #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/webapps/browser/android/install_prompt_prefs.h" +#include "components/user_scripts/browser/user_script_prefs.h" #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/contextual_cueing/contextual_cueing_prefs.h" - #include "chrome/browser/device_api/device_service_impl.h" -@@ -2088,6 +2089,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, + #include "chrome/browser/gcm/gcm_product_util.h" +@@ -2007,6 +2008,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry); omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); @@ -390,7 +387,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn --- a/chrome/browser/profiles/BUILD.gn +++ b/chrome/browser/profiles/BUILD.gn -@@ -82,6 +82,9 @@ source_set("profile") { +@@ -83,6 +83,9 @@ source_set("profile") { "//content/public/browser", "//extensions/buildflags", ] @@ -403,23 +400,25 @@ diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -583,6 +583,10 @@ +@@ -590,6 +590,11 @@ #include "chrome/browser/net/nss_service_factory.h" #endif +#if BUILDFLAG(IS_ANDROID) +#include "components/user_scripts/browser/userscripts_browser_client.h" ++#include "components/user_scripts/browser/renderer_startup_helper.h" +#endif + void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) { main_parts->AddParts(std::make_unique()); } -@@ -1415,6 +1419,9 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1430,6 +1435,10 @@ void ChromeBrowserMainExtraPartsProfiles:: #endif WebDataServiceFactory::GetInstance(); webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance(); +#if BUILDFLAG(IS_ANDROID) + user_scripts::UserScriptsBrowserClient::GetInstance(); ++ user_scripts::RendererStartupHelperFactory::GetInstance(); +#endif } @@ -516,7 +515,7 @@ diff --git a/chrome/browser/profiles/renderer_updater.h b/chrome/browser/profile diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -58,6 +58,9 @@ +@@ -60,6 +60,9 @@ #include "chrome/browser/ui/webui/proxy_config_ui.h" @@ -526,28 +525,31 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" -@@ -423,4 +426,7 @@ void RegisterChromeWebUIConfigs() { +@@ -430,7 +433,9 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig( std::make_unique()); #endif +- +#if BUILDFLAG(IS_ANDROID) + map.AddWebUIConfig(std::make_unique()); +#endif - } + #if BUILDFLAG(ENTERPRISE_WATERMARK) + map.AddWebUIConfig(std::make_unique()); + #endif diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni -@@ -149,6 +149,7 @@ template("chrome_extra_paks") { - "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak", +@@ -152,6 +152,7 @@ template("chrome_extra_paks") { "$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak", "$root_gen_dir/third_party/blink/public/strings/permission_element_generated_strings.pak", + "$root_gen_dir/ui/resources/ui_lottie_resources.pak", + "$root_gen_dir/chrome/userscripts_browser_resources.pak", "$root_gen_dir/ui/webui/resources/webui_resources.pak", ] - deps = [ -@@ -169,6 +170,7 @@ template("chrome_extra_paks") { - "//third_party/blink/public:resources", + +@@ -175,6 +176,7 @@ template("chrome_extra_paks") { "//third_party/blink/public/strings:permission_element_generated_strings", + "//ui/resources:ui_lottie_resources_grd", "//ui/webui/resources", + "//components/user_scripts/browser:userscripts_browser_resources_grit", ] @@ -567,7 +569,7 @@ diff --git a/chrome/common/renderer_configuration.mojom b/chrome/common/renderer diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -235,6 +235,12 @@ static_library("renderer") { +@@ -231,6 +231,12 @@ static_library("renderer") { "//v8", ] @@ -583,7 +585,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -265,6 +265,11 @@ +@@ -252,6 +252,11 @@ #include "chrome/renderer/media/chrome_key_systems.h" #endif @@ -595,7 +597,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer using autofill::AutofillAgent; using autofill::PasswordAutofillAgent; using autofill::PasswordGenerationAgent; -@@ -450,6 +455,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { +@@ -417,6 +422,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { WebString::FromASCII(extensions::kExtensionScheme)); #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -610,8 +612,8 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #if BUILDFLAG(ENABLE_SPELLCHECK) if (!spellcheck_) InitSpellCheck(); -@@ -621,6 +634,15 @@ void ChromeContentRendererClient::RenderFrameCreated( - registry); +@@ -597,6 +610,15 @@ void ChromeContentRendererClient::RenderFrameCreated( + render_frame, std::make_unique()); #endif +#if BUILDFLAG(IS_ANDROID) @@ -623,10 +625,10 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer + } +#endif + - #if BUILDFLAG(ENABLE_PPAPI) - new PepperHelper(render_frame); + #if BUILDFLAG(ENABLE_PAINT_PREVIEW) + new paint_preview::PaintPreviewRecorderImpl(render_frame); #endif -@@ -1669,6 +1691,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( +@@ -1359,6 +1381,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( render_frame); // |render_frame| might be dead by now. #endif @@ -644,7 +646,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentEnd( -@@ -1678,6 +1711,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( +@@ -1368,6 +1401,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( render_frame); // |render_frame| might be dead by now. #endif @@ -662,7 +664,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentIdle( -@@ -1687,6 +1731,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( +@@ -1377,6 +1421,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( render_frame); // |render_frame| might be dead by now. #endif @@ -683,16 +685,18 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/chrome_render_thread_observer.cc --- a/chrome/renderer/chrome_render_thread_observer.cc +++ b/chrome/renderer/chrome_render_thread_observer.cc -@@ -55,6 +55,8 @@ +@@ -54,6 +54,10 @@ #include "third_party/blink/public/web/web_security_policy.h" #include "third_party/blink/public/web/web_view.h" ++#if BUILDFLAG(IS_ANDROID) +#include "components/user_scripts/renderer/user_scripts_renderer_client.h" ++#endif + #if BUILDFLAG(IS_CHROMEOS) #include "chrome/renderer/ash_merge_session_loader_throttle.h" #endif -@@ -221,6 +223,9 @@ void ChromeRenderThreadObserver::SetConfiguration( +@@ -220,6 +224,9 @@ void ChromeRenderThreadObserver::SetConfiguration( chrome::mojom::DynamicParamsPtr params) { base::AutoLock lock(dynamic_params_lock_); dynamic_params_ = std::move(params); @@ -705,7 +709,7 @@ diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/ diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd -@@ -341,6 +341,7 @@ +@@ -342,6 +342,7 @@ @@ -1714,8 +1718,6 @@ new file mode 100644 + +package org.chromium.components.user_scripts; + -+import static org.chromium.components.browser_ui.widget.BrowserUiListMenuUtils.buildMenuListItem; -+ +import android.content.Context; +import android.content.Intent; +import android.provider.Browser; @@ -1736,6 +1738,7 @@ new file mode 100644 + +import org.chromium.base.ApplicationStatus; +import org.chromium.base.ContextUtils; ++import org.chromium.components.browser_ui.widget.ListItemBuilder; +import org.chromium.components.browser_ui.widget.TintedDrawable; +import org.chromium.components.browser_ui.widget.BrowserUiListMenuUtils; +import org.chromium.ui.listmenu.BasicListMenu; @@ -1766,9 +1769,10 @@ new file mode 100644 + + ModelList menuItems = new ModelList(); + -+ menuItems.add(buildMenuListItem(R.string.remove, 0, 0, true)); -+ menuItems.add(buildMenuListItem(R.string.scripts_view_source, 0, 0, -+ info.ParserError == null || info.ParserError.isEmpty())); ++ menuItems.add(new ListItemBuilder().withTitleRes(R.string.remove).build()); ++ menuItems.add(new ListItemBuilder().withTitleRes(R.string.scripts_view_source) ++ .withEnabled(info.ParserError == null || info.ParserError.isEmpty()) ++ .build()); + + ListMenu.Delegate delegate = (model) -> { + int textId = model.get(ListMenuItemProperties.TITLE_ID); @@ -3446,7 +3450,7 @@ diff --git a/components/user_scripts/browser/BUILD.gn b/components/user_scripts/ new file mode 100755 --- /dev/null +++ b/components/user_scripts/browser/BUILD.gn -@@ -0,0 +1,77 @@ +@@ -0,0 +1,79 @@ +# This file is part of Bromite. + +# Bromite is free software: you can redistribute it and/or modify @@ -3487,6 +3491,8 @@ new file mode 100755 + "user_script_pref_info.h", + "ui/user_scripts_ui.h", + "ui/user_scripts_ui.cc", ++ "renderer_startup_helper.h", ++ "renderer_startup_helper.cc", + ] + + deps = [ @@ -3608,6 +3614,223 @@ new file mode 100755 +} // namespace extensions + +#endif // USERSCRIPTS_BROWSER_FILE_TASK_RUNNER_H_ +diff --git a/components/user_scripts/browser/renderer_startup_helper.cc b/components/user_scripts/browser/renderer_startup_helper.cc +new file mode 100644 +--- /dev/null ++++ b/components/user_scripts/browser/renderer_startup_helper.cc +@@ -0,0 +1,102 @@ ++#include "renderer_startup_helper.h" ++ ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++#include "content/public/browser/render_process_host.h" ++#include "ipc/ipc_channel_proxy.h" ++ ++namespace user_scripts { ++ ++RendererStartupHelper::RendererStartupHelper(content::BrowserContext* browser_context) ++ : browser_context_(browser_context) { ++ DCHECK(browser_context); ++} ++ ++RendererStartupHelper::~RendererStartupHelper() { ++ for (auto& process_entry : process_mojo_map_) ++ process_entry.first->RemoveObserver(this); ++} ++ ++void RendererStartupHelper::OnRenderProcessHostCreated( ++ content::RenderProcessHost* host) { ++ InitializeProcess(host); ++} ++ ++void RendererStartupHelper::RenderProcessExited( ++ content::RenderProcessHost* host, ++ const content::ChildProcessTerminationInfo& info) { ++ UntrackProcess(host); ++} ++ ++void RendererStartupHelper::RenderProcessHostDestroyed( ++ content::RenderProcessHost* host) { ++ UntrackProcess(host); ++} ++ ++void RendererStartupHelper::InitializeProcess( ++ content::RenderProcessHost* process) { ++ //mojom::Renderer* renderer = ++ process_mojo_map_.emplace(process, BindNewRendererRemote(process)) ++ .first->second.get(); ++ process->AddObserver(this); ++} ++ ++void RendererStartupHelper::UntrackProcess( ++ content::RenderProcessHost* process) { ++ process->RemoveObserver(this); ++ process_mojo_map_.erase(process); ++} ++ ++mojo::PendingAssociatedRemote ++RendererStartupHelper::BindNewRendererRemote( ++ content::RenderProcessHost* process) { ++ mojo::AssociatedRemote renderer_interface; ++ process->GetChannel()->GetRemoteAssociatedInterface(&renderer_interface); ++ return renderer_interface.Unbind(); ++} ++ ++mojom::Renderer* RendererStartupHelper::GetRenderer( ++ content::RenderProcessHost* process) { ++ auto it = process_mojo_map_.find(process); ++ if (it == process_mojo_map_.end()) { ++ return nullptr; ++ } ++ return it->second.get(); ++} ++ ++// static ++RendererStartupHelper* RendererStartupHelperFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++ ++// static ++RendererStartupHelperFactory* RendererStartupHelperFactory::GetInstance() { ++ return base::Singleton::get(); ++} ++ ++RendererStartupHelperFactory::RendererStartupHelperFactory() ++ : BrowserContextKeyedServiceFactory( ++ "UserScriptRendererStartupHelper", ++ BrowserContextDependencyManager::GetInstance()) {} ++ ++RendererStartupHelperFactory::~RendererStartupHelperFactory() = default; ++ ++std::unique_ptr ++RendererStartupHelperFactory::BuildServiceInstanceForBrowserContext( ++ content::BrowserContext* context) const { ++ return std::make_unique(context); ++} ++ ++content::BrowserContext* RendererStartupHelperFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return GetBrowserContextRedirectedInIncognito(context); ++} ++ ++bool RendererStartupHelperFactory::ServiceIsCreatedWithBrowserContext() const { ++ return true; ++} ++ ++} +diff --git a/components/user_scripts/browser/renderer_startup_helper.h b/components/user_scripts/browser/renderer_startup_helper.h +new file mode 100644 +--- /dev/null ++++ b/components/user_scripts/browser/renderer_startup_helper.h +@@ -0,0 +1,105 @@ ++ ++#ifndef USERSCRIPTS_BROWSER_RENDERER_STARTUP_HELPER_H_ ++#define USERSCRIPTS_BROWSER_RENDERER_STARTUP_HELPER_H_ ++ ++#include ++#include ++#include ++ ++#include "base/compiler_specific.h" ++#include "base/memory/raw_ptr.h" ++#include "base/memory/singleton.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "components/keyed_service/core/keyed_service.h" ++#include "content/public/browser/render_process_host_creation_observer.h" ++#include "content/public/browser/render_process_host_observer.h" ++#include "components/user_scripts/common/mojom/renderer.mojom.h" ++#include "mojo/public/cpp/bindings/associated_receiver_set.h" ++#include "mojo/public/cpp/bindings/associated_remote.h" ++#include "mojo/public/cpp/bindings/pending_associated_receiver.h" ++#include "mojo/public/cpp/bindings/pending_associated_remote.h" ++ ++namespace content { ++class BrowserContext; ++class RenderProcessHost; ++} // namespace content ++ ++namespace user_scripts { ++ ++class RendererStartupHelper : public KeyedService, ++ public content::RenderProcessHostCreationObserver, ++ public content::RenderProcessHostObserver { ++ public: ++ // This class sends messages to all renderers started for `browser_context`. ++ explicit RendererStartupHelper(content::BrowserContext* browser_context); ++ ++ RendererStartupHelper(const RendererStartupHelper&) = delete; ++ RendererStartupHelper& operator=(const RendererStartupHelper&) = delete; ++ ++ ~RendererStartupHelper() override; ++ ++ // content::RenderProcessHostCreationObserver: ++ void OnRenderProcessHostCreated( ++ content::RenderProcessHost* process_host) override; ++ ++ // content::RenderProcessHostObserver: ++ void RenderProcessExited( ++ content::RenderProcessHost* host, ++ const content::ChildProcessTerminationInfo& info) override; ++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; ++ ++ // Returns mojom::Renderer* corresponding to `process`. This would return ++ // nullptr when it's called before `process` is inserted to ++ // `process_mojo_map_` or after it's deleted. Note that the callers should ++ // pass a valid content::RenderProcessHost*. ++ mojom::Renderer* GetRenderer(content::RenderProcessHost* process); ++ ++ private: ++ // Initializes the specified process, informing it of system state and loaded ++ // extensions. ++ void InitializeProcess(content::RenderProcessHost* process); ++ ++ // Untracks the given process. ++ void UntrackProcess(content::RenderProcessHost* process); ++ ++ mojo::PendingAssociatedRemote BindNewRendererRemote( ++ content::RenderProcessHost* process); ++ ++ raw_ptr browser_context_; // Not owned. ++ ++ // A map of render processes to mojo remotes. Being in this ++ // map means that have had the initial batch of IPC messages ++ // sent, including the set of loaded extensions. Further messages that ++ // activate, load, or unload extensions should not be sent until after this ++ // happens. ++ std::map> ++ process_mojo_map_; ++}; ++ ++class RendererStartupHelperFactory : public BrowserContextKeyedServiceFactory { ++ public: ++ RendererStartupHelperFactory(const RendererStartupHelperFactory&) = delete; ++ RendererStartupHelperFactory& operator=(const RendererStartupHelperFactory&) = ++ delete; ++ ++ static RendererStartupHelper* GetForBrowserContext( ++ content::BrowserContext* context); ++ static RendererStartupHelperFactory* GetInstance(); ++ ++ private: ++ friend struct base::DefaultSingletonTraits; ++ ++ RendererStartupHelperFactory(); ++ ~RendererStartupHelperFactory() override; ++ ++ // BrowserContextKeyedServiceFactory implementation: ++ std::unique_ptr BuildServiceInstanceForBrowserContext( ++ content::BrowserContext* profile) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++ bool ServiceIsCreatedWithBrowserContext() const override; ++}; ++ ++} ++ ++#endif diff --git a/components/user_scripts/browser/resources/browser_resources.grd b/components/user_scripts/browser/resources/browser_resources.grd new file mode 100644 --- /dev/null @@ -3879,7 +4102,7 @@ diff --git a/components/user_scripts/browser/user_script_loader.cc b/components/ new file mode 100755 --- /dev/null +++ b/components/user_scripts/browser/user_script_loader.cc -@@ -0,0 +1,723 @@ +@@ -0,0 +1,726 @@ +/* + This file is part of Bromite. + @@ -3907,6 +4130,7 @@ new file mode 100755 + +#include "base/memory/writable_shared_memory_region.h" +#include "base/strings/string_util.h" ++#include "base/strings/string_number_conversions.h" +#include "base/strings/strcat.h" +#include "base/files/file.h" +#include "base/files/file_path.h" @@ -3937,11 +4161,11 @@ new file mode 100755 +#include "ui/android/window_android.h" + +#include "../common/user_scripts_features.h" -+#include "../common/extension_messages.h" +#include "file_task_runner.h" +#include "user_script_prefs.h" +#include "user_script_pref_info.h" +#include "../common/host_id.h" ++#include "renderer_startup_helper.h" + +using content::BrowserThread; +using content::BrowserContext; @@ -4389,8 +4613,10 @@ new file mode 100755 + if (!region_for_process.IsValid()) + return; + -+ process->Send(new ExtensionMsg_UpdateUserScripts( -+ std::move(region_for_process))); ++ mojom::Renderer* renderer = ++ RendererStartupHelperFactory::GetForBrowserContext(browser_context()) ++ ->GetRenderer(process); ++ renderer->UpdateUserScripts(std::move(region_for_process)); +} + +void LoadScriptsOnFileTaskRunner( @@ -5393,7 +5619,7 @@ diff --git a/components/user_scripts/common/BUILD.gn b/components/user_scripts/c new file mode 100755 --- /dev/null +++ b/components/user_scripts/common/BUILD.gn -@@ -0,0 +1,48 @@ +@@ -0,0 +1,58 @@ +# 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. @@ -5417,10 +5643,6 @@ new file mode 100755 + "user_script.h", + "view_type.cc", + "view_type.h", -+ "extension_messages.cc", -+ "extension_messages.h", -+ "extension_message_generator.cc", -+ "extension_message_generator.h", + ] + + configs += [ @@ -5429,6 +5651,7 @@ new file mode 100755 + ] + + public_deps = [ ++ ":mojom", + "//content/public/common", + "//ipc", + "//skia", @@ -5442,6 +5665,19 @@ new file mode 100755 + "//crypto", + ] +} ++ ++mojom("mojom") { ++ disable_variants = true ++ ++ sources = [ ++ "mojom/renderer.mojom", ++ ] ++ ++ public_deps = [ ++ "//mojo/public/mojom/base", ++ "//third_party/blink/public/mojom:mojom_core", ++ ] ++} diff --git a/components/user_scripts/common/constants.h b/components/user_scripts/common/constants.h new file mode 100755 --- /dev/null @@ -5548,176 +5784,6 @@ new file mode 100755 +} // namespace extensions + +#endif // USERSCRIPTS_COMMON_ERROR_UTILS_H_ -diff --git a/components/user_scripts/common/extension_message_generator.cc b/components/user_scripts/common/extension_message_generator.cc -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/common/extension_message_generator.cc -@@ -0,0 +1,29 @@ -+// 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. -+ -+// Get basic type definitions. -+#define IPC_MESSAGE_IMPL -+#include "components/user_scripts/common/extension_message_generator.h" -+ -+// Generate constructors. -+#include "ipc/struct_constructor_macros.h" -+#include "components/user_scripts/common/extension_message_generator.h" -+ -+// Generate param traits write methods. -+#include "ipc/param_traits_write_macros.h" -+namespace IPC { -+#include "components/user_scripts/common/extension_message_generator.h" -+} // namespace IPC -+ -+// Generate param traits read methods. -+#include "ipc/param_traits_read_macros.h" -+namespace IPC { -+#include "components/user_scripts/common/extension_message_generator.h" -+} // namespace IPC -+ -+// Generate param traits log methods. -+#include "ipc/param_traits_log_macros.h" -+namespace IPC { -+#include "components/user_scripts/common/extension_message_generator.h" -+} // namespace IPC -diff --git a/components/user_scripts/common/extension_message_generator.h b/components/user_scripts/common/extension_message_generator.h -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/common/extension_message_generator.h -@@ -0,0 +1,11 @@ -+// 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. -+ -+// Multiply-included file, hence no include guard. -+ -+#undef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+#include "extension_messages.h" -+#ifndef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+#error "Failed to include header extension_messages.h" -+#endif -diff --git a/components/user_scripts/common/extension_messages.cc b/components/user_scripts/common/extension_messages.cc -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/common/extension_messages.cc -@@ -0,0 +1,40 @@ -+// 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. -+ -+#include "extension_messages.h" -+ -+#include -+ -+#include -+#include -+ -+#include "content/public/common/common_param_traits.h" -+ -+namespace IPC { -+ -+void ParamTraits::Write(base::Pickle* m, const param_type& p) { -+ WriteParam(m, p.type()); -+ WriteParam(m, p.id()); -+} -+ -+bool ParamTraits::Read(const base::Pickle* m, -+ base::PickleIterator* iter, -+ param_type* r) { -+ HostID::HostType type; -+ std::string id; -+ if (!ReadParam(m, iter, &type)) -+ return false; -+ if (!ReadParam(m, iter, &id)) -+ return false; -+ *r = HostID(type, id); -+ return true; -+} -+ -+void ParamTraits::Log( -+ const param_type& p, std::string* l) { -+ LogParam(p.type(), l); -+ LogParam(p.id(), l); -+} -+ -+} // namespace IPC -diff --git a/components/user_scripts/common/extension_messages.h b/components/user_scripts/common/extension_messages.h -new file mode 100755 ---- /dev/null -+++ b/components/user_scripts/common/extension_messages.h -@@ -0,0 +1,70 @@ -+// 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. -+ -+// IPC messages for extensions. -+ -+#ifndef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+#define USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "base/memory/read_only_shared_memory_region.h" -+#include "base/values.h" -+#include "content/public/common/common_param_traits.h" -+#include "constants.h" -+#include "host_id.h" -+#include "ipc/ipc_message_start.h" -+#include "ipc/ipc_message_macros.h" -+#include "url/gurl.h" -+#include "url/origin.h" -+ -+#define IPC_MESSAGE_START ExtensionMsgStart -+ -+IPC_ENUM_TRAITS_MAX_VALUE(HostID::HostType, HostID::HOST_TYPE_LAST) -+ -+// Singly-included section for custom IPC traits. -+#ifndef INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+#define INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+ -+namespace IPC { -+ -+template <> -+struct ParamTraits { -+ typedef HostID param_type; -+ static void Write(base::Pickle* m, const param_type& p); -+ static bool Read(const base::Pickle* m, -+ base::PickleIterator* iter, -+ param_type* r); -+ static void Log(const param_type& p, std::string* l); -+}; -+ -+ -+} // namespace IPC -+ -+#endif // INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ -+ -+// Notification that the user scripts have been updated. It has one -+// ReadOnlySharedMemoryRegion argument consisting of the pickled script data. -+// This memory region is valid in the context of the renderer. -+// If |owner| is not empty, then the shared memory handle refers to |owner|'s -+// programmatically-defined scripts. Otherwise, the handle refers to all -+// hosts' statically defined scripts. So far, only extension-hosts support -+// statically defined scripts; WebUI-hosts don't. -+// If |changed_hosts| is not empty, only the host in that set will -+// be updated. Otherwise, all hosts that have scripts in the shared memory -+// region will be updated. Note that the empty set => all hosts case is not -+// supported for per-extension programmatically-defined script regions; in such -+// regions, the owner is expected to list itself as the only changed host. -+// If |whitelisted_only| is true, this process should only run whitelisted -+// scripts and not all user scripts. -+IPC_MESSAGE_CONTROL1(ExtensionMsg_UpdateUserScripts, -+ base::ReadOnlySharedMemoryRegion) -+ -+#endif // USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_ diff --git a/components/user_scripts/common/host_id.cc b/components/user_scripts/common/host_id.cc new file mode 100755 --- /dev/null @@ -5794,6 +5860,23 @@ new file mode 100755 +}; + +#endif // USERSCRIPTS_COMMON_HOST_ID_H_ +diff --git a/components/user_scripts/common/mojom/renderer.mojom b/components/user_scripts/common/mojom/renderer.mojom +new file mode 100644 +--- /dev/null ++++ b/components/user_scripts/common/mojom/renderer.mojom +@@ -0,0 +1,12 @@ ++module user_scripts.mojom; ++ ++import "mojo/public/mojom/base/shared_memory.mojom"; ++ ++interface Renderer { ++ ++ // Notifies the renderer that the user scripts have been updated. It has one ++ // ReadOnlySharedMemoryRegion argument consisting of the pickled script data. ++ // This memory region is valid in the context of the renderer. ++ UpdateUserScripts(mojo_base.mojom.ReadOnlySharedMemoryRegion region); ++ ++}; diff --git a/components/user_scripts/common/script_constants.h b/components/user_scripts/common/script_constants.h new file mode 100755 --- /dev/null @@ -10037,7 +10120,7 @@ new file mode 100755 + : num_css(0u), + num_js(0u), + num_blocking_js(0u), -+ routing_id_(render_frame->GetRoutingID()), ++ frame_token_(render_frame->GetWebFrame()->GetLocalFrameToken()), + run_location_(location), + frame_url_(ScriptContext::GetDocumentLoaderURLForFrame( + render_frame->GetWebFrame())) {} @@ -10053,7 +10136,7 @@ diff --git a/components/user_scripts/renderer/scripts_run_info.h b/components/us new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/scripts_run_info.h -@@ -0,0 +1,69 @@ +@@ -0,0 +1,70 @@ +// 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. @@ -10069,6 +10152,7 @@ new file mode 100755 + +#include "base/timer/elapsed_timer.h" +#include "../common/user_script.h" ++#include "third_party/blink/public/common/tokens/tokens.h" + +namespace content { +class RenderFrame; @@ -10108,10 +10192,10 @@ new file mode 100755 + const base::TimeDelta& elapsed); + + private: -+ // The routinig id to use to notify the browser of any injections. Since the ++ // The frame token to use to notify the browser of any injections. Since the + // frame may be deleted in injection, we don't hold on to a reference to it + // directly. -+ int routing_id_; ++ blink::LocalFrameToken frame_token_; + + // The run location at which injection is happening. + UserScript::RunLocation run_location_; @@ -10825,13 +10909,12 @@ diff --git a/components/user_scripts/renderer/user_script_set_manager.cc b/compo new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/user_script_set_manager.cc -@@ -0,0 +1,76 @@ +@@ -0,0 +1,65 @@ +#include "user_script_set_manager.h" + +#include "base/logging.h" +#include "content/public/renderer/render_thread.h" +#include "../common/host_id.h" -+#include "../common/extension_messages.h" +#include "../common/user_scripts_features.h" +#include "user_script_set.h" + @@ -10852,16 +10935,6 @@ new file mode 100755 + observers_.RemoveObserver(observer); +} + -+bool UserScriptSetManager::OnControlMessageReceived( -+ const IPC::Message& message) { -+ bool handled = true; -+ IPC_BEGIN_MESSAGE_MAP(UserScriptSetManager, message) -+ IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateUserScripts, OnUpdateUserScripts) -+ IPC_MESSAGE_UNHANDLED(handled = false) -+ IPC_END_MESSAGE_MAP() -+ return handled; -+} -+ +void UserScriptSetManager::GetAllInjections( + std::vector>* injections, + content::RenderFrame* render_frame, @@ -10906,7 +10979,7 @@ diff --git a/components/user_scripts/renderer/user_script_set_manager.h b/compon new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/user_script_set_manager.h -@@ -0,0 +1,64 @@ +@@ -0,0 +1,56 @@ +#ifndef USERSCRIPTS_RENDER_SET_MANAGER_H_ +#define USERSCRIPTS_RENDER_SET_MANAGER_H_ + @@ -10947,19 +11020,11 @@ new file mode 100755 + int tab_id, + UserScript::RunLocation run_location); + -+private: -+#if BUILDFLAG(IS_ANDROID) -+ // content::RenderThreadObserver implementation. -+ bool OnControlMessageReceived(const IPC::Message& message) override; -+#endif -+ -+ base::ObserverList::Unchecked observers_; -+ + // Handle the UpdateUserScripts extension message. + void OnUpdateUserScripts(base::ReadOnlySharedMemoryRegion shared_memory); -+ //, const HostID& host_id, -+ //const std::set& changed_hosts, -+ //bool whitelisted_only); ++ ++private: ++ base::ObserverList::Unchecked observers_; + + // Scripts statically defined in extension manifests. + UserScriptSet static_scripts_; @@ -10975,7 +11040,7 @@ diff --git a/components/user_scripts/renderer/user_scripts_dispatcher.cc b/compo new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/user_scripts_dispatcher.cc -@@ -0,0 +1,36 @@ +@@ -0,0 +1,64 @@ +#include "user_scripts_dispatcher.h" + +#include @@ -10991,11 +11056,12 @@ new file mode 100755 + +// ex ChromeExtensionsDispatcherDelegate +UserScriptsDispatcher::UserScriptsDispatcher() -+ : user_script_set_manager_observer_(this) { -+ user_script_set_manager_.reset(new UserScriptSetManager()); -+ script_injection_manager_.reset( -+ new ScriptInjectionManager(user_script_set_manager_.get())); -+ user_script_set_manager_observer_.Observe(user_script_set_manager_.get()); ++ : receiver_(this), ++ user_script_set_manager_observer_(this) { ++ user_script_set_manager_.reset(new UserScriptSetManager()); ++ script_injection_manager_.reset( ++ new ScriptInjectionManager(user_script_set_manager_.get())); ++ user_script_set_manager_observer_.Observe(user_script_set_manager_.get()); +} + +UserScriptsDispatcher::~UserScriptsDispatcher() { @@ -11004,6 +11070,11 @@ new file mode 100755 +void UserScriptsDispatcher::OnRenderThreadStarted(content::RenderThread* thread) { +} + ++void UserScriptsDispatcher::UpdateUserScripts( ++ base::ReadOnlySharedMemoryRegion shared_memory) { ++ user_script_set_manager_->OnUpdateUserScripts(std::move(shared_memory)); ++} ++ +void UserScriptsDispatcher::OnUserScriptsUpdated(const std::set& changed_hosts) { +} + @@ -11011,13 +11082,34 @@ new file mode 100755 + script_injection_manager_->OnRenderFrameCreated(render_frame); +} + ++void UserScriptsDispatcher::RegisterMojoInterfaces( ++ blink::AssociatedInterfaceRegistry* associated_interfaces) { ++ // This base::Unretained() is safe, because: ++ // 1) the Dispatcher is a RenderThreadObserver and outlives the RenderThread. ++ // 2) |asscoiated_interfaces| is owned by the RenderThread. ++ // As well the Dispatcher is owned by the ++ // ExtensionsRendererClient, which in turn is a leaky LazyInstance (and thus ++ // never deleted). ++ associated_interfaces->AddInterface(base::BindRepeating( ++ &UserScriptsDispatcher::OnRendererAssociatedRequest, base::Unretained(this))); ++} ++ ++void UserScriptsDispatcher::UnregisterMojoInterfaces( ++ blink::AssociatedInterfaceRegistry* associated_interfaces) { ++ associated_interfaces->RemoveInterface(mojom::Renderer::Name_); ++} ++ ++void UserScriptsDispatcher::OnRendererAssociatedRequest( ++ mojo::PendingAssociatedReceiver receiver) { ++ receiver_.Bind(std::move(receiver)); ++} ++ +} -\ No newline at end of file diff --git a/components/user_scripts/renderer/user_scripts_dispatcher.h b/components/user_scripts/renderer/user_scripts_dispatcher.h new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/user_scripts_dispatcher.h -@@ -0,0 +1,49 @@ +@@ -0,0 +1,67 @@ +#ifndef USERSCRIPTS_RENDER_DISPATCHER_H_ +#define USERSCRIPTS_RENDER_DISPATCHER_H_ + @@ -11039,10 +11131,14 @@ new file mode 100755 +#include "../common/host_id.h" +#include "user_script_set_manager.h" +#include "script_injection.h" ++#include "components/user_scripts/common/mojom/renderer.mojom.h" ++#include "mojo/public/cpp/bindings/associated_receiver.h" ++#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" + +namespace user_scripts { + +class UserScriptsDispatcher : public content::RenderThreadObserver, ++ public mojom::Renderer, + public UserScriptSetManager::Observer { + + public: @@ -11054,8 +11150,22 @@ new file mode 100755 + void OnRenderThreadStarted(content::RenderThread* thread); + void OnUserScriptsUpdated(const std::set& changed_hosts) override; + void OnRenderFrameCreated(content::RenderFrame* render_frame); ++ void UpdateUserScripts(base::ReadOnlySharedMemoryRegion shared_memory) override; + + private: ++ // RenderThreadObserver implementation: ++ void RegisterMojoInterfaces( ++ blink::AssociatedInterfaceRegistry* associated_interfaces) override; ++ void UnregisterMojoInterfaces( ++ blink::AssociatedInterfaceRegistry* associated_interfaces) override; ++ ++ void OnRendererAssociatedRequest( ++ mojo::PendingAssociatedReceiver receiver); ++ ++ // Extensions renderer receiver. This is an associated receiver because ++ // it is dependent on other messages sent on other associated channels. ++ mojo::AssociatedReceiver receiver_; ++ + std::unique_ptr user_script_set_manager_; + + std::unique_ptr script_injection_manager_; @@ -11363,16 +11473,6 @@ new file mode 100755 + + + -diff --git a/content/common/features.gni b/content/common/features.gni ---- a/content/common/features.gni -+++ b/content/common/features.gni -@@ -20,5 +20,5 @@ declare_args() { - mbi_mode = is_linux || is_chromeos || is_mac || is_win || is_android - - # We allow legacy IPC to be enabled for Pepper usage. -- content_enable_legacy_ipc = enable_ppapi -+ content_enable_legacy_ipc = true - } diff --git a/cromite_flags/chrome/browser/about_flags_cc/Experimental-user-scripts-support.inc b/cromite_flags/chrome/browser/about_flags_cc/Experimental-user-scripts-support.inc new file mode 100644 --- /dev/null @@ -11394,18 +11494,18 @@ new file mode 100644 diff --git a/ipc/ipc_message_start.h b/ipc/ipc_message_start.h --- a/ipc/ipc_message_start.h +++ b/ipc/ipc_message_start.h -@@ -17,6 +17,7 @@ enum IPCMessageStart { - WorkerMsgStart, - NaClMsgStart, - PpapiMsgStart, +@@ -14,6 +14,7 @@ + enum IPCMessageStart { + AutomationMsgStart = 0, + TestMsgStart, + ExtensionMsgStart, - NaClHostMsgStart, + WorkerMsgStart, LastIPCMsgStart // Must come last. }; diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -1162,6 +1162,12 @@ +@@ -1186,6 +1186,12 @@ "META": {"sizes": {"includes": [30],}}, "includes": [7480], }, diff --git a/build/cromite_patches/Eyeo-Adblock-for-Cromite.patch b/build/cromite_patches/Eyeo-Adblock-for-Cromite.patch index 26e94118..0588b691 100644 --- a/build/cromite_patches/Eyeo-Adblock-for-Cromite.patch +++ b/build/cromite_patches/Eyeo-Adblock-for-Cromite.patch @@ -28,14 +28,14 @@ suit Cromite logic. .../api/settings_private/prefs_util.cc | 14 + ...hrome_browser_main_extra_parts_profiles.cc | 2 - chrome/browser/resources/settings/BUILD.gn | 2 + - .../settings/adblock_page/adblock_page.html | 212 + - .../settings/adblock_page/adblock_page.ts | 303 + - .../settings/basic_page/basic_page.html | 4 + - .../settings/basic_page/basic_page.ts | 1 + + .../settings/adblock_page/adblock_page.html | 218 + + .../settings/adblock_page/adblock_page.ts | 311 + .../resources/settings/page_visibility.ts | 1 + - chrome/browser/resources/settings/route.ts | 4 + + chrome/browser/resources/settings/route.ts | 5 + chrome/browser/resources/settings/router.ts | 1 + chrome/browser/resources/settings/settings.ts | 1 + + .../settings/settings_main/settings_main.html | 7 + + .../settings/settings_main/settings_main.ts | 1 + .../settings/settings_menu/settings_menu.html | 5 + chrome/browser/ui/tab_helpers.cc | 3 +- .../extensions/api/_permission_features.json | 14 - @@ -43,11 +43,11 @@ suit Cromite logic. .../adblock/android/adblock_controller_jni.cc | 79 +- .../components/adblock/AdblockController.java | 51 +- components/adblock/content/browser/BUILD.gn | 24 +- - .../content/browser/adblock_blocking_page.cc | 182 + + .../content/browser/adblock_blocking_page.cc | 183 + .../content/browser/adblock_blocking_page.h | 75 + .../browser/adblock_content_browser_client.h | 241 +- .../browser/adblock_internals_page_handler.cc | 9 +- - .../browser/adblock_url_loader_factory.cc | 70 +- + .../browser/adblock_url_loader_factory.cc | 71 +- .../browser/adblock_webcontents_observer.cc | 62 +- .../browser/adblock_webcontents_observer.h | 5 +- .../content/browser/element_hider_impl.cc | 13 +- @@ -99,7 +99,7 @@ suit Cromite logic. .../adblock/core/subscription/subscription.cc | 20 + .../adblock/core/subscription/subscription.h | 3 + .../subscription_collection_impl.cc | 1 + - .../core/subscription/subscription_config.cc | 40 +- + .../core/subscription/subscription_config.cc | 41 +- .../core/subscription/subscription_config.h | 6 +- .../subscription_downloader_impl.cc | 19 +- .../subscription_persistent_metadata.h | 1 + @@ -115,6 +115,7 @@ suit Cromite logic. components/blocked_content/popup_blocker.h | 3 + .../browser/bromite_content_settings/ads.inc | 3 + components/error_page_strings.grdp | 16 + + .../resources/interstitial_enterprisewarn.css | 7 + .../websockets/websocket_connector_impl.cc | 6 +- .../public/browser/content_browser_client.cc | 4 +- .../public/browser/content_browser_client.h | 4 +- @@ -126,7 +127,7 @@ suit Cromite logic. .../renderer/core/exported/web_document.cc | 13 +- .../blink/renderer/core/html/html_element.cc | 8 +- .../definitions/adblock_private.d.ts | 14 + - 121 files changed, 9221 insertions(+), 618 deletions(-) + 122 files changed, 9249 insertions(+), 618 deletions(-) rename chrome/browser/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (59%) create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts @@ -155,7 +156,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j -@@ -99,11 +90,6 @@ for the previous order (main_preferences_legacy). --> +@@ -100,11 +91,6 @@ for the previous order (main_preferences_legacy). --> android:key="autofill_options" android:order="16" android:title="@string/autofill_options_title" /> @@ -167,7 +168,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j +@@ -136,6 +122,11 @@ for the previous order (main_preferences_legacy). --> android:key="adblock" android:order="13" android:title="@string/prefs_adblock"/> @@ -873,7 +874,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -6461,7 +6461,9 @@ ChromeContentBrowserClient:: +@@ -6412,7 +6412,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -884,7 +885,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) if (!frame) { return false; -@@ -6484,9 +6486,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( +@@ -6435,9 +6437,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( @@ -899,7 +900,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h -@@ -730,11 +730,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -715,11 +715,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { CreateURLLoaderHandlerForServiceWorkerNavigationPreload( content::FrameTreeNodeId frame_tree_node_id, const network::ResourceRequest& resource_request) override; @@ -1189,7 +1190,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -249,7 +249,6 @@ +@@ -255,7 +255,6 @@ #include "chrome/common/buildflags.h" #include "chrome/common/chrome_features.h" #include "components/adblock/content/browser/factories/adblock_request_throttle_factory.h" @@ -1197,7 +1198,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "components/adblock/content/browser/factories/content_security_policy_injector_factory.h" #include "components/adblock/content/browser/factories/element_hider_factory.h" #include "components/adblock/content/browser/factories/resource_classification_runner_factory.h" -@@ -936,7 +935,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -947,7 +946,6 @@ void ChromeBrowserMainExtraPartsProfiles:: // Makes manual testing possible. FakeSmartCardDeviceServiceFactory::GetInstance(); #endif @@ -1208,15 +1209,15 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -64,6 +64,7 @@ build_webui("build") { +@@ -66,6 +66,7 @@ build_webui("build") { "ai_page/ai_tab_organization_subpage.ts", "ai_page/history_search_page.ts", "ai_page/offer_writing_help_page.ts", + "adblock_page/adblock_page.ts", "appearance_page/appearance_fonts_page.ts", + "appearance_page/appearance_page_index.ts", "appearance_page/appearance_page.ts", - "appearance_page/home_url_input.ts", -@@ -372,6 +373,7 @@ build_webui("build") { +@@ -392,6 +393,7 @@ build_webui("build") { ts_definitions = [ "//tools/typescript/definitions/autofill_private.d.ts", "//tools/typescript/definitions/chrome_event.d.ts", @@ -1228,7 +1229,7 @@ diff --git a/chrome/browser/resources/settings/adblock_page/adblock_page.html b/ new file mode 100644 --- /dev/null +++ b/chrome/browser/resources/settings/adblock_page/adblock_page.html -@@ -0,0 +1,212 @@ +@@ -0,0 +1,218 @@ + -+ -+ -+ -+ -+ -+
-+ -+
-+
-+
Enable anti-circumvention and snippets
-+
-+ Snippets are pieces of JavaScript code, injected by the Adblock Plus, that execute within the context of a website and combat advanced ads that circumvent ordinary blocking. -+ The functionality is ONLY allowed for the list -+ abp-filters-anti-cv.txt -+ which is activated by this setting. -+
Open ABP anti-circumvention filter list repo -+
Open ABP Snippets Overview -+
-+
-+
-+ -+ -+
+ -+
-+
-+
-+ -+ Check for updates now -+ -+
++ ++ ++ ++ ++
+ -+
-+ -+
-+
Built in Subscriptions ([[countEnabled]] selected)
++
++
++
Enable anti-circumvention and snippets
+
-+ Add the languages in which you regularly browse websites in ++ Snippets are pieces of JavaScript code, injected by the Adblock Plus, that execute within the context of a website and combat advanced ads that circumvent ordinary blocking. ++ The functionality is ONLY allowed for the list ++ abp-filters-anti-cv.txt ++ which is activated by this setting. ++
Open ABP anti-circumvention filter list repo ++
Open ABP Snippets Overview +
+
-+ -+ -+
-+ -+
-+
-+
-+
-+ -+
-+ Allowed Domains ([[allowedDomainsCount]] added) -+
-+
-+ Support your favorite websites by adding them to this list. You might see ads on them. ++
++ ++ ++
++ ++
++
+
-+ -+ -+
-+ -+
-+
-+ -+ -+ Add -+ -+ ++ ++ Check for updates now ++ ++
++ ++
++ ++
++
Built in Subscriptions ([[countEnabled]] selected)
++
++ Add the languages in which you regularly browse websites in +
+
-+
-+ -+
-+
-+ -+
-+ Custom Subscriptions ([[customSubscriptions.length]] added) -+
-+
-+ Add custom filter urls -+
-+
-+ -+
-+ ++
++
++
++
++ ++
++ Allowed Domains ([[allowedDomainsCount]] added) ++
++
++ Support your favorite websites by adding them to this list. You might see ads on them. ++
++
++ ++
++ ++
++
++ ++ ++ Add ++ ++ ++
+
+
-+
-+ -+
-+
-+ -+
-+ Custom Filters ([[customFilters.length]] added) -+
-+
-+ Add custom filter commands -+
-+
-+ -+
-+ -+
-+
-+ -+ -+ Add ++
++ ++
++
++ ++
++ Custom Filters ([[customFilters.length]] added) ++
++
++ Add custom filter commands ++
++
++ ++
++ ++
++
++ ++ ++ Add ++ ++ ++
+
+
-+
-+ -+
++
++
+ -+
-+ ++
++ ++ diff --git a/chrome/browser/resources/settings/adblock_page/adblock_page.ts b/chrome/browser/resources/settings/adblock_page/adblock_page.ts new file mode 100644 --- /dev/null +++ b/chrome/browser/resources/settings/adblock_page/adblock_page.ts -@@ -0,0 +1,303 @@ +@@ -0,0 +1,311 @@ +/* + This file is part of Bromite. + @@ -1477,6 +1484,8 @@ new file mode 100644 +import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.js'; +import {getTemplate} from './adblock_page.html.js'; +import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.js'; ++import {getSearchManager} from '../search_settings.js'; ++import type {SettingsPlugin} from '../settings_main/settings_plugin.js'; + +const SettingsAdblockPageElementBase = + I18nMixin(PrefsMixin(BaseMixin((PolymerElement)))); @@ -1492,8 +1501,8 @@ new file mode 100644 + last_installation_time: string; +} + -+export class SettingsAdblockPageElement extends -+ SettingsAdblockPageElementBase { ++export class SettingsAdblockPageElement extends SettingsAdblockPageElementBase ++ implements SettingsPlugin { + static get is() { + return 'settings-adblock-page'; + } @@ -1739,6 +1748,12 @@ new file mode 100644 + toastManager.duration = 5000; + toastManager.show("Starting update..."); + } ++ ++ // SettingsPlugin implementation ++ async searchContents(query: string) { ++ const searchRequest = await getSearchManager().search(query, this); ++ return searchRequest.getSearchResult(); ++ } +} + +declare global { @@ -1749,31 +1764,6 @@ new file mode 100644 + +customElements.define( + SettingsAdblockPageElement.is, SettingsAdblockPageElement); -diff --git a/chrome/browser/resources/settings/basic_page/basic_page.html b/chrome/browser/resources/settings/basic_page/basic_page.html ---- a/chrome/browser/resources/settings/basic_page/basic_page.html -+++ b/chrome/browser/resources/settings/basic_page/basic_page.html -@@ -51,6 +51,10 @@ - - - -+ -+ -+ - + ++
++ ++
++ + + +- +\ No newline at end of file ++ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -85,6 +85,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -84,6 +84,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { static get properties() { return { @@ -244,7 +251,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch isGuest_: { type: Boolean, value() { -@@ -337,6 +354,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -341,6 +358,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { }; } @@ -255,7 +262,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1414,6 +1414,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1279,6 +1279,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history @@ -277,7 +284,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2002,6 +2002,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2055,6 +2055,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE}, {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD}, {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC}, @@ -648,7 +655,7 @@ diff --git a/components/history_embeddings/sql_database.cc b/components/history_ diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc --- a/components/omnibox/browser/shortcuts_backend.cc +++ b/components/omnibox/browser/shortcuts_backend.cc -@@ -545,7 +545,7 @@ void ShortcutsBackend::ComputeDatabaseMetrics() { +@@ -556,7 +556,7 @@ void ShortcutsBackend::ComputeDatabaseMetrics() { const base::Time now(base::Time::Now()); for (const auto& shortcut_pair : shortcuts_map_) { if (now - shortcut_pair.second.last_access_time > @@ -657,7 +664,7 @@ diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibo num_old_shortcuts++; } } -@@ -715,7 +715,7 @@ ShortcutsDatabase::ShortcutIDs ShortcutsBackend::GetShortcutsWithExpiredTime() +@@ -726,7 +726,7 @@ ShortcutsDatabase::ShortcutIDs ShortcutsBackend::GetShortcutsWithExpiredTime() const base::Time now(base::Time::Now()); for (const auto& guid_pair : guid_map_) { if (now - guid_pair.second->second.last_access_time > diff --git a/build/cromite_patches/Increase-number-of-autocomplete-matches-to-10.patch b/build/cromite_patches/Increase-number-of-autocomplete-matches-to-10.patch index 48edecec..6defba87 100644 --- a/build/cromite_patches/Increase-number-of-autocomplete-matches-to-10.patch +++ b/build/cromite_patches/Increase-number-of-autocomplete-matches-to-10.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc --- a/components/omnibox/browser/autocomplete_result.cc +++ b/components/omnibox/browser/autocomplete_result.cc -@@ -98,10 +98,11 @@ constexpr size_t kMaxPedalMatchIndex = +@@ -112,10 +112,11 @@ omnibox::ChromeAimEntryPoint GetAimActionEntrypointID() { size_t AutocompleteResult::GetMaxMatches( bool is_zero_suggest, AutocompleteInput::FeaturedKeywordMode featured_keyword_mode) { @@ -30,7 +30,7 @@ diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omni diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc -@@ -297,7 +297,11 @@ void OmniboxFieldTrial::GetDemotionsByType( +@@ -172,7 +172,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( size_t OmniboxFieldTrial::GetProviderMaxMatches( AutocompleteProvider::Type provider) { diff --git a/build/cromite_patches/Invalidate-components-public-key.patch b/build/cromite_patches/Invalidate-components-public-key.patch index d22fe2d8..ffdab5c8 100644 --- a/build/cromite_patches/Invalidate-components-public-key.patch +++ b/build/cromite_patches/Invalidate-components-public-key.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.cc b/chrome/browser/component_updater/pki_metadata_component_installer.cc --- a/chrome/browser/component_updater/pki_metadata_component_installer.cc +++ b/chrome/browser/component_updater/pki_metadata_component_installer.cc -@@ -79,7 +79,8 @@ const uint64_t kMaxSupportedKPCompatibilityVersion = 1; +@@ -81,7 +81,8 @@ const uint64_t kMaxSupportedKPCompatibilityVersion = 1; // The extension id is: efniojlnjndmcbiieegkicadnoecjjef const uint8_t kPKIMetadataPublicKeySHA256[32] = { 0x45, 0xd8, 0xe9, 0xbd, 0x9d, 0x3c, 0x21, 0x88, 0x44, 0x6a, 0x82, diff --git a/build/cromite_patches/JIT-site-settings.patch b/build/cromite_patches/JIT-site-settings.patch index 8e659e55..22e6ad7d 100644 --- a/build/cromite_patches/JIT-site-settings.patch +++ b/build/cromite_patches/JIT-site-settings.patch @@ -279,8 +279,8 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -604,7 +604,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -610,7 +610,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, @@ -291,7 +291,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -4191,12 +4191,17 @@ UrlInfo NavigationRequest::GetUrlInfo() { +@@ -4199,12 +4199,17 @@ UrlInfo NavigationRequest::GetUrlInfo() { // Compute the WebExposedIsolationInfo that will be bundled into UrlInfo. auto web_exposed_isolation_info = ComputeWebExposedIsolationInfo(); @@ -313,7 +313,7 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3407,6 +3407,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3387,6 +3387,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( if (IsJitDisabled()) { command_line->AppendSwitchASCII(blink::switches::kJavaScriptFlags, "--jitless"); @@ -326,7 +326,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content diff --git a/content/browser/site_info.cc b/content/browser/site_info.cc --- a/content/browser/site_info.cc +++ b/content/browser/site_info.cc -@@ -281,6 +281,13 @@ SiteInfo SiteInfo::CreateInternal(const IsolationContext& isolation_context, +@@ -329,6 +329,13 @@ SiteInfo SiteInfo::CreateInternal(const IsolationContext& isolation_context, is_jitless = is_jitless || GetContentClient()->browser()->IsJitDisabledForSite( browser_context, lock_url_or_default); @@ -337,9 +337,9 @@ diff --git a/content/browser/site_info.cc b/content/browser/site_info.cc + is_jitless = false; + } + } - are_v8_optimizations_disabled = - GetContentClient()->browser()->AreV8OptimizationsDisabledForSite( - browser_context, lock_url_or_default); + are_v8_optimizations_disabled = CheckAndCacheShouldDisableV8Optimization( + browser_context, isolation_context.browsing_instance_id(), + url::Origin::Create(lock_url_or_default)); diff --git a/content/browser/url_info.cc b/content/browser/url_info.cc --- a/content/browser/url_info.cc +++ b/content/browser/url_info.cc diff --git a/build/cromite_patches/Keep-empty-tabs-between-sessions.patch b/build/cromite_patches/Keep-empty-tabs-between-sessions.patch index cd72cd34..f1634c13 100644 --- a/build/cromite_patches/Keep-empty-tabs-between-sessions.patch +++ b/build/cromite_patches/Keep-empty-tabs-between-sessions.patch @@ -12,10 +12,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java -@@ -971,7 +971,7 @@ public class MultiWindowUtils implements ActivityStateListener { +@@ -1001,7 +1001,7 @@ public class MultiWindowUtils implements ActivityStateListener { for (TabModel model : models) { for (int i = 0; i < model.getCount(); i++) { - Tab tab = model.getTabAt(i); + Tab tab = model.getTabAtChecked(i); - if (!TabPersistentStore.shouldSkipTab(tab)) { + if ((true)) { totalCount++; @@ -24,7 +24,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/Mul diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -1268,27 +1268,12 @@ public class TabPersistentStore { +@@ -2108,27 +2108,12 @@ public class TabPersistentStore { continue; } @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer - return tab.getTabGroupId() == null; - } - - private void saveListToFile(TabModelSelectorMetadata listData) { - if (Objects.equals(mLastSavedMetadata, listData)) return; - // Save the index file containing the list of tabs to restore. + /** + * @return The shared pref APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE. This is used when we need to + * know the last known tab state before the active tab from the tab state is read. -- diff --git a/build/cromite_patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch b/build/cromite_patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch index 61b183a7..1009f654 100644 --- a/build/cromite_patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch +++ b/build/cromite_patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch @@ -28,15 +28,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/incognito/Incog diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -5802,9 +5802,9 @@ +@@ -5855,10 +5855,10 @@ "expiry_milestone": -1 }, { - "name": "incognito-screenshot", - "owners": [ "zalmashni@google.com", "sideyilmaz@chromium.org", "chrome-incognito@google.com" ], -- "expiry_milestone": 140 + "name": "incognito-screenshot", // Bromite: guard this feature flag + "owners": [ "zalmashni@google.com", "sideyilmaz@chromium.org", "chrome-incognito@google.com" ], // - + // This flag is used by testers and developers to screenshot incognito features. +- "expiry_milestone": -1 + "expiry_milestone": -1 // - }, { diff --git a/build/cromite_patches/Logcat-crash-reports-UI.patch b/build/cromite_patches/Logcat-crash-reports-UI.patch index 96ebf407..7e4e3baf 100644 --- a/build/cromite_patches/Logcat-crash-reports-UI.patch +++ b/build/cromite_patches/Logcat-crash-reports-UI.patch @@ -153,7 +153,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -647,6 +647,7 @@ static_library("ui") { +@@ -639,6 +639,7 @@ static_library("ui") { "//third_party/re2", "//third_party/webrtc_overrides:webrtc_component", "//third_party/zlib", diff --git a/build/cromite_patches/Modify-default-preferences.patch b/build/cromite_patches/Modify-default-preferences.patch index 179f2a19..1fab63c0 100644 --- a/build/cromite_patches/Modify-default-preferences.patch +++ b/build/cromite_patches/Modify-default-preferences.patch @@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -86,6 +86,7 @@ +@@ -85,6 +85,7 @@ #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_switches.h" #include "components/autofill/core/common/autofill_util.h" @@ -78,7 +78,7 @@ diff --git a/chrome/browser/preloading/preloading_prefs.h b/chrome/browser/prelo diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -318,7 +318,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; +@@ -325,7 +325,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kSearchSuggestEnabled, @@ -102,7 +102,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -113,10 +113,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -117,10 +117,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); registry->RegisterBooleanPref( @@ -115,7 +115,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup); registry->RegisterDictionaryPref(prefs::kAppWindowPlacement); -@@ -189,7 +189,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -194,7 +194,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { #endif registry->RegisterBooleanPref( @@ -218,8 +218,8 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -151,7 +151,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -157,7 +157,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::NOTIFICATIONS, "notifications", - CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, @@ -227,8 +227,8 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. /*allowlisted_primary_schemes=*/{}, /*valid_settings=*/ {CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, CONTENT_SETTING_ASK}, -@@ -239,7 +239,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -245,7 +245,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, @@ -236,7 +236,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. /*allowlisted_primary_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -@@ -385,7 +385,7 @@ void ContentSettingsRegistry::Init() { +@@ -391,7 +391,7 @@ void ContentSettingsRegistry::Init() { // TODO(crbug.com/40602007): Update this to "SECURE_ONLY" once // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure // contexts. @@ -291,7 +291,7 @@ diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/compo diff --git a/components/signin/internal/identity_manager/primary_account_manager.cc b/components/signin/internal/identity_manager/primary_account_manager.cc --- a/components/signin/internal/identity_manager/primary_account_manager.cc +++ b/components/signin/internal/identity_manager/primary_account_manager.cc -@@ -342,7 +342,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -331,7 +331,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { prefs::kGoogleServicesSyncingGaiaIdMigratedToSignedIn, std::string()); registry->RegisterStringPref( prefs::kGoogleServicesSyncingUsernameMigratedToSignedIn, std::string()); diff --git a/build/cromite_patches/Move-navigation-bar-to-bottom.patch b/build/cromite_patches/Move-navigation-bar-to-bottom.patch index 90164ed5..0a1fae64 100644 --- a/build/cromite_patches/Move-navigation-bar-to-bottom.patch +++ b/build/cromite_patches/Move-navigation-bar-to-bottom.patch @@ -26,6 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../TabListEmptyCoordinator.java | 17 +- .../tab_management/TabSwitcherPaneBase.java | 9 + .../browser/feed/FeedSurfaceCoordinator.java | 4 + + .../android/java/res/xml/main_preferences.xml | 3 +- .../ChromeAccessibilitySettingsDelegate.java | 70 ++++++++ .../HeadlessBrowserControlsStateProvider.java | 5 + .../compositor/CompositorViewHolder.java | 7 + @@ -84,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../toolbar/LocationBarFocusScrimHandler.java | 5 + .../bottom/BottomControlsContentDelegate.java | 12 +- .../bottom/BottomControlsCoordinator.java | 11 +- - .../bottom/BottomControlsMediator.java | 20 ++- + .../bottom/BottomControlsMediator.java | 32 +++- .../bottom/BottomControlsProperties.java | 6 +- .../bottom/BottomControlsViewBinder.java | 2 + .../bottom/ScrollingBottomViewSceneLayer.java | 19 ++- @@ -98,16 +99,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/viz/common/features.cc | 2 + .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ - 85 files changed, 1048 insertions(+), 76 deletions(-) + 86 files changed, 1061 insertions(+), 78 deletions(-) create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc +++ b/cc/base/features.cc -@@ -37,6 +37,14 @@ BASE_FEATURE(kZeroCopyRBPPartialRasterWithGpuCompositor, - "ZeroCopyRBPPartialRasterWithGpuCompositor", +@@ -40,6 +40,14 @@ BASE_FEATURE(kSynchronizedScrolling, base::FEATURE_ENABLED_BY_DEFAULT); + #endif +BASE_FEATURE(kMoveTopToolbarToBottom, + "MoveTopToolbarToBottom", @@ -123,10 +124,10 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc diff --git a/cc/base/features.h b/cc/base/features.h --- a/cc/base/features.h +++ b/cc/base/features.h -@@ -20,6 +20,8 @@ CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); - // Enables partial raster in ZeroCopyRasterBufferProvider when used with the GPU - // compositor. - CC_BASE_EXPORT BASE_DECLARE_FEATURE(kZeroCopyRBPPartialRasterWithGpuCompositor); +@@ -17,6 +17,8 @@ namespace features { + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kAlignSurfaceLayerImplToPixelGrid); + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kComputeRasterTranslateForExternalScale); + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kMoveTopToolbarToBottom); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kDisableToolbarSwipeUp); @@ -143,7 +144,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont namespace cc { namespace { -@@ -543,6 +544,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( +@@ -540,6 +541,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( // content. If the top controls have no height, the content should scroll // immediately. gfx::Vector2dF applied_delta(0.f, old_top_offset - ContentTopOffset()); @@ -158,7 +159,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -5008,6 +5008,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -5098,6 +5098,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { if (scroll_delta.IsZero()) return false; @@ -171,7 +172,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java -@@ -55,6 +55,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; +@@ -58,6 +58,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; @@ -179,8 +180,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.util.List; -@@ -191,7 +192,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T - @Override +@@ -196,7 +197,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T + @Initializer public void initializeWithNative( BottomControlsCoordinator.BottomControlsVisibilityController visibilityController, - Callback onSnapshotTokenChange) { @@ -189,7 +190,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser ObservableSupplierImpl tabStripTokenSupplier = new ObservableSupplierImpl<>(); var currentTabGroupModelFilterSupplier = -@@ -283,7 +285,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T +@@ -291,7 +293,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T sharedImageTilesConfigBuilder, mThemeColorProvider, onSnapshotTokenChange, @@ -202,7 +203,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java -@@ -75,6 +75,12 @@ import org.chromium.url.GURL; +@@ -76,6 +76,12 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Objects; @@ -213,9 +214,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser +import androidx.annotation.ColorInt; + /** A mediator for the TabGroupUi. Responsible for managing the internal state of the component. */ + @NullMarked public class TabGroupUiMediator implements BackPressHandler { - -@@ -147,6 +153,11 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -151,6 +157,11 @@ public class TabGroupUiMediator implements BackPressHandler { private final Callback mOnSnapshotTokenChange; private final ObservableSupplier mChildTokenSupplier; @@ -226,9 +227,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + // These should only be used when regular (non-incognito) tabs are set in the model. private final @Nullable SharedImageTilesCoordinator mSharedImageTilesCoordinator; - private final @Nullable SharedImageTilesConfig.Builder mSharedImageTilesConfigBuilder; -@@ -179,7 +190,9 @@ public class TabGroupUiMediator implements BackPressHandler { - @Nullable SharedImageTilesConfig.Builder sharedImageTilesConfigBuilder, + private final SharedImageTilesConfig.@Nullable Builder mSharedImageTilesConfigBuilder; +@@ -182,7 +193,9 @@ public class TabGroupUiMediator implements BackPressHandler { + SharedImageTilesConfig.@Nullable Builder sharedImageTilesConfigBuilder, ThemeColorProvider themeColorProvider, Callback onSnapshotTokenChange, - ObservableSupplierImpl childTokenSupplier) { @@ -238,7 +239,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mResetHandler = resetHandler; mModel = model; mTabModelSelector = tabModelSelector; -@@ -233,11 +246,30 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -236,11 +249,30 @@ public class TabGroupUiMediator implements BackPressHandler { mIsShowingHub = true; } @@ -269,7 +270,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser resetTabStrip(); } -@@ -259,6 +291,8 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -262,6 +294,8 @@ public class TabGroupUiMediator implements BackPressHandler { @Override public void restoreCompleted() { resetTabStrip(); @@ -278,7 +279,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } @Override -@@ -358,6 +392,8 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -360,6 +394,8 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TabGroupUiProperties.WIDTH_PX_CALLBACK, mWidthPxSupplier::set); resetTabStrip(); @@ -287,7 +288,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mHandleBackPressChangedSupplier = handleBackPressChangedSupplier; if (mTabGridDialogControllerSupplier != null) { mTabGridDialogControllerSupplier.onAvailable( -@@ -388,6 +424,18 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -392,6 +428,18 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TINT, mThemeColorProvider.getTint()); } @@ -306,9 +307,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser private void setupToolbarButtons() { View.OnClickListener showGroupDialogOnClickListener = view -> { -@@ -575,6 +623,7 @@ public class TabGroupUiMediator implements BackPressHandler { - } +@@ -582,6 +630,7 @@ public class TabGroupUiMediator implements BackPressHandler { + @SuppressWarnings("NullAway") public void destroy() { + mTabObserver.destroy(); if (mTabModelSelector != null) { @@ -399,9 +400,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java -@@ -6,8 +6,14 @@ package org.chromium.chrome.browser.tasks.tab_management; - - import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.CARD_TYPE; +@@ -10,8 +10,14 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.Card + import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.ModelType.TAB; + import static org.chromium.chrome.browser.tasks.tab_management.TabProperties.TAB_ID; +import android.os.Parcel; +import android.os.Parcelable; @@ -413,8 +414,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser +import android.content.res.Configuration; import android.graphics.Rect; import android.util.Size; - import android.view.LayoutInflater; -@@ -68,6 +74,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; + import android.view.InputDevice; +@@ -75,6 +81,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.recyclerview.widget.ItemTouchHelper2; import org.chromium.ui.widget.ViewLookupCachingFrameLayout; @@ -422,8 +423,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; - import java.util.List; -@@ -149,6 +157,124 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + import java.util.ArrayList; +@@ -162,6 +170,124 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO private int mAwaitingTabId = Tab.INVALID_TAB_ID; private @TabActionState int mTabActionState; @@ -445,7 +446,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + } + + @Override -+ public void writeToParcel(@NonNull Parcel dest, int flags) { ++ public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(superState, flags); + dest.writeInt(mTopPadding); + } @@ -548,7 +549,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Construct a coordinator for UI that shows a list of tabs. * -@@ -403,6 +529,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -415,6 +541,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO checkAwaitingLayout(); } }; @@ -561,7 +562,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mRecyclerView.setLayoutManager(gridLayoutManager); mMediator.registerOrientationListener(gridLayoutManager); mMediator.updateSpanCount( -@@ -422,6 +554,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -434,6 +566,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO } }; mRecyclerView.setLayoutManager(layoutManager); @@ -587,16 +588,16 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations); } -@@ -442,7 +593,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO - if (hasEmptyView) { +@@ -456,7 +607,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + assumeNonNull(mTabListEmptyCoordinator); mTabListEmptyCoordinator = new TabListEmptyCoordinator( - parentView, mModelList, this::runOnItemAnimatorFinished); + parentView, mModelList, this::runOnItemAnimatorFinished, mBrowserControlsStateProvider); } mTabListHighlighter = new TabListHighlighter(mModelList); - -@@ -756,6 +907,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + mTabListMergeAnimationManager = new TabListMergeAnimationManager(mRecyclerView); +@@ -790,6 +941,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO void prepareTabSwitcherPaneView() { registerLayoutChangeListener(); mRecyclerView.setupCustomItemAnimator(); @@ -666,15 +667,15 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java -@@ -45,6 +45,7 @@ import org.chromium.base.task.PostTask; - import org.chromium.base.task.TaskTraits; - import org.chromium.build.BuildConfig; +@@ -46,6 +46,7 @@ import org.chromium.build.BuildConfig; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.compositor.CompositorViewHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.hub.DisplayButtonData; import org.chromium.chrome.browser.hub.FadeHubLayoutAnimationFactory; import org.chromium.chrome.browser.hub.FullButtonData; -@@ -169,6 +170,7 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc +@@ -174,6 +175,7 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc private @Nullable PaneHubController mPaneHubController; private @Nullable Long mWaitForTabStateInitializedStartTimeMs; private final @Nullable ObservableSupplier mXrSpaceModeObservableSupplier; @@ -682,7 +683,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * @param context The activity context. -@@ -465,6 +467,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc +@@ -471,6 +473,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc Log.d(TAG, "Geometry not ready using fallback animation."); useFallbackAnimation = true; } @@ -699,7 +700,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java -@@ -16,6 +16,7 @@ import android.os.Looper; +@@ -19,6 +19,7 @@ import android.os.Looper; import android.os.SystemClock; import android.view.Gravity; import android.view.LayoutInflater; @@ -707,7 +708,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -@@ -620,6 +621,9 @@ public class FeedSurfaceCoordinator +@@ -661,6 +662,9 @@ public class FeedSurfaceCoordinator ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMarginStart(margin); layoutParams.setMarginEnd(margin); @@ -717,6 +718,19 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ mNtpHeader.setLayoutParams(layoutParams); } +diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml +--- a/chrome/android/java/res/xml/main_preferences.xml ++++ b/chrome/android/java/res/xml/main_preferences.xml +@@ -48,7 +48,8 @@ for the previous order (main_preferences_legacy). --> + android:fragment="org.chromium.chrome.browser.toolbar.settings.AddressBarSettingsFragment" + android:key="address_bar" + android:order="7" +- android:title="@string/address_bar_settings"/> ++ android:title="@string/address_bar_settings" ++ app:isPreferenceVisible="false"/> + getBrowserControlsManager()); addSceneOverlay(mTabStripLayoutHelperManager); addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); @@ -957,7 +971,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java -@@ -351,7 +351,7 @@ public class ScrollDelegate { +@@ -355,7 +355,7 @@ public class ScrollDelegate { boolean useUnadjustedScrollOffset = isRtl != isLeft; float scrollOffset = mScrollOffset; @@ -969,7 +983,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -29,6 +29,7 @@ import androidx.appcompat.content.res.AppCompatResources; +@@ -30,6 +30,7 @@ import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.Callback; import org.chromium.base.metrics.RecordUserAction; @@ -977,7 +991,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.Supplier; -@@ -107,6 +108,8 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -116,6 +117,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -986,14 +1000,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -256,12 +259,16 @@ public class StripLayoutHelperManager +@@ -272,12 +275,16 @@ public class StripLayoutHelperManager // Drag-Drop - @Nullable private TabStripDragHandler mTabStripDragHandler; + private @Nullable TabStripDragHandler mTabStripDragHandler; + private final Supplier mBrowserControlsManagerSupplier; + private final float mDpToPx; + - private class TabStripEventHandler implements MotionEventHandler { + private class TabStripEventHandler implements AreaMotionEventHandler { @Override public void onDown(float x, float y, int buttons) { if (DragDropGlobalState.hasValue()) { @@ -1003,7 +1017,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null && mModelSelectorButton.onDown(x, y, buttons)) { return; } -@@ -286,6 +293,7 @@ public class StripLayoutHelperManager +@@ -302,6 +309,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1011,15 +1025,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null) { mModelSelectorButton.drag(x, y); } -@@ -297,6 +305,7 @@ public class StripLayoutHelperManager +@@ -313,6 +321,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } + y -= mStripFilterArea.top; long time = time(); if (mModelSelectorButton != null && mModelSelectorButton.click(x, y, buttons)) { - mModelSelectorButton.handleClick(time, buttons); -@@ -310,6 +319,7 @@ public class StripLayoutHelperManager + mModelSelectorButton.handleClick(time, buttons, modifiers); +@@ -326,6 +335,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1027,7 +1041,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -318,6 +328,7 @@ public class StripLayoutHelperManager +@@ -334,6 +344,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1035,17 +1049,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(x, y); } -@@ -457,7 +468,8 @@ public class StripLayoutHelperManager - DataSharingTabManager dataSharingTabManager, - @NonNull BottomSheetController bottomSheetController, - @NonNull Supplier shareDelegateSupplier, -- @Nullable ObservableSupplier xrSpaceModeObservableSupplier) { -+ @Nullable ObservableSupplier xrSpaceModeObservableSupplier, +@@ -475,7 +486,8 @@ public class StripLayoutHelperManager + BottomSheetController bottomSheetController, + Supplier shareDelegateSupplier, + @Nullable ObservableSupplier xrSpaceModeObservableSupplier, +- TopControlsStacker topControlsStacker) { ++ TopControlsStacker topControlsStacker, + Supplier browserControlsManagerSupplier) { mContext = context; Resources res = context.getResources(); mManagerHost = managerHost; -@@ -566,6 +578,8 @@ public class StripLayoutHelperManager +@@ -586,6 +598,8 @@ public class StripLayoutHelperManager multiInstanceManager, shareDelegateSupplier, TabGroupListBottomSheetCoordinator::new); @@ -1054,7 +1068,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -820,6 +834,10 @@ public class StripLayoutHelperManager +@@ -854,6 +868,10 @@ public class StripLayoutHelperManager yOffset = 0; } @@ -1065,7 +1079,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -833,7 +851,9 @@ public class StripLayoutHelperManager +@@ -867,7 +885,9 @@ public class StripLayoutHelperManager mStripTransitionScrimOpacity, mLeftPadding, mRightPadding, @@ -1076,7 +1090,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -899,11 +919,21 @@ public class StripLayoutHelperManager +@@ -933,11 +953,21 @@ public class StripLayoutHelperManager mRightPadding, mTopPadding); @@ -1112,7 +1126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** A SceneLayer to render a static tab. */ @NullMarked @JNINamespace("android") -@@ -52,7 +54,10 @@ public class StaticTabSceneLayer extends SceneLayer { +@@ -53,7 +55,10 @@ public class StaticTabSceneLayer extends SceneLayer { float y = model.get(LayoutTab.CONTENT_OFFSET) + model.get(LayoutTab.RENDER_Y) * LayoutTab.sDpToPx; @@ -1136,9 +1150,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** * A SceneLayer to render a tab stack. * TODO(changwan): change layouts to share one instance of this. -@@ -93,6 +95,12 @@ public class TabListSceneLayer extends SceneLayer { +@@ -91,6 +93,12 @@ public class TabListSceneLayer extends SceneLayer { - TabListSceneLayerJni.get().beginBuildingFrame(mNativePtr, TabListSceneLayer.this); + TabListSceneLayerJni.get().beginBuildingFrame(mNativePtr); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // the tabs list content window is fixed at the top, where the top toolbar used to be @@ -1152,7 +1166,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java -@@ -25,6 +25,9 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; +@@ -26,6 +26,9 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; import org.chromium.chrome.browser.layouts.scene_layer.SceneOverlayLayer; import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; import org.chromium.ui.resources.ResourceManager; @@ -1218,16 +1232,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/findinpage/Find diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java -@@ -48,6 +48,8 @@ import org.chromium.ui.OffsetTagConstraints; +@@ -54,6 +54,8 @@ import org.chromium.ui.OffsetTagConstraints; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.util.TokenHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; + /** A class that manages browser control visibility and positioning. */ + @NullMarked public class BrowserControlsManager implements ActivityStateListener, BrowserControlsSizer { - // The amount of time to delay the control show request after returning to a once visible -@@ -568,6 +570,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -580,6 +582,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon } } @@ -1242,7 +1256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow @Override public int getTopControlsMinHeight() { return mTopControlsMinHeight; -@@ -669,6 +679,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -681,6 +691,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon @Override public float getTopVisibleContentOffset() { @@ -1262,9 +1276,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag +import org.chromium.chrome.browser.flags.ChromeFeatureList; + /** - * Coordinator of {@link MessageContainer}, which can adjust margins of the message container - * and control the visibility of browser control when message is being shown. -@@ -59,7 +62,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider + * Coordinator of {@link MessageContainer}, which can adjust margins of the message container and + * control the visibility of browser control when message is being shown. +@@ -62,7 +65,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider } CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams(); @@ -1278,22 +1292,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag mContainer.setLayoutParams(params); } -@@ -132,6 +140,11 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider - - /** @return Offset of the message container from the top of the screen. */ +@@ -141,7 +149,10 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider + */ private int getContainerTopOffset() { + assert mContainer != null; +- + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + return mControlsManager.getContentOffset() + + (mControlsManager.getBottomControlsHeight() - mControlsManager.getBottomControlOffset()); + } -+ if (mControlsManager.getContentOffset() == 0) return 0; final Resources res = mContainer.getResources(); return mControlsManager.getContentOffset() diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java b/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java --- a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java -@@ -338,7 +338,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter +@@ -352,7 +352,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter Resources resources, BrowserControlsStateProvider provider) { int scrimVerticalMargin = resources.getDimensionPixelSize(R.dimen.tab_modal_scrim_vertical_margin); @@ -1305,7 +1319,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -115,6 +115,7 @@ import org.chromium.content_public.browser.NavigationController; +@@ -124,6 +124,7 @@ import org.chromium.content_public.browser.NavigationController; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1313,7 +1327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import androidx.annotation.NonNull; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; -@@ -773,11 +774,16 @@ public class NewTabPage +@@ -839,11 +840,16 @@ public class NewTabPage final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1332,7 +1346,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -793,9 +799,7 @@ public class NewTabPage +@@ -859,9 +865,7 @@ public class NewTabPage * strip. */ private int getToolbarExtraYOffset() { @@ -1346,9 +1360,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -15,6 +15,9 @@ import android.util.AttributeSet; +@@ -14,6 +14,9 @@ import android.text.Editable; + import android.util.AttributeSet; import android.view.DragEvent; - import android.view.LayoutInflater; import android.view.ViewStub; +import android.view.ViewGroup.LayoutParams; +import android.widget.FrameLayout; @@ -1356,10 +1370,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; -@@ -196,7 +199,12 @@ public class NewTabPageLayout extends LinearLayout +@@ -214,7 +217,12 @@ public class NewTabPageLayout extends LinearLayout mFakeSearchBoxLayout = findViewById(R.id.search_box); mFakeSearchBoxEditText = findViewById(R.id.search_box_text); - insertSiteSectionView(); + initializeSiteSectionView(); - + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + FrameLayout.LayoutParams params = @@ -1373,7 +1387,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java -@@ -32,6 +32,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; +@@ -34,6 +34,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; @@ -1381,7 +1395,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP /** * The native recent tabs page. Lists recently closed tabs, open windows and tabs from the user's -@@ -106,7 +107,8 @@ public class RecentTabsPage +@@ -118,7 +119,8 @@ public class RecentTabsPage mView.addOnAttachStateChangeListener(this); @@ -1391,7 +1405,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mBrowserControlsStateProvider = browserControlsStateProvider; mBrowserControlsStateProvider.addObserver(this); onBottomControlsHeightChanged( -@@ -118,14 +120,23 @@ public class RecentTabsPage +@@ -130,14 +132,23 @@ public class RecentTabsPage mTabStripHeightSupplier = tabStripHeightSupplier; mView.setPadding(0, mTabStripHeightSupplier.get(), 0, 0); @@ -1417,16 +1431,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mEdgeToEdgeSupplier = edgeToEdgeSupplier; if (EdgeToEdgeUtils.isDrawKeyNativePageToEdgeEnabled()) { mPadAdjuster = -@@ -337,7 +348,7 @@ public class RecentTabsPage +@@ -365,7 +376,7 @@ public class RecentTabsPage + if (mBrowserControlsStateProvider == null) return; - private void updateMargins() { final View recentTabsRoot = mView.findViewById(R.id.recent_tabs_root); - final int topControlsHeight = mBrowserControlsStateProvider.getTopControlsHeight(); + final int topControlsHeight = mBrowserControlsStateProvider.getTopControlsHeightRealOffset(); final int contentOffset = mBrowserControlsStateProvider.getContentOffset(); ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) recentTabsRoot.getLayoutParams(); -@@ -353,9 +364,17 @@ public class RecentTabsPage +@@ -381,9 +392,17 @@ public class RecentTabsPage // If the content offset is different from the margin, we use translationY to position the // view in line with the content offset. @@ -1461,7 +1475,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se import java.lang.ref.WeakReference; /** Queries the user's default search engine and shows autocomplete suggestions. */ -@@ -296,6 +301,12 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -298,6 +303,12 @@ public class SearchActivity extends AsyncInitializationActivity // Build the search box. mSearchBox = contentView.findViewById(R.id.search_location_bar); mAnchorView = contentView.findViewById(R.id.toolbar); @@ -1477,7 +1491,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -219,6 +219,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -208,6 +208,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } @@ -1526,7 +1540,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato import java.util.List; -@@ -81,7 +82,10 @@ class StatusIndicatorSceneLayer extends SceneOverlayLayer implements SceneOverla +@@ -80,7 +81,10 @@ class StatusIndicatorSceneLayer extends SceneOverlayLayer implements SceneOverla @Override public SceneOverlayLayer getUpdatedSceneOverlayTree( RectF viewport, RectF visibleViewport, ResourceManager resourceManager, float yOffset) { @@ -1536,8 +1550,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato + offset = (int)viewport.bottom - offset; + } StatusIndicatorSceneLayerJni.get() - .updateStatusIndicatorLayer( - mNativePtr, + .updateStatusIndicatorLayer(mNativePtr, resourceManager, mResourceId, offset); + 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 @@ -1551,7 +1565,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. -@@ -860,6 +863,17 @@ public class ToolbarManager +@@ -863,6 +866,17 @@ public class ToolbarManager }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); mControlContainer = controlContainer; mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); @@ -1569,7 +1583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBookmarkModelSupplier = bookmarkModelSupplier; mBookmarkModelSupplier.addObserver(mBookmarkModelSupplierObserver); -@@ -1487,6 +1501,7 @@ public class ToolbarManager +@@ -1505,6 +1519,7 @@ public class ToolbarManager // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1577,7 +1591,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } else if (mLayoutChangeListener == null) { mLayoutChangeListener = (view, -@@ -1500,6 +1515,7 @@ public class ToolbarManager +@@ -1518,6 +1533,7 @@ public class ToolbarManager oldBottom) -> { if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1585,7 +1599,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener( mLayoutChangeListener); mLayoutChangeListener = null; -@@ -2069,9 +2085,21 @@ public class ToolbarManager +@@ -2122,9 +2138,21 @@ public class ToolbarManager return ((LocationBarCoordinator) mLocationBar).getUrlBarViewRectProvider(); } @@ -1608,7 +1622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar assert mTabGroupUiOneshotSupplier == null; assert mUndoBarThrottle != null; ThemeColorProvider bottomUiThemeColorProvider = -@@ -2086,7 +2114,7 @@ public class ToolbarManager +@@ -2139,7 +2167,7 @@ public class ToolbarManager mActivityTabProvider, mTabModelSelector, mActivity, @@ -1617,7 +1631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBrowserControlsSizer, mScrimManager, mOmniboxFocusStateSupplier, -@@ -2113,7 +2141,7 @@ public class ToolbarManager +@@ -2166,7 +2194,7 @@ public class ToolbarManager mControlsVisibilityDelegate, mFullscreenManager, mEdgeToEdgeControllerSupplier, @@ -1626,7 +1640,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar bottomControlsContentDelegateSupplier, mTabObscuringHandler, mOverlayPanelVisibilitySupplier, -@@ -2121,7 +2149,8 @@ public class ToolbarManager +@@ -2174,7 +2202,8 @@ public class ToolbarManager /* readAloudRestoringSupplier= */ () -> { final var readAloud = mReadAloudControllerSupplier.get(); return readAloud != null && readAloud.isRestoringPlayer(); @@ -1746,7 +1760,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/TabStripSceneLayer_jni.h" -@@ -125,8 +126,10 @@ void TabStripSceneLayer::SetContentTree( +@@ -124,8 +125,10 @@ void TabStripSceneLayer::SetContentTree( content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1759,7 +1773,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -187,7 +190,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -181,7 +184,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, jfloat right_padding, jfloat top_padding) { gfx::RectF content(0, y_offset, width, height); @@ -1773,7 +1787,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer background_layer_->SetBounds(gfx::Size(width, height)); background_layer_->SetBackgroundColor(SkColor4f::FromColor(background_color)); -@@ -196,7 +204,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -190,7 +198,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, tab_strip_layer_->SetPosition(gfx::PointF(0, top_padding)); // Content tree should not be affected by tab strip scene layer visibility. @@ -1785,7 +1799,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java -@@ -273,7 +273,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser +@@ -275,7 +275,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser /** * @return {@link BrowserControlsStateProvider} instance in the current Activity. */ @@ -1866,9 +1880,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse #include "chrome/browser/android/webapk/webapk_features.h" #include "chrome/browser/browser_features.h" #include "chrome/browser/contextmenu/context_menu_features.h" -@@ -342,6 +343,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -354,6 +355,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kNativePageTransitionHardwareCapture, &kNavBarColorAnimation, - &kNavBarColorMatchesTabBackground, &kNewTabPageAndroidTriggerForPrerender2, + &features::kMoveTopToolbarToBottom, + &features::kDisableToolbarSwipeUp, @@ -1878,7 +1892,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -474,6 +474,10 @@ public abstract class ChromeFeatureList { +@@ -490,6 +490,10 @@ public abstract class ChromeFeatureList { "NewTabPageAndroidTriggerForPrerender2"; public static final String NEW_TAB_PAGE_CUSTOMIZATION = "NewTabPageCustomization"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT = "NewTabPageCustomizationForMvt"; @@ -1889,7 +1903,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = "NewTabPageCustomizationToolbarButton"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -937,6 +941,10 @@ public abstract class ChromeFeatureList { +@@ -980,6 +984,10 @@ public abstract class ChromeFeatureList { newCachedFlag(NOTIFICATION_TRAMPOLINE, false); public static final CachedFlag sOptimizationGuidePushNotifications = newCachedFlag(OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, true); @@ -1900,7 +1914,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPostGetMyMemoryStateToBackground = newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true); -@@ -1137,6 +1145,8 @@ public abstract class ChromeFeatureList { +@@ -1190,6 +1198,8 @@ public abstract class ChromeFeatureList { sNewTabPageCustomizationV2, sNotificationTrampoline, sOptimizationGuidePushNotifications, @@ -1918,9 +1932,9 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/ sources = [ + "android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java", "android/java/src/org/chromium/chrome/browser/hub/ApplyButtonData.java", + "android/java/src/org/chromium/chrome/browser/hub/EmptyHubBottomToolbarDelegate.java", "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactory.java", - "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactoryImpl.java", -@@ -89,6 +90,10 @@ android_library("java") { +@@ -102,6 +103,10 @@ android_library("java") { "//ui/android:ui_no_recycler_view_java", "//url:url_java", ] @@ -1941,8 +1955,8 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br +import android.widget.LinearLayout; import org.chromium.base.Callback; - import org.chromium.base.supplier.ObservableSupplier; -@@ -22,6 +23,7 @@ import org.chromium.base.supplier.TransitiveObservableSupplier; + import org.chromium.base.metrics.RecordUserAction; +@@ -23,6 +24,7 @@ import org.chromium.base.supplier.TransitiveObservableSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.feature_engagement.TrackerFactory; @@ -1950,7 +1964,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.tab.Tab; -@@ -133,6 +135,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { +@@ -164,6 +166,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { mHubPaneHostCoordinator = new HubPaneHostCoordinator( hubPaneHostView, paneManager.getFocusedPaneSupplier(), hubColorMixer); @@ -1961,8 +1975,8 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br + hubPaneHostView.setLayoutParams(params); + } - TransitiveObservableSupplier overlayViewSupplier = - new TransitiveObservableSupplier<>( + ObservableSupplier<@Nullable View> overlayViewSupplier = + new TransitiveObservableSupplier( diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java --- a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java +++ b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java @@ -2006,7 +2020,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br mHubContainerView.setLayoutParams(params); } -@@ -292,6 +300,8 @@ public class HubManagerImpl implements HubManager, HubController { +@@ -297,6 +305,8 @@ public class HubManagerImpl implements HubManager, HubController { } mSnackbarOverrideToken = mSnackbarManager.pushParentViewToOverrideStack( @@ -2072,12 +2086,12 @@ diff --git a/chrome/browser/hub/internal/android/res/layout/hub_layout.xml b/chr - -@@ -17,7 +17,7 @@ found in the LICENSE file. - - +@@ -22,7 +22,7 @@ found in the LICENSE file. + android:layout_height="0dp" + android:layout_weight="1"/> - + @@ -2108,7 +2122,7 @@ diff --git a/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.x 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 -@@ -2395,7 +2395,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2315,7 +2315,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, @@ -2126,9 +2140,9 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.SystemClock; - import android.util.SparseArray; import android.view.Gravity; -@@ -48,6 +49,7 @@ import org.chromium.build.annotations.NullMarked; + import android.view.KeyEvent; +@@ -46,6 +47,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.RequiresNonNull; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider.ControlsPosition; @@ -2136,7 +2150,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.chrome.browser.ui.appmenu.internal.R; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.chips.ChipView; -@@ -250,6 +252,12 @@ class AppMenu implements OnKeyListener { +@@ -249,6 +251,12 @@ class AppMenu implements OnKeyListener { } mListView = contentView.findViewById(R.id.app_menu_list); @@ -2147,18 +2161,18 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch + mListView.setStackFromBottom(true); + } - int footerHeight = inflateFooter(footerResourceId, contentView, menuWidth); - int headerHeight = inflateHeader(headerResourceId, contentView, menuWidth); -@@ -288,7 +296,7 @@ class AppMenu implements OnKeyListener { + int footerHeight = attachFooter(footer, (ViewGroup) contentView, menuWidth); + int headerHeight = attachHeader(header, menuWidth); +@@ -287,7 +295,7 @@ class AppMenu implements OnKeyListener { Math.min( Math.abs(mTempLocation[1] - visibleDisplayFrame.top), Math.abs(mTempLocation[1] - visibleDisplayFrame.bottom)); - setMenuHeight( + int popupHeight = setMenuHeight( - menuItemIds, - heightList, + mInitialSizingHelper, visibleDisplayFrame, -@@ -308,8 +316,14 @@ class AppMenu implements OnKeyListener { + sizingPadding, +@@ -305,8 +313,14 @@ class AppMenu implements OnKeyListener { sizingPadding, anchorView, popupWidth, @@ -2174,7 +2188,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch try { mPopup.showAtLocation( -@@ -370,11 +384,20 @@ class AppMenu implements OnKeyListener { +@@ -381,11 +395,20 @@ class AppMenu implements OnKeyListener { Rect padding, View anchorView, int popupWidth, @@ -2196,16 +2210,16 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch int[] offsets = new int[2]; // If we have a hardware menu button, locate the app menu closer to the estimated // hardware menu button location. -@@ -479,7 +502,7 @@ class AppMenu implements OnKeyListener { +@@ -491,7 +514,7 @@ class AppMenu implements OnKeyListener { } @RequiresNonNull("mPopup") - private void setMenuHeight( + private int setMenuHeight( - List menuItemIds, - List heightList, + InitialSizingHelper sizingHelper, Rect appDimensions, -@@ -498,7 +521,13 @@ class AppMenu implements OnKeyListener { + Rect padding, +@@ -509,7 +532,13 @@ class AppMenu implements OnKeyListener { - footerHeight - headerHeight - anchorViewImpactHeight; @@ -2220,8 +2234,8 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch if (mIsByPermanentButton) availableScreenSpace -= padding.top; if (availableScreenSpace <= 0 && sExceptionReporter != null) { String logMessage = -@@ -528,6 +557,7 @@ class AppMenu implements OnKeyListener { - menuItemIds, heightList, groupDividerResourceId, availableScreenSpace); +@@ -546,6 +575,7 @@ class AppMenu implements OnKeyListener { + int menuHeight = calculateHeightForItems(heightList, canBeLastList, availableScreenSpace); menuHeight += footerHeight + headerHeight + padding.top + padding.bottom; mPopup.setHeight(menuHeight); + return menuHeight; @@ -2239,7 +2253,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.base.supplier.Supplier; import org.chromium.build.annotations.MonotonicNonNull; import org.chromium.build.annotations.NullMarked; -@@ -267,7 +268,16 @@ class AppMenuHandlerImpl +@@ -273,7 +274,16 @@ class AppMenuHandlerImpl assert !(isByPermanentButton && startDragging); mModelList = mDelegate.getMenuItems(); @@ -2254,12 +2268,12 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch mModelList.addObserver(mListObserver); + ContextThemeWrapper wrapper = - new ContextThemeWrapper(mContext, R.style.OverflowMenuThemeOverlay); + new ContextThemeWrapper(mContext, R.style.AppMenuThemeOverlay); diff --git a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java b/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java --- a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java +++ b/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java -@@ -696,6 +696,7 @@ public class EdgeToEdgeControllerImpl +@@ -710,6 +710,7 @@ public class EdgeToEdgeControllerImpl * the system insets due to the keyboard or the bottom controls being visible. */ private boolean shouldPadAdjusters() { @@ -2270,15 +2284,15 @@ diff --git a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromi diff --git a/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java b/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java --- a/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java +++ b/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java -@@ -132,6 +132,7 @@ public class EdgeToEdgeUtils { +@@ -134,6 +134,7 @@ public class EdgeToEdgeUtils { * being attached to the window. */ public static boolean isEdgeToEdgeBottomChinEnabled(Activity activity) { + if ((true)) return false; // Make sure we test SDK version before checking the Feature so Field Trials only collect // from qualifying devices. - if (!EdgeToEdgeFieldTrial.getBottomChinOverrides().isEnabledForManufacturerVersion()) { -@@ -422,6 +423,7 @@ public class EdgeToEdgeUtils { + if (!EdgeToEdgeFieldTrialImpl.getBottomChinOverrides().isEnabledForManufacturerVersion()) { +@@ -399,6 +400,7 @@ public class EdgeToEdgeUtils { */ @Deprecated static boolean hasTappableNavigationBar(Window window) { @@ -2325,7 +2339,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -230,6 +230,7 @@ public class LocationBarCoordinator +@@ -214,6 +214,7 @@ public class LocationBarCoordinator uiOverrides.isForcedPhoneStyleOmnibox(), baseChromeLayout, deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, @@ -2463,7 +2477,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** An observer watching for changes to the visual state of the omnibox suggestions. */ public interface OmniboxSuggestionsVisualStateObserver { -@@ -104,6 +107,7 @@ public class AutocompleteCoordinator +@@ -105,6 +108,7 @@ public class AutocompleteCoordinator Context context = parent.getContext(); ModelList listItems = new ModelList(); @@ -2471,7 +2485,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow PropertyModel listModel = new PropertyModel.Builder(SuggestionListProperties.ALL_KEYS) .with(SuggestionListProperties.EMBEDDER, dropdownEmbedder) -@@ -226,6 +230,16 @@ public class AutocompleteCoordinator +@@ -228,6 +232,16 @@ public class AutocompleteCoordinator dropdown.forcePhoneStyleOmnibox(forcePhoneStyleOmnibox); dropdown.setAdapter(mAdapter); @@ -2491,7 +2505,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java -@@ -71,6 +71,8 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -72,6 +72,8 @@ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2500,7 +2514,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.List; import java.util.Optional; -@@ -1188,7 +1190,9 @@ class AutocompleteMediator +@@ -1189,7 +1191,9 @@ class AutocompleteMediator @Override public void onSuggestionDropdownScroll() { mSuggestionsListScrolled = true; @@ -2612,7 +2626,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 -@@ -1698,6 +1698,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1563,6 +1563,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2628,7 +2642,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn --- a/chrome/browser/ui/android/toolbar/BUILD.gn +++ b/chrome/browser/ui/android/toolbar/BUILD.gn -@@ -206,6 +206,7 @@ android_library("java") { +@@ -211,6 +211,7 @@ android_library("java") { "//content/public/android:content_java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_annotation_annotation_experimental_java", @@ -2756,15 +2770,27 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mIsBottomControlsVisible = visible; updateCompositedViewVisibility(); updateAndroidViewVisibility(); -@@ -193,6 +200,7 @@ class BottomControlsMediator - boolean bottomControlsMinHeightChanged, - boolean requestNewFrame, - boolean isVisibilityForced) { -+ mModel.set(BottomControlsProperties.TOPCONTROLSMINHEIGHT_OFFSET, topControlsMinHeightOffset); - // Method call routed to onBrowserControlsOffsetUpdate. - if (BottomControlsStacker.isDispatchingYOffset()) return; +@@ -183,6 +190,19 @@ class BottomControlsMediator + mTabObscuringHandler.removeObserver(this); + } -@@ -302,11 +310,13 @@ class BottomControlsMediator ++ @Override ++ public void onControlsOffsetChanged( ++ int topOffset, ++ int topControlsMinHeightOffset, ++ boolean topControlsMinHeightChanged, ++ int bottomOffset, ++ int bottomControlsMinHeightOffset, ++ boolean bottomControlsMinHeightChanged, ++ boolean requestNewFrame, ++ boolean isVisibilityForced) { ++ mModel.set(BottomControlsProperties.TOPCONTROLSMINHEIGHT_OFFSET, topControlsMinHeightOffset); ++ } ++ + @Override + public void onBottomControlsHeightChanged( + int bottomControlsHeight, int bottomControlsMinHeight) { +@@ -272,11 +292,13 @@ class BottomControlsMediator && !mIsInSwipeLayout && getBrowserControls().getBottomControlOffset() == 0; if (visible) { @@ -2808,7 +2834,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java -@@ -55,6 +55,8 @@ class BottomControlsViewBinder { +@@ -56,6 +56,8 @@ class BottomControlsViewBinder { view.sceneLayer.setYOffset(model.get(BottomControlsProperties.Y_OFFSET)); } else if (BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y == propertyKey) { view.root.setTranslationY(model.get(BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y)); @@ -2853,7 +2879,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * @param visible Whether this {@link SceneLayer} is visible. */ -@@ -134,6 +146,11 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements +@@ -132,6 +144,11 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements isShadowVisible = mBottomView.getVisibility() != View.VISIBLE; } @@ -2865,7 +2891,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ScrollingBottomViewSceneLayerJni.get() .updateScrollingBottomViewLayer( mNativePtr, -@@ -142,7 +159,7 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements +@@ -139,7 +156,7 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements mResourceId, mTopShadowHeightPx, mCurrentXOffsetPx, @@ -2877,7 +2903,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java -@@ -72,6 +72,10 @@ import java.lang.annotation.Retention; +@@ -76,6 +76,10 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.function.BooleanSupplier; @@ -2888,7 +2914,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** Layout for the browser controls (omnibox, menu, tab strip, etc..). */ @NullMarked public class ToolbarControlContainer extends OptimizedFrameLayout -@@ -179,6 +183,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -183,6 +187,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout if (view != null) ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height; } @@ -2973,7 +2999,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** A SceneLayer to render the top toolbar. This is the "view" piece of the top toolbar overlay. */ @JNINamespace("android") -@@ -43,6 +44,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -44,6 +45,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { /** Push all information about the texture to native at once. */ private void pushProperties(PropertyModel model) { if (mResourceManagerSupplier.get() == null) return; @@ -3114,8 +3140,8 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kAndroidBcivBottomControls); - #endif // BUILDFLAG(IS_ANDROID) - + // If this flag is enabled, a DumpWithoutCrashing() is captured when a bad + // state is detected when moving the composited UI. For example, this could diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc @@ -3126,8 +3152,8 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ +#include "cc/base/features.h" #include "cc/base/math_util.h" #include "cc/slim/layer.h" - #include "components/input/events_helper.h" -@@ -918,6 +919,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( + #include "components/input/cursor_manager.h" +@@ -916,6 +917,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( // factor. Thus, |top_content_offset| in CSS pixels is also in DIPs. float top_content_offset = metadata.top_controls_height * metadata.top_controls_shown_ratio; diff --git a/build/cromite_patches/Move-some-account-settings-back-to-privacy-settings.patch b/build/cromite_patches/Move-some-account-settings-back-to-privacy-settings.patch index fb291d69..5784d9d3 100644 --- a/build/cromite_patches/Move-some-account-settings-back-to-privacy-settings.patch +++ b/build/cromite_patches/Move-some-account-settings-back-to-privacy-settings.patch @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -436,6 +436,10 @@ For more settings that use data to improve your Chrome experience, go to diff --git a/build/cromite_patches/OpenSearch-miscellaneous.patch b/build/cromite_patches/OpenSearch-miscellaneous.patch index 265b32ee..4fdb541a 100644 --- a/build/cromite_patches/OpenSearch-miscellaneous.patch +++ b/build/cromite_patches/OpenSearch-miscellaneous.patch @@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java --- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java -@@ -291,7 +291,9 @@ public class SearchEngineAdapter extends BaseAdapter +@@ -292,7 +292,9 @@ public class SearchEngineAdapter extends BaseAdapter continue; } if (recentEngineNum < MAX_RECENT_ENGINE_NUM @@ -176,7 +176,7 @@ diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/c #include "base/metrics/histogram_macros.h" #include "base/no_destructor.h" #include "base/strings/string_number_conversions.h" -@@ -261,6 +262,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { +@@ -262,6 +263,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL(); if (!osdd_url.is_empty()) { @@ -321,7 +321,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc // regardless of |url| if the default search provider is managed by policy or // controlled by an extension. bool CanMakeDefault(const TemplateURL* url) const; -@@ -777,9 +780,6 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -774,9 +777,6 @@ class TemplateURLService final : public WebDataServiceConsumer, // SetKeywordSearchTermsForURL is invoked. void UpdateKeywordSearchTermsForURL(const URLVisitedDetails& details); diff --git a/build/cromite_patches/Override-Navigator-Language.patch b/build/cromite_patches/Override-Navigator-Language.patch index b3abe16c..1e023a94 100644 --- a/build/cromite_patches/Override-Navigator-Language.patch +++ b/build/cromite_patches/Override-Navigator-Language.patch @@ -69,7 +69,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #include "components/metrics/single_sample_metrics.h" #include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h" #include "components/services/storage/public/cpp/buckets/bucket_id.h" -@@ -3389,8 +3390,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3369,8 +3370,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( PropagateBrowserCommandLineToRenderer(browser_command_line, command_line); // Pass on the browser locale. diff --git a/build/cromite_patches/Partition-Blink-memory-cache.patch b/build/cromite_patches/Partition-Blink-memory-cache.patch index a0968183..e73c1bf5 100644 --- a/build/cromite_patches/Partition-Blink-memory-cache.patch +++ b/build/cromite_patches/Partition-Blink-memory-cache.patch @@ -40,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc b diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc -@@ -2654,7 +2654,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document, +@@ -2661,7 +2661,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document, if (!cached_resource) { cached_resource = MemoryCache::Get()->ResourceForURL( url, document->Fetcher()->GetCacheIdentifier( @@ -77,7 +77,7 @@ diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_part diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc --- a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc +++ b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc -@@ -209,7 +209,7 @@ void MemoryCache::RemoveInternal(ResourceMap* resource_map, +@@ -282,7 +282,7 @@ void MemoryCache::RemoveInternal(ResourceMap* resource_map, } bool MemoryCache::Contains(const Resource* resource) const { @@ -86,7 +86,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/ return false; const auto resource_maps_it = -@@ -225,13 +225,9 @@ bool MemoryCache::Contains(const Resource* resource) const { +@@ -298,13 +298,9 @@ bool MemoryCache::Contains(const Resource* resource) const { return resource == resources_it->value->GetResource(); } @@ -98,7 +98,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/ Resource* MemoryCache::ResourceForURL(const KURL& resource_url, const String& cache_identifier) const { + if (cache_identifier.empty()) return nullptr; - DCHECK(WTF::IsMainThread()); + DCHECK(IsMainThread()); if (!resource_url.IsValid() || resource_url.IsNull()) return nullptr; diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.h b/third_party/blink/renderer/platform/loader/fetch/memory_cache.h @@ -127,7 +127,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.h b/t diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc -@@ -989,7 +989,8 @@ Resource* ResourceFetcher::CreateResourceForStaticData( +@@ -985,7 +985,8 @@ Resource* ResourceFetcher::CreateResourceForStaticData( } const String cache_identifier = GetCacheIdentifier( @@ -137,7 +137,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c // Most off-main-thread resource fetches use Resource::kRaw and don't reach // this point, but off-main-thread module fetches might. if (IsMainThread()) { -@@ -1393,7 +1394,8 @@ Resource* ResourceFetcher::RequestResource(FetchParameters& params, +@@ -1389,7 +1390,8 @@ Resource* ResourceFetcher::RequestResource(FetchParameters& params, params.Url(), GetCacheIdentifier( params.Url(), @@ -147,7 +147,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c if (resource) { policy = DetermineRevalidationPolicy(resource_type, params, *resource, is_static_data); -@@ -1706,7 +1708,8 @@ Resource* ResourceFetcher::CreateResourceForLoading( +@@ -1702,7 +1704,8 @@ Resource* ResourceFetcher::CreateResourceForLoading( const ResourceFactory& factory) { const String cache_identifier = GetCacheIdentifier(params.GetResourceRequest().Url(), @@ -157,7 +157,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c DCHECK(!IsMainThread() || params.IsStaleRevalidation() || !MemoryCache::Get()->ResourceForURL(params.GetResourceRequest().Url(), cache_identifier)); -@@ -2832,11 +2835,47 @@ void ResourceFetcher::UpdateImagePrioritiesAndSpeculativeDecodes() { +@@ -2828,11 +2831,47 @@ void ResourceFetcher::UpdateImagePrioritiesAndSpeculativeDecodes() { } String ResourceFetcher::GetCacheIdentifier(const KURL& url, @@ -210,7 +210,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c } // Requests that can be satisfied via `archive_` (i.e. MHTML) or -@@ -2851,7 +2890,7 @@ String ResourceFetcher::GetCacheIdentifier(const KURL& url, +@@ -2847,7 +2886,7 @@ String ResourceFetcher::GetCacheIdentifier(const KURL& url, return bundle->GetCacheIdentifier(); } @@ -222,7 +222,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h -@@ -282,7 +282,12 @@ class PLATFORM_EXPORT ResourceFetcher +@@ -287,7 +287,12 @@ class PLATFORM_EXPORT ResourceFetcher // `url` is used for finding a matching WebBundle. // If `skip_service_worker` is true, the identifier won't be a ServiceWorker's // identifier to keep the cache separated. diff --git a/build/cromite_patches/Partition-blobs-by-top-frame-URL.patch b/build/cromite_patches/Partition-blobs-by-top-frame-URL.patch index 92a94405..6909607b 100644 --- a/build/cromite_patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/cromite_patches/Partition-blobs-by-top-frame-URL.patch @@ -10,18 +10,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../renderer_host/render_frame_host_impl.cc | 2 + .../Partition-blobs-by-top-frame-URL.inc | 1 + - storage/browser/blob/blob_url_store_impl.cc | 63 ++++++++++++++++++- - storage/browser/blob/blob_url_store_impl.h | 13 ++++ + storage/browser/blob/blob_url_registry.cc | 31 +++++++++- + storage/browser/blob/blob_url_registry.h | 11 +++- + storage/browser/blob/blob_url_store_impl.cc | 62 +++++++++++++++++-- + storage/browser/blob/blob_url_store_impl.h | 15 ++++- storage/browser/blob/features.cc | 1 + - .../public/mojom/blob/blob_url_store.mojom | 8 ++- - .../core/fileapi/public_url_manager.cc | 17 +++++ - 7 files changed, 101 insertions(+), 4 deletions(-) + .../public/mojom/blob/blob_url_store.mojom | 13 +++- + .../core/fileapi/public_url_manager.cc | 33 +++++++++- + 9 files changed, 154 insertions(+), 15 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -12792,6 +12792,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( +@@ -12939,6 +12939,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( } bool RenderFrameHostImpl::IsFullCookieAccessAllowed() { @@ -36,10 +38,106 @@ new file mode 100644 +++ b/cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc @@ -0,0 +1 @@ +SET_CROMITE_FEATURE_ENABLED(kEnforceNoopenerOnBlobURLNavigation); +diff --git a/storage/browser/blob/blob_url_registry.cc b/storage/browser/blob/blob_url_registry.cc +--- a/storage/browser/blob/blob_url_registry.cc ++++ b/storage/browser/blob/blob_url_registry.cc +@@ -93,13 +93,18 @@ bool BlobUrlRegistry::AddUrlMapping( + mojo::PendingRemote blob, + const blink::StorageKey& storage_key, + const url::Origin& renderer_origin, +- int render_process_host_id) { ++ int render_process_host_id, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!BlobUrlUtils::UrlHasFragment(blob_url)); + if (IsUrlMapped(blob_url, storage_key) == + BlobUrlRegistry::MappingStatus::kIsMapped) { + return false; + } ++ url_to_unsafe_agent_cluster_id_[blob_url] = unsafe_agent_cluster_id; ++ if (unsafe_top_level_site) ++ url_to_unsafe_top_level_site_[blob_url] = *unsafe_top_level_site; + BlobUrlData data; + data.blob = std::move(blob); + data.storage_key = storage_key; +@@ -121,6 +126,8 @@ bool BlobUrlRegistry::RemoveUrlMapping(const GURL& blob_url, + return false; + } + url_to_data_.erase(data_it); ++ url_to_unsafe_agent_cluster_id_.erase(blob_url); ++ url_to_unsafe_top_level_site_.erase(blob_url); + return true; + } + +@@ -184,6 +191,28 @@ BlobUrlRegistry::MappingStatus BlobUrlRegistry::IsUrlMapped( + return BlobUrlRegistry::MappingStatus::kNotMappedOther; + } + ++std::optional BlobUrlRegistry::GetUnsafeAgentClusterID( ++ const GURL& blob_url) const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto it = url_to_unsafe_agent_cluster_id_.find(blob_url); ++ if (it != url_to_unsafe_agent_cluster_id_.end()) ++ return it->second; ++ if (fallback_) ++ return fallback_->GetUnsafeAgentClusterID(blob_url); ++ return std::nullopt; ++} ++ ++std::optional BlobUrlRegistry::GetUnsafeTopLevelSite( ++ const GURL& blob_url) const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto it = url_to_unsafe_top_level_site_.find(blob_url); ++ if (it != url_to_unsafe_top_level_site_.end()) ++ return it->second; ++ if (fallback_) ++ return fallback_->GetUnsafeTopLevelSite(blob_url); ++ return std::nullopt; ++} ++ + mojo::PendingRemote BlobUrlRegistry::GetBlobFromUrl( + const GURL& url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +diff --git a/storage/browser/blob/blob_url_registry.h b/storage/browser/blob/blob_url_registry.h +--- a/storage/browser/blob/blob_url_registry.h ++++ b/storage/browser/blob/blob_url_registry.h +@@ -97,7 +97,9 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + mojo::PendingRemote blob, + const blink::StorageKey& storage_key, + const url::Origin& renderer_origin, +- int render_process_host_id); ++ int render_process_host_id, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site); + + // Removes the given URL mapping associated with `storage_key`. Returns false + // if the URL wasn't mapped. +@@ -108,6 +110,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + MappingStatus IsUrlMapped(const GURL& blob_url, + const blink::StorageKey& storage_key) const; + ++ std::optional GetUnsafeAgentClusterID( ++ const GURL& blob_url) const; ++ std::optional GetUnsafeTopLevelSite( ++ const GURL& blob_url) const; ++ + // Returns the blob from the given url. Returns a null remote if the mapping + // doesn't exist. + mojo::PendingRemote GetBlobFromUrl(const GURL& url); +@@ -163,6 +170,8 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + }; + + std::map url_to_data_; ++ std::map url_to_unsafe_agent_cluster_id_; ++ std::map url_to_unsafe_top_level_site_; + std::map>> + token_to_url_and_blob_; diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/blob_url_store_impl.cc --- a/storage/browser/blob/blob_url_store_impl.cc +++ b/storage/browser/blob/blob_url_store_impl.cc -@@ -106,6 +106,30 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { +@@ -113,9 +113,35 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { } } @@ -70,10 +168,15 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ void BlobURLStoreImpl::Register( mojo::PendingRemote blob, const GURL& url, -@@ -120,6 +144,14 @@ void BlobURLStoreImpl::Register( ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site, + RegisterCallback callback) { + // TODO(crbug.com/40061399): Generate blob URLs here, rather than + // validating the URLs the renderer process generated. +@@ -123,10 +149,18 @@ void BlobURLStoreImpl::Register( + std::move(callback).Run(); return; } - + // LOG(INFO) << "---BlobURLStoreImpl Register" + // << " url=" << url + // << " storage_key_origin=" << storage_key_.GetDebugString() @@ -81,11 +184,16 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ + // << " render_process_host_id_=" << render_process_host_id_ + // << " unsafe_top_level_site=" << (unsafe_top_level_site.has_value() ? unsafe_top_level_site->GetDebugString() : "") + // << " unsafe_agent_cluster_id=" << unsafe_agent_cluster_id.ToString(); -+ + if (registry_) registry_->AddUrlMapping(url, std::move(blob), storage_key_, - renderer_origin_, render_process_host_id_, -@@ -145,7 +177,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( +- renderer_origin_, render_process_host_id_); ++ renderer_origin_, render_process_host_id_, ++ unsafe_agent_cluster_id, unsafe_top_level_site); + urls_.insert(url); + std::move(callback).Run(); + } +@@ -148,7 +182,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( features::kBlockCrossPartitionBlobUrlFetching) && !partitioning_disabled_by_policy_; @@ -94,127 +202,108 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ has_storage_access_handle && mapping_status == BlobUrlRegistry::MappingStatus:: -@@ -156,26 +188,38 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( +@@ -158,7 +192,9 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( + void BlobURLStoreImpl::ResolveAsURLLoaderFactory( const GURL& url, - mojo::PendingReceiver receiver, +- mojo::PendingReceiver receiver) { ++ mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback) { ++ const std::optional& unsafe_top_level_site) { if (!registry_) { BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); - std::move(callback).Run(std::nullopt, std::nullopt); return; - } -- FinishResolveAsURLLoaderFactory(url, std::move(receiver), std::move(callback), -+ FinishResolveAsURLLoaderFactory(url, std::move(receiver), -+ unsafe_agent_cluster_id, unsafe_top_level_site, -+ std::move(callback), - storage_access_check_callback_.Run()); - } - - void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( - const GURL& url, - mojo::PendingReceiver receiver, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback, - bool has_storage_access_handle) { -+ if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); -+ std::move(callback).Run(std::nullopt, std::nullopt); -+ return; -+ } - const BlobUrlRegistry::MappingStatus mapping_status = - registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), storage_key_); - if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { - if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, - mapping_status)) { -+ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked" << url; - partitioning_blob_url_closure_.Run(url, - blink::mojom::PartitioningBlobURLInfo:: - kBlockedCrossPartitionFetching); -@@ -187,6 +231,12 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( - partitioning_blob_url_closure_.Run(url, std::nullopt); +@@ -181,6 +217,7 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { + if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, + mapping_status)) { ++ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked" << url; + partitioning_blob_url_closure_.Run( + url, blink::mojom::PartitioningBlobURLInfo:: + kBlockedCrossPartitionFetching); +@@ -192,6 +229,13 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + } } + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { ++ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked by IsSamePartition" << url; + BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); -+ std::move(callback).Run(std::nullopt, std::nullopt); ++ //std::move(callback).Run(std::nullopt, std::nullopt); + return; + } + // LOG(INFO) << "---ResolveAsURLLoaderFactory allowed " << url; BlobURLLoaderFactory::Create(registry_->GetBlobFromUrl(url), url, std::move(receiver)); - // When a fragment URL is present, registry_->GetUnsafeAgentClusterID(url) and -@@ -201,6 +251,8 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + } +@@ -199,7 +243,9 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + void BlobURLStoreImpl::ResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, - bool is_top_level_navigation, +- bool is_top_level_navigation) { ++ bool is_top_level_navigation, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback) { ++ const std::optional& unsafe_top_level_site) { // This function is known to be heap allocation heavy and performance // critical. Extra memory safety checks can introduce regression -@@ -212,6 +264,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( - return; + // (https://crbug.com/414710225) and these are disabled here. +@@ -216,6 +262,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), + storage_key_); + if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { ++ // LOG(INFO) << "---ResolveAsBlobURLToken blocked" << url; + if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, + mapping_status)) { + partitioning_blob_url_closure_.Run( +@@ -226,12 +273,17 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + partitioning_blob_url_closure_.Run(url, std::nullopt); + } } - FinishResolveAsBlobURLToken(url, std::move(token), is_top_level_navigation, -+ unsafe_agent_cluster_id, unsafe_top_level_site, - std::move(callback), - storage_access_check_callback_.Run()); - } -@@ -220,8 +273,14 @@ void BlobURLStoreImpl::FinishResolveAsBlobURLToken( - const GURL& url, - mojo::PendingReceiver token, - bool is_top_level_navigation, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback, - bool has_storage_access_handle) { + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ std::move(callback).Run(std::nullopt); ++ // LOG(INFO) << "---ResolveAsBlobURLToken blocked by IsSamePartition" << url; ++ //std::move(callback).Run(std::nullopt); + return; + } - if (!is_top_level_navigation) { - const BlobUrlRegistry::MappingStatus mapping_status = - registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), + + mojo::PendingRemote blob = registry_->GetBlobFromUrl(url); + if (!blob) { + return; + } +- ++ // LOG(INFO) << "---ResolveAsBlobURLToken allowed " << url; + new BlobURLTokenImpl(registry_, url, std::move(blob), std::move(token)); + } + diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/blob_url_store_impl.h --- a/storage/browser/blob/blob_url_store_impl.h +++ b/storage/browser/blob/blob_url_store_impl.h -@@ -60,11 +60,15 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - void ResolveAsURLLoaderFactory( +@@ -55,16 +55,22 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl + void Register( + mojo::PendingRemote blob, const GURL& url, - mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, + const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback) override; + RegisterCallback callback) override; + void Revoke(const GURL& url) override; + void ResolveAsURLLoaderFactory( + const GURL& url, +- mojo::PendingReceiver receiver) ++ mojo::PendingReceiver receiver, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site) + override; void ResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, - bool is_top_level_navigation, +- bool is_top_level_navigation) override; ++ bool is_top_level_navigation, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback) override; ++ const std::optional& unsafe_top_level_site) override; private: -@@ -81,6 +85,8 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - void FinishResolveAsURLLoaderFactory( - const GURL& url, - mojo::PendingReceiver receiver, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback, - bool has_storage_access_handle); - -@@ -88,9 +94,16 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - const GURL& url, - mojo::PendingReceiver token, - bool is_top_level_navigation, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback, - bool has_storage_access_handle); + // Checks if the passed in url is a valid blob url for this blob url store. +@@ -77,6 +83,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl + bool has_storage_access_handle, + BlobUrlRegistry::MappingStatus mapping_status); + bool IsSamePartition( + const GURL& blob_url, @@ -227,10 +316,10 @@ diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/b diff --git a/storage/browser/blob/features.cc b/storage/browser/blob/features.cc --- a/storage/browser/blob/features.cc +++ b/storage/browser/blob/features.cc -@@ -18,6 +18,7 @@ BASE_FEATURE(kBlockCrossPartitionBlobUrlFetching, - #else +@@ -10,6 +10,7 @@ namespace features { + BASE_FEATURE(kBlockCrossPartitionBlobUrlFetching, + "BlockCrossPartitionBlobUrlFetching", base::FEATURE_ENABLED_BY_DEFAULT); - #endif +SET_CROMITE_FEATURE_ENABLED(kBlockCrossPartitionBlobUrlFetching); // Please keep features in alphabetical order. @@ -238,32 +327,51 @@ diff --git a/storage/browser/blob/features.cc b/storage/browser/blob/features.cc diff --git a/third_party/blink/public/mojom/blob/blob_url_store.mojom b/third_party/blink/public/mojom/blob/blob_url_store.mojom --- a/third_party/blink/public/mojom/blob/blob_url_store.mojom +++ b/third_party/blink/public/mojom/blob/blob_url_store.mojom -@@ -37,7 +37,9 @@ interface BlobURLStore { +@@ -4,6 +4,7 @@ + module blink.mojom; + + import "mojo/public/mojom/base/unguessable_token.mojom"; ++import "services/network/public/mojom/schemeful_site.mojom"; + import "services/network/public/mojom/url_loader_factory.mojom"; + import "third_party/blink/public/mojom/blob/blob.mojom"; + import "url/mojom/url.mojom"; +@@ -19,7 +20,9 @@ interface BlobURLStore { + // new blob: URL rather than letting the caller in the renderer provide one. + [Sync] Register( + pending_remote blob, +- url.mojom.Url url) => (); ++ url.mojom.Url url, ++ mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, ++ network.mojom.SchemefulSite? unsafe_top_level_site) => (); + + // Revokes a public Blob URL. + Revoke(url.mojom.Url url); +@@ -33,7 +36,9 @@ interface BlobURLStore { // both the blob URL and all other references to the blob have been dropped. ResolveAsURLLoaderFactory( url.mojom.Url url, -- pending_receiver factory) => ( +- pending_receiver factory); + pending_receiver factory, + mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, -+ network.mojom.SchemefulSite? unsafe_top_level_site) => ( - // TODO(https://crbug.com/1224926): Remove these once experiment is over. - mojo_base.mojom.UnguessableToken? unsafe_agent_cluster_id, - network.mojom.SchemefulSite? unsafe_top_level_site); -@@ -48,7 +50,9 @@ interface BlobURLStore { ++ network.mojom.SchemefulSite? unsafe_top_level_site); + + // Resolves a public Blob URL into a BlobURLToken. The BlobURLToken can be + // used by the browser process to securely look up the blob a URL used to +@@ -41,7 +46,9 @@ interface BlobURLStore { // As long as the token is alive, the resolved blob will also be kept alive. ResolveAsBlobURLToken(url.mojom.Url url, pending_receiver token, -- bool is_top_level_navigation) => ( +- bool is_top_level_navigation); + bool is_top_level_navigation, + mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, -+ network.mojom.SchemefulSite? unsafe_top_level_site) => ( - // TODO(https://crbug.com/1224926): Remove this once experiment is over. - mojo_base.mojom.UnguessableToken? unsafe_agent_cluster_id); ++ network.mojom.SchemefulSite? unsafe_top_level_site); }; + + // A token representing a Blob URL. The browser process can use this to look up diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/third_party/blink/renderer/core/fileapi/public_url_manager.cc --- a/third_party/blink/renderer/core/fileapi/public_url_manager.cc +++ b/third_party/blink/renderer/core/fileapi/public_url_manager.cc -@@ -63,6 +63,21 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { +@@ -61,6 +61,21 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { BlobURLNullOriginMap::GetInstance()->Remove(blob_url); } @@ -285,20 +393,43 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi } // namespace PublicURLManager::PublicURLManager(ExecutionContext* execution_context) -@@ -269,6 +284,7 @@ void PublicURLManager::Resolve( +@@ -158,7 +173,17 @@ String PublicURLManager::RegisterURL(URLRegistrable* registrable) { + mojo::PendingReceiver blob_receiver = + blob_remote.InitWithNewPipeAndPassReceiver(); + +- GetBlobURLStore().Register(std::move(blob_remote), url); ++ std::optional top_level_site; ++ if (GetExecutionContext()->IsWindow()) { ++ auto* window = To(GetExecutionContext()); ++ if (window->top() && window->top()->GetFrame()) { ++ top_level_site = BlinkSchemefulSite(window->top() ++ ->GetFrame() ++ ->GetSecurityContext() ++ ->GetSecurityOrigin()); ++ } ++ } ++ GetBlobURLStore().Register(std::move(blob_remote), url, GetExecutionContext()->GetAgentClusterID(), top_level_site); + + mojo_urls_.insert(url_string); + registrable->CloneMojoBlob(std::move(blob_receiver)); +@@ -208,7 +233,8 @@ void PublicURLManager::Resolve( + + DCHECK(url.ProtocolIs("blob")); - GetBlobURLStore().ResolveAsURLLoaderFactory( - url, std::move(factory_receiver), -+ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext()), - WTF::BindOnce(metrics_callback, WrapPersistent(GetExecutionContext()))); +- GetBlobURLStore().ResolveAsURLLoaderFactory(url, std::move(factory_receiver)); ++ GetBlobURLStore().ResolveAsURLLoaderFactory(url, std::move(factory_receiver), ++ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext())); } -@@ -293,6 +309,7 @@ void PublicURLManager::ResolveAsBlobURLToken( + void PublicURLManager::ResolveAsBlobURLToken( +@@ -221,7 +247,8 @@ void PublicURLManager::ResolveAsBlobURLToken( + DCHECK(url.ProtocolIs("blob")); - GetBlobURLStore().ResolveAsBlobURLToken( - url, std::move(token_receiver), is_top_level_navigation, -+ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext()), - WTF::BindOnce(metrics_callback, WrapPersistent(GetExecutionContext()))); + GetBlobURLStore().ResolveAsBlobURLToken(url, std::move(token_receiver), +- is_top_level_navigation); ++ is_top_level_navigation, ++ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext())); } + void PublicURLManager::ContextDestroyed() { -- diff --git a/build/cromite_patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch b/build/cromite_patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch index 99f1df4a..95728a47 100644 --- a/build/cromite_patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch +++ b/build/cromite_patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch @@ -45,9 +45,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -233,6 +233,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kAsyncNotificationManager, +@@ -248,6 +248,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kAsyncNotificationManagerForDownload, + &kAutomotiveBackButtonBarStreamline, &kAuxiliarySearchDonation, + &kCloseAllTabsModalDialog, &kBatchTabRestore, @@ -56,7 +56,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -338,6 +338,7 @@ public abstract class ChromeFeatureList { +@@ -353,6 +353,7 @@ public abstract class ChromeFeatureList { "ClearBrowsingDataAndroidSurvey"; public static final String CLEAR_INSTANCE_INFO_WHEN_CLOSED_INTENTIONALLY = "ClearInstanceInfoWhenClosedIntentionally"; diff --git a/build/cromite_patches/Re-introduce-override_build_timestamp.patch b/build/cromite_patches/Re-introduce-override_build_timestamp.patch index b9e00054..db0bd3bd 100644 --- a/build/cromite_patches/Re-introduce-override_build_timestamp.patch +++ b/build/cromite_patches/Re-introduce-override_build_timestamp.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -4308,8 +4308,12 @@ if (current_toolchain == default_toolchain) { +@@ -4349,8 +4349,12 @@ if (current_toolchain == default_toolchain) { outputs = [ _build_date_header_internal ] args = [ rebase_path(_build_date_header_internal, root_build_dir), @@ -42,7 +42,7 @@ diff --git a/build_overrides/build.gni b/build_overrides/build.gni + # details; expected format is Unix Epoch time in seconds. + override_build_timestamp = "N/A" + - # Allows googletest to pretty-print various absl types. Disabled for nacl due - # to lack of toolchain support. - gtest_enable_absl_printers = !is_nacl + # Allows googletest to pretty-print various absl types. + gtest_enable_absl_printers = true + -- diff --git a/build/cromite_patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch b/build/cromite_patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch index e9302cae..b9340ad7 100644 --- a/build/cromite_patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch +++ b/build/cromite_patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch @@ -35,7 +35,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -527,6 +527,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -537,6 +537,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( // fields in the referrer. GURL referrer(request_->referrer()); @@ -43,7 +43,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque // Our consumer should have made sure that this is a safe referrer (e.g. via // URLRequestJob::ComputeReferrerForPolicy). if (referrer.is_valid()) { -@@ -534,11 +535,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -544,11 +545,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer, referer_value); } @@ -58,7 +58,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque AddExtraHeaders(); -@@ -784,10 +788,10 @@ void URLRequestHttpJob::StartTransactionInternal() { +@@ -794,10 +798,10 @@ void URLRequestHttpJob::StartTransactionInternal() { void URLRequestHttpJob::AddExtraHeaders() { request_info_.extra_headers.SetAcceptEncodingIfMissing( request()->url(), request()->accepted_stream_types(), diff --git a/build/cromite_patches/Remove-EV-certificates.patch b/build/cromite_patches/Remove-EV-certificates.patch index 22c2b735..855d51e5 100644 --- a/build/cromite_patches/Remove-EV-certificates.patch +++ b/build/cromite_patches/Remove-EV-certificates.patch @@ -37,7 +37,7 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc #endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA) } // namespace -@@ -116,7 +128,6 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) { +@@ -114,7 +126,6 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) { // bool EVRootCAMetadata::IsEVPolicyOID(bssl::der::Input policy_oid) const { @@ -56,5 +56,5 @@ diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h +//#define PLATFORM_USES_CHROMIUM_EV_METADATA #endif - namespace base { + namespace bssl { -- diff --git a/build/cromite_patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch b/build/cromite_patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch index b855c7e2..25eb39ac 100644 --- a/build/cromite_patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/cromite_patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -646,6 +646,8 @@ chrome_java_resources = [ +@@ -634,6 +634,8 @@ chrome_java_resources = [ "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", "java/res/xml/privacy_preferences.xml", @@ -56,7 +56,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -917,6 +917,8 @@ chrome_java_sources = [ +@@ -923,6 +923,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarLimiter.java", @@ -395,7 +395,7 @@ new file mode 100644 diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -229,6 +229,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -231,6 +231,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kExpireDaysThreshold] = settings_api::PrefType::kNumber; @@ -410,7 +410,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -611,6 +611,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( +@@ -678,6 +678,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( base::BindRepeating(&SystemNetworkContextManager::UpdateReferrersEnabled, base::Unretained(this))); @@ -420,7 +420,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows pref_change_registrar_.Add( prefs::kExplicitlyAllowedNetworkPorts, base::BindRepeating( -@@ -692,6 +695,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -760,6 +763,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { // the system NetworkContext, and the per-profile pref values are used for // the profile NetworkContexts. registry->RegisterBooleanPref(prefs::kEnableReferrers, true); @@ -456,13 +456,13 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ + on-settings-control-change="onReferersPolicyChanged_"> + + - - -