From 8e5a82cb9ed5de06ffc4614f9f7c6b351491a77e Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 29 Sep 2025 11:50:52 +0200 Subject: [PATCH 1/8] Patches for 141 --- .../Add-AllowUserCertificates-flag.patch | 14 +- ...dd-Alt-D-hotkey-to-focus-address-bar.patch | 6 +- ...tialLowEndModeOnMidRangeDevices-flag.patch | 10 +- .../Add-a-flag-to-disable-GamePad-API.patch | 8 +- .../Add-a-proxy-configuration-page.patch | 14 +- build/patches/Add-autoplay-site-setting.patch | 2 +- .../Add-bookmark-import-export-actions.patch | 74 ++--- build/patches/Add-cromite-flags-support.patch | 203 ++++++------- build/patches/Add-cromite-test-support.patch | 22 +- ...dd-custom-tab-intents-privacy-option.patch | 38 +-- build/patches/Add-exit-menu-item.patch | 16 +- ...g-for-omnibox-autocomplete-filtering.patch | 8 +- .../Add-flag-to-disable-IPv6-probes.patch | 4 +- ...-to-disable-external-intent-requests.patch | 16 +- .../Add-flag-to-disable-vibration.patch | 2 +- ...-switch-for-unsupported-clangd-flags.patch | 12 +- ...Add-lifetime-options-for-permissions.patch | 128 ++++---- .../Add-menu-item-to-bookmark-all-tabs.patch | 26 +- .../Add-menu-item-to-view-source.patch | 10 +- .../Add-option-to-disable-snapshots.patch | 31 +- ...-to-not-persist-tabs-across-sessions.patch | 14 +- .../Add-option-to-use-home-page-as-NTP.patch | 36 +-- build/patches/Add-search-engine.patch | 15 +- .../Add-setting-to-clear-data-on-exit.patch | 28 +- ...d-setting-to-invert-tap-and-long-tap.patch | 69 ++--- build/patches/Add-site-engagement-flag.patch | 6 +- ...-support-for-ISupportHelpAndFeedback.patch | 4 +- .../Add-support-for-writing-URIs.patch | 2 +- build/patches/Add-webGL-site-setting.patch | 4 +- build/patches/Add-webRTC-site-settings.patch | 6 +- ...ow-building-without-enable_reporting.patch | 22 +- ...ow-building-without-supervised-users.patch | 26 +- .../Allow-playing-audio-in-background.patch | 6 +- ...ays-open-browser-controls-in-new-tab.patch | 10 +- ...e-new-tab-page-for-default-home-page.patch | 17 +- .../patches/Android-Pixel-Perfect-Mode.patch | 276 +++++++++--------- ...roid-Toolbar-Scroll-Ablation-setting.patch | 4 +- ...Ask-for-restart-on-connection-change.patch | 60 ++-- ...Block-gateway-attacks-via-websockets.patch | 2 +- ...k-leakage-of-urls-in-sandbox-iframes.patch | 4 +- .../Block-qjz9zk-or-trk-requests.patch | 4 +- build/patches/Bromite-auto-updater.patch | 82 +++--- .../Bromite-subresource-adblocker.patch | 30 +- .../Bubble-Locking-on-UI-DevTools.patch | 12 +- .../patches/Chrome-web-store-protection.patch | 155 +++++----- ...ORS-Preflight-Cache-on-clearing-data.patch | 2 +- build/patches/Client-hints-overrides.patch | 53 ++-- .../patches/Close-Sessions-On-Ip-Change.patch | 6 +- ...romite-Branding--improve-settings-ui.patch | 10 +- build/patches/Cromite-Branding.patch | 53 ++-- build/patches/Customize-selection-popup.patch | 32 +- ...ctionary-suggestions-for-the-Omnibox.patch | 9 +- .../Disable-Android-Tab-Declutter.patch | 2 +- .../Disable-CSS-blink-feature-support.patch | 2 +- .../Disable-CSSDynamicRangeLimit.patch | 2 +- build/patches/Disable-Compose-feature.patch | 6 +- ...ble-Compression-Dictionary-Transport.patch | 2 +- .../Disable-Device-Attributes-API.patch | 4 +- build/patches/Disable-FedCm.patch | 2 +- build/patches/Disable-GSA-by-default.patch | 26 +- .../Disable-GetInstalledRelatedApps-API.patch | 2 +- .../Disable-Paint-Preview-by-default.patch | 2 +- build/patches/Disable-Real-Box.patch | 4 +- build/patches/Disable-TLS-resumption.patch | 12 +- build/patches/Disable-Viewport-Segments.patch | 2 +- build/patches/Disable-WebGPU.patch | 8 +- .../patches/Disable-all-predictors-code.patch | 199 ++++++------- build/patches/Disable-all-promo-dialogs.patch | 6 +- .../Disable-conversion-measurement-api.patch | 44 +-- build/patches/Disable-crash-reporting.patch | 6 +- .../Disable-css-preferred-text-scale.patch | 2 +- ...Disable-fetching-of-all-field-trials.patch | 26 +- build/patches/Disable-idle-detection.patch | 2 +- ...media-router-and-remoting-by-default.patch | 6 +- .../Disable-omission-of-URL-elements.patch | 6 +- .../patches/Disable-plugins-enumeration.patch | 2 +- .../Disable-prefers-reduced-motion.patch | 10 +- ...ers-reduced-transparency-media-query.patch | 2 +- ...e-privacy-issues-in-password-manager.patch | 10 +- build/patches/Disable-privacy-sandbox.patch | 51 ++-- ...e-references-to-fonts.googleapis.com.patch | 6 +- ...ble-remote-altsvc-for-h3-connections.patch | 10 +- .../Disable-smart-selection-by-default.patch | 8 +- ...isable-some-signed-exchange-features.patch | 2 +- ...isable-speechSynthesis-getVoices-API.patch | 2 +- .../Disable-text-fragments-by-default.patch | 8 +- .../Disable-third-party-origin-trials.patch | 10 +- build/patches/Disable-various-metrics.patch | 50 ++-- .../Disable-visited-pseudo-class.patch | 10 +- ...allow-Android-App-Scheme-as-referrer.patch | 2 +- .../Do-not-build-API-keys-infobar.patch | 2 +- .../Do-not-compile-QR-code-sharing.patch | 18 +- .../patches/Do-not-link-with-libatomic.patch | 2 +- .../Do-not-store-passwords-by-default.patch | 9 +- ...Windows-ClearType-Text-Tuner-setting.patch | 4 +- build/patches/DoH-improvements.patch | 6 +- ...ndroid-Dynamic-Performance-Framework.patch | 20 +- build/patches/Enable-Cert-Management-UI.patch | 2 +- .../Enable-Certificate-Transparency.patch | 8 +- ...le-Document-Open-Inheritance-Removal.patch | 4 +- .../Enable-Global-Privacy-Control.patch | 40 +-- build/patches/Enable-HEVC-by-default.patch | 14 +- ...Enable-HighEfficiencyMode-by-default.patch | 2 +- ...ctOriginIsolation-and-SitePerProcess.patch | 8 +- build/patches/Enable-component-updater.patch | 14 +- ...e-darken-websites-checkbox-in-themes.patch | 2 +- ...fwrapv-in-Clang-for-non-UBSan-builds.patch | 2 +- .../patches/Enable-gwp-asan-on-Android.patch | 22 +- .../Enable-menu-on-reload-button.patch | 4 +- .../Enable-network-isolation-features.patch | 12 +- ...le-platform-aac-audio-and-h264-video.patch | 16 +- build/patches/Enable-share-intent.patch | 26 +- build/patches/Enable-snackbar-swipe.patch | 14 +- ...ivation-of-the-js-debugger-statement.patch | 16 +- .../Experimental-user-scripts-support.patch | 54 ++-- build/patches/Eyeo-Adblock-for-Cromite.patch | 48 +-- build/patches/Fix-chromium-build-bugs.patch | 12 +- .../Fonts-fingerprinting-mitigation.patch | 20 +- .../Force-use-vpython3-for-some-scripts.patch | 2 +- .../Guard-for-user-agent-reduction.patch | 8 +- ...story-number-of-days-privacy-setting.patch | 47 ++- build/patches/Internal-firewall.patch | 24 +- build/patches/JIT-site-settings.patch | 16 +- .../Keep-ComputePressure-disabled.patch | 2 +- .../patches/Keep-Manta-Service-Disabled.patch | 2 +- .../patches/Keep-disabled-FetchLaterAPI.patch | 4 +- ...ep-disabled-WebViewMediaIntegrityApi.patch | 8 +- .../Keep-empty-tabs-between-sessions.patch | 10 +- ...-allow-screenshots-in-Incognito-mode.patch | 6 +- build/patches/Keyboard-protection-flag.patch | 12 +- .../Lock-Profile-Cookie-Database.patch | 6 +- ...ing-attributes-in-some-html-elements.patch | 14 +- build/patches/Logcat-crash-reports-UI.patch | 8 +- .../patches/Modify-default-preferences.patch | 12 +- ...nt-settings-back-to-privacy-settings.patch | 12 +- .../Multiple-fingerprinting-mitigations.patch | 36 +-- ...er-treat-Proguard-warnings-as-errors.patch | 2 +- build/patches/OpenSearch-miscellaneous.patch | 8 +- .../patches/Override-Navigator-Language.patch | 6 +- .../Partition-Blink-memory-cache.patch | 18 +- .../patches/Partition-HSTS-cache-by-NAK.patch | 58 ++-- .../Partition-MediaDeviceId-by-default.patch | 2 +- .../Partition-blobs-by-top-frame-URL.patch | 2 +- ...vate-network-access-content-settings.patch | 16 +- ...redential-fingerprinting-mitigations.patch | 6 +- ...-modal-dialog-flag-to-close-all-tabs.patch | 12 +- ...e-introduce-override_build_timestamp.patch | 2 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 13 +- .../Remove-ChromiumNetworkAdapter.patch | 2 +- ...referrals-in-cross-origin-navigation.patch | 42 +-- build/patches/Remove-SMS-integration.patch | 24 +- .../Remove-binary-blob-integrations.patch | 158 +++++----- ...cklisted-URLs-upon-bookmark-creation.patch | 2 +- .../Remove-detection-of-captive-portals.patch | 2 +- build/patches/Remove-help-menu-item.patch | 20 +- .../Remove-segmentation-platform.patch | 6 +- ...Remove-voice-recognition-integration.patch | 106 +++---- ...ndow-name-on-cross-origin-navigation.patch | 10 +- ...ore-BookmarkToolbar-setCurrentFolder.patch | 25 +- .../Restore-LastTabStandingTracker.patch | 8 +- .../Restore-Search-Ready-Omnibox-flag.patch | 41 ++- .../Restore-Simplified-NTP-launch.patch | 126 ++++---- ...-button-in-top-toolbar-customization.patch | 14 +- .../Restore-chrome-password-store.patch | 44 +-- .../Restore-classic-new-tab-page.patch | 6 +- .../Restore-offline-indicator-v2-flag.patch | 18 +- ...emove-disable-pull-to-refresh-effect.patch | 2 +- ...l-of-execution-context-address-space.patch | 38 +-- ...script-content-setting-secondary-url.patch | 6 +- .../Set-caret-blink-interval-to-default.patch | 2 +- .../Set-the-screen-frame-rate-to-60-Hz.patch | 34 +-- build/patches/Show-NTP-at-startup.patch | 36 +-- build/patches/Site-setting-for-images.patch | 12 +- .../Switch-to-fstack-protector-strong.patch | 2 +- ...-Add-a-log-to-track-strange-behavior.patch | 2 +- ...formanceNavigationTiming-privacy-fix.patch | 4 +- .../Temp-disable-UseContextSnapshot.patch | 8 +- ...e-experimental-web-platform-features.patch | 2 +- ...ileSystemAccessPersistentPermissions.patch | 6 +- ...arily-disable-Tab-Group-Sync-Android.patch | 4 +- build/patches/Timezone-customization.patch | 16 +- .../patches/Use-BoringSSL-for-RandBytes.patch | 30 +- .../Use-browser-navigation-handler.patch | 10 +- .../Use-list-mode-for-tab-switcher.patch | 46 +-- build/patches/User-agent-customization.patch | 60 ++-- build/patches/Viewport-Protection-flag.patch | 36 +-- build/patches/WIN-Disable-updater.patch | 8 +- build/patches/WIN-Fix-log-to-file.patch | 2 +- .../WIN-disable-annotate-downloads.patch | 2 +- build/patches/WIN-enable-pdf-plugin.patch | 2 +- ...message-for-unsupported-hardware-aes.patch | 6 +- build/patches/Welcome-screen.patch | 22 +- build/patches/add-browser-policy.patch | 55 ++-- ...load-of-clang-for-windows-crossbuild.patch | 32 +- build/patches/autofill-miscellaneous.patch | 20 +- build/patches/bromite-build-utils.patch | 12 +- .../disable-WebView-variations-support.patch | 8 +- .../disable-appending-variations-header.patch | 2 +- ...IPv6-connectivity-probes-to-RIPE-DNS.patch | 2 +- ...ot-block-build-incompatible-profiles.patch | 2 +- .../enable-ftrivial-auto-var-init-zero.patch | 2 +- .../eyeo-133.0.6943.49-android_api.patch | 18 +- .../eyeo-133.0.6943.49-android_settings.patch | 36 +-- build/patches/eyeo-133.0.6943.49-base.patch | 62 ++-- ...yeo-133.0.6943.49-chrome_integration.patch | 80 ++--- .../eyeo-133.0.6943.49-extension_api.patch | 24 +- .../kill-Location-fall-back-to-system.patch | 21 +- build/patches/kill-Vision.patch | 2 +- .../sharing-hub-always-use-visible-URL.patch | 2 +- ...gled-chromium-Disable-profile-avatar.patch | 6 +- ...romium-Disable-translate-integration.patch | 17 +- ...chromium-Disable-webRTC-log-uploader.patch | 2 +- ...ed-chromium-no-special-hosts-domains.patch | 109 +++---- ...RTC-do-not-expose-local-IP-addresses.patch | 4 +- 214 files changed, 2286 insertions(+), 2318 deletions(-) diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index b77fcca6..df21203f 100644 --- a/build/patches/Add-AllowUserCertificates-flag.patch +++ b/build/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 -@@ -236,6 +236,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -239,6 +239,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; -@@ -985,6 +986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -999,6 +1000,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 -@@ -184,6 +184,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -181,6 +181,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, @@ -59,7 +59,7 @@ 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 = -@@ -768,6 +769,8 @@ public abstract class ChromeFeatureList { +@@ -796,6 +797,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); @@ -68,9 +68,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sAppSpecificHistoryViewIntent = newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true); public static final CachedFlag sAsyncNotificationManager = -@@ -1080,6 +1083,7 @@ public abstract class ChromeFeatureList { - sAccountForSuppressedKeyboardInsets, - sAllowTabClosingUponMinimization, +@@ -1131,6 +1134,7 @@ public abstract class ChromeFeatureList { + sAndroidAnimatedProgressBarInBrowser, + sAndroidAnimatedProgressBarInViz, sAndroidAppIntegration, + sAllowUserCertificates, sAndroidAppIntegrationModule, diff --git a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index b9df368a..26d2be12 100644 --- a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -10,9 +10,9 @@ 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 -@@ -890,6 +890,11 @@ public class KeyboardShortcuts { - KeyEvent.KEYCODE_B, - (KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)); +@@ -895,6 +895,11 @@ public class KeyboardShortcuts { + KeyEvent.KEYCODE_ESCAPE, + KeyEvent.META_CTRL_ON); } + addShortcut(context, + shortcutGroupsById.get(R.string.keyboard_shortcut_chrome_feature_group_header), diff --git a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch index 0983566d..8c82ee41 100644 --- a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch +++ b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/features.cc b/base/features.cc --- a/base/features.cc +++ b/base/features.cc -@@ -149,6 +149,10 @@ bool IsReducePPMsEnabled() { +@@ -129,6 +129,10 @@ bool IsReducePPMsEnabled() { return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed); } @@ -29,15 +29,15 @@ diff --git a/base/features.cc b/base/features.cc diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc -@@ -7,6 +7,7 @@ - #pragma allow_unsafe_libc_calls - #endif +@@ -2,6 +2,7 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. +#include "base/features.h" #include "content/renderer/render_process_impl.h" #include "build/build_config.h" -@@ -127,10 +128,18 @@ RenderProcessImpl::RenderProcessImpl() +@@ -122,10 +123,18 @@ RenderProcessImpl::RenderProcessImpl() base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisallowV8FeatureFlagOverrides); if (!disallow_v8_feature_flag_overrides) { diff --git a/build/patches/Add-a-flag-to-disable-GamePad-API.patch b/build/patches/Add-a-flag-to-disable-GamePad-API.patch index 5d48178d..a64f07cc 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.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 -@@ -8690,9 +8690,9 @@ +@@ -8787,9 +8787,9 @@ "expiry_milestone": 150 }, { @@ -28,11 +28,11 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js + "expiry_milestone": -1 }, { - "name": "retain-omnibox-on-focus", + "name": "rewriter-api-for-gemini-nano", diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -258,6 +258,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { +@@ -263,6 +263,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)}, {wf::EnablePeriodicBackgroundSync, raw_ref(features::kPeriodicBackgroundSync)}, @@ -56,7 +56,7 @@ new file mode 100644 diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/public/cpp/gamepad_features.cc --- a/device/gamepad/public/cpp/gamepad_features.cc +++ b/device/gamepad/public/cpp/gamepad_features.cc -@@ -36,4 +36,12 @@ bool IsGamepadMultitouchEnabled() { +@@ -33,4 +33,12 @@ bool IsGamepadMultitouchEnabled() { return false; } diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index 0c6a07a3..cd0fc177 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -78,7 +78,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -100,6 +100,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -102,6 +102,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; @@ -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 -@@ -376,6 +376,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -409,6 +409,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); @@ -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 -@@ -1605,6 +1607,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1685,6 +1687,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 -@@ -169,6 +169,8 @@ static_library("ui") { +@@ -156,6 +156,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.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 -@@ -422,7 +425,7 @@ void RegisterChromeWebUIConfigs() { +@@ -424,7 +427,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 -@@ -50,6 +50,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -53,6 +53,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, -@@ -71,6 +72,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -74,6 +75,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({ diff --git a/build/patches/Add-autoplay-site-setting.patch b/build/patches/Add-autoplay-site-setting.patch index 7b784340..4d3ff33b 100644 --- a/build/patches/Add-autoplay-site-setting.patch +++ b/build/patches/Add-autoplay-site-setting.patch @@ -308,7 +308,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi if (!IsLockedPendingUserGesture()) return false; -@@ -458,6 +461,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { +@@ -457,6 +460,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { } } diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 7754a013..e7db3b19 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -94,17 +94,17 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java -@@ -13,6 +13,7 @@ import org.chromium.base.jank_tracker.JankTracker; - import org.chromium.base.supplier.ObservableSupplier; +@@ -11,6 +11,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +import org.chromium.chrome.browser.app.ChromeActivity; 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; -@@ -60,7 +61,7 @@ import java.util.List; - * ChromeTabbedActivity}. +@@ -60,7 +61,7 @@ import java.util.function.Supplier; */ + @NullMarked public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - private final Activity mActivity; + private final ChromeActivity mActivity; @@ -112,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; @@ -91,7 +92,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - private NativePageFactory mNativePageFactory; + private @Nullable NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( - Activity activity, @@ -199,33 +199,33 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -19,6 +19,7 @@ import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.base.supplier.Supplier; +@@ -20,6 +20,7 @@ import org.chromium.base.supplier.OneshotSupplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -63,7 +64,7 @@ import org.chromium.ui.util.ColorUtils; - * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. +@@ -67,7 +68,7 @@ import java.util.function.Supplier; */ + @NullMarked public class NativePageFactory { - private final Activity mActivity; + private final ChromeActivity mActivity; private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; - private final Supplier mCurrentTabSupplier; -@@ -87,7 +88,7 @@ public class NativePageFactory { - private static NativePage sTestPage; + private final Supplier<@Nullable Tab> mCurrentTabSupplier; +@@ -91,7 +92,7 @@ public class NativePageFactory { + private static @Nullable NativePage sTestPage; public NativePageFactory( -- @NonNull Activity activity, -+ @NonNull ChromeActivity activity, - @NonNull BottomSheetController sheetController, - @NonNull BrowserControlsManager browserControlsManager, - @NonNull Supplier currentTabSupplier, -@@ -162,7 +163,7 @@ public class NativePageFactory { +- Activity activity, ++ ChromeActivity activity, + BottomSheetController sheetController, + BrowserControlsManager browserControlsManager, + Supplier<@Nullable Tab> currentTabSupplier, +@@ -166,7 +167,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -234,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; -@@ -271,7 +272,7 @@ public class NativePageFactory { +@@ -275,7 +276,7 @@ public class NativePageFactory { mBrowserControlsManager, mTabModelSelector, mEdgeToEdgeControllerSupplier), @@ -246,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 -@@ -245,6 +245,8 @@ static_library("browser") { +@@ -241,6 +241,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -255,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", -@@ -1721,6 +1723,13 @@ static_library("browser") { +@@ -1688,6 +1690,13 @@ static_library("browser") { ] } @@ -269,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", -@@ -3704,8 +3713,6 @@ static_library("browser") { +@@ -3712,8 +3721,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -681,10 +681,10 @@ 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/BookmarkManagerCoordinator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java -@@ -57,6 +57,8 @@ import org.chromium.components.image_fetcher.ImageFetcher; - import org.chromium.components.image_fetcher.ImageFetcherConfig; +@@ -57,6 +57,8 @@ import org.chromium.components.image_fetcher.ImageFetcherConfig; import org.chromium.components.image_fetcher.ImageFetcherFactory; import org.chromium.ui.KeyboardVisibilityDelegate; + import org.chromium.ui.edge_to_edge.EdgeToEdgePadAdjuster; +import org.chromium.ui.base.ActivityWindowAndroid; +import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -714,9 +714,9 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows +import org.chromium.ui.base.ActivityWindowAndroid; +import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.accessibility.AccessibilityState; - import org.chromium.ui.listmenu.ListMenu; - import org.chromium.ui.listmenu.ListMenuItemProperties; -@@ -81,6 +83,47 @@ import java.util.function.BooleanSupplier; + import org.chromium.ui.base.DeviceFormFactor; + import org.chromium.ui.base.DeviceInput; +@@ -83,6 +85,47 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -764,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 -@@ -91,6 +134,9 @@ class BookmarkManagerMediator +@@ -93,6 +136,9 @@ class BookmarkManagerMediator private static boolean sPreventLoadingForTesting; @@ -774,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; -@@ -597,6 +643,14 @@ class BookmarkManagerMediator +@@ -608,6 +654,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -789,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. -@@ -769,6 +823,235 @@ class BookmarkManagerMediator +@@ -780,6 +834,235 @@ class BookmarkManagerMediator } } @@ -1250,7 +1250,7 @@ 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 -@@ -251,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -255,6 +255,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kBatchTabRestore, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, @@ -1261,7 +1261,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 -@@ -689,6 +689,7 @@ public abstract class ChromeFeatureList { +@@ -702,6 +702,7 @@ public abstract class ChromeFeatureList { public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1324,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"; -@@ -1017,6 +1019,7 @@ public final class ChromePreferenceKeys { +@@ -1051,6 +1053,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1410,7 +1410,7 @@ diff --git a/components/headless/select_file_dialog/headless_select_file_dialog. 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, +@@ -138,6 +138,7 @@ std::optional GetBoolAttribute(std::string_view attribute_list, // Given the URL of a page and a favicon data URL, adds an appropriate record // to the given favicon usage vector. @@ -1418,7 +1418,7 @@ diff --git a/components/user_data_importer/content/content_bookmark_parser_utils void DataURLToFaviconUsage(const GURL& link_url, const GURL& favicon_data, favicon_base::FaviconUsageDataList* favicons) { -@@ -438,9 +439,11 @@ BookmarkParser::ParsedBookmarks ParseBookmarksUnsafe( +@@ -495,9 +496,11 @@ BookmarkParser::ParsedBookmarks ParseBookmarksUnsafe( } parsing_result.bookmarks.push_back(std::move(entry)); diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 28ab519e..d012f919 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -35,7 +35,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/flags/ChromeFeatureList.java | 13 +- .../flags/cromite/include_all_directory.java | 1 + .../java_template/CromiteCachedFlag.java.tmpl | 47 +++++ - chrome/browser/settings/BUILD.gn | 1 + .../settings/ChromeBaseSettingsFragment.java | 50 +++++ .../strings/android_chrome_strings.grd | 1 + .../Add-cromite-flags-support.grdp | 9 + @@ -107,7 +106,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, 834 insertions(+), 31 deletions(-) + 93 files changed, 832 insertions(+), 32 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 @@ -144,7 +143,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -174,6 +174,8 @@ use_epoll = is_linux || is_chromeos || is_android +@@ -170,6 +170,8 @@ use_epoll = is_linux || is_chromeos || is_android # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -153,7 +152,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1043,7 +1045,7 @@ component("base") { +@@ -1046,7 +1048,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -180,7 +179,7 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc diff --git a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java b/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java --- a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java +++ b/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned.java -@@ -18,7 +18,7 @@ import java.util.Map; +@@ -18,7 +18,7 @@ import java.util.function.Supplier; @NullMarked public abstract class ValuesReturned { @GuardedBy("sBoolValues") @@ -192,7 +191,7 @@ diff --git a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -41,6 +41,31 @@ +@@ -42,6 +42,31 @@ namespace base { @@ -224,7 +223,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc namespace { // Pointer to the FeatureList instance singleton that was set via -@@ -470,6 +495,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { +@@ -471,6 +496,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -271,7 +270,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc // static bool FeatureList::IsValidFeatureOrFieldTrialName(std::string_view name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -737,6 +802,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, +@@ -738,6 +803,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -292,7 +291,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc diff --git a/base/feature_list.h b/base/feature_list.h --- a/base/feature_list.h +++ b/base/feature_list.h -@@ -177,8 +177,10 @@ enum class FeatureMacroHandshake { kSecret }; +@@ -238,8 +238,10 @@ constexpr const char* GetFeatureNameFromIdentifier(std::string_view feature) { struct BASE_EXPORT LOGICALLY_CONST Feature { constexpr Feature(const char* name, FeatureState default_state, @@ -305,7 +304,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) { -@@ -205,6 +207,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { +@@ -266,6 +268,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -315,7 +314,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -485,6 +490,11 @@ class BASE_EXPORT FeatureList { +@@ -546,6 +551,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -327,7 +326,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h // Some characters are not allowed to appear in feature names or the // associated field trial names, as they are used as special characters for // command-line serialization. This function checks that the strings are ASCII -@@ -754,4 +764,70 @@ class BASE_EXPORT FeatureList { +@@ -815,4 +825,70 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -401,10 +400,10 @@ diff --git a/base/feature_list.h b/base/feature_list.h diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp_features.py --- a/build/android/gyp/java_cpp_features.py +++ b/build/android/gyp/java_cpp_features.py -@@ -21,10 +21,27 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): - # ExtractConstantName() -> 'ConstantName' - # ExtractValue() -> '"StringNameOfTheFeature"' - FEATURE_RE = re.compile(r'BASE_FEATURE\(k([^,]+),') +@@ -25,10 +25,27 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): + _FEATURE_RE_3_ARGS = re.compile(r'BASE_FEATURE\(k([^,]+),') + # For 2-arg macro: BASE_FEATURE(MyFeature, ...) + _FEATURE_RE_2_ARGS = re.compile(r'BASE_FEATURE\(([^,]+),') + + FEATURE_RE1 = re.compile(r'CROMITE_FEATURE\(k([^,]+),') + FEATURE_RE2 = re.compile(r'CROMITE_FEATURE_KEEP_DISABLED\(k([^,]+),') @@ -412,10 +411,10 @@ diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp + FEATURE_RE4 = re.compile(r'CROMITE_FEATURE_KEEP_ENABLED\(k([^,]+),') + FEATURE_RE5 = re.compile(r'CROMITE_FEATURE_ENABLED\(k([^,]+),') + - VALUE_RE = re.compile(r'\s*("(?:\"|[^"])*")\s*,') + _VALUE_RE = re.compile(r'\s*("(?:\\"|[^"])*")\s*,') def ExtractConstantName(self, line): - match = FeatureParserDelegate.FEATURE_RE.match(line) + match = self._FEATURE_RE_3_ARGS.match(line) + if match is None: + match = FeatureParserDelegate.FEATURE_RE1.match(line) + if match is None: @@ -426,9 +425,9 @@ diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp + match = FeatureParserDelegate.FEATURE_RE4.match(line) + if match is None: + match = FeatureParserDelegate.FEATURE_RE5.match(line) - return match.group(1) if match else None - - def ExtractValue(self, line): + if match: + return match.group(1) + match = self._FEATURE_RE_2_ARGS.match(line) diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml --- a/chrome/android/java/res/values/values.xml +++ b/chrome/android/java/res/values/values.xml @@ -471,7 +470,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -130,7 +130,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -132,7 +132,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } @Override @@ -483,18 +482,18 @@ 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 -@@ -11,6 +11,7 @@ import androidx.annotation.NonNull; +@@ -10,6 +10,7 @@ import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.chrome.browser.accessibility.settings.ChromeAccessibilitySettingsDelegate; -@@ -70,18 +71,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl + import org.chromium.build.annotations.NullMarked; +@@ -72,24 +73,31 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl private final OneshotSupplier mSnackbarManagerSupplier; private final OneshotSupplier mBottomSheetControllerSupplier; - private final ObservableSupplier mModalDialogManagerSupplier; + private final ObservableSupplier<@Nullable ModalDialogManager> mModalDialogManagerSupplier; + private final Supplier mRequireRestartDelegateSupplier; public FragmentDependencyProvider( @@ -502,8 +501,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme Profile profile, OneshotSupplier snackbarManagerSupplier, OneshotSupplier bottomSheetControllerSupplier, -- ObservableSupplier modalDialogManagerSupplier) { -+ ObservableSupplier modalDialogManagerSupplier, +- ObservableSupplier<@Nullable ModalDialogManager> modalDialogManagerSupplier) { ++ ObservableSupplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, + Supplier requireRestartDelegateSupplier) { mContext = context; mProfile = profile; @@ -514,9 +513,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme } @Override -@@ -90,6 +94,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl - @NonNull Fragment fragment, - @NonNull Context unusedContext) { + public void onFragmentAttached( + FragmentManager fragmentManager, Fragment fragment, Context unusedContext) { // Common dependencies attachments. + if (fragment instanceof ChromeBaseSettingsFragment) { + ((ChromeBaseSettingsFragment)fragment).setRequestRestartDelegateSupplier( @@ -528,25 +526,25 @@ 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/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -4,6 +4,7 @@ +@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.settings; - package org.chromium.chrome.browser.settings; + import static org.chromium.build.NullUtil.assumeNonNull; +import android.app.Activity; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -@@ -32,7 +33,9 @@ import org.chromium.base.Callback; - import org.chromium.base.CallbackUtils; +@@ -32,7 +33,9 @@ import org.chromium.base.CallbackUtils; + import org.chromium.base.DeviceInfo; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.OneshotSupplierImpl; - import org.chromium.chrome.R; - import org.chromium.chrome.browser.ChromeBaseAppCompatActivity; -@@ -40,12 +43,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +@@ -42,12 +45,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; @@ -561,7 +559,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; -@@ -88,6 +93,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -92,6 +97,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable { private static final String TAG = "SettingsActivity"; @@ -602,7 +600,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) public static final String EXTRA_SHOW_FRAGMENT = "show_fragment"; -@@ -154,7 +193,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -158,7 +197,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, @@ -615,22 +613,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java -@@ -19,12 +19,13 @@ import org.chromium.build.annotations.Nullable; - import org.chromium.chrome.R; - import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; - import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; -+import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; - import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; - import org.chromium.components.browser_ui.settings.SettingsUtils; +@@ -23,8 +23,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; /** Settings fragment containing preferences aimed at Chrome and web developers. */ @NullMarked --public class DeveloperSettings extends PreferenceFragmentCompat implements EmbeddableSettingsPage { +-public class DeveloperSettings extends ChromeBaseSettingsFragment +- implements EmbeddableSettingsPage { +public class DeveloperSettings extends ChromeBaseSettingsFragment implements EmbeddableSettingsPage { private static final String UI_PREF_BETA_STABLE_HINT = "beta_stable_hint"; // Non-translated strings: -@@ -55,7 +56,7 @@ public class DeveloperSettings extends PreferenceFragmentCompat implements Embed +@@ -55,7 +54,7 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment } @Override @@ -642,7 +635,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 -@@ -381,6 +381,10 @@ using flags_ui::kOsLinux; +@@ -384,6 +384,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -653,9 +646,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4903,6 +4907,10 @@ const FeatureEntry::FeatureVariation - constexpr char kWebiumFlag[] = "webium"; - #endif // !BUILDFLAG(IS_ANDROID) +@@ -4895,6 +4899,10 @@ const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ + // BUILDFLAG(IS_CHROMEOS) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -664,7 +657,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. -@@ -4929,6 +4937,9 @@ constexpr char kWebiumFlag[] = "webium"; +@@ -4921,6 +4929,9 @@ const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -686,7 +679,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 -@@ -121,6 +121,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -125,6 +125,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -736,7 +729,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 -@@ -1489,5 +1489,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1554,5 +1554,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -746,7 +739,7 @@ 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 -@@ -337,6 +337,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( +@@ -345,6 +345,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( "snippet_as_subtitle", /*default_value=*/false); @@ -768,18 +761,18 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -1063,7 +1067,7 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sWebApkMinShellApkVersion = +@@ -1111,7 +1115,7 @@ public abstract class ChromeFeatureList { newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); + // keep-sorted end - public static final List sFlagsCachedFullBrowser = + public static final List sFlagsCachedFullBrowserChromium = List.of( + // keep-sorted start sAccountForSuppressedKeyboardInsets, - sAllowTabClosingUponMinimization, -@@ -1205,6 +1209,13 @@ public abstract class ChromeFeatureList { - sUseLibunwindstackNativeUnwinderAndroid, - sWebApkMinShellApkVersion); +@@ -1268,6 +1272,13 @@ public abstract class ChromeFeatureList { + // keep-sorted end + ); + private static List concatenateLists(List... collections) { + return Arrays.stream(collections).flatMap(x -> x.stream()).collect(Collectors.toList()); @@ -849,30 +842,20 @@ new file mode 100644 + }} + +}} -diff --git a/chrome/browser/settings/BUILD.gn b/chrome/browser/settings/BUILD.gn ---- a/chrome/browser/settings/BUILD.gn -+++ b/chrome/browser/settings/BUILD.gn -@@ -35,6 +35,7 @@ android_library("java") { - "//base:base_java", - "//chrome/browser/feedback/android:factory_java", - "//chrome/browser/feedback/android:java", -+ "//chrome/browser/flags:java", - "//chrome/browser/preferences:java", - "//chrome/browser/profiles/android:java", - "//chrome/browser/ui/android/favicon:java", diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java --- a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java +++ b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java -@@ -8,12 +8,19 @@ import androidx.preference.PreferenceFragmentCompat; - +@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +import org.chromium.base.supplier.Supplier; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherFactory; - import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; - import org.chromium.components.browser_ui.settings.SettingsCustomTabLauncher; + import org.chromium.chrome.browser.flags.ChromeFeatureList; +@@ -28,6 +29,12 @@ import org.chromium.components.browser_ui.settings.SettingsStylingController; + + import java.util.Objects; +import android.os.Bundle; +import androidx.preference.Preference; @@ -883,9 +866,9 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse /** * Base class for settings in Chrome. * -@@ -28,6 +35,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa - private Profile mProfile; - private SettingsCustomTabLauncher mCustomTabLauncher; +@@ -89,6 +96,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa + }); + } + private Supplier mRequireRestartDelegateSupplier; + @@ -967,9 +950,9 @@ 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 -@@ -619,4 +619,5 @@ bool IsBookmarkTabGroupConversionEnabled() { - return base::FeatureList::IsEnabled(kBookmarkTabGroupConversion); +@@ -748,4 +748,5 @@ bool IsNewTabAddsToActiveGroupEnabled() { } + #endif // !BUILDFLAG(IS_ANDROID) +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" } // namespace features @@ -1008,9 +991,9 @@ 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 -@@ -1977,5 +1977,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, - BASE_FEATURE(kSilentPolicyAndDefaultAppUpdating, - "SilentPolicyAndDefaultAppUpdating", +@@ -1612,5 +1612,5 @@ BASE_FEATURE(DisableShortcutsEnableDiy, base::FEATURE_ENABLED_BY_DEFAULT); + // happen silently without prompting an updating dialog. + BASE_FEATURE(SilentPolicyAndDefaultAppUpdating, base::FEATURE_DISABLED_BY_DEFAULT); - +#include "cromite_flags/chrome_common_chrome_features_cc.inc" @@ -1160,7 +1143,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 -@@ -181,5 +181,6 @@ BASE_FEATURE(kForceAllowStorageAccess, +@@ -176,5 +176,6 @@ BASE_FEATURE(kForceAllowStorageAccess, "ForceAllowStorageAccess", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1196,7 +1179,7 @@ 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 -@@ -219,4 +219,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, +@@ -225,4 +225,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -1205,7 +1188,7 @@ diff --git a/components/password_manager/core/browser/features/password_features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -139,6 +139,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -137,6 +137,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, "OsAdditionalSecurityPermissionKillSwitch", base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -1638,7 +1621,7 @@ 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 -@@ -743,4 +743,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { +@@ -761,4 +761,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); } @@ -1647,7 +1630,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc 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 -@@ -1676,4 +1676,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1403,4 +1403,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1656,7 +1639,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 -@@ -400,6 +400,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -404,6 +404,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -2002,7 +1985,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 -@@ -2008,5 +2008,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1727,5 +1727,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2012,7 +1995,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 -@@ -601,5 +601,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -603,5 +603,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2022,18 +2005,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 -@@ -909,4 +909,5 @@ BASE_FEATURE_PARAM(bool, - "url_request_redirect_job", - false); +@@ -804,4 +804,5 @@ BASE_FEATURE_PARAM(std::string, + /*name=*/"wildcard_quic_hints", + /*default_value=*/""); +#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 -@@ -896,6 +896,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, kNetTaskSchedulerURLRequestJob); - NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, - kNetTaskSchedulerURLRequestRedirectJob); +@@ -912,6 +912,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, kQuicHintHostPortPairs); + NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, + kWildcardQuicHintHostPortPairs); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2042,7 +2025,7 @@ 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 -@@ -666,4 +666,5 @@ BASE_FEATURE_PARAM(bool, +@@ -674,4 +674,5 @@ BASE_FEATURE_PARAM(bool, "url_loader", false); @@ -2051,7 +2034,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c 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 -@@ -366,6 +366,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); +@@ -367,6 +367,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerURLLoader); @@ -2062,7 +2045,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 -@@ -2927,4 +2927,5 @@ bool IsXrDevice() { +@@ -2566,4 +2566,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2071,7 +2054,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 -@@ -1912,6 +1912,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); +@@ -1903,6 +1903,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. @@ -2082,18 +2065,18 @@ 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 -@@ -483,4 +483,5 @@ bool IsHandleIMESpanChangesOnUpdateCompositionEnabled() { - features::kHandleIMESpanChangesOnUpdateComposition); - } +@@ -492,4 +492,5 @@ BASE_FEATURE(kUseSystemDefaultAccentColors, + "UseSystemDefaultAccentColors", + base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/ui_base_features_cc.inc" } // namespace features 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 -@@ -242,6 +242,7 @@ BASE_DECLARE_FEATURE(kHandleIMESpanChangesOnUpdateComposition); +@@ -248,6 +248,7 @@ bool IsHandleIMESpanChangesOnUpdateCompositionEnabled(); COMPONENT_EXPORT(UI_BASE_FEATURES) - bool IsHandleIMESpanChangesOnUpdateCompositionEnabled(); + BASE_DECLARE_FEATURE(kUseSystemDefaultAccentColors); +#include "cromite_flags/ui_base_features_h.inc" } // namespace features diff --git a/build/patches/Add-cromite-test-support.patch b/build/patches/Add-cromite-test-support.patch index 28804ab7..2aef794b 100644 --- a/build/patches/Add-cromite-test-support.patch +++ b/build/patches/Add-cromite-test-support.patch @@ -73,15 +73,15 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -139,6 +139,7 @@ import org.chromium.ui.base.PhotoPickerListener; - import org.chromium.ui.base.SelectFileDialog; +@@ -144,6 +144,7 @@ import org.chromium.ui.base.SelectFileDialog; import org.chromium.ui.base.WindowAndroid; + import org.chromium.ui.edge_to_edge.EdgeToEdgeStateProvider; import org.chromium.url.GURL; +import org.chromium.chrome.browser.flags.cromite.sActAsWebView; import java.io.File; import java.nio.charset.StandardCharsets; -@@ -698,7 +699,10 @@ public class ProcessInitializationHandler { +@@ -710,7 +711,10 @@ public class ProcessInitializationHandler { tasks.add( () -> { @@ -96,7 +96,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java -@@ -37,7 +37,7 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment implements Emb +@@ -35,7 +35,7 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment implements Emb private final ObservableSupplier mPageTitle = new ObservableSupplierImpl<>(MSG_DEVELOPER_OPTIONS_TITLE); @@ -434,7 +434,7 @@ diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/s diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -657,6 +657,7 @@ mojom("mojo_bindings") { +@@ -662,6 +662,7 @@ mojom("mojo_bindings") { sources = [ "chrome_render_frame.mojom", "google_accounts_private_api_extension.mojom", @@ -457,7 +457,7 @@ new file mode 100644 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -74,6 +74,8 @@ static_library("renderer") { +@@ -80,6 +80,8 @@ static_library("renderer") { "chrome_render_thread_observer.cc", "chrome_render_thread_observer.h", "custom_menu_commands.h", @@ -469,7 +469,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 -@@ -54,6 +54,7 @@ +@@ -56,6 +56,7 @@ #include "chrome/renderer/chrome_render_frame_observer.h" #include "chrome/renderer/chrome_render_thread_observer.h" #include "chrome/renderer/controlled_frame/controlled_frame_extensions_renderer_api_provider.h" @@ -477,7 +477,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #include "chrome/renderer/google_accounts_private_api_extension.h" #include "chrome/renderer/loadtimes_extension_bindings.h" #include "chrome/renderer/media/flash_embed_rewrite.h" -@@ -624,6 +625,7 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -645,6 +646,7 @@ void ChromeContentRendererClient::RenderFrameCreated( TrustedVaultEncryptionKeysExtension::Create(render_frame); GoogleAccountsPrivateApiExtension::Create(render_frame); @@ -851,7 +851,7 @@ diff --git a/content/browser/log_console_message.h b/content/browser/log_console 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 -@@ -315,6 +315,8 @@ +@@ -319,6 +319,8 @@ #include "url/origin.h" #include "url/url_constants.h" @@ -860,7 +860,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #if BUILDFLAG(IS_ANDROID) #include "content/browser/accessibility/browser_accessibility_manager_android.h" #include "content/browser/android/content_url_loader_factory.h" -@@ -4755,7 +4757,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4763,7 +4765,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( if (delegate_->DidAddMessageToConsole(this, log_level, message, line_no, updated_source_id, untrusted_stack_trace)) { @@ -870,7 +870,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b } // Pass through log severity only on builtin components pages to limit console -@@ -4772,8 +4775,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4780,8 +4783,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( const bool is_off_the_record = GetSiteInstance()->GetBrowserContext()->IsOffTheRecord(); diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 5073f0e6..e5cd9a9f 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -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()); -@@ -490,6 +500,17 @@ public class LaunchIntentDispatcher { +@@ -489,6 +499,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -109,7 +109,7 @@ 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 +@@ -236,16 +236,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid // Extra whose value is an array of ints that is supplied to // SyntheticTrialRegistry::RegisterExternalExperiments(). @@ -132,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust /** * 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 +@@ -685,7 +685,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION, ScreenOrientation.DEFAULT)); @@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust mBreakPointDp = getActivityBreakPointFromIntent(intent); mInitialActivityHeight = getInitialActivityHeightFromIntent(intent); -@@ -695,8 +695,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -698,8 +698,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT); mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED; @@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust @BackgroundInteractBehavior int backgroundInteractBehavior = IntentUtils.safeGetIntExtra( -@@ -1267,7 +1267,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1270,7 +1270,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() ? CustomTabProfileType.INCOGNITO @@ -166,7 +166,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/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 -@@ -780,7 +780,7 @@ public class CustomTabsConnection { +@@ -776,7 +776,7 @@ public class CustomTabsConnection { ThreadUtils.assertOnUiThread(); if (extras == null) return; int[] experimentIds = @@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust 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 { +@@ -992,6 +992,7 @@ public class CustomTabsConnection { PostTask.postTask( TaskTraits.UI_DEFAULT, () -> { @@ -206,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled(); } -@@ -220,6 +226,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD +@@ -221,6 +227,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD } public static boolean isValidIncognitoIntent(Intent intent, boolean recordMetrics) { @@ -217,7 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco if (!isIncognitoRequested(intent)) return false; var session = SessionHolder.getSessionHolderFromIntent(intent); if (isIntentFromThirdPartyAllowed() -@@ -329,6 +339,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD +@@ -330,6 +340,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD @Override public @CustomTabProfileType int getCustomTabMode() { @@ -231,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -10,6 +10,7 @@ import android.content.Context; +@@ -11,6 +11,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; @@ -239,7 +239,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import android.os.Bundle; import android.text.SpannableString; import android.text.style.ClickableSpan; -@@ -79,6 +80,15 @@ import org.chromium.ui.text.SpanApplier; +@@ -80,6 +81,15 @@ import org.chromium.ui.text.SpanApplier; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -255,7 +255,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import androidx.preference.PreferenceCategory; import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.base.shared_preferences.SharedPreferencesManager; -@@ -152,6 +162,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -154,6 +164,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment startTag, endTag, new ChromeClickableSpan(context, onClickCallback)); } @@ -265,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); -@@ -384,6 +397,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -385,6 +398,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -275,7 +275,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -404,6 +420,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -405,6 +421,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -307,7 +307,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -436,6 +477,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -437,6 +478,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -327,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 -@@ -1093,7 +1093,7 @@ BASE_FEATURE(kMagicStackAndroid, +@@ -1149,7 +1149,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. @@ -339,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 -@@ -943,6 +943,8 @@ public abstract class ChromeFeatureList { +@@ -991,6 +991,8 @@ public abstract class ChromeFeatureList { MOST_VISITED_TILES_CUSTOMIZATION, /* defaultValue= */ false, /* defaultValueInTests= */ true); @@ -348,7 +348,7 @@ 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 = -@@ -1165,6 +1167,7 @@ public abstract class ChromeFeatureList { +@@ -1226,6 +1228,7 @@ public abstract class ChromeFeatureList { sMiniOriginBar, sMitigateLegacySearchEnginePromoOverlap, sMostVisitedTilesCustomization, @@ -422,7 +422,7 @@ diff --git a/components/language/core/common/language_experiments.cc b/component +++ b/components/language/core/common/language_experiments.cc @@ -26,4 +26,5 @@ BASE_FEATURE(kDisableGeoLanguageModel, "DisableGeoLanguageModel", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate); } // namespace language diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 417e77ad..4e1fc75c 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -119,6 +119,7 @@ found in the LICENSE file. +@@ -121,6 +121,7 @@ found in the LICENSE file. @@ -28,16 +28,16 @@ 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 -@@ -345,6 +345,8 @@ import java.util.Map; - import java.util.Set; +@@ -352,6 +352,8 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; + import java.util.function.Supplier; +import org.chromium.chrome.browser.lifetime.ApplicationLifetime; + /** * 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. -@@ -3692,6 +3694,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3820,6 +3822,8 @@ public class ChromeTabbedActivity extends ChromeActivity { .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); @@ -49,7 +49,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 -@@ -59,6 +59,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; +@@ -61,6 +61,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityUtils; @@ -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; -@@ -2445,6 +2446,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2481,6 +2482,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 -@@ -384,6 +384,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -390,6 +390,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 -@@ -4347,6 +4347,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4311,6 +4311,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Dark theme diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 73e47e1d..5fa03a3d 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -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" -@@ -632,6 +633,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -637,6 +638,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { @@ -79,16 +79,16 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc --- a/components/url_formatter/url_fixer.cc +++ b/components/url_formatter/url_fixer.cc -@@ -15,6 +15,8 @@ - #include +@@ -11,6 +11,8 @@ #include "base/check_op.h" + #include "base/compiler_specific.h" +#include "base/containers/contains.h" +#include "base/command_line.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/i18n/char_iterator.h" -@@ -648,6 +650,8 @@ GURL FixupURLInternal(const std::string& text, +@@ -644,6 +646,8 @@ GURL FixupURLInternal(const std::string& text, FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url); if (chrome_url && !parts.host.is_valid()) { diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index 1bf86135..1c3be714 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,7 +45,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1157,6 +1157,7 @@ component("net") { +@@ -1167,6 +1167,7 @@ component("net") { ":net_deps", "//components/miracle_parameter/common", "//components/network_time/time_tracker", @@ -64,7 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" -@@ -1497,6 +1498,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1496,6 +1497,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( return OK; } diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index aa90eb26..578cfdd3 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/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 -@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; +@@ -35,6 +35,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; -@@ -128,6 +129,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { +@@ -152,6 +153,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { @Override public boolean shouldDisableAllExternalIntents() { @@ -68,7 +68,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/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 -@@ -26,6 +26,7 @@ import org.chromium.base.supplier.Supplier; +@@ -25,6 +25,7 @@ import org.chromium.base.PackageManagerUtils; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity2; @@ -76,10 +76,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -@@ -117,7 +118,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat - +@@ -119,7 +120,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat @Override - public boolean shouldDisableExternalIntentRequestsForUrl(GURL url) { + public boolean shouldDisableExternalIntentRequestsForUrl( + ExternalNavigationParams params, Intent intent) { - return false; + if ("tel".equals(url.getScheme())) return false; + return !sAllowExternalIntentRequests.getInstance().isEnabled(); @@ -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 -@@ -1558,6 +1558,12 @@ public class ExternalNavigationHandler { +@@ -1556,6 +1556,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, -@@ -1626,6 +1632,21 @@ public class ExternalNavigationHandler { +@@ -1624,6 +1630,21 @@ public class ExternalNavigationHandler { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 21ee820a..4148cafc 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -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 -@@ -1011,6 +1011,10 @@ +@@ -1045,6 +1045,10 @@ { name: "CompositingDecisionAtAnimationPhaseBoundaries" }, diff --git a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch index b8de58fb..27c8d431 100644 --- a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +++ b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch @@ -14,16 +14,16 @@ 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 -@@ -700,7 +700,7 @@ config("compiler") { +@@ -694,7 +694,7 @@ config("compiler") { # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds. # It also causes segfault on Linux s390x: # https://github.com/llvm/llvm-project/issues/149511 - if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" && + if (is_linux && !skip_clangd_unsupported_options && use_lld && !llvm_android_mainline && current_cpu != "arm" && - current_cpu != "s390x" && - default_toolchain != "//build/toolchain/cros:target") { + current_cpu != "s390x") { cflags += [ "-Wa,--crel,--allow-experimental-crel" ] -@@ -1813,7 +1813,7 @@ config("clang_revision") { + } +@@ -1806,7 +1806,7 @@ config("clang_revision") { # e.g. by setting in the the project's .gn file. config("clang_warning_suppression") { # Some build configs use older versions of clang that don't support WSMs @@ -32,7 +32,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn from_build_root = rebase_path(clang_warning_suppression_file, root_build_dir) inputs = [ clang_warning_suppression_file ] -@@ -2146,7 +2146,6 @@ config("default_warnings") { +@@ -2140,7 +2140,6 @@ config("default_warnings") { # TODO(crbug.com/376641662): Fix and re-enable. "-Wno-nontrivial-memcall", ] @@ -40,7 +40,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags_cc += [ # TODO(crbug.com/328490295): Fix and re-enable for C flags. "-Wenum-compare-conditional", -@@ -2211,6 +2210,15 @@ config("default_warnings") { +@@ -2205,6 +2204,15 @@ config("default_warnings") { ] } diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index a3e22b0d..9d45a22f 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -233,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 -@@ -227,7 +227,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { +@@ -228,7 +228,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { active_chip_permission_request_manager_.value()->Accept(); break; case permissions::PermissionAction::GRANTED_ONCE: @@ -269,7 +269,7 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v 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 -@@ -630,6 +630,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -634,6 +634,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } @RequiresNonNull({"mSite"}) @@ -281,7 +281,7 @@ 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(); -@@ -1316,6 +1321,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1240,6 +1245,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment .getDefaultColor()); } } @@ -295,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 -@@ -218,7 +218,7 @@ void GetOrigins(JNIEnv* env, +@@ -223,7 +223,7 @@ void GetOrigins(JNIEnv* env, seen_origins.push_back(origin); insertionFunc(env, static_cast(content_type), list, ConvertOriginToJavaString(env, origin), jembedder, @@ -365,7 +365,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc bool CanTrackLastVisit(ContentSettingsType type) { DCHECK(WebsiteSettingsRegistry::GetInstance()->Get(type)) << type; -@@ -261,10 +297,6 @@ const std::vector& GetTypesWithTemporaryGrants() { +@@ -273,10 +309,6 @@ const std::vector& GetTypesWithTemporaryGrants() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, @@ -376,7 +376,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc ContentSettingsType::HAND_TRACKING, ContentSettingsType::SMART_CARD_DATA, ContentSettingsType::AR, -@@ -280,10 +312,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { +@@ -292,10 +324,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, @@ -425,34 +425,33 @@ 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 -@@ -378,9 +378,9 @@ public class PageInfoController - String name, - String nameMidSentence, - int type, -- @ContentSettingValues int currentSettingValue) { -+ @ContentSettingValues int currentSettingValue, boolean is_user_session) { - mPermissionParamsListBuilder.addPermissionEntry( -- name, nameMidSentence, type, currentSettingValue); -+ name, nameMidSentence, type, currentSettingValue, is_user_session); +@@ -374,8 +374,8 @@ public class PageInfoController + */ + @CalledByNative + private void addPermissionSection( +- String name, String nameMidSentence, int type, boolean allowed) { +- mPermissionParamsListBuilder.addPermissionEntry(name, nameMidSentence, type, allowed); ++ String name, String nameMidSentence, int type, boolean allowed, boolean is_user_session) { ++ mPermissionParamsListBuilder.addPermissionEntry(name, nameMidSentence, type, allowed, is_user_session); } /** Update the permissions view based on the contents of mDisplayedPermissions. */ diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java -@@ -48,8 +48,9 @@ public class PermissionParamsListBuilder { +@@ -46,8 +46,9 @@ public class PermissionParamsListBuilder { + mEntries = new ArrayList<>(); } - public void addPermissionEntry( -- String name, String nameMidSentence, int type, @ContentSettingValues int value) { -- mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, value)); -+ String name, String nameMidSentence, int type, @ContentSettingValues int value, +- public void addPermissionEntry(String name, String nameMidSentence, int type, boolean allowed) { +- mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed)); ++ public void addPermissionEntry(String name, String nameMidSentence, int type, boolean allowed, + boolean is_user_session) { -+ mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, value, is_user_session)); ++ mEntries.add(new PageInfoPermissionEntry(name, nameMidSentence, type, allowed, is_user_session)); } public void clearPermissionEntries() { -@@ -85,6 +86,10 @@ public class PermissionParamsListBuilder { +@@ -84,6 +85,10 @@ public class PermissionParamsListBuilder { } else { warningTextResource = R.string.page_info_android_permission_blocked; } @@ -461,21 +460,20 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ + R.string.page_info_android_permission_session_permission; + } } - } else { - assert permission.setting == ContentSettingValues.ASK -@@ -121,13 +126,15 @@ public class PermissionParamsListBuilder { + } + +@@ -112,12 +117,14 @@ public class PermissionParamsListBuilder { public final String nameMidSentence; public final int type; - public final @ContentSettingValues int setting; + public final boolean allowed; + public final boolean is_user_session; - PageInfoPermissionEntry( -- String name, String nameMidSentence, int type, @ContentSettingValues int setting) { -+ String name, String nameMidSentence, int type, @ContentSettingValues int setting, boolean is_user_session) { +- PageInfoPermissionEntry(String name, String nameMidSentence, int type, boolean allowed) { ++ PageInfoPermissionEntry(String name, String nameMidSentence, int type, boolean allowed, boolean is_user_session) { this.name = name; this.nameMidSentence = nameMidSentence; this.type = type; - this.setting = setting; + this.allowed = allowed; + this.is_user_session = is_user_session; } @@ -483,35 +481,35 @@ 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 -@@ -186,6 +186,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -199,6 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( - std::map + std::map user_specified_settings_to_display; + std::map + user_specified_settings_is_user_session; for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -194,6 +196,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( - if (setting_to_display) { +@@ -211,6 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( + user_specified_settings_to_display[permission.type] = - *setting_to_display; + info->delegate().IsAnyPermissionAllowed(*setting_to_display); + user_specified_settings_is_user_session[permission.type] = + permission.is_user_session; } } } -@@ -210,7 +214,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -227,7 +231,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), -- static_cast(user_specified_settings_to_display[permission])); -+ static_cast(user_specified_settings_to_display[permission]), +- user_specified_settings_to_display[permission]); ++ user_specified_settings_to_display[permission], + user_specified_settings_is_user_session[permission]); } } -@@ -223,7 +228,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -240,7 +245,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info->content_settings_type), @@ -524,15 +522,15 @@ 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 -@@ -1256,6 +1256,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1293,6 +1293,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); + permission_info.is_user_session = + (info.metadata.session_model() == content_settings::mojom::SessionModel::USER_SESSION); - auto* page_specific_content_settings = GetPageSpecificContentSettings(); - if (page_specific_content_settings && setting == CONTENT_SETTING_ALLOW) { + auto* setting_info = + content_settings::PermissionSettingsRegistry::GetInstance()->Get( 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 @@ -962,7 +960,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr 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 -@@ -295,7 +295,7 @@ void EmbeddedPermissionPromptFlowModel::SetDelegateAction( +@@ -294,7 +294,7 @@ void EmbeddedPermissionPromptFlowModel::SetDelegateAction( delegate_->Accept(); break; case DelegateAction::kAllowThisTime: @@ -974,7 +972,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 -@@ -260,6 +260,17 @@ PermissionContextBase::CreatePermissionRequest( +@@ -267,6 +267,17 @@ PermissionContextBase::CreatePermissionRequest( std::move(request_finished_callback), UsesAutomaticEmbargo()); } @@ -992,7 +990,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -@@ -551,7 +562,8 @@ void PermissionContextBase::DecidePermission( +@@ -571,7 +582,8 @@ void PermissionContextBase::DecidePermission( void PermissionContextBase::PermissionDecided( PermissionDecision decision, bool is_final_decision, @@ -1002,7 +1000,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); -@@ -564,11 +576,12 @@ void PermissionContextBase::PermissionDecided( +@@ -584,11 +596,12 @@ void PermissionContextBase::PermissionDecided( // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -1019,7 +1017,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -653,6 +666,30 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -673,6 +686,30 @@ void PermissionContextBase::NotifyPermissionSet( bool persist, PermissionDecision decision, bool is_final_decision) { @@ -1050,18 +1048,18 @@ 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. -@@ -668,8 +705,8 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -688,8 +725,8 @@ void PermissionContextBase::NotifyPermissionSet( if (persist) { // Clone new value, because we need it again for the callback. -- UpdateSetting(request_data, std::move(new_value), +- UpdateSetting(request_data, new_value, - decision == PermissionDecision::kAllowThisTime); -+ UpdateSettingImpl(request_data, std::move(new_value), ++ UpdateSettingImpl(request_data, new_value, + decision == PermissionDecision::kAllowThisTime, use_lifetime_option, lifetime_option); } if (is_final_decision) { -@@ -706,6 +743,17 @@ void PermissionContextBase::UpdateSetting( +@@ -727,6 +764,17 @@ void PermissionContextBase::UpdateSetting( const PermissionRequestData& request_data, PermissionSetting setting, bool is_one_time) { @@ -1079,15 +1077,15 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(request_data.requesting_origin, request_data.requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(request_data.embedding_origin, -@@ -715,6 +763,8 @@ void PermissionContextBase::UpdateSetting( +@@ -736,6 +784,8 @@ void PermissionContextBase::UpdateSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); + if (use_lifetime_option) + constraints = content_settings::GetConstraintSessionExpiration(lifetime_option); - // The Permissions module in Safety check will revoke permissions after - // a finite amount of time if the permission can be revoked. + // The unused permissions module in Safety check will revoke unused site + // permissions after a finite amount of time if the permission can be revoked. diff --git a/components/permissions/permission_context_base.h b/components/permissions/permission_context_base.h --- a/components/permissions/permission_context_base.h +++ b/components/permissions/permission_context_base.h @@ -1276,7 +1274,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 -@@ -198,7 +198,7 @@ void PermissionRequestManager::AddRequest( +@@ -201,7 +201,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1285,7 +1283,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p return; } -@@ -267,7 +267,7 @@ void PermissionRequestManager::AddRequest( +@@ -270,7 +270,7 @@ void PermissionRequestManager::AddRequest( if (should_auto_approve_request) { if (should_auto_approve_request == PermissionAction::GRANTED) { @@ -1294,7 +1292,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } return; } -@@ -626,7 +626,8 @@ void PermissionRequestManager::Accept() { +@@ -597,7 +597,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1304,7 +1302,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -644,7 +645,7 @@ void PermissionRequestManager::Accept() { +@@ -615,7 +616,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } @@ -1313,7 +1311,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -658,7 +659,8 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -629,7 +630,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1323,7 +1321,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -666,6 +668,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -637,6 +639,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1339,7 +1337,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -688,7 +699,7 @@ void PermissionRequestManager::Deny() { +@@ -659,7 +670,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); @@ -1348,7 +1346,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::DENIED); -@@ -1300,32 +1311,32 @@ PermissionRequestManager::VisitDuplicateRequests( +@@ -1283,32 +1294,32 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, @@ -1391,7 +1389,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request); } -@@ -1596,7 +1607,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1578,7 +1589,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { } switch (auto_response_for_test_) { case ACCEPT_ONCE: @@ -1403,7 +1401,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 -@@ -166,8 +166,10 @@ class PermissionRequestManager +@@ -168,8 +168,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept() override; @@ -1415,7 +1413,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -413,9 +415,12 @@ class PermissionRequestManager +@@ -419,9 +421,12 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index cb4ac3e5..509b0d25 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -35,7 +35,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -180,6 +180,7 @@ found in the LICENSE file. +@@ -187,6 +187,7 @@ found in the LICENSE file. @@ -46,7 +46,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 -@@ -103,6 +103,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane; +@@ -102,6 +102,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.compositor.CompositorViewHolder; @@ -54,7 +54,7 @@ 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; -@@ -287,6 +288,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac +@@ -292,6 +293,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.windowing.ExtensionWindowControllerBridgeFactory; @@ -64,25 +64,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct 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; -@@ -298,6 +302,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService; +@@ -303,6 +307,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; -@@ -3724,6 +3730,8 @@ public class ChromeTabbedActivity extends ChromeActivity { - getTabModelSelectorSupplier().get(), - closeAllTabsRunnable); + import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate; + import org.chromium.components.browser_ui.util.ComposedBrowserControlsVisibilityDelegate; +@@ -3848,6 +3854,8 @@ public class ChromeTabbedActivity extends ChromeActivity { + CloseAllTabsDialog.show( + this, getModalDialogManagerSupplier(), tabModelSelector, closeAllTabsRunnable); RecordUserAction.record("MobileMenuCloseAllTabs"); + } else if (id == R.id.bookmark_all_tabs_menu_id) { + bookmarkAllTabs(); } else if (id == R.id.close_all_incognito_tabs_menu_id) { boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); -@@ -3848,6 +3856,41 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3970,6 +3978,41 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus); } @@ -127,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 -@@ -270,6 +270,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -271,6 +271,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // Bookmarks modelList.add(buildBookmarksItem()); @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Recent Tabs if (shouldShowRecentTabsItem()) modelList.add(buildRecentTabsItem()); -@@ -434,6 +442,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -448,6 +456,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } modelList.add(buildCloseAllTabsItem()); if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem()); @@ -459,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 -@@ -4482,6 +4482,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4431,6 +4431,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index 01f732f2..d9033c35 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -129,6 +129,7 @@ found in the LICENSE file. +@@ -131,6 +131,7 @@ found in the LICENSE file. @@ -27,7 +27,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 -@@ -3764,6 +3764,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3884,6 +3884,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 -@@ -2602,6 +2602,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2638,6 +2638,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 -@@ -957,6 +957,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -974,6 +974,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties return 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 -@@ -334,6 +334,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -338,6 +338,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildAddToHomescreenListItem(currentTab, shouldShowIconBeforeItem())); } diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index 1b60bde0..f5019581 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java -@@ -480,7 +480,12 @@ class TabGridViewBinder { +@@ -497,7 +497,12 @@ class TabGridViewBinder { if (result != null) { TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else { @@ -29,7 +29,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } }; if (sThumbnailFetcherForTesting != null) { -@@ -518,6 +523,7 @@ class TabGridViewBinder { +@@ -535,6 +540,7 @@ class TabGridViewBinder { */ private static void setFavicon( ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) { @@ -40,7 +40,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/TabProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java -@@ -127,6 +127,9 @@ public class TabProperties { +@@ -129,6 +129,9 @@ public class TabProperties { public static final WritableBooleanPropertyKey FAVICON_FETCHED = new WritableBooleanPropertyKey(); @@ -50,7 +50,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** Property for lazily fetching favicons when required by an item in a UI. */ public static final WritableObjectPropertyKey FAVICON_FETCHER = new WritableObjectPropertyKey<>(); -@@ -220,6 +223,7 @@ public class TabProperties { +@@ -223,6 +226,7 @@ public class TabProperties { CARD_TYPE, CONTENT_DESCRIPTION_TEXT_RESOLVER, ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER, @@ -58,7 +58,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser QUICK_DELETE_ANIMATION_STATUS, TAB_GROUP_COLOR_VIEW_PROVIDER, TAB_GROUP_CARD_COLOR, -@@ -259,6 +263,7 @@ public class TabProperties { +@@ -263,6 +267,7 @@ public class TabProperties { TAB_ACTION_BUTTON_DATA, FAVICON_FETCHED, FAVICON_FETCHER, @@ -84,7 +84,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/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 -@@ -147,6 +147,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -150,6 +150,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory; import org.chromium.chrome.browser.printing.TabPrinter; @@ -92,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.profiles.ProfileProvider; -@@ -641,7 +642,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -653,7 +654,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -105,15 +105,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -28,6 +28,7 @@ import org.chromium.base.ContextUtils; +@@ -29,6 +29,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.IntentUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.build.annotations.Nullable; -@@ -98,12 +99,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; + import org.chromium.build.annotations.NullMarked; +@@ -99,13 +100,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -126,6 +126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import java.util.List; /** Fragment to keep track of the all the privacy related preferences. */ + @NullMarked public class PrivacySettings extends ChromeBaseSettingsFragment - implements Preference.OnPreferenceChangeListener { + implements Preference.OnPreferenceChangeListener, INeedSnackbarManager { @@ -141,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; -@@ -215,6 +230,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -217,6 +232,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } } @@ -163,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); // Record the launch of PG from the S&P link-row entry point privacyGuidePreference.setOnPreferenceClickListener( -@@ -441,6 +471,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -442,6 +472,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito"; @@ -171,7 +172,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { -@@ -487,6 +518,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -488,6 +519,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -185,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -537,6 +575,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -538,6 +576,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -199,7 +200,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 -@@ -6194,6 +6194,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6146,6 +6146,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d Your %1$swww.amazon.com timer ran out. It'll start again tomorrow. diff --git a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch index 5526a633..a57c446c 100644 --- a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/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; -@@ -2086,8 +2087,10 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2151,8 +2152,10 @@ public class ChromeTabbedActivity extends ChromeActivity { boolean hadCipherData = CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()); @@ -51,7 +51,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -8,6 +8,7 @@ import static org.chromium.components.content_settings.PrefNames.COOKIE_CONTROLS +@@ -9,6 +9,7 @@ import static org.chromium.components.content_settings.PrefNames.COOKIE_CONTROLS import android.content.Context; import android.content.Intent; @@ -59,7 +59,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.SpannableString; -@@ -20,7 +21,9 @@ import android.view.View; +@@ -21,7 +22,9 @@ import android.view.View; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.base.IntentUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; -@@ -112,6 +115,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -114,6 +117,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private final SharedPreferencesManager mSharedPreferencesManager = ChromeSharedPreferences.getInstance(); @@ -78,7 +78,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private ManagedPreferenceDelegate mManagedPreferenceDelegate; @VisibleForTesting static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies"; @VisibleForTesting static final String PREF_TRACKING_PROTECTION = "tracking_protection"; -@@ -381,7 +386,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -382,7 +387,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting UserPrefs.get(getProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); } else if (PREF_HTTPS_FIRST_MODE_LEGACY.equals(key)) { -@@ -441,6 +450,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -442,6 +451,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment getContext(), getProfile())); } @@ -106,7 +106,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 -@@ -2901,6 +2901,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -2850,6 +2850,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d All tabs diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 142e4f0d..8dbd181d 100644 --- a/build/patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/patches/Add-option-to-use-home-page-as-NTP.patch @@ -24,9 +24,9 @@ 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 -@@ -120,6 +120,9 @@ import java.util.Objects; - import java.util.Optional; +@@ -120,6 +120,9 @@ import java.util.Optional; import java.util.Set; + import java.util.function.Supplier; +import org.chromium.chrome.browser.homepage.HomepageManager; +import org.chromium.url.GURL; @@ -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. -@@ -1035,9 +1038,15 @@ public class TabGridDialogMediator +@@ -1028,9 +1031,15 @@ public class TabGridDialogMediator return; } @@ -48,13 +48,13 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()), - UrlConstants.NTP_URL, + url, - currentTab.getId(), + tabsInGroup.get(tabsInGroup.size() - 1).getId(), TabLaunchType.FROM_TAB_GROUP_UI); RecordUserAction.record("MobileNewTabOpened." + mComponentName); 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 -@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory; +@@ -35,6 +35,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; @@ -97,9 +97,9 @@ 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 -@@ -75,6 +75,9 @@ import org.chromium.ui.text.EmptyTextWatcher; - import org.chromium.ui.widget.AnchoredPopupWindow.HorizontalOrientation; - import org.chromium.ui.widget.RectProvider; +@@ -84,6 +84,9 @@ import org.chromium.ui.widget.RectProvider; + + import java.util.function.Supplier; +import org.chromium.chrome.browser.homepage.HomepageManager; +import org.chromium.url.GURL; @@ -107,7 +107,7 @@ 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. -@@ -215,9 +218,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina +@@ -228,9 +231,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina /* didCloseCallback= */ null); RecordUserAction.record("MobileToolbarTabGroupMenu.DeleteGroup"); } else if (menuId == R.id.open_new_tab_in_group) { @@ -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 -@@ -258,6 +258,22 @@ public class HomepageManager +@@ -257,6 +257,22 @@ public class HomepageManager notifyHomepageUpdated(); } @@ -170,8 +170,8 @@ 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<>(); -@@ -78,6 +81,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { - }); +@@ -102,6 +105,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { + mRadioButtons.setOnHomepagePreferenceChangeListener(this::onRadioButtonGroupChanged); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); + ChromeSwitchPreference mNTPIsHomepageSwitch = @@ -200,7 +200,7 @@ 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 -@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; +@@ -26,6 +26,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; @@ -208,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -565,6 +566,13 @@ public class ChromeTabCreator extends TabCreator +@@ -569,6 +570,13 @@ public class ChromeTabCreator extends TabCreator */ public @Nullable Tab launchUrl( String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) { @@ -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 -@@ -330,6 +330,7 @@ public final class ChromePreferenceKeys { +@@ -334,6 +334,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 -@@ -1357,6 +1357,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1324,6 +1324,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 -@@ -111,6 +111,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -115,6 +115,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 -@@ -1327,6 +1327,10 @@ inline constexpr char kPinSplitTabButton[] = "browser.pin_split_tab_button"; +@@ -1345,6 +1345,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = // by enterprise policy. inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; diff --git a/build/patches/Add-search-engine.patch b/build/patches/Add-search-engine.patch index edd96ac0..3498b0b9 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -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 -@@ -155,10 +155,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -172,10 +172,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -212,17 +212,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon std::unique_ptr GetPrepopulatedEngine( PrefService& prefs, std::vector -@@ -159,11 +172,15 @@ std::vector> GetLocalPrepopulatedEngines( +@@ -159,10 +172,14 @@ std::vector> GetLocalPrepopulatedEngines( return std::vector>(); } -- return base::ToVector( +- return base::ToVector(regional_capabilities::GetPrepopulatedEngines( + std::vector> t_urls = -+ base::ToVector( - regional_capabilities::GetPrepopulatedEngines( - country_id, prefs, - regional_capabilities::SearchEngineListType::kTopFive), - &PrepopulatedEngineToTemplateURLData); ++ base::ToVector(regional_capabilities::GetPrepopulatedEngines( + country_id, prefs, + regional_capabilities::SearchEngineListType::kTopN), + &PrepopulatedEngineToTemplateURLData); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen)); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light)); + return t_urls; diff --git a/build/patches/Add-setting-to-clear-data-on-exit.patch b/build/patches/Add-setting-to-clear-data-on-exit.patch index eaf6982b..96ab1bb5 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -48,7 +48,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -262,6 +262,7 @@ chrome_java_sources = [ +@@ -264,6 +264,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataCheckBoxPreference.java", "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFetcher.java", "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java", @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler; import org.chromium.chrome.browser.recent_tabs.CrossDevicePaneFactory; import org.chromium.chrome.browser.reengagement.ReengagementNotificationController; -@@ -2091,7 +2092,11 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2156,7 +2157,11 @@ public class ChromeTabbedActivity extends ChromeActivity { Intent intent = getIntent(); boolean hadCipherData = @@ -334,7 +334,7 @@ new file mode 100644 diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp -@@ -2054,6 +2054,16 @@ +@@ -2036,6 +2036,16 @@ Delete browsing data @@ -354,7 +354,7 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp 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 -@@ -107,6 +107,7 @@ +@@ -108,6 +108,7 @@ #include "components/enterprise/data_controls/core/browser/features.h" #include "components/enterprise/obfuscation/core/utils.h" #include "components/error_page/common/error_page_switches.h" @@ -467,7 +467,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. ~content::BrowsingDataRemover::DATA_TYPE_AVOID_CLOSING_CONNECTIONS & ~constants::FILTERABLE_DATA_TYPES) == 0) || filter_builder->MatchesAllOriginsAndDomains()); -@@ -457,6 +458,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -453,6 +454,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kHistory), &history_task_tracker_); } @@ -477,7 +477,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. if (ClipboardRecentContent::GetInstance()) ClipboardRecentContent::GetInstance()->SuppressClipboardContent(); -@@ -565,6 +569,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -561,6 +565,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // and SSL host state are scoped to hosts and represent them as std::string. // Rename the method to indicate its more general usage. if (profile_->GetSSLHostStateDelegate()) { @@ -489,7 +489,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. profile_->GetSSLHostStateDelegate()->Clear( filter_builder->MatchesAllOriginsAndDomains() ? base::RepeatingCallback() -@@ -593,9 +602,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -589,9 +598,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } device_event_log::Clear(delete_begin_, delete_end_); @@ -503,7 +503,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. content::BackgroundTracingManager::GetInstance().DeleteTracesInDateRange( delete_begin_, delete_end_); -@@ -1320,6 +1333,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -1306,6 +1319,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (should_clear_zero_suggest_and_session_token && template_url_service) template_url_service->ClearSessionToken(); @@ -515,7 +515,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. 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 -@@ -550,6 +550,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -554,6 +554,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] = settings_api::PrefType::kNumber; @@ -574,7 +574,7 @@ diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/b diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1441,6 +1441,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, +@@ -1434,6 +1434,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, } } @@ -594,7 +594,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile void ProfileManager::DoFinalInitForServices(Profile* profile, bool go_off_the_record) { if (!do_final_services_init_ || -@@ -2102,7 +2115,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { +@@ -2095,7 +2108,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { Profile* original_profile = profile->GetOriginalProfile(); // Do nothing if the closed window is not the last window of the same profile. for (Browser* browser_iter : *BrowserList::GetInstance()) { @@ -691,7 +691,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1452,6 +1452,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1419,6 +1419,9 @@ Your Google account may have other forms of browsing history like searches and a Some of your history might not show up here. To see all your Chrome history, open full Chrome history. Also, your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. @@ -718,7 +718,7 @@ new file mode 100644 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 -@@ -2021,6 +2021,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2028,6 +2028,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"clearedData", IDS_SETTINGS_CLEARED_DATA}, {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, @@ -976,7 +976,7 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear diff --git a/content/browser/btm/btm_service_impl.cc b/content/browser/btm/btm_service_impl.cc --- a/content/browser/btm/btm_service_impl.cc +++ b/content/browser/btm/btm_service_impl.cc -@@ -212,7 +212,7 @@ class StateClearer : public BrowsingDataRemover::Observer { +@@ -262,7 +262,7 @@ class StateClearer : public BrowsingDataRemover::Observer { remove_mask &= ~BrowsingDataRemover::DATA_TYPE_PRIVACY_SANDBOX; remover->RemoveWithFilterAndReply( base::Time::Min(), base::Time::Max(), diff --git a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch index f819090d..24d4048d 100644 --- a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch +++ b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch @@ -59,7 +59,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/A 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 -@@ -105,6 +105,7 @@ found in the LICENSE file. +@@ -107,6 +107,7 @@ found in the LICENSE file. @@ -98,18 +98,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java -@@ -128,8 +128,9 @@ class ChromeContextMenuItem { - int PRINT_PAGE = 38; +@@ -132,8 +132,9 @@ class ChromeContextMenuItem { + int PRINT_PAGE = 40; // Developer Group - int INSPECT_ELEMENT = 39; -+ int FOLLOW_LINK = 40; + int INSPECT_ELEMENT = 41; ++ int FOLLOW_LINK = 42; // ALWAYS UPDATE! -- int NUM_ENTRIES = 40; -+ int NUM_ENTRIES = 41; +- int NUM_ENTRIES = 42; ++ int NUM_ENTRIES = 43; } /** Mapping from {@link Item} to the ID found in the ids.xml. */ -@@ -174,6 +175,7 @@ class ChromeContextMenuItem { +@@ -180,6 +181,7 @@ class ChromeContextMenuItem { R.id.contextmenu_share_page, // Item.SHARE_PAGE R.id.contextmenu_print_page, // Item.PRINT_PAGE R.id.contextmenu_inspect_element, // Item.INSPECT_ELEMENT @@ -117,7 +117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr }; /** Mapping from {@link Item} to the ID of the string that describes the action of the item. */ -@@ -218,6 +220,7 @@ class ChromeContextMenuItem { +@@ -226,6 +228,7 @@ class ChromeContextMenuItem { R.string.contextmenu_share_page, // Item.SHARE_PAGE R.string.contextmenu_print_page, // Item.PRINT_PAGE R.string.contextmenu_inspect_element, // Item.INSPECT_ELEMENT @@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr 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 -@@ -442,6 +442,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -447,6 +447,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } if (mParams.isAnchor()) { ModelList linkGroup = new ModelList(); @@ -138,7 +138,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(mParams.getUrl()) && UrlUtilities.isAcceptedScheme(mParams.getUrl())) { -@@ -1026,6 +1029,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -1039,6 +1042,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { getProfile(), false); }); @@ -150,7 +150,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -369,6 +369,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -370,6 +370,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { mTab.loadUrl(loadUrlParams); } @@ -168,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM 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 -@@ -419,6 +419,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -429,6 +429,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupParityBottomSheetAndroid, &kTabModelInitFixes, &kTabStorageSqlitePrototype, @@ -179,7 +179,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 -@@ -494,6 +494,8 @@ public abstract class ChromeFeatureList { +@@ -503,6 +503,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -188,7 +188,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"; -@@ -988,6 +990,8 @@ public abstract class ChromeFeatureList { +@@ -1035,6 +1037,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -197,7 +197,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); -@@ -1228,6 +1232,7 @@ public abstract class ChromeFeatureList { +@@ -1289,6 +1293,7 @@ public abstract class ChromeFeatureList { sTopControlsRefactor, sTouchToSearchCallout, sTraceBinderIpc, @@ -208,7 +208,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 -@@ -1596,6 +1596,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1548,6 +1548,12 @@ Your Google account may have other forms of browsing history like searches and a Disable toolbar swipe up @@ -221,7 +221,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3237,6 +3243,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3189,6 +3195,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Open in new Chrome tab @@ -344,7 +344,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third_party/blink/renderer/core/html/html_anchor_element.cc --- a/third_party/blink/renderer/core/html/html_anchor_element.cc +++ b/third_party/blink/renderer/core/html/html_anchor_element.cc -@@ -66,6 +66,7 @@ +@@ -67,6 +67,7 @@ #include "third_party/blink/renderer/core/loader/render_blocking_resource_manager.h" #include "third_party/blink/renderer/core/navigation_api/navigation_api.h" #include "third_party/blink/renderer/core/page/chrome_client.h" @@ -352,7 +352,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/core/scroll/scroll_into_view_util.h" #include "third_party/blink/renderer/core/speculation_rules/document_speculation_rules.h" -@@ -501,6 +502,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink( +@@ -467,6 +468,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink( bool is_trusted, base::TimeTicks platform_time_stamp, KURL completed_url) { @@ -370,7 +370,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third LocalDOMWindow* window = GetDocument().domWindow(); if (!window) { return; -@@ -591,6 +603,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( +@@ -557,6 +569,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( frame_request.SetImpression(impression); } @@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third Frame* target_frame = frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame; -@@ -634,7 +655,7 @@ Element* HTMLAnchorElementBase::InterestForElement() const { +@@ -600,7 +621,7 @@ Element* HTMLAnchorElementBase::InterestForElement() const { html_names::kInterestforAttr); } @@ -395,25 +395,25 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third event.SetDefaultHandled(); LocalDOMWindow* window = GetDocument().domWindow(); -@@ -730,13 +751,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { +@@ -658,13 +679,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { return; } -- base::OnceClosure navigate_closure = WTF::BindOnce( +- base::OnceClosure navigate_closure = blink::BindOnce( - &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this), - std::move(request), navigation_policy, event.isTrusted(), - event.PlatformTimeStamp(), std::move(completed_url)); - if (navigation_policy == kNavigationPolicyDownload || navigation_policy == kNavigationPolicyLinkPreview) { -+ base::OnceClosure navigate_closure = WTF::BindOnce( ++ base::OnceClosure navigate_closure = blink::BindOnce( + &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this), + std::move(request), navigation_policy, event.isTrusted(), + event.PlatformTimeStamp(), std::move(completed_url)); // We distinguish single/double click with some modifiers. // See the comment of `EventHandler.delayed_navigation_task_handle_`. auto task_handle = PostDelayedCancellableTask( -@@ -746,7 +766,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { +@@ -674,7 +694,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { frame->GetEventHandler().SetDelayedNavigationTaskHandle( std::move(task_handle)); } else { @@ -459,7 +459,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_ #include "third_party/blink/renderer/core/frame/attribution_src_loader.h" #include "third_party/blink/renderer/core/frame/deprecation/deprecation.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" -@@ -64,6 +65,7 @@ +@@ -65,6 +66,7 @@ #include "third_party/blink/renderer/core/media_type_names.h" #include "third_party/blink/renderer/core/page/chrome_client.h" #include "third_party/blink/renderer/core/page/page.h" @@ -467,7 +467,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_ #include "third_party/blink/renderer/core/paint/timing/paint_timing.h" #include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h" -@@ -815,6 +817,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate( +@@ -786,6 +788,21 @@ void HTMLImageElement::DidFinishLayout() { } } @@ -492,7 +492,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_party/blink/renderer/core/html/html_image_element.h --- a/third_party/blink/renderer/core/html/html_image_element.h +++ b/third_party/blink/renderer/core/html/html_image_element.h -@@ -215,6 +215,8 @@ class CORE_EXPORT HTMLImageElement +@@ -216,6 +216,8 @@ class CORE_EXPORT HTMLImageElement void DidAddUserAgentShadowRoot(ShadowRoot&) override; void AdjustStyle(ComputedStyleBuilder&) override; @@ -504,7 +504,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_p diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc --- a/third_party/blink/renderer/core/page/context_menu_controller.cc +++ b/third_party/blink/renderer/core/page/context_menu_controller.cc -@@ -200,14 +200,16 @@ void ContextMenuController::DocumentDetached(Document* document) { +@@ -200,15 +200,17 @@ void ContextMenuController::DocumentDetached(Document* document) { } } @@ -514,7 +514,8 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t + if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) { + DCHECK(mouse_event->type() == event_type_names::kContextmenu); + } - LocalFrame* frame = mouse_event->target()->ToNode()->GetDocument().GetFrame(); + LocalFrame* frame = + mouse_event->RawTarget()->ToNode()->GetDocument().GetFrame(); PhysicalOffset location = PhysicalOffset::FromPointFRound(mouse_event->AbsoluteLocation()); @@ -524,7 +525,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t mouse_event->SetDefaultHandled(); } -@@ -432,7 +434,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( +@@ -433,7 +435,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( bool ContextMenuController::ShowContextMenu(LocalFrame* frame, const PhysicalOffset& point, WebMenuSourceType source_type, @@ -534,7 +535,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Displaying the context menu in this function is a big hack as we don't // have context, i.e. whether this is being invoked via a script or in // response to user input (Mouse event WM_RBUTTONDOWN, -@@ -455,6 +458,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -456,6 +459,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, if (!result.InnerNodeOrImageMapImage()) return false; @@ -551,7 +552,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Clear any previously set cached results if we are resetting the hit test // result. image_selection_cached_result_ = nullptr; -@@ -825,7 +838,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -837,7 +850,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index ccfccada..b95565e2 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/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 @@ +@@ -169,6 +169,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" @@ -88,7 +88,7 @@ diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components diff --git a/components/feature_engagement/public/feature_configurations.cc b/components/feature_engagement/public/feature_configurations.cc --- a/components/feature_engagement/public/feature_configurations.cc +++ b/components/feature_engagement/public/feature_configurations.cc -@@ -11,6 +11,7 @@ +@@ -6,6 +6,7 @@ #include "base/strings/string_util.h" #include "build/build_config.h" @@ -96,7 +96,7 @@ diff --git a/components/feature_engagement/public/feature_configurations.cc b/co #include "components/feature_engagement/public/configuration.h" #include "components/feature_engagement/public/event_constants.h" #include "components/feature_engagement/public/feature_constants.h" -@@ -118,6 +119,12 @@ std::optional GetClientSideFeatureConfig( +@@ -113,6 +114,12 @@ std::optional GetClientSideFeatureConfig( } #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) diff --git a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch index 4270e024..4756ba12 100644 --- a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch +++ b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch @@ -12,7 +12,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/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -54,6 +54,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +@@ -56,6 +56,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; @@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; import org.chromium.components.browser_ui.settings.SettingsFragment; -@@ -469,8 +470,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -485,8 +486,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity finishCurrentSettings(mainFragment); return true; } else if (item.getItemId() == R.id.menu_id_general_help) { diff --git a/build/patches/Add-support-for-writing-URIs.patch b/build/patches/Add-support-for-writing-URIs.patch index 821d598b..49836eb4 100644 --- a/build/patches/Add-support-for-writing-URIs.patch +++ b/build/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 -@@ -136,6 +136,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, +@@ -137,6 +137,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, Time::FromMillisecondsSinceUnixEpoch(last_modified)); } diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 86a1d176..8879ca48 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -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('.'); -@@ -693,6 +681,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -694,6 +682,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 -@@ -1951,6 +1951,8 @@ class MODULES_EXPORT WebGLRenderingContextBase +@@ -1959,6 +1959,8 @@ class MODULES_EXPORT WebGLRenderingContextBase DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index b6e5800f..4d19637d 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -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" -@@ -1062,6 +1063,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -1023,6 +1024,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // |request_multiple_routes|. Whether local IP addresses could be // collected depends on if mic/camera permission is granted for this // origin. @@ -220,7 +220,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver. #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 +291,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, +@@ -287,6 +290,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; @@ -248,7 +248,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc #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 +1038,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1034,6 +1037,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index fb54dbe0..e8189610 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/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 -@@ -1496,6 +1496,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1516,6 +1516,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( -@@ -1509,6 +1510,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1529,6 +1530,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 -@@ -16153,12 +16153,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -16185,12 +16185,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 -@@ -494,14 +494,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -501,14 +501,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, @@ -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 -@@ -1240,6 +1240,7 @@ interface NetworkContext { +@@ -1264,6 +1264,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, -@@ -1247,6 +1248,7 @@ interface NetworkContext { +@@ -1271,6 +1272,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, -@@ -1257,6 +1259,7 @@ interface NetworkContext { +@@ -1281,6 +1283,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" -@@ -1344,6 +1345,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1356,6 +1357,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); -@@ -1351,6 +1353,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1363,6 +1365,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" -@@ -2836,9 +2837,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2860,9 +2861,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -547,7 +547,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p diff --git a/third_party/blink/renderer/core/frame/reporting_observer.cc b/third_party/blink/renderer/core/frame/reporting_observer.cc --- a/third_party/blink/renderer/core/frame/reporting_observer.cc +++ b/third_party/blink/renderer/core/frame/reporting_observer.cc -@@ -62,8 +62,7 @@ void ReportingObserver::QueueReport(Report* report) { +@@ -61,8 +61,7 @@ void ReportingObserver::QueueReport(Report* report) { } bool ReportingObserver::ObservedType(const String& type) { diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 84dd6e1a..ea83f0b0 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/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 -@@ -819,7 +819,6 @@ if (_is_default_toolchain) { +@@ -820,7 +820,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,7 +65,7 @@ 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 -@@ -319,7 +319,7 @@ void PrepareFactory( +@@ -324,7 +324,7 @@ void PrepareFactory( policy::BrowserPolicyConnector* policy_connector) { factory->SetManagedPolicies(policy_service, policy_connector); factory->SetRecommendedPolicies(policy_service, policy_connector); @@ -77,7 +77,7 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse 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 -@@ -471,7 +471,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const { +@@ -476,7 +476,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const { } std::string ProfileAttributesEntry::GetSupervisedUserId() const { @@ -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 -@@ -684,10 +684,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -683,10 +683,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( -@@ -1624,6 +1620,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1623,6 +1619,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -111,7 +111,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1192,10 +1192,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1190,10 +1190,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kProfileName, profile_name); } @@ -122,7 +122,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile } void ProfileManager::RegisterTestingProfile(std::unique_ptr profile, -@@ -1962,9 +1958,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -1955,9 +1951,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); @@ -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 -@@ -617,10 +617,6 @@ bool ManagementUIHandler::managed() const { +@@ -623,10 +623,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 -@@ -175,6 +175,7 @@ void SupervisedUserPrefStore::OnNewContentFiltersStateAvailable( +@@ -172,6 +172,7 @@ void SupervisedUserPrefStore::OnNewContentFiltersStateAvailable( void SupervisedUserPrefStore::OnNewSettingsAvailable( const base::Value::Dict& settings) { @@ -185,7 +185,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_pref_store. diff --git a/components/supervised_user/core/browser/supervised_user_preferences.cc b/components/supervised_user/core/browser/supervised_user_preferences.cc --- a/components/supervised_user/core/browser/supervised_user_preferences.cc +++ b/components/supervised_user/core/browser/supervised_user_preferences.cc -@@ -164,6 +164,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -160,6 +160,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { } void EnableParentalControls(PrefService& pref_service) { @@ -196,7 +196,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences pref_service.SetString(prefs::kSupervisedUserId, supervised_user::kChildAccountSUID); #if BUILDFLAG(IS_CHROMEOS) -@@ -197,7 +201,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { +@@ -187,7 +191,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { } bool IsSubjectToParentalControls(const PrefService& pref_service) { @@ -208,7 +208,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences 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 -@@ -249,6 +249,7 @@ SupervisedUserService::SupervisedUserService( +@@ -248,6 +248,7 @@ SupervisedUserService::SupervisedUserService( } void SupervisedUserService::SetSettingsServiceActive(bool active) { @@ -227,7 +227,7 @@ 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; -@@ -170,4 +169,5 @@ bool ClassifyUrlWithoutCredentialsForLocalSupervision() { +@@ -164,4 +163,5 @@ bool ClassifyUrlWithoutCredentialsForLocalSupervision() { #endif diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index 0b428b3e..96462a46 100644 --- a/build/patches/Allow-playing-audio-in-background.patch +++ b/build/patches/Allow-playing-audio-in-background.patch @@ -24,9 +24,9 @@ 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()); -@@ -3683,7 +3689,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { - : HasAudio(); +@@ -3679,7 +3685,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { + const bool preserve_audio = HasUnmutedAudio() || audio_source_provider_->IsAudioBeingCaptured(); // Audio only stream is allowed to play when in background. - if (!HasVideo() && preserve_audio) + //pipeline_metadata_.has_video is true for MediaPlayerRenderer, @@ -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 -@@ -211,6 +211,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl +@@ -212,6 +212,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/patches/Always-open-browser-controls-in-new-tab.patch b/build/patches/Always-open-browser-controls-in-new-tab.patch index 5ce766ce..bba6ccd1 100644 --- a/build/patches/Always-open-browser-controls-in-new-tab.patch +++ b/build/patches/Always-open-browser-controls-in-new-tab.patch @@ -10,15 +10,15 @@ 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/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -24,6 +24,7 @@ import org.chromium.base.metrics.RecordUserAction; - import org.chromium.base.supplier.Supplier; +@@ -23,6 +23,7 @@ import org.chromium.base.PackageManagerUtils; + import org.chromium.base.metrics.RecordUserAction; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; +import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpenerImpl; -@@ -43,6 +44,7 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -42,6 +43,7 @@ import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory; import org.chromium.chrome.browser.printing.TabPrinter; import org.chromium.chrome.browser.profiles.Profile; @@ -26,7 +26,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -@@ -303,6 +305,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -304,6 +306,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { @Nullable Referrer referrer, boolean navigateToTab, @Nullable AdditionalNavigationParams additionalNavigationParams) { @@ -34,7 +34,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM RecordUserAction.record("MobileNewTabOpened"); RecordUserAction.record("LinkOpenedInNewTab"); LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); -@@ -323,6 +326,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -324,6 +327,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { * @param url The URL to open. */ public void onOpenInNewTabInGroup(GURL url, @Nullable Referrer referrer) { diff --git a/build/patches/Always-use-new-tab-page-for-default-home-page.patch b/build/patches/Always-use-new-tab-page-for-default-home-page.patch index c4b3e395..336a8f39 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -7,19 +7,19 @@ Ignore any partner-provided home page. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ---- - .../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 1 + + .../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 2 +- .../partnerbookmarks/PartnerBookmarksProviderIterator.java | 1 + .../partnercustomizations/PartnerBrowserCustomizations.java | 2 +- .../org/chromium/components/search_engines/TemplateUrl.java | 1 + .../search_engines/android/template_url_service_android.cc | 1 + .../always-use-new-tab-page-for-default-home-page.inc | 1 + - 7 files changed, 6 insertions(+), 5 deletions(-) + 7 files changed, 6 insertions(+), 6 deletions(-) create mode 100755 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc 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 -@@ -160,10 +160,6 @@ public class HomepageManager +@@ -159,10 +159,6 @@ public class HomepageManager * tab page if the homepage button is force enabled via flag. */ public GURL getDefaultHomepageGurl() { @@ -33,14 +33,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/new_tab_url/DseNewTabUrlManager.java b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java -@@ -60,6 +60,7 @@ public class DseNewTabUrlManager { +@@ -59,7 +59,7 @@ public class DseNewTabUrlManager { /** Returns whether the feature NewTabSearchEngineUrlAndroid is enabled. */ public static boolean isNewTabSearchEngineUrlAndroidEnabled() { -+ if ((true)) return false; - return ChromeSharedPreferences.getInstance() - .readBoolean(ChromePreferenceKeys.IS_EEA_CHOICE_COUNTRY, false) - || (OmniboxFeatures.sOmniboxMobileParityUpdate.isEnabled() +- return true; ++ return false; + } + + /** diff --git a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java --- a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java +++ b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index 7bba0c3e..23b128b4 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -131,7 +131,7 @@ diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw diff --git a/cc/input/input_handler.cc b/cc/input/input_handler.cc --- a/cc/input/input_handler.cc +++ b/cc/input/input_handler.cc -@@ -670,7 +670,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( +@@ -679,7 +679,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( return result; } @@ -176,20 +176,20 @@ diff --git a/cc/layers/viewport.cc b/cc/layers/viewport.cc diff --git a/cc/mojo_embedder/viz_layer_context.cc b/cc/mojo_embedder/viz_layer_context.cc --- a/cc/mojo_embedder/viz_layer_context.cc +++ b/cc/mojo_embedder/viz_layer_context.cc -@@ -1242,7 +1242,7 @@ void VizLayerContext::SetVisible(bool visible) { +@@ -1249,7 +1249,7 @@ void VizLayerContext::SetVisible(bool visible) { service_->SetVisible(visible); } --void VizLayerContext::UpdateDisplayTreeFrom( -+void VizLayerContext::UpdateDisplayTreeFrom( // POI +-base::TimeTicks VizLayerContext::UpdateDisplayTreeFrom( ++base::TimeTicks VizLayerContext::UpdateDisplayTreeFrom( // POI LayerTreeImpl& tree, viz::ClientResourceProvider& resource_provider, viz::RasterContextProvider& context_provider, diff --git a/cc/trees/commit_state.cc b/cc/trees/commit_state.cc --- a/cc/trees/commit_state.cc +++ b/cc/trees/commit_state.cc -@@ -25,6 +25,7 @@ CommitState::CommitState(const CommitState& prev) - external_page_scale_factor(prev.external_page_scale_factor), +@@ -26,6 +26,7 @@ CommitState::CommitState(const CommitState& prev) + load_progress(prev.load_progress), max_page_scale_factor(prev.max_page_scale_factor), min_page_scale_factor(prev.min_page_scale_factor), + browser_control_scale_factor(prev.browser_control_scale_factor), @@ -199,8 +199,8 @@ diff --git a/cc/trees/commit_state.cc b/cc/trees/commit_state.cc diff --git a/cc/trees/commit_state.h b/cc/trees/commit_state.h --- a/cc/trees/commit_state.h +++ b/cc/trees/commit_state.h -@@ -93,6 +93,7 @@ struct CC_EXPORT CommitState { - float external_page_scale_factor = 1.f; +@@ -94,6 +94,7 @@ struct CC_EXPORT CommitState { + float load_progress = 0.f; float max_page_scale_factor = 1.f; float min_page_scale_factor = 1.f; + float browser_control_scale_factor = 1.f; @@ -210,7 +210,7 @@ diff --git a/cc/trees/commit_state.h b/cc/trees/commit_state.h diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc -@@ -1347,7 +1347,7 @@ void LayerTreeHost::SetEventListenerProperties( +@@ -1348,7 +1348,7 @@ void LayerTreeHost::SetEventListenerProperties( SetNeedsCommit(); } @@ -219,7 +219,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc const gfx::Rect& device_viewport_rect, float device_scale_factor, const viz::LocalSurfaceId& local_surface_id_from_parent) { -@@ -1458,9 +1458,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { +@@ -1468,9 +1468,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, @@ -231,7 +231,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc pending_commit_state()->max_page_scale_factor == max_page_scale_factor) return; DCHECK_GE(page_scale_factor, min_page_scale_factor); -@@ -1476,6 +1478,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, +@@ -1486,6 +1488,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, pending_commit_state()->page_scale_factor = page_scale_factor; pending_commit_state()->min_page_scale_factor = min_page_scale_factor; @@ -242,7 +242,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h --- a/cc/trees/layer_tree_host.h +++ b/cc/trees/layer_tree_host.h -@@ -565,6 +565,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { +@@ -566,6 +566,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { void SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, @@ -250,7 +250,7 @@ diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h float max_page_scale_factor); float page_scale_factor() const { return pending_commit_state()->page_scale_factor; -@@ -572,6 +573,9 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { +@@ -573,6 +574,9 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { float min_page_scale_factor() const { return pending_commit_state()->min_page_scale_factor; } @@ -263,7 +263,7 @@ diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h 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 -@@ -2472,7 +2472,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { +@@ -2497,7 +2497,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { return bounds; } @@ -272,7 +272,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc viz::CompositorFrameMetadata metadata; if (settings().trees_in_viz_in_viz_process) { // In TreesInViz mode, this function is called in client process already, -@@ -2639,7 +2639,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +@@ -2664,7 +2664,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { return metadata; } @@ -284,7 +284,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc -@@ -161,6 +161,7 @@ LayerTreeImpl::LayerTreeImpl( +@@ -160,6 +160,7 @@ LayerTreeImpl::LayerTreeImpl( background_color_(SkColors::kTransparent), page_scale_factor_(page_scale_factor), min_page_scale_factor_(0), @@ -292,7 +292,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_(0), external_page_scale_factor_(1.f), device_scale_factor_(1.f), -@@ -451,7 +452,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( +@@ -449,7 +450,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( } } @@ -301,7 +301,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (!InnerViewportScrollNode()) return; -@@ -526,8 +527,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { +@@ -524,8 +525,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { // Adjust the outer viewport container as well, since adjusting only the // inner may cause its bounds to exceed those of the outer, causing scroll // clamping. @@ -317,7 +317,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc property_trees->SetOuterViewportContainerBoundsDelta(scaled_bounds_delta); // outer_viewport_container_bounds_delta and -@@ -823,6 +829,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { +@@ -821,6 +827,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { PushPageScaleFromMainThread(commit_state.page_scale_factor, commit_state.min_page_scale_factor, @@ -325,7 +325,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc commit_state.max_page_scale_factor); SetBrowserControlsParams(commit_state.browser_controls_params); -@@ -934,6 +941,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { +@@ -930,6 +937,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { // Active tree already shares the page_scale_factor object with pending // tree so only the limits need to be provided. target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), @@ -333,7 +333,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor()); target_tree->SetExternalPageScaleFactor(external_page_scale_factor_); -@@ -1315,19 +1323,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { +@@ -1311,19 +1319,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, @@ -357,7 +357,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (changed_page_scale) { DidUpdatePageScale(); -@@ -1336,12 +1346,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( +@@ -1332,12 +1342,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -372,7 +372,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (page_scale_factor) { DCHECK(!IsActiveTree() || !host_impl_->pending_tree()); -@@ -1446,12 +1457,15 @@ void LayerTreeImpl::PushBrowserControls( +@@ -1454,12 +1465,15 @@ void LayerTreeImpl::PushBrowserControls( } bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, @@ -388,7 +388,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_ = max_page_scale_factor; return true; -@@ -2357,7 +2371,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { +@@ -2365,7 +2379,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { return scrollbars; } @@ -397,7 +397,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc const gfx::PointF& screen_space_point, const gfx::Transform& local_space_to_screen_space_transform, const gfx::Rect& local_space_rect, -@@ -2943,7 +2957,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( +@@ -2951,7 +2965,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( return viewport_bound; } @@ -409,7 +409,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h --- a/cc/trees/layer_tree_impl.h +++ b/cc/trees/layer_tree_impl.h -@@ -380,6 +380,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -378,6 +378,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleOnActiveTree(float active_page_scale); void PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, @@ -417,7 +417,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); const LayerSelection& selection() const { return selection_; } float current_page_scale_factor() const { -@@ -387,7 +388,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -385,7 +386,7 @@ class CC_EXPORT LayerTreeImpl { } float min_page_scale_factor() const { return min_page_scale_factor_; } float max_page_scale_factor() const { return max_page_scale_factor_; } @@ -426,7 +426,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float page_scale_delta() const { return page_scale_factor()->Delta(); } SyncedScale* page_scale_factor(); -@@ -849,6 +850,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -838,6 +839,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleFactorAndLimitsForDisplayTree(float page_scale_factor, float min_page_scale_factor, @@ -434,7 +434,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); LayerTreeHostImpl* host_impl() { return host_impl_; } -@@ -873,8 +875,10 @@ class CC_EXPORT LayerTreeImpl { +@@ -862,8 +864,10 @@ class CC_EXPORT LayerTreeImpl { float ClampPageScaleFactorToLimits(float page_scale_factor) const; void PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -445,7 +445,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); void DidUpdatePageScale(); void PushBrowserControls(const float* top_controls_shown_ratio, -@@ -913,6 +917,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -902,6 +906,7 @@ class CC_EXPORT LayerTreeImpl { scoped_refptr page_scale_factor_; float min_page_scale_factor_; @@ -456,7 +456,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc --- a/cc/trees/property_tree.cc +++ b/cc/trees/property_tree.cc -@@ -1587,7 +1587,7 @@ void ScrollTree::clear() { +@@ -1597,7 +1597,7 @@ void ScrollTree::clear() { #endif } @@ -465,7 +465,7 @@ diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc const ScrollNode* scroll_node = Node(scroll_node_id); gfx::SizeF scroll_bounds = this->scroll_bounds(scroll_node_id); -@@ -2079,7 +2079,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, +@@ -2116,7 +2116,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, return old_offset + scroll - new_offset; } @@ -489,7 +489,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr 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 -@@ -321,7 +321,7 @@ public class WarmupManager { +@@ -302,7 +302,7 @@ public class WarmupManager { int height = bounds.bottom - bounds.top; webContents = tab.getWebContents(); assumeNonNull(webContents); @@ -501,7 +501,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j 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 -@@ -36,6 +36,9 @@ import androidx.annotation.NonNull; +@@ -39,6 +39,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -510,8 +510,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + import org.chromium.base.ActivityState; import org.chromium.base.ApplicationStatus; - import org.chromium.base.BuildInfo; -@@ -516,7 +519,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + import org.chromium.base.Callback; +@@ -528,7 +531,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Ensure that mConfig is initialized before tablet mode changes. mConfig = getResources().getConfiguration(); @@ -541,7 +541,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/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java -@@ -929,7 +929,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -953,7 +953,7 @@ public class CompositorViewHolder extends FrameLayout int viewportInsets = controlsInsets + keyboardInset; if (isAttachedToWindow(view)) { @@ -550,7 +550,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp // Dispatch the geometrychange JavaScript event to the page. // TODO(bokan): This doesn't belong in updateWebContentsSize. Ideally the content/ layer -@@ -949,7 +949,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -973,7 +973,7 @@ public class CompositorViewHolder extends FrameLayout MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); @@ -562,7 +562,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java -@@ -617,7 +617,7 @@ public class OverlayPanelContent { +@@ -618,7 +618,7 @@ public class OverlayPanelContent { OverlayPanelContentJni.get() .onPhysicalBackingSizeChanged( mNativeOverlayPanelContentPtr, webContents, mContentViewWidth, viewHeight); @@ -574,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bott diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -1869,7 +1869,7 @@ class TabImpl implements Tab { +@@ -1870,7 +1870,7 @@ class TabImpl implements Tab { // so that next onShow() call won't send a resize message with zero size // to the renderer process. This prevents the size fluttering that may confuse // Blink and break rendered result (see http://crbug.com/340987). @@ -583,7 +583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (bounds != null) { assert mNativeTabAndroid != 0; -@@ -2243,7 +2243,7 @@ class TabImpl implements Tab { +@@ -2244,7 +2244,7 @@ class TabImpl implements Tab { Supplier compositorViewHolderSupplier = assumeNonNull(getActivity()).getCompositorViewHolderSupplier(); View compositorView = compositorViewHolderSupplier.get(); @@ -595,7 +595,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java -@@ -25,12 +25,14 @@ import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; +@@ -23,12 +23,14 @@ import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; import org.chromium.components.browser_ui.settings.SettingsUtils; import org.chromium.chrome.browser.util.PlatformUtil; @@ -610,7 +610,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting // Non-translated strings: private static final String MSG_DEVELOPER_OPTIONS_TITLE = "Developer options"; -@@ -82,6 +84,14 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment implements Emb +@@ -80,6 +82,14 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment implements Emb // handle the click so the default action isn't triggered. return true; }); @@ -701,7 +701,7 @@ new file mode 100644 diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java --- a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java +++ b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java -@@ -46,6 +46,10 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa +@@ -107,6 +107,10 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa mRequireRestartDelegateSupplier = delegate; } @@ -775,7 +775,7 @@ diff --git a/components/input/child_frame_input_helper.cc b/components/input/chi diff --git a/components/input/input_router_impl.cc b/components/input/input_router_impl.cc --- a/components/input/input_router_impl.cc +++ b/components/input/input_router_impl.cc -@@ -652,7 +652,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { +@@ -655,7 +655,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { return client_->IsAutoscrollInProgress(); } @@ -795,7 +795,7 @@ diff --git a/components/input/render_widget_host_input_event_router.cc b/compone #include "components/input/cursor_manager.h" #include "components/input/features.h" #include "components/input/touch_emulator.h" -@@ -580,6 +581,8 @@ RenderWidgetTargetResult RenderWidgetHostInputEventRouter::FindViewAtLocation( +@@ -581,6 +582,8 @@ RenderWidgetTargetResult RenderWidgetHostInputEventRouter::FindViewAtLocation( return {root_view, /*should_query_view=*/false, *transformed_point}; } float device_scale_factor = root_view->GetDeviceScaleFactor(); @@ -804,7 +804,7 @@ diff --git a/components/input/render_widget_host_input_event_router.cc b/compone DCHECK_GT(device_scale_factor, 0.0f); gfx::PointF point_in_pixels = gfx::ConvertPointToPixels(point, device_scale_factor); -@@ -1647,7 +1650,7 @@ bool IsPinchCurrentlyAllowedInTarget(RenderWidgetHostViewInput* target) { +@@ -1649,7 +1652,7 @@ bool IsPinchCurrentlyAllowedInTarget(RenderWidgetHostViewInput* target) { } // namespace @@ -905,7 +905,7 @@ diff --git a/components/viz/service/input/render_input_router_support_child_fram diff --git a/components/viz/service/layers/layer_context_impl.cc b/components/viz/service/layers/layer_context_impl.cc --- a/components/viz/service/layers/layer_context_impl.cc +++ b/components/viz/service/layers/layer_context_impl.cc -@@ -1781,7 +1781,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( +@@ -1802,7 +1802,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( return base::unexpected("Invalid page scale factors"); } layers.SetPageScaleFactorAndLimitsForDisplayTree( @@ -917,7 +917,7 @@ diff --git a/components/viz/service/layers/layer_context_impl.cc b/components/vi diff --git a/content/browser/android/selection/selection_popup_controller.cc b/content/browser/android/selection/selection_popup_controller.cc --- a/content/browser/android/selection/selection_popup_controller.cc +++ b/content/browser/android/selection/selection_popup_controller.cc -@@ -179,7 +179,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( +@@ -192,7 +192,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( web_contents_impl->MoveRangeSelectionExtent(gfx::ToRoundedPoint(extent)); } @@ -926,12 +926,12 @@ diff --git a/content/browser/android/selection/selection_popup_controller.cc b/c const gfx::PointF& base, const gfx::PointF& extent) { auto* web_contents_impl = static_cast(web_contents()); -@@ -300,7 +300,8 @@ bool SelectionPopupController::ShowSelectionMenu( - is_password_type, jselected_text, params.selection_start_offset, +@@ -325,7 +325,8 @@ bool SelectionPopupController::ShowSelectionMenu( can_select_all, can_edit_richly, should_suggest, static_cast(params.source_type), -- render_frame_host->GetJavaRenderFrameHost()); -+ render_frame_host->GetJavaRenderFrameHost(), + render_frame_host->GetJavaRenderFrameHost(), +- menu_model_bridge_->GetJavaObject()); ++ menu_model_bridge_->GetJavaObject(), + base::FeatureList::IsEnabled(features::kPixelPerfect)); return true; } @@ -1006,7 +1006,7 @@ diff --git a/content/browser/renderer_host/input/touch_selection_controller_clie 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 -@@ -9260,7 +9260,7 @@ void RenderFrameHostImpl::ShowPopupMenu( +@@ -9268,7 +9268,7 @@ void RenderFrameHostImpl::ShowPopupMenu( #endif } @@ -1067,7 +1067,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ // If we do not have a valid viz::LocalSurfaceId then we are a child frame // waiting on the id to be propagated from our parent. We cannot create a hash -@@ -3987,7 +4009,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( +@@ -3990,7 +4012,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( // porting drag-and-drop calls to Mojo, so that RenderWidgetHostImpl bypasses // RenderWidget to talk the the WebFrameWidget and needs to perform the scale // operation itself. @@ -1079,15 +1079,15 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ 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 -@@ -83,6 +83,7 @@ +@@ -85,6 +85,7 @@ #include "content/public/browser/render_widget_host_iterator.h" #include "content/public/common/content_client.h" #include "content/public/common/content_switches.h" +#include "content/public/common/content_features.h" #include "third_party/blink/public/mojom/input/input_handler.mojom.h" + #include "third_party/perfetto/include/perfetto/tracing/track.h" #include "third_party/skia/include/core/SkBitmap.h" - #include "third_party/skia/include/core/SkCanvas.h" -@@ -949,7 +950,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -952,7 +953,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( ? SK_ColorTRANSPARENT : metadata.root_background_color.toSkColor()); @@ -1096,7 +1096,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ overscroll_controller_->OnFrameMetadataUpdated( metadata.page_scale_factor, metadata.device_scale_factor, metadata.scrollable_viewport_size, metadata.root_layer_size, -@@ -1248,6 +1249,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { +@@ -1254,6 +1255,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { default_bounds_dip_.height() * scale_factor); } @@ -1109,7 +1109,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ const float scale_factor = GetDeviceScaleFactor() / view_.GetDipScale(); return gfx::ScaleToCeiledSize(view_.GetSizeDevicePx(), scale_factor); } -@@ -1273,6 +1280,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { +@@ -1279,6 +1286,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { NOTREACHED(); } @@ -1120,7 +1120,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ gfx::Size RenderWidgetHostViewAndroid::GetCompositorViewportPixelSize() { if (!view_.parent()) { if (default_bounds_dip_.IsEmpty()) { -@@ -1408,7 +1419,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { +@@ -1414,7 +1425,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { : viz::SurfaceId(); } @@ -1129,7 +1129,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ const gfx::PointF& point, RenderWidgetHostViewInput* target_view, gfx::PointF* transformed_point) { -@@ -1822,7 +1833,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { +@@ -1829,7 +1840,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { return delegated_frame_host_->HasFallbackSurface(); } @@ -1141,7 +1141,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h --- a/content/browser/renderer_host/render_widget_host_view_android.h +++ b/content/browser/renderer_host/render_widget_host_view_android.h -@@ -161,6 +161,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid +@@ -170,6 +170,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid gfx::Size GetRequestedRendererSizeDevicePx() override; gfx::Size GetVisibleViewportSize() override; gfx::Size GetVisibleViewportSizeDevicePx() override; @@ -1212,7 +1212,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -826,8 +826,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { +@@ -827,8 +827,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { return Java_WebContentsImpl_createSize(env, size.width(), size.height()); } @@ -1241,7 +1241,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -527,7 +527,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -530,7 +530,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise)); // CAUTION: Only add custom enabling logic here if it cannot // be covered by the other functions. @@ -1257,17 +1257,17 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. 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 -@@ -519,7 +519,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper - boolean canRichlyEdit, +@@ -526,7 +526,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper boolean shouldSuggest, int sourceType, -- RenderFrameHost renderFrameHost) { -+ RenderFrameHost renderFrameHost, + RenderFrameHost renderFrameHost, +- MenuModelBridge menuModelBridge) { ++ MenuModelBridge menuModelBridge, + boolean pixelPerfectEnabled) { + mMenuModelBridge = menuModelBridge; RecordHistogram.recordEnumeratedHistogram( - "Android.ShowSelectionMenuSourceType", - sourceType, -@@ -530,6 +531,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper + "Android.ShowSelectionMenuSourceType", sourceType, MenuSourceType.MAX_VALUE); +@@ -536,6 +537,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper mXDip = xDip; mYDip = yDip; mSelectionRect.set(left, top, right, offsetBottom); @@ -1291,7 +1291,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon } @Override -@@ -1436,7 +1436,7 @@ public class WebContentsImpl +@@ -1449,7 +1449,7 @@ public class WebContentsImpl Rect getFullscreenVideoSize(long nativeWebContentsAndroid); @@ -1459,7 +1459,7 @@ diff --git a/third_party/blink/public/mojom/widget/visual_properties.mojom b/thi diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h --- a/third_party/blink/public/web/web_view.h +++ b/third_party/blink/public/web/web_view.h -@@ -243,6 +243,7 @@ class BLINK_EXPORT WebView { +@@ -248,6 +248,7 @@ class BLINK_EXPORT WebView { // Minimum and Maximum as computed as a combination of default, page defined, // UA, etc. constraints. virtual float MinimumPageScaleFactor() const = 0; @@ -1470,14 +1470,14 @@ diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/ diff --git a/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc b/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc --- a/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc +++ b/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc -@@ -49,6 +49,7 @@ namespace { - bool ShouldApplyNoise(CanvasRenderingContext* rendering_context, - scoped_refptr& snapshot, +@@ -48,6 +48,7 @@ namespace { + // 2) the CanvasInterventions RuntimeEnabledFeature is enabled + bool ShouldApplyNoise(HighEntropyCanvasOpType canvas_operations, ExecutionContext* execution_context) { + if (RuntimeEnabledFeatures::PixelPerfectEnabled()) return false; CanvasNoiseReason noise_reason = CanvasNoiseReason::kAllConditionsMet; - if (!rendering_context) { - noise_reason |= CanvasNoiseReason::kNoRenderContext; + if (canvas_operations == HighEntropyCanvasOpType::kNone) { + noise_reason |= CanvasNoiseReason::kNoTrigger; diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/blink/renderer/core/css/media_values.cc --- a/third_party/blink/renderer/core/css/media_values.cc +++ b/third_party/blink/renderer/core/css/media_values.cc @@ -1502,7 +1502,7 @@ diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/b diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -1258,8 +1258,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( +@@ -1262,8 +1262,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( if (GetBrowserControls().PermittedState() == cc::BrowserControlsState::kBoth && !GetBrowserControls().ShrinkViewport()) { @@ -1524,7 +1524,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } GetPageScaleConstraintsSet().DidChangeInitialContainingBlockSize(icb_size); -@@ -1339,7 +1350,8 @@ void WebViewImpl::DidUpdateBrowserControls() { +@@ -1343,7 +1354,8 @@ void WebViewImpl::DidUpdateBrowserControls() { ResizeViewportAnchor::ResizeScope resize_scope(*resize_viewport_anchor_); visual_viewport.SetBrowserControlsAdjustment( @@ -1534,7 +1534,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -1403,7 +1415,7 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1417,7 +1429,7 @@ void WebViewImpl::ResizeWithBrowserControls( float bottom_controls_height, bool browser_controls_shrink_layout) { ResizeWithBrowserControls( @@ -1543,7 +1543,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p {top_controls_height, GetBrowserControls().TopMinHeight(), bottom_controls_height, GetBrowserControls().BottomMinHeight(), GetBrowserControls().AnimateHeightChanges(), -@@ -1413,6 +1425,8 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1427,6 +1439,8 @@ void WebViewImpl::ResizeWithBrowserControls( void WebViewImpl::ResizeWithBrowserControls( const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1552,7 +1552,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p cc::BrowserControlsParams browser_controls_params) { if (should_auto_resize_) { // When auto-resizing only the viewport size comes from the browser, while -@@ -1421,6 +1435,11 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1435,6 +1449,11 @@ void WebViewImpl::ResizeWithBrowserControls( return; } @@ -1564,7 +1564,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (size_ == main_frame_widget_size && GetPage()->GetVisualViewport().Size() == visible_viewport_size && GetBrowserControls().Params() == browser_controls_params) -@@ -2092,7 +2111,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { +@@ -2107,7 +2126,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { web_preferences_.prefers_reduced_motion); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1573,7 +1573,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p // Prevent main frame updates while the main frame is loading until enough // progress is made and BeginMainFrames are explicitly asked for. scoped_defer_main_frame_update_ = -@@ -2900,7 +2919,7 @@ void WebViewImpl::RefreshPageScaleFactor() { +@@ -2915,7 +2934,7 @@ void WebViewImpl::RefreshPageScaleFactor() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1582,7 +1582,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -2977,7 +2996,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( +@@ -2992,7 +3011,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( TextAutosizer::UpdatePageInfoInAllFrames(GetPage()->MainFrame()); } @@ -1591,7 +1591,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (should_auto_resize_ || !MainFrameImpl()) return; -@@ -3211,6 +3230,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { +@@ -3226,6 +3245,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().minimum_scale; } @@ -1602,7 +1602,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p float WebViewImpl::MaximumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().maximum_scale; } -@@ -3260,7 +3283,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { +@@ -3275,7 +3298,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1611,7 +1611,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -3800,7 +3823,7 @@ void WebViewImpl::PageScaleFactorChanged() { +@@ -3823,7 +3846,7 @@ void WebViewImpl::PageScaleFactorChanged() { DCHECK(viewport.IsActiveViewport()); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1623,7 +1623,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h --- a/third_party/blink/renderer/core/exported/web_view_impl.h +++ b/third_party/blink/renderer/core/exported/web_view_impl.h -@@ -170,6 +170,7 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -171,6 +171,7 @@ class CORE_EXPORT WebViewImpl final : public WebView, void AdvanceFocus(bool reverse) override; float PageScaleFactor() const override; float MinimumPageScaleFactor() const override; @@ -1631,7 +1631,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa float MaximumPageScaleFactor() const override; void SetDefaultPageScaleLimits(float min_scale, float max_scale) override; void SetInitialPageScaleOverride(float) override; -@@ -284,6 +285,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -285,6 +286,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // includes all browser controls params such as the min heights. void ResizeWithBrowserControls(const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1640,7 +1640,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa cc::BrowserControlsParams); // Requests a page-scale animation based on the specified point/rect. -@@ -824,6 +827,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -832,6 +835,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // The upper bound on the size when auto-resizing. gfx::Size max_auto_size_; @@ -1652,7 +1652,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc -@@ -1720,8 +1720,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { +@@ -1732,8 +1732,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { } float LocalFrameView::InputEventsScaleFactor() const { @@ -1793,7 +1793,7 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.h b/third_par diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc -@@ -1886,6 +1886,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1885,6 +1885,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // All non-top-level Widgets (child local-root frames, GuestViews, // etc.) propagate and consume the page scale factor as "external", meaning // that it comes from the top level widget's page scale. @@ -1803,7 +1803,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (!ForTopMostMainFrame()) { // The main frame controls the page scale factor, from blink. For other // frame widgets, the page scale from pinch zoom and compositing scale is -@@ -1893,7 +1896,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1892,7 +1895,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // blink doesn't need to know this page scale factor outside the main frame, // the compositor does in order to produce its output at the correct scale. float combined_scale_factor = visual_properties.page_scale_factor * @@ -1812,7 +1812,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th widget_base_->LayerTreeHost()->SetExternalPageScaleFactor( combined_scale_factor, visual_properties.is_pinch_gesture_active); -@@ -1906,7 +1909,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1905,7 +1908,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // Ensure the external scale factor in top-level widgets is reset as it may // be leftover from when a widget was nested and was promoted to top level. widget_base_->LayerTreeHost()->SetExternalPageScaleFactor( @@ -1821,7 +1821,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th /*is_pinch_gesture_active=*/false); } -@@ -1950,6 +1953,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1949,6 +1952,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( new_compositor_viewport_pixel_rect, device_scale_factor_for_testing_ / non_testing_device_scale_factor_); } @@ -1840,7 +1840,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ForMainFrame()) { if (size_ != new_size) { -@@ -1967,6 +1982,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1966,6 +1981,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( size_.value(), widget_base_->DIPsToCeiledBlinkSpace( widget_base_->VisibleViewportSize()), @@ -1849,7 +1849,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); return; } -@@ -2000,6 +2017,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1999,6 +2016,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( View()->ResizeWithBrowserControls( size_.value(), widget_base_->VisibleViewportSize(), @@ -1858,7 +1858,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); } -@@ -2378,6 +2397,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, +@@ -2381,6 +2400,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, View()->ZoomFactorForViewportLayout() * static_cast(View()->ZoomLevelToZoomFactor(zoom_level)) * static_cast(css_zoom_factor); @@ -1867,7 +1867,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (zoom_changed) { // Set the layout shift exclusion window for the zoom level change. if (LocalFrameView* view = document->View()) { -@@ -3430,6 +3451,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { +@@ -3428,6 +3449,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { // be needed in setting the raster scale. SetPageScaleStateAndLimits(1.f, false /* is_pinch_gesture_active */, View()->MinimumPageScaleFactor(), @@ -1875,7 +1875,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th View()->MaximumPageScaleFactor()); } -@@ -4799,9 +4821,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( +@@ -4805,9 +4827,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1887,7 +1887,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th // Only propagate page scale from the main frame. if (ForMainFrame()) { -@@ -4925,7 +4948,10 @@ void WebFrameWidgetImpl::OrientationChanged() { +@@ -4931,7 +4954,10 @@ void WebFrameWidgetImpl::OrientationChanged() { void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen( const display::ScreenInfos& previous_original_screen_infos) { display::ScreenInfo screen_info = widget_base_->GetScreenInfo(); @@ -1899,7 +1899,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ShouldAutoDetermineCompositingToLCDTextSetting()) { // This causes compositing state to be modified which dirties the -@@ -5121,7 +5147,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { +@@ -5127,7 +5153,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { if (!device_scale_factor_for_testing_) { non_testing_device_scale_factor_ = @@ -1911,7 +1911,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h -@@ -655,6 +655,7 @@ class CORE_EXPORT WebFrameWidgetImpl +@@ -657,6 +657,7 @@ class CORE_EXPORT WebFrameWidgetImpl void SetPageScaleStateAndLimits(float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1922,7 +1922,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/thi diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc -@@ -2547,7 +2547,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { +@@ -2559,7 +2559,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { dev_tools_agent_->PaintOverlays(context); } @@ -1931,7 +1931,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/thi TRACE_EVENT0("blink", "WebLocalFrameImpl::createFrameView"); DCHECK(GetFrame()); // If frame() doesn't exist, we probably didn't init -@@ -3022,7 +3022,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( +@@ -3034,7 +3034,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( std::move(context_menu_client), params); } @@ -1943,7 +1943,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/thi diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc -@@ -1569,6 +1569,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, +@@ -1567,6 +1567,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, } bool HTMLCanvasElement::ShouldAccelerate() const { @@ -1954,7 +1954,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_party/blink/renderer/core/input/event_handler.cc --- a/third_party/blink/renderer/core/input/event_handler.cc +++ b/third_party/blink/renderer/core/input/event_handler.cc -@@ -2082,7 +2082,7 @@ GestureEventWithHitTestResults EventHandler::HitTestResultForGestureEvent( +@@ -2084,7 +2084,7 @@ GestureEventWithHitTestResults EventHandler::HitTestResultForGestureEvent( hit_test_result); } @@ -1966,7 +1966,7 @@ diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_part diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc -@@ -1081,7 +1081,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( +@@ -1085,7 +1085,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( // Ensure the override is applied immediately without having to wait for // `WebFrameWidgetImpl::UpdateVisualProperties()` to be called. GetWebViewImpl()->ResizeWithBrowserControls( @@ -1979,7 +1979,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc --- a/third_party/blink/renderer/core/page/page.cc +++ b/third_party/blink/renderer/core/page/page.cc -@@ -1309,6 +1309,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { +@@ -1323,6 +1323,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { if (SchemeRegistry::IsWebUIScheme(protocol) || disable_screen_emulated_) { isEnabled = false; } @@ -2028,7 +2028,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_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 -@@ -5857,6 +5857,10 @@ +@@ -5877,6 +5877,10 @@ // If enabled, the `getDisplayMedia()` family of APIs will ask for NV12 // frames, which should trigger a zero-copy path in the tab capture code. name: "ZeroCopyTabCapture", @@ -2051,7 +2051,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox #include "third_party/blink/renderer/platform/widget/input/compositor_thread_event_queue.h" #include "third_party/blink/renderer/platform/widget/input/cursor_control_handler.h" #include "third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h" -@@ -56,6 +57,20 @@ namespace { +@@ -57,6 +58,20 @@ namespace { using ::perfetto::protos::pbzero::ChromeLatencyInfo2; using ::perfetto::protos::pbzero::TrackEvent; @@ -2072,7 +2072,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox cc::ScrollStateData CreateScrollStateDataForGesture( const WebGestureEvent& event) { cc::ScrollStateData scroll_state_data; -@@ -64,8 +79,8 @@ cc::ScrollStateData CreateScrollStateDataForGesture( +@@ -65,8 +80,8 @@ cc::ScrollStateData CreateScrollStateDataForGesture( } switch (event.GetType()) { case WebInputEvent::Type::kGestureScrollBegin: @@ -2083,7 +2083,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox scroll_state_data.delta_x_hint = -event.data.scroll_begin.delta_x_hint; scroll_state_data.delta_y_hint = -event.data.scroll_begin.delta_y_hint; scroll_state_data.is_beginning = true; -@@ -831,7 +846,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -841,7 +856,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( const WebGestureEvent& gesture_event = static_cast(event); input_handler_->PinchGestureBegin( @@ -2092,7 +2092,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox GestureScrollInputType(gesture_event.SourceDevice())); gesture_pinch_in_progress_ = true; return DID_HANDLE; -@@ -843,7 +858,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -853,7 +868,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( const WebGestureEvent& gesture_event = static_cast(event); input_handler_->PinchGestureEnd( @@ -2101,7 +2101,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_HANDLE; } -@@ -853,7 +868,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -863,7 +878,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( static_cast(event); input_handler_->PinchGestureUpdate( gesture_event.data.pinch_update.scale, @@ -2110,7 +2110,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_HANDLE; } -@@ -876,7 +891,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -886,7 +901,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( // TODO(arakeri): Pass in the modifier instead of a bool once the // refactor (crbug.com/1022097) is done. For details, see // crbug.com/1016955. @@ -2119,7 +2119,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox } return DID_NOT_HANDLE; -@@ -887,7 +902,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -897,7 +912,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( static_cast(event); CHECK(input_handler_); if (mouse_event.button == WebMouseEvent::Button::kLeft) @@ -2128,7 +2128,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_NOT_HANDLE; } case WebInputEvent::Type::kMouseMove: { -@@ -902,7 +917,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -912,7 +927,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( (mouse_event.button == WebPointerProperties::Button::kNoButton && !(mouse_event.GetModifiers() & WebInputEvent::Modifiers::kRelativeMotionEvent)); @@ -2137,7 +2137,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox should_cancel_scrollbar_drag); return DID_NOT_HANDLE; } -@@ -941,12 +956,14 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( +@@ -951,12 +966,14 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( // to check pointer lock state gfx::PointF point = static_cast(event).PositionInWidget(); @@ -2152,7 +2152,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return WebInputEventAttribution( WebInputEventAttribution::kTargetedFrame, input_handler_->FindFrameElementIdAtPoint(point)); -@@ -961,6 +978,7 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( +@@ -971,6 +988,7 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( // how the renderer host performs touch event dispatch. // https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_input_event_router.cc?l=808&rcl=10fe9d0a725d4ed7b69266a5936c525f0a5b26d3 gfx::PointF point = touch_event.touches[0].PositionInWidget(); @@ -2160,7 +2160,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox const cc::ElementId targeted_element = input_handler_->FindFrameElementIdAtPoint(point); -@@ -1057,7 +1075,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( +@@ -1072,7 +1090,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( } } @@ -2169,7 +2169,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox if (input_handler_->HasBlockingWheelEventHandlerAt( gfx::Point(position_in_widget.x(), position_in_widget.y()))) { result = DID_NOT_HANDLE; -@@ -1226,7 +1244,7 @@ InputHandlerProxy::HandleGestureScrollUpdate( +@@ -1241,7 +1259,7 @@ InputHandlerProxy::HandleGestureScrollUpdate( scroll_data->set_unused_delta_y(scroll_result.unused_scroll_delta.y()); }); @@ -2178,7 +2178,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox if (elastic_overscroll_controller_) HandleScrollElasticityOverscroll(gesture_event, scroll_result); -@@ -1304,8 +1322,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( +@@ -1319,8 +1337,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( cc::TouchAction touch_action = cc::TouchAction::kAuto; cc::InputHandler::TouchStartOrMoveEventListenerType event_listener_type = input_handler_->EventListenerTypeForTouchStartOrMoveAt( @@ -2189,7 +2189,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox &touch_action); if (allowed_touch_action && touch_action != cc::TouchAction::kAuto) { TRACE_EVENT_INSTANT1("input", "Adding TouchAction", -@@ -1411,7 +1429,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( +@@ -1426,7 +1444,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( touch_event.touches_length == 1) { DCHECK(touch_event.touches[0].state == WebTouchPoint::State::kStatePressed); cc::InputHandlerPointerResult pointer_result = HandlePointerDown( @@ -2198,7 +2198,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox if (pointer_result.type == cc::PointerResultType::kScrollbarScroll) { client_->SetAllowedTouchAction(allowed_touch_action); return DID_HANDLE; -@@ -1474,7 +1492,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( +@@ -1489,7 +1507,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( touch_event.touch_start_or_first_touch_move); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerMove( @@ -2207,7 +2207,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox false /* should_cancel_scrollbar_drag */); if (pointer_result.type == cc::PointerResultType::kScrollbarScroll) { return DID_HANDLE; -@@ -1517,7 +1535,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( +@@ -1532,7 +1550,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( touch_event.touches_length); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerUp( @@ -2321,7 +2321,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.h b/third_pa diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_frame_host_android.cc --- a/ui/android/delegated_frame_host_android.cc +++ b/ui/android/delegated_frame_host_android.cc -@@ -180,7 +180,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { +@@ -188,7 +188,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { return frame_sink_id_; } @@ -2442,7 +2442,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid. diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc --- a/ui/android/view_android.cc +++ b/ui/android/view_android.cc -@@ -117,6 +117,10 @@ float ViewAndroid::GetDipScale() { +@@ -118,6 +118,10 @@ float ViewAndroid::GetDipScale() { return ui::GetScaleFactorForNativeView(this); } @@ -2453,7 +2453,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc ScopedJavaLocalRef ViewAndroid::GetEventForwarder() { if (!event_forwarder_) { DCHECK(!RootPathHasEventForwarder(parent_)) -@@ -152,7 +156,7 @@ void ViewAndroid::AddChild(ViewAndroid* child) { +@@ -153,7 +157,7 @@ void ViewAndroid::AddChild(ViewAndroid* child) { // spurious events with empty size from being sent down. if (child->match_parent() && !bounds_device_px_.IsEmpty() && child->GetSizeDevicePx() != bounds_device_px_.size()) { @@ -2462,7 +2462,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc child->DispatchOnSizeChanged(); } -@@ -497,7 +501,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, +@@ -498,7 +502,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, env, delegate, direction_up, current_scroll_ratio); } @@ -2471,7 +2471,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc // Match-parent view must not receive size events. DCHECK(!match_parent()); -@@ -507,13 +511,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { +@@ -508,13 +512,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { return; } @@ -2489,7 +2489,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc if (bounds_device_px_.size() == size_device_px) { return; } -@@ -521,12 +527,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { +@@ -522,12 +528,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { bounds_device_px_.set_size(size_device_px); float scale = GetDipScale(); @@ -2508,7 +2508,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc } } -@@ -577,6 +586,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { +@@ -578,6 +587,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { return bounds_device_px_.size(); } @@ -2544,7 +2544,7 @@ diff --git a/ui/android/view_android.h b/ui/android/view_android.h // |deadline_override| if not nullopt will be used as the cc::DeadlinePolicy // timeout for this resize. void OnPhysicalBackingSizeChanged( -@@ -311,7 +314,7 @@ class UI_ANDROID_EXPORT ViewAndroid { +@@ -320,7 +323,7 @@ class UI_ANDROID_EXPORT ViewAndroid { // each leaf of subtree. static bool SubtreeHasEventForwarder(ViewAndroid* view); @@ -2553,7 +2553,7 @@ diff --git a/ui/android/view_android.h b/ui/android/view_android.h void DispatchOnSizeChanged(); // Returns the Java delegate for this view. This is used to delegate work -@@ -334,6 +337,8 @@ class UI_ANDROID_EXPORT ViewAndroid { +@@ -343,6 +346,8 @@ class UI_ANDROID_EXPORT ViewAndroid { // Same as above, but before dividing by the device scale factor. gfx::Rect bounds_device_px_; diff --git a/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch b/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch index b3df882d..05af7d23 100644 --- a/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch +++ b/build/patches/Android-Toolbar-Scroll-Ablation-setting.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/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java -@@ -40,6 +40,7 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro +@@ -41,6 +41,7 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro private final Supplier mPersistentFullscreenMode; private long mCurrentShowingStartTime; @@ -26,7 +26,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom /** * Constructs a BrowserControlsVisibilityDelegate designed to deal with overrides driven by -@@ -65,7 +66,8 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro +@@ -66,7 +67,8 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro long currentShowingTime = SystemClock.uptimeMillis() - mCurrentShowingStartTime; if (currentShowingTime >= MINIMUM_SHOW_DURATION_MS) return; diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index 5e850a4d..ec737b91 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -87,7 +87,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivit diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java -@@ -23,17 +23,39 @@ import org.chromium.build.annotations.Nullable; +@@ -22,10 +22,31 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector; import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState; @@ -118,9 +118,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in +import org.chromium.content_public.browser.WebContents; +import org.chromium.net.NetworkChangeNotifier; + + import java.util.function.Supplier; + /** - * Class that detects if the network is offline. Waits for the network to stablize before notifying - * the observer. +@@ -34,7 +55,8 @@ import java.util.function.Supplier; */ @NullMarked class OfflineDetector @@ -130,7 +131,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in // If the connection is online, then we report that immediately via |mIsOfflineCallback|. // |STATUS_INDICATOR_WAIT_ON_OFFLINE_DURATION_MS| and // |mStatusIndicatorWaitOnSwitchOnlineToOfflineDurationMs| control the duration before -@@ -119,6 +141,11 @@ class OfflineDetector +@@ -120,6 +142,11 @@ class OfflineDetector private static final String TAG = "OfflineDetector"; @@ -142,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in /** * Constructs the offline indicator. * @param isOfflineCallback The {@link Callback} is invoked when the connectivity status is -@@ -130,7 +157,13 @@ class OfflineDetector +@@ -131,7 +158,13 @@ class OfflineDetector OfflineDetector( Callback isOfflineCallback, Callback isForegroundCallback, @@ -157,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in mIsOfflineCallback = isOfflineCallback; mIsForegroundCallback = isForegroundCallback; mContext = context; -@@ -234,6 +267,75 @@ class OfflineDetector +@@ -235,6 +268,75 @@ class OfflineDetector updateState(); } @@ -233,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in private void logToAdbConsoleNow(String prefix) { Log.i( TAG, -@@ -320,6 +422,7 @@ class OfflineDetector +@@ -321,6 +423,7 @@ class OfflineDetector ** Calls |mUpdateOfflineStatusIndicatorDelayedRunnable| to update the connection state. */ private void updateState() { @@ -244,9 +245,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java -@@ -31,6 +31,11 @@ import org.chromium.content_public.common.ContentSwitches; - import java.lang.annotation.Retention; +@@ -31,6 +31,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; + import java.util.function.Supplier; +import org.chromium.base.supplier.ObservableSupplierImpl; +import org.chromium.chrome.browser.layouts.LayoutManager; @@ -283,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in 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 -@@ -1417,7 +1417,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1439,7 +1439,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mActivity, mStatusIndicatorCoordinator, isUrlBarFocusedSupplier, @@ -298,7 +299,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/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java -@@ -198,6 +198,13 @@ public abstract class TabModelSelectorBase +@@ -199,6 +199,13 @@ public abstract class TabModelSelectorBase return null; } @@ -364,7 +365,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java -@@ -16,12 +16,16 @@ import org.chromium.build.annotations.Nullable; +@@ -15,6 +15,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.content_public.browser.WebContents; @@ -372,16 +373,17 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse import org.chromium.ui.base.WindowAndroid; import java.util.ArrayList; - import java.util.Collection; +@@ -22,6 +23,9 @@ import java.util.Collection; import java.util.List; import java.util.function.Predicate; + import java.util.function.Supplier; +import java.util.Collections; +import java.util.stream.IntStream; +import java.util.stream.Collectors; /** * A set of convenience methods used for interacting with {@link TabList}s and {@link TabModel}s. -@@ -55,6 +59,20 @@ public class TabModelUtils { +@@ -54,6 +58,20 @@ public class TabModelUtils { return TabModel.INVALID_TAB_INDEX; } @@ -405,7 +407,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java --- a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java +++ b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java -@@ -133,6 +133,8 @@ public interface TabWindowManager { +@@ -135,6 +135,8 @@ public interface TabWindowManager { /** Returns the total number of incognito tabs across all tab model selectors. */ int getIncognitoTabCount(); @@ -417,7 +419,7 @@ diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java --- a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java +++ b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java -@@ -546,6 +546,16 @@ public class TabWindowManagerImpl implements TabWindowManager { +@@ -551,6 +551,16 @@ public class TabWindowManagerImpl implements TabWindowManager { return tabGroupModelFilter.getTabsInGroup(tabGroupId); } @@ -503,8 +505,8 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro + private Object mDismissActionData; private int mBackgroundColor; private int mTextApperanceResId; - private boolean mSingleLine = true; -@@ -241,6 +243,20 @@ public class Snackbar { + private boolean mDefaultLines = true; +@@ -242,6 +244,20 @@ public class Snackbar { return this; } @@ -544,7 +546,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java --- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java +++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java -@@ -55,6 +55,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -56,6 +56,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { protected final ViewGroup mSnackbarView; protected final TemplatePreservingTextView mMessageView; private final TextView mActionButtonView; @@ -552,7 +554,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro private final ImageView mProfileImageView; private final int mAnimationDuration; private final boolean mIsTablet; -@@ -101,11 +102,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -102,11 +103,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { public SnackbarView( Activity activity, OnClickListener listener, @@ -566,7 +568,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro } /** -@@ -124,6 +126,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -125,6 +127,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { public SnackbarView( Activity activity, OnClickListener listener, @@ -574,7 +576,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro Snackbar snackbar, ViewGroup parentView, @Nullable WindowAndroid windowAndroid, -@@ -154,6 +157,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -155,6 +158,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { (TemplatePreservingTextView) mContainerView.findViewById(R.id.snackbar_message); mActionButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_button); mActionButtonView.setOnClickListener(listener); @@ -583,7 +585,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro mProfileImageView = (ImageView) mContainerView.findViewById(R.id.snackbar_profile_image); mEdgeToEdgeSupplier = edgeToEdgeSupplier; if (SnackbarManager.isFloatingSnackbarEnabled()) { -@@ -428,6 +433,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -429,6 +434,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { mActionButtonView.setVisibility(View.VISIBLE); mActionButtonView.setContentDescription(snackbar.getActionText()); setViewText(mActionButtonView, snackbar.getActionText(), animate); @@ -599,7 +601,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -903,6 +903,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { +@@ -904,6 +904,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { view->SetFocus(focused); } @@ -636,7 +638,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4080,8 +4080,10 @@ void WebContentsImpl::Stop() { +@@ -4076,8 +4076,10 @@ void WebContentsImpl::Stop() { void WebContentsImpl::SetPageFrozen(bool frozen) { TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen); @@ -663,7 +665,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon @Override public void setDisplayCutoutSafeArea(Rect insets) { if (mNativeWebContentsAndroid == 0) return; -@@ -1447,6 +1453,8 @@ public class WebContentsImpl +@@ -1460,6 +1466,8 @@ public class WebContentsImpl void setFocus(long nativeWebContentsAndroid, boolean focused); @@ -732,7 +734,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 -@@ -4614,6 +4614,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { +@@ -4630,6 +4630,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { } void Document::DispatchFreezeEvent() { @@ -743,7 +745,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -3273,6 +3273,7 @@ void LocalFrame::DidFreeze() { +@@ -3312,6 +3312,7 @@ void LocalFrame::DidFreeze() { LoaderFreezeMode freeze_mode = GetLoaderFreezeMode(); GetDocument()->Fetcher()->SetDefersLoading(freeze_mode); Loader().SetDefersLoading(freeze_mode); @@ -751,7 +753,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } void LocalFrame::DidResume() { -@@ -3287,6 +3288,7 @@ void LocalFrame::DidResume() { +@@ -3326,6 +3327,7 @@ void LocalFrame::DidResume() { GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone); Loader().SetDefersLoading(LoaderFreezeMode::kNone); diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index 66f322af..5aa24439 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -395,6 +395,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -397,6 +397,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space); HeapObserverList& ContextLifecycleObserverSet(); diff --git a/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch b/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch index c92265b9..d2db790c 100644 --- a/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch +++ b/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch @@ -25,7 +25,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -5133,7 +5133,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( +@@ -5141,7 +5141,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( } void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) { @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p return referrer_; } -@@ -2898,6 +2903,13 @@ void DocumentLoader::CommitNavigation() { +@@ -2901,6 +2906,13 @@ void DocumentLoader::CommitNavigation() { response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly)); } diff --git a/build/patches/Block-qjz9zk-or-trk-requests.patch b/build/patches/Block-qjz9zk-or-trk-requests.patch index ee02db19..e9eb6ceb 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -93,7 +93,7 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc --- a/components/url_formatter/url_fixer.cc +++ b/components/url_formatter/url_fixer.cc -@@ -602,6 +602,10 @@ GURL FixupURLInternal(const std::string& text, +@@ -598,6 +598,10 @@ GURL FixupURLInternal(const std::string& text, } } @@ -118,7 +118,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1127,6 +1127,8 @@ component("net") { +@@ -1137,6 +1137,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 0c902b95..49c53e20 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -71,7 +71,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -1945,6 +1945,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1954,6 +1954,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -84,7 +84,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni 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 -@@ -833,6 +833,8 @@ chrome_java_sources = [ +@@ -839,6 +839,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/omaha/OmahaBase.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegate.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegateBase.java", @@ -121,7 +121,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ + /** Settings fragment that displays information about Chrome. */ @NullMarked - public class AboutChromeSettings extends PreferenceFragmentCompat + public class AboutChromeSettings extends ChromeBaseSettingsFragment - implements EmbeddableSettingsPage, Preference.OnPreferenceClickListener { + implements EmbeddableSettingsPage, Preference.OnPreferenceClickListener, + Preference.OnPreferenceChangeListener { @@ -132,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ private static final String PREF_OS_VERSION = "os_version"; private static final String PREF_LEGAL_INFORMATION = "legal_information"; -@@ -72,6 +78,13 @@ public class AboutChromeSettings extends PreferenceFragmentCompat +@@ -72,6 +78,13 @@ public class AboutChromeSettings extends ChromeBaseSettingsFragment assumeNonNull(p); int currentYear = Calendar.getInstance().get(Calendar.YEAR); p.setSummary(getString(R.string.legal_information_summary, currentYear)); @@ -146,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ } @Override -@@ -142,6 +155,19 @@ public class AboutChromeSettings extends PreferenceFragmentCompat +@@ -142,6 +155,19 @@ public class AboutChromeSettings extends ChromeBaseSettingsFragment return true; } @@ -246,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen import android.view.Choreographer; +import androidx.annotation.StringRes; - import org.chromium.base.BuildInfo; + import org.chromium.base.ApkInfo; import org.chromium.base.Callback; @@ -23,6 +24,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -312,7 +312,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen // The badge is hidden if the update menu item has been clicked until there is an // even newer version of Chrome available. showBadge |= -@@ -255,6 +270,72 @@ public class UpdateMenuItemHelper { +@@ -254,6 +269,72 @@ public class UpdateMenuItemHelper { mMenuUiState.itemState.icon = R.drawable.ic_error_24dp_filled; mMenuUiState.itemState.enabled = false; break; @@ -678,7 +678,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2685,6 +2685,12 @@ static_library("browser") { +@@ -2674,6 +2674,12 @@ static_library("browser") { } if (is_android) { @@ -1091,7 +1091,7 @@ 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 -@@ -363,6 +363,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -372,6 +372,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, @@ -1102,10 +1102,10 @@ 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 -@@ -453,6 +453,7 @@ public abstract class ChromeFeatureList { - public static final String HUB_BACK_BUTTON = "HubBackButton"; +@@ -462,6 +462,7 @@ public abstract class ChromeFeatureList { public static final String HUB_SLIDE_ANIMATION = "HubSlideAnimation"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; + public static final String INCOGNITO_THEME_OVERLAY_TESTING = "IncognitoThemeOverlayTesting"; + public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; public static final String INSTANCE_SWITCHER_V2 = "InstanceSwitcherV2"; public static final String IP_PROTECTION_UX = "IpProtectionUx"; @@ -1282,10 +1282,10 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o +import org.chromium.base.ActivityState; +import org.chromium.base.ApplicationStatus; +import org.chromium.base.ApplicationStatus.ActivityStateListener; - import org.chromium.base.BuildInfo; + import org.chromium.base.ApkInfo; import org.chromium.base.Callback; - import org.chromium.base.ObserverList; -@@ -30,6 +33,7 @@ import org.chromium.base.task.TaskTraits; + import org.chromium.base.DeviceInfo; +@@ -31,6 +34,7 @@ import org.chromium.base.task.TaskTraits; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.RequiresNonNull; @@ -1293,7 +1293,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o import org.chromium.chrome.browser.omaha.metrics.UpdateSuccessMetrics; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; -@@ -39,6 +43,11 @@ import java.io.File; +@@ -40,6 +44,11 @@ import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -1305,7 +1305,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o /** * Provides the current update state for Chrome. This update state is asynchronously determined and * can change as Chrome runs. -@@ -46,24 +55,26 @@ import java.lang.annotation.RetentionPolicy; +@@ -47,24 +56,26 @@ import java.lang.annotation.RetentionPolicy; * For manually testing this functionality, see {@link UpdateConfigs}. */ @NullMarked @@ -1340,7 +1340,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o } /** A set of properties that represent the current update state for Chrome. */ -@@ -97,6 +108,12 @@ public class UpdateStatusProvider { +@@ -98,6 +109,12 @@ public class UpdateStatusProvider { */ private boolean mIsSimulated; @@ -1353,7 +1353,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o public UpdateStatus() {} UpdateStatus(UpdateStatus other) { -@@ -105,11 +122,13 @@ public class UpdateStatusProvider { +@@ -106,11 +123,13 @@ public class UpdateStatusProvider { latestVersion = other.latestVersion; latestUnsupportedVersion = other.latestUnsupportedVersion; mIsSimulated = other.mIsSimulated; @@ -1367,7 +1367,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o private final UpdateQuery mOmahaQuery; private final UpdateSuccessMetrics mMetrics; private @Nullable UpdateStatus mStatus; -@@ -117,11 +136,6 @@ public class UpdateStatusProvider { +@@ -118,11 +137,6 @@ public class UpdateStatusProvider { /** Whether or not we've recorded the initial update status yet. */ private boolean mRecordedInitialStatus; @@ -1379,7 +1379,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o /** * Adds {@code observer} to notify about update state changes. It is safe to call this multiple * times with the same {@code observer}. This method will always notify {@code observer} of the -@@ -177,6 +191,30 @@ public class UpdateStatusProvider { +@@ -178,6 +192,30 @@ public class UpdateStatusProvider { pingObservers(); } @@ -1410,7 +1410,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o /** * Starts the intent update process, if possible * @param context An {@link Context} that will be used to fire off the update intent. -@@ -184,12 +222,11 @@ public class UpdateStatusProvider { +@@ -185,12 +223,11 @@ public class UpdateStatusProvider { * @return Whether or not the update intent was sent and had a valid handler. */ public boolean startIntentUpdate(Context context, boolean newTask) { @@ -1424,7 +1424,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mStatus.updateUrl)); if (newTask) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); -@@ -200,9 +237,15 @@ public class UpdateStatusProvider { +@@ -201,9 +238,15 @@ public class UpdateStatusProvider { return true; } @@ -1442,7 +1442,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o } @RequiresNonNull("mStatus") -@@ -211,35 +254,52 @@ public class UpdateStatusProvider { +@@ -212,35 +255,52 @@ public class UpdateStatusProvider { } private void resolveStatus() { @@ -1504,7 +1504,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o mCallback = resultReceiver; } -@@ -251,7 +311,7 @@ public class UpdateStatusProvider { +@@ -252,7 +312,7 @@ public class UpdateStatusProvider { protected UpdateStatus doInBackground() { UpdateStatus testStatus = getTestStatus(); if (testStatus != null) return testStatus; @@ -1513,7 +1513,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o } @Override -@@ -269,6 +329,8 @@ public class UpdateStatusProvider { +@@ -270,6 +330,8 @@ public class UpdateStatusProvider { status.mIsSimulated = true; status.updateState = forcedUpdateState; @@ -1522,7 +1522,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o // Push custom configurations for certain update states. switch (forcedUpdateState) { case UpdateState.UPDATE_AVAILABLE: -@@ -286,31 +348,33 @@ public class UpdateStatusProvider { +@@ -287,31 +349,33 @@ public class UpdateStatusProvider { return status; } @@ -1537,7 +1537,7 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o - boolean allowedToUpdate = - checkForSufficientStorage() - // Disable the version update check for automotive. See b/297925838. -- && !BuildInfo.getInstance().isAutomotive +- && !DeviceInfo.isAutomotive() - && PackageUtils.isPackageInstalled( - GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE); - status.updateState = @@ -1680,7 +1680,7 @@ diff --git a/chrome/browser/safety_hub/android/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 -@@ -2324,6 +2324,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2273,6 +2273,12 @@ Your Google account may have other forms of browsing history like searches and a Chrome updates are no longer supported for this version of Android @@ -1693,7 +1693,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4288,7 +4294,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4249,7 +4255,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1705,7 +1705,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4299,6 +4308,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4260,6 +4269,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1727,7 +1727,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/browser/ui/lens/lens_overlay_query_controller.cc --- a/chrome/browser/ui/lens/lens_overlay_query_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_query_controller.cc -@@ -802,6 +802,7 @@ LensOverlayQueryController::CreateEndpointFetcher( +@@ -709,6 +709,7 @@ LensOverlayQueryController::CreateEndpointFetcher( /*post_data=*/std::move(request_string), /*headers=*/request_headers, /*cors_exempt_headers=*/cors_exempt_headers, chrome::GetChannel(), @@ -1966,7 +1966,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoint_fetcher/endpoint_fetcher.h --- a/components/endpoint_fetcher/endpoint_fetcher.h +++ b/components/endpoint_fetcher/endpoint_fetcher.h -@@ -21,6 +21,8 @@ +@@ -23,6 +23,8 @@ namespace base { class TimeDelta; } // namespace base @@ -1975,7 +1975,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin namespace network { class SimpleURLLoader; -@@ -59,6 +61,7 @@ enum class HttpMethod { +@@ -60,6 +62,7 @@ enum class HttpMethod { kGet = 0, kPost = 1, kDelete = 2, @@ -1983,7 +1983,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin }; enum AuthType { -@@ -72,6 +75,8 @@ enum AuthType { +@@ -73,6 +76,8 @@ enum AuthType { struct EndpointResponse { std::string response; @@ -1992,7 +1992,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin int http_status_code{-1}; std::optional error_type; }; -@@ -359,6 +364,7 @@ class EndpointFetcher { +@@ -360,6 +365,7 @@ class EndpointFetcher { const std::vector& headers, const std::vector& cors_exempt_headers, version_info::Channel channel, @@ -2000,7 +2000,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin const RequestParams request_params); // Less preferred convenience constructor for requests requiring no -@@ -375,6 +381,14 @@ class EndpointFetcher { +@@ -376,6 +382,14 @@ class EndpointFetcher { const GURL& url, const net::NetworkTrafficAnnotationTag& annotation_tag); @@ -2015,7 +2015,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Used internally. Can be used if caller constructs their own // url_loader_factory and identity_manager. EndpointFetcher( -@@ -424,11 +438,17 @@ class EndpointFetcher { +@@ -425,11 +439,17 @@ class EndpointFetcher { void OnSanitizationResult(std::unique_ptr response, EndpointFetcherCallback endpoint_fetcher_callback, data_decoder::JsonSanitizer::Result result); @@ -2033,7 +2033,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Members set in constructor const scoped_refptr url_loader_factory_; -@@ -436,6 +456,8 @@ class EndpointFetcher { +@@ -437,6 +457,8 @@ class EndpointFetcher { // this case, callers should invoke `PerformRequest` directly). const raw_ptr identity_manager_; @@ -2042,7 +2042,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // The complete definition of the specific network request to be performed. // Contains authentication details and response handling preferences. const RequestParams request_params_; -@@ -445,6 +467,9 @@ class EndpointFetcher { +@@ -446,6 +468,9 @@ class EndpointFetcher { access_token_fetcher_; std::unique_ptr simple_url_loader_; @@ -2055,7 +2055,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin diff --git a/components/manta/base_provider.cc b/components/manta/base_provider.cc --- a/components/manta/base_provider.cc +++ b/components/manta/base_provider.cc -@@ -163,6 +163,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( +@@ -164,6 +164,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( /*cors_exempt_headers=*/std::vector(), // ChromeOS always uses the stable channel API key version_info::Channel::STABLE, @@ -2066,7 +2066,7 @@ diff --git a/components/manta/base_provider.cc b/components/manta/base_provider. diff --git a/components/omnibox/composebox/composebox_query_controller.cc b/components/omnibox/composebox/composebox_query_controller.cc --- a/components/omnibox/composebox/composebox_query_controller.cc +++ b/components/omnibox/composebox/composebox_query_controller.cc -@@ -314,7 +314,7 @@ ComposeboxQueryController::CreateEndpointFetcher( +@@ -434,7 +434,7 @@ ComposeboxQueryController::CreateEndpointFetcher( /*post_data=*/std::move(request_string), /*headers=*/request_headers, /*cors_exempt_headers=*/cors_exempt_headers, diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index a1830556..4197934f 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/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 -@@ -325,6 +325,7 @@ if (_is_default_toolchain) { +@@ -324,6 +324,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 -@@ -419,6 +419,7 @@ chrome_java_resources = [ +@@ -424,6 +424,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", -@@ -608,6 +609,7 @@ chrome_java_resources = [ +@@ -613,6 +614,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 -@@ -903,6 +903,8 @@ chrome_java_sources = [ +@@ -909,6 +909,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", @@ -180,8 +180,8 @@ new file mode 100644 diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml --- a/chrome/android/java/res/values/styles.xml +++ b/chrome/android/java/res/values/styles.xml -@@ -273,6 +273,24 @@ found in the LICENSE file. - 20sp +@@ -311,6 +311,24 @@ found in the LICENSE file. + + @@ -293,7 +293,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/Defaul diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java -@@ -41,8 +41,7 @@ import org.chromium.chrome.browser.feature_engagement.TrackerFactory; +@@ -42,8 +42,7 @@ import org.chromium.chrome.browser.feature_engagement.TrackerFactory; import org.chromium.chrome.browser.metrics.UmaUtils; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; @@ -303,7 +303,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; import org.chromium.chrome.browser.ui.signin.DialogWhenLargeContentLayout; import org.chromium.chrome.browser.ui.signin.SigninUtils; -@@ -231,7 +230,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -232,7 +231,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa /** Creates first page and sets up adapter. Should result UI being shown on the screen. */ private void createFirstPage() { BooleanSupplier showWelcomePage = () -> !FirstRunStatus.shouldSkipWelcomePage(); @@ -312,7 +312,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR mFreProgressStates.add(MobileFreProgress.WELCOME_SHOWN); mPagerAdapter = new FirstRunPagerAdapter(FirstRunActivity.this, mPages); mPager.setAdapter(mPagerAdapter); -@@ -256,7 +255,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -257,7 +256,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa // // TODO(b/245912657): explicitly sign in supervised users in {@link // FullscreenSigninMediator#handleContinueWithNative} rather than relying on SigninChecker. @@ -320,7 +320,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR assumeNonNull(mFreProperties); mFirstRunFlowSequencer.updateFirstRunProperties(mFreProperties); -@@ -272,18 +270,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -273,18 +271,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa mFreProgressStates.add(MobileFreProgress.DEFAULT_SEARCH_ENGINE_SHOWN); } @@ -339,7 +339,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR if (mPagerAdapter != null) { mPagerAdapter.notifyDataSetChanged(); } -@@ -663,11 +649,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -666,11 +652,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa public void acceptTermsOfService(boolean allowMetricsAndCrashUploading) { assert mNativeInitializationPromise.isFulfilled(); @@ -1181,7 +1181,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/ChildAcc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/FullscreenSigninAndHistorySyncActivityBase.java -@@ -24,8 +24,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; +@@ -25,8 +25,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.ui.system.StatusBarColorController; import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.components.policy.PolicyService; @@ -1189,8 +1189,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/Fullscre -import org.chromium.components.signin.AccountManagerFacadeProvider; /** Base class for First run experience and fullscreen signin and history sync promos. */ - public abstract class FullscreenSigninAndHistorySyncActivityBase extends AsyncInitializationActivity -@@ -90,9 +88,7 @@ public abstract class FullscreenSigninAndHistorySyncActivityBase extends AsyncIn + @NullMarked +@@ -92,9 +90,7 @@ public abstract class FullscreenSigninAndHistorySyncActivityBase extends AsyncIn @Override @CallSuper public void triggerLayoutInflation() { diff --git a/build/patches/add-browser-policy.patch b/build/patches/add-browser-policy.patch index 7da0a22b..0df6db0d 100644 --- a/build/patches/add-browser-policy.patch +++ b/build/patches/add-browser-policy.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../metrics/chrome_feature_list_creator.cc | 12 ++ .../search_engine_preconnector.cc | 1 + .../policy/chrome_browser_policy_connector.cc | 3 - - ...nfiguration_policy_handler_list_factory.cc | 10 +- + ...nfiguration_policy_handler_list_factory.cc | 11 +- .../account_consistency_mode_manager.cc | 7 +- ...ccount_consistency_mode_manager_factory.cc | 2 +- .../throttled_gaia_auth_fetcher.cc | 5 + @@ -39,12 +39,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html extensions/common/extension_features.cc | 1 + google_apis/gaia/gaia_auth_fetcher.cc | 1 + net/socket/ssl_client_socket_impl.cc | 3 + - 35 files changed, 326 insertions(+), 161 deletions(-) + 35 files changed, 326 insertions(+), 162 deletions(-) diff --git a/base/win/win_util.cc b/base/win/win_util.cc --- a/base/win/win_util.cc +++ b/base/win/win_util.cc -@@ -157,80 +157,18 @@ bool EnablePerMonitorV2() { +@@ -158,80 +158,18 @@ bool EnablePerMonitorV2() { } bool* GetDomainEnrollmentStateStorage() { @@ -228,7 +228,7 @@ diff --git a/chrome/browser/policy/chrome_browser_policy_connector.cc b/chrome/b diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc -@@ -2455,9 +2455,9 @@ bool AreFuturePoliciesEnabledByDefault() { +@@ -2459,9 +2459,9 @@ bool AreFuturePoliciesEnabledByDefault() { if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { return true; } @@ -241,17 +241,18 @@ diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc } } // namespace -@@ -3280,6 +3280,10 @@ std::unique_ptr BuildHandlerList( - extensions::pref_names::kExtensionUnpublishedAvailability, - /*min=*/0, /*max=*/1, /*clamp=*/false)); - handlers->AddHandler(std::make_unique()); +@@ -3290,7 +3290,10 @@ std::unique_ptr BuildHandlerList( + key::kExtensionInstallCloudPolicyChecksEnabled, + extensions::pref_names::kExtensionInstallCloudPolicyChecksEnabled, + base::Value::Type::BOOLEAN)); +- + handlers->AddHandler(std::make_unique( + key::kExtensionManifestV2Availability, + extensions::pref_names::kManifestV2Availability, /*min=*/0, /*max=*/3, + /*clamp=*/false)); - #endif // BUILDFLAG(ENABLE_EXTENSIONS) + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc --- a/chrome/browser/signin/account_consistency_mode_manager.cc +++ b/chrome/browser/signin/account_consistency_mode_manager.cc @@ -337,7 +338,7 @@ diff --git a/chrome/browser/signin/bound_session_credentials/throttled_gaia_auth diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/signin/chrome_signin_client.cc --- a/chrome/browser/signin/chrome_signin_client.cc +++ b/chrome/browser/signin/chrome_signin_client.cc -@@ -264,7 +264,9 @@ void ChromeSigninClient::DoFinalInit() { +@@ -265,7 +265,9 @@ void ChromeSigninClient::DoFinalInit() { bool ChromeSigninClient::ProfileAllowsSigninCookies(Profile* profile) { scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); @@ -348,7 +349,7 @@ diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/sign } PrefService* ChromeSigninClient::GetPrefs() { -@@ -387,6 +389,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() { +@@ -386,6 +388,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() { } void ChromeSigninClient::DelayNetworkCall(base::OnceClosure callback) { @@ -370,7 +371,7 @@ diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/sig "Signin.DiceTokenBindingOutcome"; // Used for UMA. Do not reorder, append new values at the end. -@@ -409,8 +409,10 @@ void DiceResponseHandler::ProcessDiceSignoutHeader( +@@ -387,8 +387,10 @@ void DiceResponseHandler::ProcessDiceSignoutHeader( // - If there is a policy restriction on removing the primary account. bool invalidate_only_primary_account = identity_manager_->HasPrimaryAccount(signin::ConsentLevel::kSync) || @@ -378,9 +379,9 @@ diff --git a/chrome/browser/signin/dice_response_handler.cc b/chrome/browser/sig !signin::IsImplicitBrowserSigninOrExplicitDisabled( identity_manager_, signin_client_->GetPrefs()) || +#endif - !signin_client_->IsClearPrimaryAccountAllowed( - /*has_sync_account=*/false); + !signin_client_->IsClearPrimaryAccountAllowed(); + CoreAccountId primary_account = diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browser/ui/webui/policy/policy_ui_handler.cc --- a/chrome/browser/ui/webui/policy/policy_ui_handler.cc +++ b/chrome/browser/ui/webui/policy/policy_ui_handler.cc @@ -600,7 +601,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm } // namespace BASE_FEATURE(kCommerceAllowLocalImages, -@@ -346,16 +296,15 @@ const base::FeatureParam kRevertIconOnFailure{ +@@ -344,16 +294,15 @@ const base::FeatureParam kRevertIconOnFailure{ &kShoppingList, kRevertIconOnFailureParam, false}; bool IsPartnerMerchant(const GURL& url) { @@ -620,7 +621,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm } bool IsCartDiscountFeatureEnabled() { -@@ -407,6 +356,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature, +@@ -405,6 +354,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature, bool IsRegionLockedFeatureEnabled(const base::Feature& feature, const std::string& country_code, const std::string& locale) { @@ -628,7 +629,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm auto* feature_list = base::FeatureList::GetInstance(); // If the feature has a server-side config, this check will ensure that -@@ -439,6 +389,7 @@ base::TimeDelta GetDiscountFetchDelay() { +@@ -437,6 +387,7 @@ base::TimeDelta GetDiscountFetchDelay() { } bool IsNoDiscountMerchant(const GURL& url) { @@ -636,7 +637,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm auto* pattern_from_component = commerce_heuristics::CommerceHeuristicsData::GetInstance() .GetNoDiscountMerchantPattern(); -@@ -450,4 +401,6 @@ bool IsNoDiscountMerchant(const GURL& url) { +@@ -448,4 +399,6 @@ bool IsNoDiscountMerchant(const GURL& url) { return RE2::PartialMatch(url.host_piece(), *pattern_from_component); } #endif @@ -659,7 +660,7 @@ diff --git a/components/policy/core/browser/browser_policy_connector.cc b/compon diff --git a/components/policy/core/common/command_line_policy_provider.cc b/components/policy/core/common/command_line_policy_provider.cc --- a/components/policy/core/common/command_line_policy_provider.cc +++ b/components/policy/core/common/command_line_policy_provider.cc -@@ -23,6 +23,9 @@ std::unique_ptr +@@ -21,6 +21,9 @@ std::unique_ptr CommandLinePolicyProvider::CreateIfAllowed( const base::CommandLine& command_line, version_info::Channel channel) { @@ -978,7 +979,7 @@ diff --git a/components/policy/resources/webui/policy_row.ts b/components/policy diff --git a/components/policy_strings.grdp b/components/policy_strings.grdp --- a/components/policy_strings.grdp +++ b/components/policy_strings.grdp -@@ -657,8 +657,8 @@ Additional details: +@@ -672,8 +672,8 @@ Additional details: Default @@ -1036,14 +1037,14 @@ diff --git a/components/signin/internal/identity_manager/gaia_cookie_manager_ser diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc --- a/extensions/common/extension_features.cc +++ b/extensions/common/extension_features.cc -@@ -112,6 +112,7 @@ BASE_FEATURE(kExtensionProtocolHandlers, - BASE_FEATURE(kExtensionsManifestV3Only, - "ExtensionsManifestV3Only", +@@ -42,6 +42,7 @@ BASE_FEATURE(ApiEnterpriseReportingPrivateOnDataMaskingRulesTriggered, + + BASE_FEATURE(AllowWithholdingExtensionPermissionsOnInstall, base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kExtensionsManifestV3Only); - BASE_FEATURE(kExtensionsMenuAccessControl, - "ExtensionsMenuAccessControl", + BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs, + "EMF_NO_EXTENSION_ID_FOR_EXTENSION_SOURCE", diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc --- a/google_apis/gaia/gaia_auth_fetcher.cc +++ b/google_apis/gaia/gaia_auth_fetcher.cc @@ -1058,7 +1059,7 @@ diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_ 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 -@@ -800,6 +800,7 @@ int SSLClientSocketImpl::Init() { +@@ -788,6 +788,7 @@ int SSLClientSocketImpl::Init() { return ERR_UNEXPECTED; } @@ -1066,7 +1067,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket // Disable SHA-1 server signatures. // TODO(crbug.com/boringssl/699): Once the default is flipped in BoringSSL, we // no longer need to override it. -@@ -1215,6 +1216,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1202,6 +1203,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { cert_verifier_request_.reset(); diff --git a/build/patches/allow-the-download-of-clang-for-windows-crossbuild.patch b/build/patches/allow-the-download-of-clang-for-windows-crossbuild.patch index e08d5df5..b83992f4 100644 --- a/build/patches/allow-the-download-of-clang-for-windows-crossbuild.patch +++ b/build/patches/allow-the-download-of-clang-for-windows-crossbuild.patch @@ -23,16 +23,16 @@ diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py """ import sys -@@ -235,7 +237,7 @@ def DownloadAndUnpackClangWinRuntime(output_dir): - sys.exit(1) +@@ -252,7 +254,7 @@ def DownloadAndUnpackClangWinRuntime(output_dir): --def UpdatePackage(package_name, host_os, dir=LLVM_BUILD_DIR): -+def UpdatePackage(package_name, host_os, no_clear, dir=LLVM_BUILD_DIR): + def UpdatePackage(package_name, +- host_os, ++ host_os, no_clear, + preserve_gcs_signature, + dir=LLVM_BUILD_DIR): stamp_file = None - package_file = None - -@@ -267,6 +269,8 @@ def UpdatePackage(package_name, host_os, dir=LLVM_BUILD_DIR): +@@ -286,6 +288,8 @@ def UpdatePackage(package_name, target_os = env.get('target_os', target_os) except: pass @@ -41,7 +41,7 @@ diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py if os.path.exists(OLD_STAMP_FILE): # Delete the old stamp file so it doesn't look like an old version of clang -@@ -284,7 +288,7 @@ def UpdatePackage(package_name, host_os, dir=LLVM_BUILD_DIR): +@@ -303,7 +307,7 @@ def UpdatePackage(package_name, # Updating the main clang package nukes the output dir. Any other packages # need to be updated *after* the clang package. @@ -50,22 +50,22 @@ diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py RmTree(dir) DownloadAndUnpackPackage(package_file, dir, host_os) -@@ -332,6 +336,8 @@ def main(): +@@ -351,6 +355,8 @@ def main(): parser.add_argument('--print-clang-version', action='store_true', help=('Print current clang release version (e.g. 9.0.0) ' 'and exit.')) + parser.add_argument('--no-clear', + help='Do not remove old file before extracting.') - args = parser.parse_args() - - # TODO(crbug.com/432036065): Remove in next Clang roll. -@@ -372,7 +378,7 @@ def main(): + parser.add_argument('--preserve-gcs-signature', + action='store_true', + help='By default, this script removes gcs hash files ' +@@ -398,7 +404,7 @@ def main(): print('--llvm-force-head-revision can only be used for --print-revision') return 1 -- return UpdatePackage(args.package, args.host_os, output_dir) -+ return UpdatePackage(args.package, args.host_os, args.no_clear, output_dir) +- return UpdatePackage(args.package, args.host_os, args.preserve_gcs_signature, ++ return UpdatePackage(args.package, args.host_os, args.no_clear, args.preserve_gcs_signature, + output_dir) - if __name__ == '__main__': -- diff --git a/build/patches/autofill-miscellaneous.patch b/build/patches/autofill-miscellaneous.patch index c5c48a2f..f5e9ee3f 100644 --- a/build/patches/autofill-miscellaneous.patch +++ b/build/patches/autofill-miscellaneous.patch @@ -30,7 +30,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/AutofillOptionsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/AutofillOptionsLauncher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/AutofillOptionsLauncher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AutofillOptionsLauncher.java -@@ -41,6 +41,7 @@ public final class AutofillOptionsLauncher extends Activity { +@@ -43,6 +43,7 @@ public final class AutofillOptionsLauncher extends Activity { } private static boolean isDeepLinkFeatureEnabled() { @@ -41,7 +41,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AutofillOptions diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc -@@ -1150,10 +1150,6 @@ password_manager::OtpManager* ChromePasswordManagerClient::GetOtpManager() { +@@ -1111,10 +1111,6 @@ password_manager::OtpManager* ChromePasswordManagerClient::GetOtpManager() { autofill::AutofillCrowdsourcingManager* ChromePasswordManagerClient::GetAutofillCrowdsourcingManager() { @@ -55,7 +55,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b 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 -@@ -395,15 +395,6 @@ ChromeAutofillClient::GetURLLoaderFactory() { +@@ -394,15 +394,6 @@ ChromeAutofillClient::GetURLLoaderFactory() { ->GetURLLoaderFactoryForBrowserProcess(); } @@ -80,12 +80,12 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browse scoped_refptr GetURLLoaderFactory() final; - AutofillCrowdsourcingManager& GetCrowdsourcingManager() final; VotesUploader& GetVotesUploader() final; - AutofillOptimizationGuide* GetAutofillOptimizationGuide() const final; - FieldClassificationModelHandler* GetAutofillFieldClassificationModelHandler() + AutofillOptimizationGuideDecider* GetAutofillOptimizationGuideDecider() + const final; diff --git a/components/android_autofill/browser/android_autofill_client.cc b/components/android_autofill/browser/android_autofill_client.cc --- a/components/android_autofill/browser/android_autofill_client.cc +++ b/components/android_autofill/browser/android_autofill_client.cc -@@ -79,17 +79,6 @@ AndroidAutofillClient::GetURLLoaderFactory() { +@@ -80,17 +80,6 @@ AndroidAutofillClient::GetURLLoaderFactory() { ->GetURLLoaderFactoryForBrowserProcess(); } @@ -232,7 +232,7 @@ diff --git a/components/autofill/core/browser/crowdsourcing/votes_uploader.cc b/ diff --git a/components/autofill/core/browser/foundations/autofill_client.h b/components/autofill/core/browser/foundations/autofill_client.h --- a/components/autofill/core/browser/foundations/autofill_client.h +++ b/components/autofill/core/browser/foundations/autofill_client.h -@@ -280,10 +280,6 @@ class AutofillClient { +@@ -287,10 +287,6 @@ class AutofillClient { // Returns the VotesUploader. virtual VotesUploader& GetVotesUploader() = 0; @@ -246,7 +246,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_client.h b/co diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/components/autofill/core/browser/foundations/autofill_manager.cc --- a/components/autofill/core/browser/foundations/autofill_manager.cc +++ b/components/autofill/core/browser/foundations/autofill_manager.cc -@@ -311,17 +311,6 @@ void AutofillManager::OnFormsParsed(const std::vector& forms) { +@@ -343,17 +343,6 @@ void AutofillManager::OnFormsParsed(const std::vector& forms) { if (base::FeatureList::IsEnabled(features::test::kShowDomNodeIDs)) { driver().ExposeDomNodeIDs(); } @@ -267,7 +267,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ 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 -@@ -1089,6 +1089,8 @@ BASE_FEATURE(kAutofillUploadThrottling, +@@ -1082,6 +1082,8 @@ BASE_FEATURE(kAutofillUploadThrottling, "AutofillUploadThrottling", base::FEATURE_ENABLED_BY_DEFAULT); @@ -301,7 +301,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( kAutofillPaymentCardBenefits, true, -@@ -85,7 +85,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -91,7 +91,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { #endif // Deprecated prefs registered for migration. diff --git a/build/patches/bromite-build-utils.patch b/build/patches/bromite-build-utils.patch index 584e8357..9a8f1960 100644 --- a/build/patches/bromite-build-utils.patch +++ b/build/patches/bromite-build-utils.patch @@ -50,7 +50,7 @@ diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enu self._lines = lines self._path = path self._enum_definitions = [] -@@ -253,6 +254,7 @@ class HeaderParser: +@@ -257,6 +258,7 @@ class HeaderParser: self._generator_directives = DirectiveSet() self._multi_line_generator_directive = None self._current_enum_entry = '' @@ -58,7 +58,7 @@ diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enu def _ShouldIgnoreLine(self): return self._in_preprocessor_block and not all(self._in_buildflag_android) -@@ -295,6 +297,24 @@ class HeaderParser: +@@ -303,6 +305,24 @@ class HeaderParser: raise Exception('Multi-line comments in enums are not supported in ' + self._path) @@ -83,7 +83,7 @@ diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enu enum_comment = HeaderParser.single_line_comment_re.match(line) if enum_comment: comment = enum_comment.groups()[0] -@@ -395,9 +415,9 @@ class HeaderParser: +@@ -404,9 +424,9 @@ class HeaderParser: self._ParseSingleLineEnum(single_line_enum.group('enum_entries')) @@ -95,7 +95,7 @@ diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enu if not enum_definitions: raise Exception('No enums found in %s\n' 'Did you forget prefixing enums with ' -@@ -410,9 +430,9 @@ def DoGenerate(source_paths): +@@ -419,9 +439,9 @@ def DoGenerate(source_paths): yield output_path, output @@ -107,7 +107,7 @@ diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enu def GenerateOutput(source_path, enum_definition): -@@ -498,11 +518,16 @@ def DoMain(argv): +@@ -507,11 +527,16 @@ def DoMain(argv): nargs='+', help='Path to at least one input file.') @@ -424,7 +424,7 @@ new file mode 100644 diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn -@@ -870,3 +870,5 @@ if (is_component_build) { +@@ -835,3 +835,5 @@ if (is_component_build) { set_defaults("component") { configs = default_component_configs } diff --git a/build/patches/disable-WebView-variations-support.patch b/build/patches/disable-WebView-variations-support.patch index de75b81b..a8d02ad3 100644 --- a/build/patches/disable-WebView-variations-support.patch +++ b/build/patches/disable-WebView-variations-support.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java -@@ -430,13 +430,6 @@ public class WebViewChromiumAwInit { +@@ -443,13 +443,6 @@ public class WebViewChromiumAwInit { } AwBrowserProcess.configureChildProcessLauncher(); @@ -29,7 +29,7 @@ diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewC diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java -@@ -561,10 +561,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { +@@ -582,10 +582,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { // This must happen after pref value has been read and SafeMode setup has completed. setupStartupTaskExperiments(androidXConfig); @@ -37,7 +37,7 @@ diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewC - mAwInit.startVariationsInit(); - } - - mShouldDisableThreadChecking = shouldDisableThreadChecking(ctx); - FlagOverrideHelper helper = + new FlagOverrideHelper(ProductionSupportedFlagList.sFlagList); + helper.applyFlagOverrides( -- diff --git a/build/patches/disable-appending-variations-header.patch b/build/patches/disable-appending-variations-header.patch index 606684e6..0395130c 100644 --- a/build/patches/disable-appending-variations-header.patch +++ b/build/patches/disable-appending-variations-header.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/variations/net/variations_http_headers.cc b/components/variations/net/variations_http_headers.cc --- a/components/variations/net/variations_http_headers.cc +++ b/components/variations/net/variations_http_headers.cc -@@ -116,10 +116,7 @@ URLValidationResult GetUrlValidationResult(const GURL& url) { +@@ -120,10 +120,7 @@ URLValidationResult GetUrlValidationResult(const GURL& url) { // Also, logs the result of validating |url| in histograms, one of which ends in // |suffix|. bool ShouldAppendVariationsHeader(const GURL& url, const std::string& suffix) { diff --git a/build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch b/build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch index dda78a4f..7875b39a 100644 --- a/build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch +++ b/build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -150,12 +150,12 @@ const size_t kMaxHostLength = 4096; +@@ -149,12 +149,12 @@ const size_t kMaxHostLength = 4096; // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are // cached. diff --git a/build/patches/do-not-block-build-incompatible-profiles.patch b/build/patches/do-not-block-build-incompatible-profiles.patch index e33e6f89..978c5b79 100644 --- a/build/patches/do-not-block-build-incompatible-profiles.patch +++ b/build/patches/do-not-block-build-incompatible-profiles.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/v8/BUILD.gn b/v8/BUILD.gn --- a/v8/BUILD.gn +++ b/v8/BUILD.gn -@@ -2568,7 +2568,7 @@ template("run_mksnapshot") { +@@ -2589,7 +2589,7 @@ template("run_mksnapshot") { # Replace this with --warn-about-builtin-profile-data to see the full # list of builtins with incompatible profiles. diff --git a/build/patches/enable-ftrivial-auto-var-init-zero.patch b/build/patches/enable-ftrivial-auto-var-init-zero.patch index 260c6541..a61e766b 100644 --- a/build/patches/enable-ftrivial-auto-var-init-zero.patch +++ b/build/patches/enable-ftrivial-auto-var-init-zero.patch @@ -11,7 +11,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 -@@ -456,6 +456,10 @@ config("compiler") { +@@ -451,6 +451,10 @@ config("compiler") { cflags += [ "-fwrapv" ] } diff --git a/build/patches/eyeo-133.0.6943.49-android_api.patch b/build/patches/eyeo-133.0.6943.49-android_api.patch index afece6fc..5b231a2a 100644 --- a/build/patches/eyeo-133.0.6943.49-android_api.patch +++ b/build/patches/eyeo-133.0.6943.49-android_api.patch @@ -97,15 +97,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn import("//build/config/android/config.gni") import("//build/config/cronet/config.gni") -@@ -554,6 +557,7 @@ if (_is_default_toolchain) { +@@ -553,6 +556,7 @@ if (_is_default_toolchain) { "//chrome/browser/xsurface:java", "//chrome/browser/xsurface_provider:dependency_provider_impl_java", "//chrome/browser/xsurface_provider:java", + "//components/adblock/android:adblock_controller_java", + "//components/android_autofill/browser:features_java", "//components/android_autofill/browser:java", "//components/autofill/android:autofill_features_java", - "//components/autofill/android:autofill_java", -@@ -1394,6 +1398,7 @@ if (_is_default_toolchain) { +@@ -1395,6 +1399,7 @@ if (_is_default_toolchain) { "javatests:chrome_test_java_org.chromium.chrome.browser.toolbar", "javatests:chrome_test_java_org.chromium.chrome.browser.webapps", "javatests:chrome_test_java_various", @@ -113,7 +113,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/android/browserservices/verification:javatests", "//chrome/browser/android/httpclient:javatests", "//chrome/browser/android/metrics:ukm_javatests", -@@ -1464,6 +1469,7 @@ if (_is_default_toolchain) { +@@ -1465,6 +1470,7 @@ if (_is_default_toolchain) { "//chrome/test/data/translate/", "//chrome/test/data/webauthn/", "//chrome/test/media_router/resources/", @@ -121,7 +121,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/test/data/autofill/", "//components/test/data/payments/", "//content/test/data/browsing_data/", -@@ -3256,6 +3262,12 @@ if (_is_default_toolchain) { +@@ -3261,6 +3267,12 @@ if (_is_default_toolchain) { sources += [ "java/src/org/chromium/chrome/browser/media/MediaCapturePickerDialogBridge.java" ] } @@ -134,7 +134,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn # Used for testing only, should not be shipped to end users. if (enable_offline_pages_harness) { sources += [ "java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java" ] -@@ -3347,6 +3359,7 @@ if (_is_default_toolchain) { +@@ -3352,6 +3364,7 @@ if (_is_default_toolchain) { "//chrome/browser/ui/plus_addresses/android:jni_headers", "//chrome/browser/util:jni_headers", "//chrome/browser/webauthn/android:jni_headers", @@ -155,7 +155,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java import("//content/public/common/features.gni") -@@ -55,6 +58,7 @@ chrome_java_sources = [ +@@ -56,6 +59,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/accessibility/AccessibilityTabHelper.java", "java/src/org/chromium/chrome/browser/accessibility/PageZoomIphController.java", "java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java", @@ -207,7 +207,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3412,6 +3412,10 @@ static_library("browser") { +@@ -3399,6 +3399,10 @@ static_library("browser") { ] deps += [ "//chrome/browser/password_entry_edit/android" ] @@ -267,7 +267,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 -@@ -996,6 +996,12 @@ static_library("ui") { +@@ -1012,6 +1012,12 @@ static_library("ui") { deps += [ "//components/themes:ntp_background_proto", ] diff --git a/build/patches/eyeo-133.0.6943.49-android_settings.patch b/build/patches/eyeo-133.0.6943.49-android_settings.patch index 9e29170d..0a6fc660 100644 --- a/build/patches/eyeo-133.0.6943.49-android_settings.patch +++ b/build/patches/eyeo-133.0.6943.49-android_settings.patch @@ -8,7 +8,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API --- chrome/android/BUILD.gn | 8 + .../android/java/res/xml/main_preferences.xml | 8 + - .../java/res/xml/main_preferences_legacy.xml | 8 + chrome/browser/adblock/android/BUILD.gn | 85 ++++++ chrome/browser/adblock/android/README.md | 13 + .../adblock/android/adblock_strings.grd | 244 ++++++++++++++++++ @@ -122,7 +121,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API .../translations/adblock_strings_zh-HK.xtb | 4 + .../translations/adblock_strings_zh-TW.xtb | 13 + .../translations/adblock_strings_zu.xtb | 4 + - 116 files changed, 2357 insertions(+) + 115 files changed, 2349 insertions(+) create mode 100644 chrome/browser/adblock/android/README.md create mode 100644 chrome/browser/adblock/android/adblock_strings.grd create mode 100644 chrome/browser/adblock/android/java/res/drawable-hdpi/fragment_adblock_custom_item_add.png @@ -239,7 +238,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -290,6 +290,10 @@ if (_is_default_toolchain) { +@@ -289,6 +289,10 @@ if (_is_default_toolchain) { deps += [ "//chrome/browser:screen_capture_java_resources" ] } @@ -250,7 +249,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn if (enable_extensions_core) { deps += [ "//chrome/browser/ui/android/extensions:java_resources" ] } -@@ -808,6 +812,10 @@ if (_is_default_toolchain) { +@@ -809,6 +813,10 @@ if (_is_default_toolchain) { "//chrome/browser/password_entry_edit:public_java", ] @@ -273,8 +272,8 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j +Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. --> - + @@ -282,31 +281,6 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j + android:fragment="org.chromium.chrome.browser.adblock.settings.AdblockSettingsFragment" + android:key="adblock" + android:order="17" -+ android:title="@string/adblock_settings_title" /> - - - - - android:key="ui_theme" - android:order="18" - android:title="@string/theme_settings" /> -+ -@@ -1526,7 +1530,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( +@@ -1583,7 +1587,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( ? head->bypass_redirect_checks : bypass_redirect_checks_; @@ -50266,7 +50266,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #include "content/browser/renderer_host/render_frame_host_impl.h" -@@ -3607,6 +3611,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( +@@ -3615,6 +3619,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( std::move(callback)); } @@ -50293,7 +50293,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/br #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ #define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ -@@ -498,6 +502,10 @@ class CONTENT_EXPORT RenderFrameHostImpl +@@ -504,6 +508,10 @@ class CONTENT_EXPORT RenderFrameHostImpl const std::u16string& method_name, base::Value::List arguments, JavaScriptResultCallback callback) override; @@ -50318,7 +50318,7 @@ diff --git a/content/public/browser/render_frame_host.h b/content/public/browser #ifndef CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_ #define CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_ -@@ -556,6 +560,9 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener { +@@ -559,6 +563,9 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener { virtual void AddMessageToConsole(blink::mojom::ConsoleMessageLevel level, const std::string& message) = 0; @@ -50412,7 +50412,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn import("//build/config/cast.gni") import("//build/config/chromeos/ui_mode.gni") -@@ -167,6 +170,10 @@ inspector_protocol_generate("protocol_sources") { +@@ -171,6 +174,10 @@ inspector_protocol_generate("protocol_sources") { static_library("content_shell_lib") { testonly = true sources = [ @@ -50423,7 +50423,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "browser/protocol/browser_handler.cc", "browser/protocol/browser_handler.h", "browser/protocol/domain_handler.h", -@@ -236,6 +243,7 @@ static_library("content_shell_lib") { +@@ -240,6 +247,7 @@ static_library("content_shell_lib") { "browser/shell_platform_delegate_android.cc", "browser/shell_web_contents_view_delegate_android.cc", ] @@ -50431,7 +50431,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn } if (is_mac) { -@@ -317,6 +325,8 @@ static_library("content_shell_lib") { +@@ -321,6 +329,8 @@ static_library("content_shell_lib") { "//base", "//base:base_static", "//cc/base", @@ -50440,7 +50440,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "//components/cdm/renderer", "//components/custom_handlers", "//components/custom_handlers:test_support", -@@ -337,6 +347,7 @@ static_library("content_shell_lib") { +@@ -341,6 +351,7 @@ static_library("content_shell_lib") { "//components/prefs", "//components/services/storage/test_api", "//components/url_formatter", @@ -50448,7 +50448,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "//components/variations", "//components/variations/service", "//components/web_cache/renderer", -@@ -428,6 +439,7 @@ static_library("content_shell_lib") { +@@ -432,6 +443,7 @@ static_library("content_shell_lib") { "//mojo/public/java/system:test_support", "//ui/android", ] @@ -50701,7 +50701,7 @@ new file mode 100644 diff --git a/content/shell/browser/shell.cc b/content/shell/browser/shell.cc --- a/content/shell/browser/shell.cc +++ b/content/shell/browser/shell.cc -@@ -25,6 +25,8 @@ +@@ -21,6 +21,8 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" @@ -50710,7 +50710,7 @@ diff --git a/content/shell/browser/shell.cc b/content/shell/browser/shell.cc #include "components/custom_handlers/protocol_handler.h" #include "components/custom_handlers/protocol_handler_registry.h" #include "components/custom_handlers/simple_protocol_handler_registry_factory.h" -@@ -44,6 +46,7 @@ +@@ -41,6 +43,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/common/content_switches.h" #include "content/shell/app/resource.h" @@ -50718,7 +50718,7 @@ diff --git a/content/shell/browser/shell.cc b/content/shell/browser/shell.cc #include "content/shell/browser/shell_content_browser_client.h" #include "content/shell/browser/shell_devtools_frontend.h" #include "content/shell/browser/shell_javascript_dialog_manager.h" -@@ -89,6 +92,12 @@ Shell::Shell(std::unique_ptr web_contents, +@@ -87,6 +90,12 @@ Shell::Shell(std::unique_ptr web_contents, windows_.push_back(this); @@ -50894,7 +50894,7 @@ diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blin module blink.mojom; -@@ -1010,6 +1014,10 @@ interface LocalFrame { +@@ -1016,6 +1020,10 @@ interface LocalFrame { // the given point in the view coordinate space. PluginActionAt(gfx.mojom.Point location, blink.mojom.PluginActionType action); @@ -51035,7 +51035,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc b #include "third_party/blink/renderer/core/frame/local_frame_mojo_handler.h" @@ -350,6 +354,14 @@ LocalFrameMojoHandler::LocalFrameMojoHandler(blink::LocalFrame& frame) - WrapWeakPersistent(this))); + WrapWeakPersistent(this))); } +void LocalFrameMojoHandler::InsertAbpElemhideStylesheet( @@ -51065,7 +51065,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h b/ #define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_LOCAL_FRAME_MOJO_HANDLER_H_ @@ -113,6 +117,7 @@ class LocalFrameMojoHandler void AddMessageToConsole(mojom::blink::ConsoleMessageLevel level, - const WTF::String& message, + const String& message, bool discard_duplicates) final; + void InsertAbpElemhideStylesheet(const WTF::String& stylesheet) final; void SwapInImmediately() final; @@ -51074,7 +51074,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h b/ diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc --- a/third_party/blink/renderer/core/html/html_element.cc +++ b/third_party/blink/renderer/core/html/html_element.cc -@@ -2618,7 +2618,13 @@ void HTMLElement::setSpellcheck(bool enable) { +@@ -2672,7 +2672,13 @@ void HTMLElement::setSpellcheck(bool enable) { } void HTMLElement::click() { @@ -51753,7 +51753,7 @@ diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ # This file is used to assign starting resource ids for resources and strings # used by Chromium. This is done to ensure that resource ids are unique # across all the grd files. If you are adding a new grd file, please add -@@ -1192,6 +1196,14 @@ +@@ -1212,6 +1216,14 @@ "components/user_scripts/browser/resources/browser_resources.grd": { "includes": [7620], }, @@ -51791,7 +51791,7 @@ diff --git a/tools/metrics/histograms/metadata/extensions/enums.xml b/tools/metr -@@ -3221,6 +3225,8 @@ Called by update_extension_permission.py.--> +@@ -3223,6 +3227,8 @@ Called by update_extension_permission.py.--> diff --git a/build/patches/eyeo-133.0.6943.49-chrome_integration.patch b/build/patches/eyeo-133.0.6943.49-chrome_integration.patch index 30a5cfdd..a4c95ad9 100644 --- a/build/patches/eyeo-133.0.6943.49-chrome_integration.patch +++ b/build/patches/eyeo-133.0.6943.49-chrome_integration.patch @@ -113,7 +113,7 @@ diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegat #include "chrome/browser/buildflags.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" -@@ -1578,7 +1583,7 @@ content::ContentClient* ChromeMainDelegate::CreateContentClient() { +@@ -1595,7 +1600,7 @@ content::ContentClient* ChromeMainDelegate::CreateContentClient() { content::ContentBrowserClient* ChromeMainDelegate::CreateContentBrowserClient() { chrome_content_browser_client_ = @@ -136,15 +136,15 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn import("//base/allocator/allocator.gni") import("//build/buildflag_header.gni") @@ -204,6 +207,8 @@ static_library("browser") { - "accessibility/page_colors_factory.h", + "accessibility/page_colors_controller_factory.h", "accessibility/prefers_default_scrollbar_styles_prefs.cc", "accessibility/prefers_default_scrollbar_styles_prefs.h", + "adblock/adblock_chrome_content_browser_client.cc", + "adblock/adblock_chrome_content_browser_client.h", "after_startup_task_utils.cc", "after_startup_task_utils.h", - "app_mode/app_mode_utils.cc", -@@ -2139,6 +2144,7 @@ static_library("browser") { + "autocomplete/autocomplete_classifier_factory.cc", +@@ -2119,6 +2124,7 @@ static_library("browser") { "//chrome/common/notifications", "//chrome/installer/util:with_no_strings", "//chrome/services/speech/buildflags", @@ -152,7 +152,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/application_locale_storage", "//components/assist_ranker", "//components/autofill/content/browser", -@@ -8558,6 +8564,7 @@ static_library("browser_public_dependencies") { +@@ -8611,6 +8617,7 @@ static_library("browser_public_dependencies") { "//chrome/services/file_util/public/mojom", "//components/account_id", "//components/autofill/content/browser", @@ -3433,7 +3433,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows #include "chrome/browser/chrome_browser_main.h" -@@ -77,6 +81,7 @@ +@@ -78,6 +82,7 @@ #include "chrome/grit/branded_strings.h" #include "chrome/grit/generated_resources.h" #include "chrome/installer/util/google_update_settings.h" @@ -3441,7 +3441,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows #include "components/color/color_mixers.h" #include "components/device_event_log/device_event_log.h" #include "components/embedder_support/origin_trials/component_updater_utils.h" -@@ -1555,6 +1560,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1548,6 +1553,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // called inside PostProfileInit. content::WebUIControllerFactory::RegisterFactory( ChromeWebUIControllerFactory::GetInstance()); @@ -3491,7 +3491,7 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUIL import("//build/config/chromebox_for_meetings/buildflags.gni") import("//build/config/chromeos/ui_mode.gni") -@@ -496,6 +499,7 @@ source_set("extensions") { +@@ -501,6 +504,7 @@ source_set("extensions") { "window_controller_list.h", "window_controller_list_observer.h", ] @@ -3499,7 +3499,7 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUIL configs += [ "//build/config:precompiled_headers", "//build/config/compiler:wexit_time_destructors", -@@ -824,6 +828,7 @@ source_set("extensions") { +@@ -828,6 +832,7 @@ source_set("extensions") { ] } @@ -3521,7 +3521,7 @@ diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/er #include #include #include -@@ -38,6 +42,7 @@ +@@ -39,6 +43,7 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" @@ -3529,8 +3529,8 @@ diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/er #include "components/browsing_data/content/browsing_data_helper.h" #include "components/embedder_support/switches.h" #include "components/error_page/content/browser/net_error_auto_reloader.h" -@@ -639,6 +644,9 @@ class ErrorPageAutoReloadTest : public InProcessBrowserTest { - public: +@@ -644,6 +649,9 @@ class ErrorPageAutoReloadTest : public InProcessBrowserTest { + void SetUpCommandLine(base::CommandLine* command_line) override { command_line->AppendSwitch(embedder_support::kEnableAutoReload); + // The URLLoaderInterceptor is not resilient to the browser making @@ -3538,7 +3538,7 @@ diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/er + command_line->AppendSwitch(adblock::switches::kDisableAdblock); } - void TearDownOnMainThread() override { url_loader_interceptor_.reset(); } + void NavigateToURLAndWaitForTitle(const GURL& url, diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc @@ -3553,7 +3553,7 @@ diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load #include "components/page_load_metrics/browser/observers/ad_metrics/ads_page_load_metrics_observer.h" -@@ -24,6 +28,7 @@ +@@ -25,6 +29,7 @@ #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/interactive_test_utils.h" #include "chrome/test/base/ui_test_utils.h" @@ -3561,7 +3561,7 @@ diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load #include "components/heavy_ad_intervention/heavy_ad_features.h" #include "components/page_load_metrics/browser/ads_page_load_metrics_test_waiter.h" #include "components/page_load_metrics/browser/features.h" -@@ -1521,7 +1526,7 @@ class AdsPageLoadMetricsObserverResourceBrowserTest +@@ -1469,7 +1474,7 @@ class AdsPageLoadMetricsObserverResourceBrowserTest {heavy_ad_intervention::features::kHeavyAdIntervention, {}}, {heavy_ad_intervention::features::kHeavyAdPrivacyMitigations, {{"host-threshold", "3"}}}}, @@ -3613,10 +3613,10 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse #include "components/component_updater/pref_names.h" #include "components/policy/core/browser/configuration_policy_pref_store.h" #include "components/pref_registry/pref_registry_syncable.h" -@@ -189,6 +194,12 @@ const auto kTrackedPrefs = std::to_array({ - // Allows it to trigger a write to the protected pref store. - {36, user_prefs::kScheduleToFlushToDisk, EnforcementLevel::ENFORCE_ON_LOAD, - PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, +@@ -194,6 +199,12 @@ const auto kTrackedPrefs = std::to_array({ + EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, + ValueType::IMPERSONAL}, + #endif + {100, adblock::common::prefs::kSubscriptionSignatures, + EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::SPLIT, + ValueType::IMPERSONAL}, @@ -3640,7 +3640,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" -@@ -250,6 +254,15 @@ +@@ -249,6 +253,15 @@ #include "chrome/browser/webid/federated_identity_permission_context_factory.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_features.h" @@ -3656,7 +3656,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "components/autofill/content/browser/autofill_log_router_factory.h" #include "components/breadcrumbs/core/breadcrumbs_status.h" #include "components/captive_portal/core/buildflags.h" -@@ -934,6 +947,15 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -932,6 +945,15 @@ void ChromeBrowserMainExtraPartsProfiles:: // Makes manual testing possible. FakeSmartCardDeviceServiceFactory::GetInstance(); #endif @@ -3675,7 +3675,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/profiles/profile_keyed_service_browsertest.cc b/chrome/browser/profiles/profile_keyed_service_browsertest.cc --- a/chrome/browser/profiles/profile_keyed_service_browsertest.cc +++ b/chrome/browser/profiles/profile_keyed_service_browsertest.cc -@@ -283,6 +283,17 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, +@@ -284,6 +284,17 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, "PermissionsUpdaterShutdownFactory", "PluginInfoHostImpl", "TurnSyncOnHelperShutdownNotifier", @@ -3693,7 +3693,7 @@ diff --git a/chrome/browser/profiles/profile_keyed_service_browsertest.cc b/chro }; // clang-format on -@@ -863,6 +874,13 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceGuestBrowserTest, +@@ -869,6 +880,13 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceGuestBrowserTest, "ZeroSuggestCacheServiceFactory", #endif // !BUILDFLAG(IS_CHROMEOS) @@ -3720,7 +3720,7 @@ diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD. import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") -@@ -297,6 +300,7 @@ group("dev_ui_resources") { +@@ -299,6 +302,7 @@ group("dev_ui_resources") { "predictors:resources", "privacy_sandbox/internals:resources", "usb_internals:resources", @@ -3728,7 +3728,7 @@ diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD. "//components/commerce/core/internals/resources", "//components/data_sharing/data_sharing_internals/resources", "//components/download/resources/download_internals:resources", -@@ -366,6 +370,7 @@ repack("dev_ui_paks") { +@@ -373,6 +377,7 @@ repack("dev_ui_paks") { "$root_gen_dir/chrome/predictors_resources.pak", "$root_gen_dir/chrome/privacy_sandbox_internals_resources.pak", "$root_gen_dir/chrome/usb_internals_resources.pak", @@ -3812,7 +3812,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn import("//build/config/buildflags_paint_preview.gni") import("//build/config/compiler/compiler.gni") -@@ -408,6 +411,7 @@ static_library("ui") { +@@ -399,6 +402,7 @@ static_library("ui") { "//chrome/services/media_gallery_util/public/mojom", "//components/access_code_cast/common:metrics", "//components/account_id", @@ -3871,7 +3871,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "chrome/browser/ui/tab_helpers.h" -@@ -102,6 +106,8 @@ +@@ -105,6 +109,8 @@ #include "chrome/common/chrome_features.h" #include "chrome/common/chrome_isolated_world_ids.h" #include "chrome/common/chrome_switches.h" @@ -3880,7 +3880,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "components/autofill/content/browser/content_autofill_client.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/autofill/core/browser/foundations/browser_autofill_manager.h" -@@ -342,6 +348,12 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -344,6 +350,12 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { optimization_guide_decider); } } @@ -3893,7 +3893,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc autofill::AutofillClientProvider& autofill_client_provider = autofill::AutofillClientProviderFactory::GetForProfile(profile); autofill_client_provider.CreateClientForWebContents(web_contents); -@@ -379,6 +391,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -385,6 +397,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { ip_protection::IpProtectionStatus::CreateForWebContents(web_contents); } #endif // BUILDFLAG(IS_ANDROID) @@ -3914,7 +3914,7 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni import("//ash/ambient/resources/resources.gni") import("//build/config/chrome_build.gni") -@@ -126,6 +129,7 @@ template("chrome_extra_paks") { +@@ -125,6 +128,7 @@ template("chrome_extra_paks") { "$root_gen_dir/chrome/connectors_internals_resources.pak", "$root_gen_dir/chrome/saved_tab_groups_unsupported_resources.pak", "$root_gen_dir/chrome/segmentation_internals_resources.pak", @@ -3922,7 +3922,7 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni "$root_gen_dir/components/autofill/core/browser/geo/autofill_address_rewriter_resources.pak", "$root_gen_dir/components/autofill_and_password_manager_internals_resources.pak", "$root_gen_dir/components/chrome_urls_resources.pak", -@@ -164,6 +168,7 @@ template("chrome_extra_paks") { +@@ -163,6 +167,7 @@ template("chrome_extra_paks") { "//chrome/browser/resources/connectors_internals:resources", "//chrome/browser/resources/saved_tab_groups_unsupported:resources", "//chrome/common:resources", @@ -3956,7 +3956,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn import("//build/cipd/cipd.gni") import("//build/config/buildflags_paint_preview.gni") -@@ -1851,6 +1854,7 @@ if (is_android) { +@@ -1879,6 +1882,7 @@ if (is_android) { "//chrome/test/data/webui:browser_tests", "//chrome/test/data/webui:interactive_ui_tests", "//chrome/test/data/webui:resources", @@ -3964,7 +3964,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn "//components/autofill/content/browser:test_support", "//components/autofill/content/renderer:test_support", "//components/autofill/core/common", -@@ -2500,6 +2504,7 @@ if (!is_android) { +@@ -2536,6 +2540,7 @@ if (!is_android) { "//chrome/test/media_router/access_code_cast:access_code_cast_integration_base", "//chrome/test/payments:test_support", "//chrome/test/supervised_user:test_support", @@ -3972,7 +3972,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn "//components/affiliations/core/browser:affiliation_proto", "//components/affiliations/core/browser:test_support", "//components/autofill/content/browser:autofill_shared_storage_proto", -@@ -3012,6 +3017,7 @@ if (!is_android) { +@@ -3054,6 +3059,7 @@ if (!is_android) { "//chrome/test/data/cart/", "//chrome/test/data/devtools/protocol/flash_embed_test.html", "//components/test/data/ad_tagging/", @@ -3980,9 +3980,9 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn "//components/test/data/ads_observer/", "//components/test/data/autofill/", "//components/test/data/custom_handlers", -@@ -3103,6 +3109,9 @@ if (!is_android) { +@@ -3145,6 +3151,9 @@ if (!is_android) { "../browser/accessibility/live_translate_controller_browsertest.cc", - "../browser/accessibility/page_colors_browsertest.cc", + "../browser/accessibility/page_colors_controller_browsertest.cc", "../browser/accessibility/phrase_segmentation/dependency_parser_model_loader_browsertest.cc", + "../browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc", + "../browser/adblock/test/adblock_multiple_tabs_browsertest.cc", @@ -3990,7 +3990,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn "../browser/ai/ai_data_keyed_service_browsertest.cc", "../browser/attribution_reporting/chrome_attribution_browsertest.cc", "../browser/autocomplete/autocomplete_browsertest.cc", -@@ -4687,6 +4696,7 @@ if (!is_android) { +@@ -4739,6 +4748,7 @@ if (!is_android) { ] } @@ -3998,7 +3998,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn if (is_chromeos) { deps += [ "//chrome/browser/ui/webui/ash/parent_access:test_support", -@@ -6249,6 +6259,7 @@ test("unit_tests") { +@@ -6308,6 +6318,7 @@ test("unit_tests") { sources = [ # All unittests in browser, common, renderer and service. "../browser/about_flags_unittest.cc", @@ -4006,9 +4006,9 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn "../browser/after_startup_task_utils_unittest.cc", "../browser/apps/icon_standardizer_unittest.cc", "../browser/apps/user_type_filter_unittest.cc", -@@ -10780,6 +10791,7 @@ if (!is_android) { - "//chrome/browser/ui/exclusive_access", +@@ -10826,6 +10837,7 @@ if (!is_android) { "//chrome/browser/ui/views/frame:toolbar_button_provider", + "//chrome/browser/ui/views/interaction", "//chrome/browser/ui/views/side_panel", + "//components/adblock/core:test_support", "//components/supervised_user/core/browser", diff --git a/build/patches/eyeo-133.0.6943.49-extension_api.patch b/build/patches/eyeo-133.0.6943.49-extension_api.patch index 83dcea83..1e1e6f4f 100644 --- a/build/patches/eyeo-133.0.6943.49-extension_api.patch +++ b/build/patches/eyeo-133.0.6943.49-extension_api.patch @@ -72,7 +72,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn -@@ -828,6 +828,17 @@ source_set("extensions") { +@@ -832,6 +832,17 @@ source_set("extensions") { ] } @@ -2138,7 +2138,7 @@ diff --git a/chrome/browser/extensions/api/api_browser_context_keyed_service_fac #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h" #include "chrome/browser/extensions/api/bookmarks/bookmarks_api_watcher.h" -@@ -29,11 +33,13 @@ +@@ -30,11 +34,13 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h" @@ -2151,8 +2151,8 @@ diff --git a/chrome/browser/extensions/api/api_browser_context_keyed_service_fac +#include "chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.h" #include "chrome/browser/extensions/api/image_writer_private/operation_manager.h" #include "chrome/browser/extensions/api/language_settings_private/language_settings_private_delegate_factory.h" - #include "chrome/browser/extensions/api/messaging/incognito_connectability.h" // nogncheck -@@ -102,6 +108,8 @@ void EnsureApiBrowserContextKeyedServiceFactoriesBuilt() { + #include "chrome/browser/extensions/api/networking_private/networking_private_ui_delegate_factory_impl.h" +@@ -103,6 +109,8 @@ void EnsureApiBrowserContextKeyedServiceFactoriesBuilt() { #if BUILDFLAG(ENABLE_EXTENSIONS) extensions::ActivityLogAPI::GetFactoryInstance(); @@ -3601,9 +3601,9 @@ diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/ext // This features file defines extension APIs implemented under src/chrome. // See chrome/common/extensions/api/_features.md to understand this file, as -@@ -71,6 +75,16 @@ - "dependencies": ["permission:experimentalAiData"], - "channel": "stable" +@@ -68,6 +72,16 @@ + "contexts": ["privileged_extension"], + "dependencies": ["permission:experimentalAiData"] }, + "adblockPrivate": [{ + "dependencies": ["permission:adblockPrivate"], @@ -3618,7 +3618,7 @@ diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/ext "app": { "blocklist": [ "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice -@@ -543,6 +557,14 @@ +@@ -540,6 +554,14 @@ "channel": "stable", "contexts": [] }, @@ -3661,7 +3661,7 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com "autofillPrivate": { "channel": "trunk", "extension_types": ["extension", "platform_app"], -@@ -415,6 +426,13 @@ +@@ -407,6 +418,13 @@ // "desktop_android" is not supported. "platforms": ["chromeos", "linux", "mac", "win"] }, @@ -3873,10 +3873,10 @@ diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extens import("//build/config/features.gni") import("//chrome/common/features.gni") -@@ -32,7 +35,8 @@ schema_sources_ = [ +@@ -34,7 +37,8 @@ schema_sources_ = [ "scripting.idl", "tabs.json", - "web_authentication_proxy.idl", + "web_authentication_proxy.webidl", - + "adblock_private.idl", + "eyeo_filtering_private.idl", @@ -4155,7 +4155,7 @@ diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/c diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -4151,6 +4151,20 @@ if (!is_android) { +@@ -4206,6 +4206,20 @@ if (!is_android) { ] } diff --git a/build/patches/kill-Location-fall-back-to-system.patch b/build/patches/kill-Location-fall-back-to-system.patch index 36b31f74..a3c29e0d 100644 --- a/build/patches/kill-Location-fall-back-to-system.patch +++ b/build/patches/kill-Location-fall-back-to-system.patch @@ -4,15 +4,15 @@ Subject: kill Location, fall back to system License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - services/device/geolocation/BUILD.gn | 1 - - .../device/geolocation/LocationProviderFactory.java | 11 ++--------- - services/device/public/cpp/device_features.cc | 3 ++- - 3 files changed, 4 insertions(+), 11 deletions(-) + services/device/geolocation/BUILD.gn | 1 - + .../geolocation/LocationProviderFactory.java | 20 ++----------------- + services/device/public/cpp/device_features.cc | 3 ++- + 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn --- a/services/device/geolocation/BUILD.gn +++ b/services/device/geolocation/BUILD.gn -@@ -152,7 +152,6 @@ if (is_android) { +@@ -155,7 +155,6 @@ if (is_android) { "android/java/src/org/chromium/device/geolocation/LocationProviderAdapter.java", "android/java/src/org/chromium/device/geolocation/LocationProviderAndroid.java", "android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java", @@ -23,7 +23,7 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java --- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java +++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java -@@ -29,19 +29,12 @@ public class LocationProviderFactory { +@@ -51,28 +51,12 @@ public class LocationProviderFactory { @CalledByNative public static void useGmsCoreLocationProvider() { @@ -38,8 +38,17 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge - && LocationProviderGmsCore.isGooglePlayServicesAvailable( - ContextUtils.getApplicationContext())) { - sProviderImpl = new LocationProviderGmsCore(ContextUtils.getApplicationContext()); +- RecordHistogram.recordEnumeratedHistogram( +- "Geolocation.AndroidLocationProvider.ProviderType", +- LocationProviderType.GMS_CORE, +- LocationProviderType.COUNT); +- - } else { - sProviderImpl = new LocationProviderAndroid(); +- RecordHistogram.recordEnumeratedHistogram( +- "Geolocation.AndroidLocationProvider.ProviderType", +- LocationProviderType.ANDROID, +- LocationProviderType.COUNT); - } + sProviderImpl = new LocationProviderAndroid(); return sProviderImpl; diff --git a/build/patches/kill-Vision.patch b/build/patches/kill-Vision.patch index fd9bfdb8..7388c445 100644 --- a/build/patches/kill-Vision.patch +++ b/build/patches/kill-Vision.patch @@ -15,7 +15,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 -@@ -319,8 +319,6 @@ if (_is_default_toolchain) { +@@ -318,8 +318,6 @@ if (_is_default_toolchain) { "$google_play_services_package:google_play_services_gcm_java", "$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_tasks_java", diff --git a/build/patches/sharing-hub-always-use-visible-URL.patch b/build/patches/sharing-hub-always-use-visible-URL.patch index d2212fc1..86526ce5 100644 --- a/build/patches/sharing-hub-always-use-visible-URL.patch +++ b/build/patches/sharing-hub-always-use-visible-URL.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/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java -@@ -304,6 +304,7 @@ public class ShareDelegateImpl implements ShareDelegate { +@@ -314,6 +314,7 @@ public class ShareDelegateImpl implements ShareDelegate { @VisibleForTesting static boolean shouldFetchCanonicalUrl(final Tab currentTab) { diff --git a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch index 869d3840..3e65583c 100644 --- a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch +++ b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch @@ -14,7 +14,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 -@@ -1304,8 +1304,6 @@ static_library("browser") { +@@ -1297,8 +1297,6 @@ static_library("browser") { "profiles/incognito_mode_policy_handler.h", "profiles/off_the_record_profile_impl.cc", "profiles/off_the_record_profile_impl.h", @@ -22,11 +22,11 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn - "profiles/profile_avatar_downloader.h", "profiles/profile_destroyer.cc", "profiles/profile_destroyer.h", - "profiles/profile_downloader.cc", + "profiles/profile_impl.cc", 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 -@@ -376,12 +376,6 @@ gfx::Image ProfileAttributesEntry::GetAvatarIcon( +@@ -381,12 +381,6 @@ gfx::Image ProfileAttributesEntry::GetAvatarIcon( int size_for_placeholder_avatar, bool use_high_res_file, const PlaceholderAvatarIconParams& icon_params) const { diff --git a/build/patches/ungoogled-chromium-Disable-translate-integration.patch b/build/patches/ungoogled-chromium-Disable-translate-integration.patch index 3c7cd7d6..ae14fa77 100644 --- a/build/patches/ungoogled-chromium-Disable-translate-integration.patch +++ b/build/patches/ungoogled-chromium-Disable-translate-integration.patch @@ -6,24 +6,24 @@ Remove translate offer License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../xml/languages_detailed_preferences.xml | 43 ----------------- + .../xml/languages_detailed_preferences.xml | 42 ----------------- .../java/res/xml/languages_preferences.xml | 5 -- .../language/settings/LanguageSettings.java | 47 +------------------ .../strings/android_chrome_strings.grd | 3 -- .../core/browser/translate_manager.cc | 5 +- .../core/browser/translate_script.cc | 17 ++----- - 6 files changed, 10 insertions(+), 110 deletions(-) + 6 files changed, 10 insertions(+), 109 deletions(-) diff --git a/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml b/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml --- a/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml +++ b/chrome/browser/language/android/java/res/xml/languages_detailed_preferences.xml -@@ -31,47 +31,4 @@ found in the LICENSE file. +@@ -39,46 +39,4 @@ found in the LICENSE file. - @@ -37,8 +37,7 @@ diff --git a/chrome/browser/language/android/java/res/xml/languages_detailed_pre - - - @@ -68,7 +67,7 @@ diff --git a/chrome/browser/language/android/java/res/xml/languages_detailed_pre diff --git a/chrome/browser/language/android/java/res/xml/languages_preferences.xml b/chrome/browser/language/android/java/res/xml/languages_preferences.xml --- a/chrome/browser/language/android/java/res/xml/languages_preferences.xml +++ b/chrome/browser/language/android/java/res/xml/languages_preferences.xml -@@ -13,9 +13,4 @@ found in the LICENSE file. +@@ -18,9 +18,4 @@ found in the LICENSE file. android:layout="@layout/languages_preference" android:widgetLayout="@layout/accept_languages_list" /> @@ -173,7 +172,7 @@ diff --git a/chrome/browser/language/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 -@@ -1991,9 +1991,6 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1940,9 +1940,6 @@ Your Google account may have other forms of browsing history like searches and a Let websites know the languages you speak. They’ll show content in those languages, when possible. @@ -201,7 +200,7 @@ diff --git a/components/translate/core/browser/translate_manager.cc b/components diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc --- a/components/translate/core/browser/translate_script.cc +++ b/components/translate/core/browser/translate_script.cc -@@ -126,20 +126,13 @@ void TranslateScript::OnScriptFetchComplete(bool success, +@@ -134,20 +134,13 @@ void TranslateScript::OnScriptFetchComplete(bool success, data_ = base::StringPrintf("var translateApiKey = '%s';\n", google_apis::GetAPIKey().c_str()); diff --git a/build/patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch b/build/patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch index 1c0dd856..c5f898db 100644 --- a/build/patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch +++ b/build/patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -135,7 +135,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -139,7 +139,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string()); registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false); registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls); diff --git a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch index 1f513616..845b9051 100644 --- a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch +++ b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch @@ -40,7 +40,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/ui/BUILD.gn | 1 - chrome/browser/ui/android/omnibox/BUILD.gn | 2 - .../omnibox/LocationBarCoordinator.java | 2 - - .../browser/omnibox/LocationBarMediator.java | 23 -- + .../browser/omnibox/LocationBarMediator.java | 24 -- .../ui/webui/new_tab_page/new_tab_page_ui.cc | 6 - .../upgrade_detector/upgrade_detector_impl.cc | 6 - chrome/common/BUILD.gn | 2 - @@ -68,13 +68,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...gled-chromium-no-special-hosts-domains.inc | 1 + net/base/url_util.cc | 25 +- services/network/network_context.cc | 2 +- - 61 files changed, 55 insertions(+), 884 deletions(-) + 61 files changed, 55 insertions(+), 885 deletions(-) create mode 100644 cromite_flags/content/public/common/content_features_cc/ungoogled-chromium-no-special-hosts-domains.inc 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 -@@ -103,7 +103,6 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; +@@ -102,7 +102,6 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; import org.chromium.chrome.browser.ntp_customization.NtpCustomizationUtils; import org.chromium.chrome.browser.ntp_customization.edge_to_edge.TopInsetCoordinator; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; -@@ -1227,10 +1226,8 @@ public class RootUiCoordinator +@@ -1225,10 +1224,8 @@ public class RootUiCoordinator Profile profile = tab.getProfile(); TemplateUrlService service = TemplateUrlServiceFactory.getForProfile(profile); String url = service.getUrlForSearchQuery(query); @@ -96,7 +96,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -934,10 +934,6 @@ static_library("browser") { +@@ -932,10 +932,6 @@ static_library("browser") { "page_info/privacy_policy_insights_service_factory.h", "page_load_metrics/observers/bookmark_bar_page_load_metrics_observer.cc", "page_load_metrics/observers/bookmark_bar_page_load_metrics_observer.h", @@ -107,7 +107,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "page_load_metrics/observers/core/amp_page_load_metrics_observer.cc", "page_load_metrics/observers/core/amp_page_load_metrics_observer.h", "page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc", -@@ -946,10 +942,6 @@ static_library("browser") { +@@ -944,10 +940,6 @@ static_library("browser") { "page_load_metrics/observers/document_write_page_load_metrics_observer.h", "page_load_metrics/observers/foreground_duration_ukm_observer.cc", "page_load_metrics/observers/foreground_duration_ukm_observer.h", @@ -118,7 +118,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "page_load_metrics/observers/histogram_suffixes.cc", "page_load_metrics/observers/histogram_suffixes.h", "page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.cc", -@@ -1567,8 +1559,6 @@ static_library("browser") { +@@ -1536,8 +1528,6 @@ static_library("browser") { "supervised_user/supervised_user_browser_utils.h", "supervised_user/supervised_user_content_filters_service_factory.cc", "supervised_user/supervised_user_content_filters_service_factory.h", @@ -127,7 +127,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "supervised_user/supervised_user_interstitial_tab_closer.cc", "supervised_user/supervised_user_interstitial_tab_closer.h", "supervised_user/supervised_user_metrics_service_factory.cc", -@@ -1756,10 +1746,7 @@ static_library("browser") { +@@ -1723,10 +1713,7 @@ static_library("browser") { "//chrome/browser/content_settings:impl", "//chrome/browser/devtools", "//chrome/browser/favicon", @@ -138,7 +138,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/browser/ip_protection", "//chrome/browser/media/webrtc", "//chrome/browser/navigation_predictor:impl", -@@ -1884,7 +1871,6 @@ static_library("browser") { +@@ -1856,7 +1843,6 @@ static_library("browser") { # New dependencies inside of //chrome/browser that generate header files # should be added to browser_generated_files. ":browser_public_dependencies", @@ -169,7 +169,7 @@ diff --git a/chrome/browser/android/metrics/uma_session_stats.cc b/chrome/browse 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 -@@ -1264,7 +1264,6 @@ BrowserProcessImpl::component_updater() { +@@ -1261,7 +1261,6 @@ BrowserProcessImpl::component_updater() { std::make_unique(); std::string brand; @@ -180,7 +180,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro 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 -@@ -460,11 +460,6 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -455,11 +455,6 @@ void ProcessSingletonNotificationCallbackImpl( StartupBrowserCreator::ProcessCommandLineAlreadyRunning( command_line, current_directory, startup_profile_path_info); @@ -192,7 +192,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows } #endif // BUILDFLAG(ENABLE_PROCESS_SINGLETON) -@@ -1723,11 +1718,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1732,11 +1727,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { upgrade_util::SaveLastModifiedTimeOfExe(); #endif @@ -207,7 +207,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows 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 -@@ -2966,7 +2966,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -3099,7 +3099,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( switches::kForceAppMode, #endif switches::kForceUIDirection, @@ -215,7 +215,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch switches::kJavaScriptHarmony, switches::kEnableExperimentalWebAssemblyFeatures, embedder_support::kOriginTrialDisabledFeatures, -@@ -5708,7 +5707,8 @@ GetClientDataHeader(content::FrameTreeNodeId frame_tree_node_id) { +@@ -5857,7 +5856,8 @@ GetClientDataHeader(content::FrameTreeNodeId frame_tree_node_id) { } #endif @@ -225,7 +225,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(IS_ANDROID) const std::string& client_data_header, #endif -@@ -5748,7 +5748,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( +@@ -5897,7 +5897,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( std::move(bound_session_request_throttled_handler), #endif std::move(dynamic_params)); @@ -234,7 +234,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch std::vector> ChromeContentBrowserClient::CreateURLLoaderThrottles( -@@ -5805,15 +5805,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( +@@ -5954,15 +5954,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( GetClientDataHeader(frame_tree_node_id); #endif @@ -250,7 +250,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch { auto* factory = ProtocolHandlerRegistryFactory::GetForBrowserContext(browser_context); -@@ -5858,20 +5849,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( +@@ -6007,20 +5998,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( Profile* profile = Profile::FromBrowserContext(browser_context); DCHECK(profile); @@ -362,7 +362,7 @@ diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/br diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn -@@ -521,7 +521,6 @@ source_set("extensions") { +@@ -527,7 +527,6 @@ source_set("extensions") { "//chrome/browser/extensions:cws_item_service_proto", "//chrome/browser/extensions/api:api_registration", "//chrome/browser/favicon", @@ -406,7 +406,7 @@ diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log diff --git a/chrome/browser/first_run/first_run.cc b/chrome/browser/first_run/first_run.cc --- a/chrome/browser/first_run/first_run.cc +++ b/chrome/browser/first_run/first_run.cc -@@ -296,14 +296,6 @@ void SetupInitialPrefsFromInstallPrefs( +@@ -497,14 +497,6 @@ void SetupInitialPrefsFromInstallPrefs( // -- Platform-specific functions -- @@ -445,7 +445,7 @@ diff --git a/chrome/browser/google/BUILD.gn b/chrome/browser/google/BUILD.gn diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc --- a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc +++ b/chrome/browser/long_screenshots/long_screenshots_tab_service.cc -@@ -36,13 +36,11 @@ constexpr size_t kMaxPerCaptureSizeBytes = 50 * 1000L * 1000L; // 50 MB. +@@ -37,13 +37,11 @@ constexpr size_t kMaxPerCaptureSizeBytes = 50 * 1000L * 1000L; // 50 MB. // Host/regex pattern for Google AMP Cache URLs. // See https://developers.google.com/amp/cache/overview#amp-cache-url-format // for a definition of the format of AMP Cache URLs. @@ -459,7 +459,7 @@ diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/c const char kGoogleNewsPathPattern[] = "/articles/(.*)"; } // namespace -@@ -231,26 +229,6 @@ bool LongScreenshotsTabService::IsAmpUrl(const GURL& url) { +@@ -242,26 +240,6 @@ bool LongScreenshotsTabService::IsAmpUrl(const GURL& url) { return false; } @@ -489,7 +489,7 @@ diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/c diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc -@@ -618,7 +618,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { +@@ -620,7 +620,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { } bool ChromeMetricsServiceClient::GetBrand(std::string* brand_code) { @@ -620,7 +620,7 @@ diff --git a/chrome/browser/metrics/metrics_reporting_state.cc b/chrome/browser/ 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 -@@ -931,7 +931,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams( +@@ -927,7 +927,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams( void SystemNetworkContextManager::ConfigureDefaultNetworkContextParams( network::mojom::NetworkContextParams* network_context_params) { variations::UpdateCorsExemptHeaderForVariations(network_context_params); @@ -631,7 +631,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows diff --git a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc --- a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc +++ b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc -@@ -329,10 +329,11 @@ void OneGoogleBarLoaderImpl::SetAdditionalQueryParams( +@@ -324,10 +324,11 @@ void OneGoogleBarLoaderImpl::SetAdditionalQueryParams( } GURL OneGoogleBarLoaderImpl::GetApiUrl() const { @@ -675,7 +675,7 @@ diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metri diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc -@@ -168,14 +168,9 @@ void PageLoadMetricsEmbedder::RegisterObservers( +@@ -170,14 +170,9 @@ void PageLoadMetricsEmbedder::RegisterObservers( tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); @@ -717,7 +717,7 @@ diff --git a/chrome/browser/profile_resetter/profile_resetter.cc b/chrome/browse 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 -@@ -24,7 +24,6 @@ static_library("safe_browsing") { +@@ -27,7 +27,6 @@ static_library("safe_browsing") { "//build:branding_buildflags", "//chrome/app:generated_resources", "//chrome/browser:browser_process", @@ -775,7 +775,7 @@ diff --git a/chrome/browser/signin/android/signin_manager_android.cc b/chrome/br 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 -@@ -303,7 +303,6 @@ static_library("ui") { +@@ -289,7 +289,6 @@ static_library("ui") { "//chrome/browser/feedback:feedback_impl", "//chrome/browser/file_system_access", "//chrome/browser/fingerprinting_protection", @@ -792,21 +792,21 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr "java/src/org/chromium/chrome/browser/omnibox/UrlFocusChangeListener.java", - "java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeader.java", - "java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationTracker.java", - "java/src/org/chromium/chrome/browser/omnibox/status/PageInfoIphController.java", - "java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java", - "java/src/org/chromium/chrome/browser/omnibox/status/StatusIconView.java", + "java/src/org/chromium/chrome/browser/omnibox/navattach/AttachmentDetailsFetcher.java", + "java/src/org/chromium/chrome/browser/omnibox/navattach/ComposeBoxQueryControllerBridge.java", + "java/src/org/chromium/chrome/browser/omnibox/navattach/NavigationAttachmentItemProperties.java", 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 -@@ -37,7 +37,6 @@ import org.chromium.chrome.browser.lifecycle.NativeInitObserver; +@@ -36,7 +36,6 @@ import org.chromium.chrome.browser.lifecycle.NativeInitObserver; import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.merchant_viewer.MerchantTrustSignalsCoordinator; import org.chromium.chrome.browser.omnibox.LocationBarMediator.OmniboxUma; -import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; + import org.chromium.chrome.browser.omnibox.navattach.NavigationAttachmentsCoordinator; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator.PageInfoAction; - import org.chromium.chrome.browser.omnibox.status.StatusView; -@@ -407,7 +406,6 @@ public class LocationBarCoordinator +@@ -435,7 +434,6 @@ public class LocationBarCoordinator mLocationBarMediator.destroy(); mLocationBarMediator = null; @@ -817,7 +817,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/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 -@@ -58,7 +58,6 @@ import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver; +@@ -59,7 +59,6 @@ import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver; import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.omnibox.UrlBar.UrlBarDelegate; import org.chromium.chrome.browser.omnibox.UrlBarCoordinator.SelectionState; @@ -825,28 +825,30 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; -@@ -317,20 +316,6 @@ class LocationBarMediator +@@ -332,22 +331,6 @@ class LocationBarMediator if (!mUrlFocusedWithoutAnimations) handleUrlFocusAnimation(hasFocus); - if (hasFocus - && mLocationBarDataProvider.hasTab() - && !mLocationBarDataProvider.isIncognito()) { -- if (mTemplateUrlServiceSupplier.hasValue()) { +- TemplateUrlService templateUrlService = mTemplateUrlServiceSupplier.get(); +- if (templateUrlService != null) { - GeolocationHeader.primeLocationForGeoHeaderIfEnabled( -- mProfileSupplier.get(), mTemplateUrlServiceSupplier.get()); +- mProfileSupplier.get(), templateUrlService); - } else { - mTemplateUrlServiceSupplier.onAvailable( -- (templateUrlService) -> { +- (service) -> { - GeolocationHeader.primeLocationForGeoHeaderIfEnabled( -- mProfileSupplier.get(), templateUrlService); +- mProfileSupplier.get(), service); - }); - } +- hintZeroSuggestRefresh(); - } // Focus change caused by a closed tab may result in there not being an active tab. if (!hasFocus && mLocationBarDataProvider.hasTab()) { setUrl( mLocationBarDataProvider.getCurrentGurl(), -@@ -345,8 +330,6 @@ class LocationBarMediator +@@ -362,8 +345,6 @@ class LocationBarMediator mCallbackController.makeCancelable( (templateUrlService) -> { templateUrlService.addObserver(this); @@ -855,7 +857,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow })); mLocationBarLayout.onFinishNativeInitialization(); -@@ -605,9 +588,6 @@ class LocationBarMediator +@@ -625,9 +606,6 @@ class LocationBarMediator LoadUrlParams loadUrlParams = new LoadUrlParams(url); try (TimingMetric record = TimingMetric.shortUptime("Android.Omnibox.SetGeolocationHeadersTime")) { @@ -865,16 +867,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } loadUrlParams.setTransitionType( omniboxLoadUrlParams.transitionType | PageTransition.FROM_ADDRESS_BAR); -@@ -1703,8 +1683,6 @@ class LocationBarMediator +@@ -1787,7 +1765,6 @@ class LocationBarMediator if (OmniboxFeatures.sUseFusedLocationProvider.isEnabled() - && mProfileSupplier.hasValue() - && mTemplateUrlServiceSupplier.hasValue()) { -- GeolocationHeader.primeLocationForGeoHeaderIfEnabled( -- mProfileSupplier.get(), mTemplateUrlServiceSupplier.get()); + && profile != null + && templateUrlService != null) { +- GeolocationHeader.primeLocationForGeoHeaderIfEnabled(profile, templateUrlService); } } -@@ -1712,7 +1690,6 @@ class LocationBarMediator +@@ -1795,7 +1772,6 @@ class LocationBarMediator public void onPauseWithNative() { OmniboxFeatures.updateLastExitTimestamp(); if (OmniboxFeatures.sUseFusedLocationProvider.isEnabled()) { @@ -885,7 +886,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc -@@ -570,12 +570,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource(Profile* profile) { +@@ -611,12 +611,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource(Profile* profile) { // chrome-untrusted://new-tab-page for other external content and resources. // NOTE: Use caution when overriding content security policies as that cean // lead to subtle security bugs such as https://crbug.com/1251541. @@ -917,7 +918,7 @@ diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/b diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -138,8 +138,6 @@ static_library("common_lib") { +@@ -139,8 +139,6 @@ static_library("common_lib") { "content_restriction.h", "crash_keys.cc", "crash_keys.h", @@ -963,7 +964,7 @@ diff --git a/chrome/renderer/url_loader_throttle_provider_impl.cc b/chrome/rende diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6830,7 +6830,6 @@ test("unit_tests") { +@@ -6882,7 +6882,6 @@ test("unit_tests") { "//chrome/browser/file_system_access:unit_tests", "//chrome/browser/fingerprinting_protection", "//chrome/browser/first_party_sets", @@ -1681,7 +1682,7 @@ diff --git a/components/search_engines/search_terms_data.cc b/components/search_ diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc --- a/components/search_engines/template_url.cc +++ b/components/search_engines/template_url.cc -@@ -607,11 +607,7 @@ std::u16string TemplateURLRef::SearchTermToString16( +@@ -608,11 +608,7 @@ std::u16string TemplateURLRef::SearchTermToString16( bool TemplateURLRef::HasGoogleBaseURLs( const SearchTermsData& search_terms_data) const { @@ -1747,7 +1748,7 @@ diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/ diff --git a/components/url_matcher/url_util.cc b/components/url_matcher/url_util.cc --- a/components/url_matcher/url_util.cc +++ b/components/url_matcher/url_util.cc -@@ -42,27 +42,15 @@ namespace { +@@ -37,27 +37,15 @@ namespace { // Host/regex pattern for Google AMP Cache URLs. // See https://developers.google.com/amp/cache/overview#amp-cache-url-format // for a definition of the format of AMP Cache URLs. @@ -1775,7 +1776,7 @@ diff --git a/components/url_matcher/url_util.cc b/components/url_matcher/url_uti void ProcessQueryToConditions( url_matcher::URLMatcherConditionFactory* condition_factory, const std::string& query, -@@ -120,87 +108,10 @@ class EmbeddedURLExtractor { +@@ -115,87 +103,10 @@ class EmbeddedURLExtractor { // Implements url_filter::GetEmbeddedURL(). GURL GetEmbeddedURL(const GURL& url) { @@ -1922,7 +1923,7 @@ diff --git a/net/base/url_util.cc b/net/base/url_util.cc diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -3077,7 +3077,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -3090,7 +3090,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( } #endif // BUILDFLAG(IS_CT_SUPPORTED) diff --git a/build/patches/webRTC-do-not-expose-local-IP-addresses.patch b/build/patches/webRTC-do-not-expose-local-IP-addresses.patch index abf348eb..17489eb2 100644 --- a/build/patches/webRTC-do-not-expose-local-IP-addresses.patch +++ b/build/patches/webRTC-do-not-expose-local-IP-addresses.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -129,7 +129,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -133,7 +133,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { false); #endif registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy, @@ -45,7 +45,7 @@ diff --git a/third_party/blink/common/peerconnection/webrtc_ip_handling_policy.c 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 -@@ -1085,7 +1085,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -1046,7 +1046,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( break; } From 5a30f6fe3a6476bafa7b2462328afa90f059fe06 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 29 Sep 2025 11:51:24 +0200 Subject: [PATCH 2/8] Patches for 141 (need works) --- .../Add-an-always-incognito-mode.patch | 253 ++++++------- build/patches/Add-cromite-flags-support.patch | 28 +- .../Add-option-to-force-tablet-UI.patch | 71 ++-- ...roid-fonts-fingerprinting-mitigation.patch | 159 ++++---- ...ioBuffer-AnalyserNode-fp-mitigations.patch | 58 +-- .../Content-settings-infrastructure.patch | 289 ++++++++------- build/patches/Disable-safety-check.patch | 103 ++---- .../Enable-native-Android-autofill.patch | 320 ++++++---------- ...le-search-engine-settings-desktop-ui.patch | 48 +-- .../Move-navigation-bar-to-bottom.patch | 350 +++++++++--------- ...ning-all-cookies-by-top-frame-domain.patch | 36 +- ...t-for-device-memory-and-cpu-recovery.patch | 45 +-- ...tings-for-cookies-javascript-and-ads.patch | 33 +- build/patches/kill-Auth.patch | 136 +------ 14 files changed, 838 insertions(+), 1091 deletions(-) diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index e769bce3..a546fdaf 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -28,11 +28,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 7 +- .../ChromeContextMenuPopulator.java | 6 +- - .../CustomTabActivityLifecycleUmaTracker.java | 39 ---- + .../CustomTabActivityLifecycleUmaTracker.java | 31 ---- .../CustomTabAppMenuPropertiesDelegate.java | 4 + .../CustomTabIntentDataProvider.java | 10 + .../browser/download/DownloadUtils.java | 13 +- - .../history/HistoryContentManager.java | 7 +- + .../history/HistoryContentManager.java | 9 +- .../browser/history/HistoryManager.java | 27 ++- .../chrome/browser/history/HistoryPage.java | 16 ++ .../native_page/NativePageFactory.java | 4 +- @@ -42,7 +42,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../HistoricalTabModelObserver.java | 5 +- .../tab/tab_restore/HistoricalTabSaver.java | 2 +- .../tab_restore/HistoricalTabSaverImpl.java | 17 +- - .../TabbedAppMenuPropertiesDelegate.java | 6 +- + .../TabbedAppMenuPropertiesDelegate.java | 4 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- .../browser/tabmodel/ChromeTabCreator.java | 5 +- .../tabmodel/TabModelSelectorImpl.java | 3 + @@ -71,7 +71,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ui/native_page/NativePage.java | 22 ++- .../browser/omnibox/LocationBarMediator.java | 8 + .../strings/android_chrome_strings.grd | 25 +++ - .../browser/toolbar/LocationBarModel.java | 5 +- + .../browser/toolbar/LocationBarModel.java | 4 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + .../snackbar/INeedSnackbarManager.java | 28 +++ .../search_engine_tab_helper.cc | 6 + @@ -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, 797 insertions(+), 111 deletions(-) + 69 files changed, 794 insertions(+), 105 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,8 +101,8 @@ 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 -@@ -620,6 +620,7 @@ chrome_java_resources = [ - "java/res/xml/main_preferences_legacy.xml", +@@ -624,6 +624,7 @@ chrome_java_resources = [ + "java/res/xml/main_preferences.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", + "java/res/xml/incognito_preferences.xml", @@ -120,8 +120,8 @@ 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", -@@ -908,6 +909,7 @@ chrome_java_sources = [ - "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java", +@@ -916,6 +917,7 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/privacy/settings/PasswordEchoSettingHandlerFactory.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", + "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java", @@ -247,7 +247,7 @@ new file mode 100644 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 -@@ -74,6 +74,10 @@ import org.chromium.build.annotations.Nullable; +@@ -73,6 +73,10 @@ import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.UsedByReflection; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; @@ -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; -@@ -794,14 +798,19 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -803,14 +807,19 @@ public class ChromeTabbedActivity extends ChromeActivity { Profile profile = mTabModelSelector.getCurrentModel().getProfile(); // For saving non-incognito tab closures for Recent Tabs. @@ -285,9 +285,9 @@ 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( -@@ -3137,7 +3146,7 @@ public class ChromeTabbedActivity extends ChromeActivity { - } +@@ -3228,7 +3237,7 @@ public class ChromeTabbedActivity extends ChromeActivity { + // We determine SupportedProfileType in onPreCreate(). // We determine the model as soon as possible so every systems get initialized coherently. - boolean startIncognito = + boolean startIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() || @@ -297,7 +297,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 -@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH +@@ -98,6 +98,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.devtools.DevToolsWindowAndroid; @@ -305,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; -@@ -2000,6 +2001,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2028,6 +2029,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -318,16 +318,16 @@ 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 -@@ -88,6 +88,8 @@ import java.lang.annotation.RetentionPolicy; - import java.util.Iterator; +@@ -91,6 +91,8 @@ import java.util.Iterator; import java.util.List; + import java.util.function.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -606,8 +608,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -620,8 +622,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !isNativePage && !isFileScheme && !isContentScheme @@ -342,7 +342,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/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 -@@ -41,6 +41,7 @@ import org.chromium.base.supplier.Supplier; +@@ -39,6 +39,7 @@ import org.chromium.base.shared_preferences.SharedPreferencesManager; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -350,7 +350,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ContextMenuItemType; -@@ -420,6 +421,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -425,6 +426,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { mShowEphemeralTabNewLabel = null; mCustomActionMap.clear(); @@ -372,21 +372,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java -@@ -63,45 +63,6 @@ public class CustomTabActivityLifecycleUmaTracker +@@ -62,37 +62,6 @@ public class CustomTabActivityLifecycleUmaTracker private boolean mIsInitialResume = true; private void recordIncognitoLaunchReason() { - // TODO(crbug.com/352525607): Separate Ephemeral and Incognito CCT metrics. -- @IntentHandler.IncognitoCctCallerId int incognitoCctCallerId; -- if (mIntentDataProvider.getCustomTabMode() == CustomTabProfileType.INCOGNITO) { -- incognitoCctCallerId = -- ((IncognitoCustomTabIntentDataProvider) mIntentDataProvider) -- .getFeatureIdForMetricsCollection(); -- } else { -- incognitoCctCallerId = -- ((EphemeralCustomTabIntentDataProvider) mIntentDataProvider) -- .getFeatureIdForMetricsCollection(); -- } +- /*@IncognitoCctCallerId*/ int incognitoCctCallerId = +- mIntentDataProvider.getFeatureIdForMetricsCollection(); - - RecordHistogram.recordEnumeratedHistogram( - "CustomTabs.IncognitoCctCallerId", @@ -421,7 +413,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/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 -@@ -21,6 +21,7 @@ import org.chromium.base.supplier.Supplier; +@@ -20,6 +20,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -442,7 +434,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 -@@ -101,6 +101,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -104,6 +104,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -452,7 +444,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -1260,6 +1263,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1263,6 +1266,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid return getInitialActivityWidth() > 0; } @@ -488,8 +480,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo /** A class containing some utility static methods. */ @NullMarked public class DownloadUtils { -@@ -313,7 +318,13 @@ public class DownloadUtils { - public static boolean isAllowedToDownloadPage(Tab tab) { +@@ -314,7 +319,13 @@ public class DownloadUtils { + public static boolean isAllowedToDownloadPage(@Nullable Tab tab) { if (tab == null) return false; - if (tab.isIncognito() @@ -506,22 +498,24 @@ 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 -@@ -307,7 +307,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -308,8 +308,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.generateFooterItems(); // Listen to changes in sign in state. -- IdentityServicesProvider.get().getSigninManager(profile).addSignInStateObserver(this); +- assumeNonNull(IdentityServicesProvider.get().getSigninManager(profile)) +- .addSignInStateObserver(this); + // getSigninManager is null in incognito + if (IdentityServicesProvider.get().getSigninManager(profile) != null) + IdentityServicesProvider.get().getSigninManager(profile).addSignInStateObserver(this); // Create PrefChangeRegistrar to receive notifications on preference changes. mPrefChangeRegistrar = PrefServiceUtil.createFor(profile); -@@ -383,7 +385,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -386,8 +387,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.onDestroyed(); mLargeIconBridge.destroy(); mLargeIconBridge = null; -- IdentityServicesProvider.get().getSigninManager(mProfile).removeSignInStateObserver(this); +- assumeNonNull(IdentityServicesProvider.get().getSigninManager(mProfile)) +- .removeSignInStateObserver(this); + if (IdentityServicesProvider.get().getSigninManager(mProfile) != null) + IdentityServicesProvider.get().getSigninManager(mProfile).removeSignInStateObserver(this); mPrefChangeRegistrar.destroy(); @@ -530,9 +524,9 @@ 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 -@@ -57,6 +57,14 @@ import org.chromium.ui.base.Clipboard; - import java.util.List; +@@ -61,6 +61,14 @@ import java.util.List; import java.util.function.Function; + import java.util.function.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.profiles.Profile; @@ -543,9 +537,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History +import org.chromium.chrome.browser.preferences.Pref; + /** Combines and manages the different UI components of browsing history. */ + @NullMarked public class HistoryManager - implements OnMenuItemClickListener, -@@ -162,7 +170,7 @@ public class HistoryManager +@@ -166,7 +174,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -554,7 +548,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -415,9 +423,22 @@ public class HistoryManager +@@ -451,9 +459,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -578,7 +572,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; } -@@ -477,7 +498,7 @@ public class HistoryManager +@@ -514,7 +535,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -590,9 +584,9 @@ 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/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java -@@ -17,6 +17,14 @@ import org.chromium.chrome.browser.ui.native_page.NativePageHost; - import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; - import org.chromium.components.embedder_support.util.UrlConstants; +@@ -20,6 +20,14 @@ import org.chromium.components.embedder_support.util.UrlConstants; + + import java.util.function.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.profiles.Profile; @@ -603,9 +597,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History +import org.chromium.chrome.browser.preferences.Pref; + /** Native page for managing browsing history. */ + @NullMarked public class HistoryPage extends BasicNativePage { - private HistoryManager mHistoryManager; -@@ -45,6 +53,14 @@ public class HistoryPage extends BasicNativePage { +@@ -49,6 +57,14 @@ public class HistoryPage extends BasicNativePage { String url) { super(host); @@ -618,21 +612,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History + } + Uri uri = Uri.parse(url); - assert uri.getHost().equals(UrlConstants.HISTORY_HOST); + assert UrlConstants.HISTORY_HOST.equals(uri.getHost()); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -19,6 +19,7 @@ import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.base.supplier.Supplier; +@@ -20,6 +20,7 @@ import org.chromium.base.supplier.OneshotSupplier; + 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.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -371,7 +372,8 @@ public class NativePageFactory { - String url, NativePage candidatePage, Tab tab, boolean isIncognito, PdfInfo pdfInfo) { +@@ -379,7 +380,8 @@ public class NativePageFactory { + @Nullable PdfInfo pdfInfo) { NativePage page; - switch (NativePage.nativePageType(url, candidatePage, isIncognito, pdfInfo != null)) { @@ -876,7 +870,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 -@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; +@@ -50,6 +50,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; @@ -897,9 +891,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java -@@ -32,6 +32,8 @@ import java.util.HashMap; - import java.util.List; +@@ -32,6 +32,8 @@ import java.util.List; import java.util.Set; + import java.util.function.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + @@ -933,9 +927,9 @@ 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/tab/tab_restore/HistoricalTabSaverImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java -@@ -30,6 +30,8 @@ import java.util.Arrays; - import java.util.Collections; +@@ -30,6 +30,8 @@ import java.util.Collections; import java.util.List; + import java.util.function.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + @@ -991,7 +985,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore // Check the secondary tab model to see if the tab was moved instead of deleted. if (tabIdExistsInSecondaryModel(tab.getId())) return false; -@@ -293,7 +296,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -294,7 +297,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { @NativeMethods interface Natives { @@ -1003,30 +997,28 @@ 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 -@@ -27,6 +27,7 @@ import org.chromium.base.supplier.Supplier; - import org.chromium.build.annotations.Contract; +@@ -27,6 +27,7 @@ import org.chromium.build.annotations.Contract; + 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.ActivityTabProvider; import org.chromium.chrome.browser.ai.AiAssistantService; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; -@@ -220,7 +221,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm - } +@@ -221,7 +222,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm - // New Tab -- modelList.add(buildNewTabItem()); + // When the feature is enabled, show either "New Incognito tab" in incognito mode + // or "New tab" in normal mode. When the feature is disabled, show both. +- if (!IncognitoUtils.shouldOpenIncognitoAsWindow() || !isIncognitoShowing()) { + boolean always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ if (!always_incognito) { -+ modelList.add(buildNewTabItem()); -+ } - - // New Incognito Tab - modelList.add(buildNewIncognitoTabItem()); ++ if (!always_incognito || !IncognitoUtils.shouldOpenIncognitoAsWindow() || !isIncognitoShowing()) { + modelList.add(buildNewTabItem()); + } + if (!IncognitoUtils.shouldOpenIncognitoAsWindow() || isIncognitoShowing()) { 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 -@@ -212,6 +212,8 @@ import org.chromium.content_public.common.ContentSwitches; +@@ -210,6 +210,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; @@ -1035,7 +1027,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; -@@ -1247,7 +1249,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1270,7 +1272,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1047,9 +1039,9 @@ 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 -@@ -53,6 +53,10 @@ import org.chromium.ui.base.PageTransition; - import org.chromium.ui.base.WindowAndroid; - import org.chromium.url.GURL; +@@ -55,6 +55,10 @@ import org.chromium.url.GURL; + import java.util.Collections; + import java.util.function.Supplier; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; @@ -1058,7 +1050,7 @@ 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 -@@ -580,7 +584,6 @@ public class ChromeTabCreator extends TabCreator +@@ -584,7 +588,6 @@ public class ChromeTabCreator extends TabCreator // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. public @Nullable Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { @@ -1069,15 +1061,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java -@@ -17,6 +17,7 @@ import org.chromium.build.annotations.EnsuresNonNull; - import org.chromium.build.annotations.Initializer; +@@ -20,6 +20,7 @@ import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; + import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.ntp.RecentlyClosedBridge; -@@ -127,6 +128,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod + import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; +@@ -139,6 +140,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ProfileProvider profileProvider = mProfileProviderSupplier.get(); assert profileProvider != null; @@ -1115,7 +1107,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer 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 -@@ -50,6 +50,7 @@ import org.chromium.base.supplier.Supplier; +@@ -49,6 +49,7 @@ import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -1123,12 +1115,12 @@ 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; -@@ -859,7 +860,7 @@ public class ToolbarManager - TraceEvent.end("isOfflinePage"); +@@ -866,7 +867,7 @@ public class ToolbarManager return ret; } -- }); -+ }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); + }, +- mToolbarPositionSupplier); ++ mToolbarPositionSupplier, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); mControlContainer = controlContainer; mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); @@ -1142,9 +1134,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** Stores info about a web app. */ + @NullMarked public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider { - private final Drawable mCloseButtonIcon; -@@ -46,6 +48,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -47,6 +49,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider private final ColorProviderImpl mDarkColorProvider; private @DisplayMode.EnumType int mResolvedDisplayMode = DisplayMode.UNDEFINED; @@ -1153,7 +1145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI /** Returns the toolbar color to use if a custom color is not specified by the webapp. */ public static int getDefaultToolbarColor() { return Color.WHITE; -@@ -81,6 +85,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -82,6 +86,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider mWebappExtras = webappExtras; mWebApkExtras = webApkExtras; mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP; @@ -1164,7 +1156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI } @Override -@@ -176,6 +184,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -177,6 +185,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider return mWebApkExtras; } @@ -1229,7 +1221,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()); -@@ -291,11 +302,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -292,11 +303,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1247,7 +1239,7 @@ 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 -@@ -427,6 +427,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { +@@ -460,6 +460,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { return AimEligibilityServiceFactory::GetForProfile(profile_); } @@ -1374,7 +1366,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc -@@ -45,6 +45,9 @@ +@@ -48,6 +48,9 @@ #include "components/feed/core/v2/public/feed_api.h" // nogncheck #include "components/feed/core/v2/public/feed_service.h" // nogncheck #include "content/public/browser/web_contents.h" @@ -1384,7 +1376,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" -@@ -598,6 +601,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -612,6 +615,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1398,7 +1390,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -605,6 +615,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -619,6 +629,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1482,7 +1474,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc b/chrome/browser/offline_pages/android/offline_page_model_factory.cc --- a/chrome/browser/offline_pages/android/offline_page_model_factory.cc +++ b/chrome/browser/offline_pages/android/offline_page_model_factory.cc -@@ -24,6 +24,9 @@ +@@ -23,6 +23,9 @@ #include "components/keyed_service/core/simple_dependency_manager.h" #include "components/offline_pages/core/model/offline_page_model_taskified.h" #include "components/offline_pages/core/offline_page_metadata_store.h" @@ -1492,7 +1484,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc namespace offline_pages { -@@ -55,13 +58,15 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( +@@ -54,13 +57,15 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( scoped_refptr background_task_runner = base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}); @@ -1510,7 +1502,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc // If base::PathService::Get returns false, the temporary_archives_dir will be // empty, and no temporary pages will be saved during this chrome lifecycle. base::FilePath temporary_archives_dir; -@@ -70,7 +75,6 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( +@@ -69,7 +74,6 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( temporary_archives_dir.Append(chrome::kOfflinePageArchivesDirname); } @@ -1518,7 +1510,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc auto archive_manager = std::make_unique( temporary_archives_dir, persistent_archives_dir, DownloadPrefs::GetDefaultDownloadDirectory(), background_task_runner, -@@ -88,4 +92,14 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( +@@ -87,4 +91,14 @@ std::unique_ptr OfflinePageModelFactory::BuildServiceInstanceFor( return model; } @@ -1755,7 +1747,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" -@@ -2061,6 +2062,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2138,6 +2139,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1860,12 +1852,12 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -209,11 +212,12 @@ public interface NativePage { - */ - // TODO(crbug.com/40549331) - Convert to using GURL. - static @NativePageType int nativePageType( -- String url, NativePage candidatePage, boolean isIncognito, boolean hasPdfDownload) { -+ String url, NativePage candidatePage, boolean isIncognito, boolean hasPdfDownload, +@@ -212,11 +215,12 @@ public interface NativePage { + String url, + @Nullable NativePage candidatePage, + boolean isIncognito, +- boolean hasPdfDownload) { ++ boolean hasPdfDownload, + boolean isAlwaysIncognito) { if (url == null) return NativePageType.NONE; @@ -1875,7 +1867,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -227,7 +231,8 @@ public interface NativePage { +@@ -230,7 +234,8 @@ public interface NativePage { GURL url, @Nullable NativePage candidatePage, boolean isIncognito, @@ -1885,7 +1877,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. -@@ -245,7 +250,7 @@ public interface NativePage { +@@ -248,7 +253,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { @@ -1894,7 +1886,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } } -@@ -257,7 +262,7 @@ public interface NativePage { +@@ -260,7 +265,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ private static @NativePageType int chromePageType( @@ -1903,7 +1895,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) -@@ -277,7 +282,8 @@ public interface NativePage { +@@ -280,7 +285,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -1916,8 +1908,8 @@ 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 -@@ -92,6 +92,11 @@ import org.chromium.ui.base.WindowAndroid; - import org.chromium.ui.interpolators.Interpolators; +@@ -97,6 +97,11 @@ import org.chromium.ui.interpolators.Interpolators; + import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.url.GURL; +import org.chromium.components.user_prefs.UserPrefs; @@ -1928,7 +1920,7 @@ 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; -@@ -419,6 +424,9 @@ class LocationBarMediator +@@ -437,6 +442,9 @@ class LocationBarMediator if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return; Tab tab = mLocationBarDataProvider.getTab(); if (tab == null) return; @@ -1941,7 +1933,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 -@@ -6675,6 +6675,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6627,6 +6627,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -1976,7 +1968,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java -@@ -165,6 +165,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro +@@ -168,6 +168,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro protected GURL mVisibleGurl = GURL.emptyGURL(); protected String mFormattedFullUrl; protected String mUrlForDisplay; @@ -1984,14 +1976,13 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow // notifyUrlChanged and notifySecurityStateChanged are usually called 3 times across a same // document navigation. The first call is usually necessary, which updates the UrlBar to reflect -@@ -188,7 +189,9 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro - Context context, +@@ -192,7 +193,8 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro NewTabPageDelegate newTabPageDelegate, UrlFormatter urlFormatter, -- OfflineStatus offlineStatus) { -+ OfflineStatus offlineStatus, + OfflineStatus offlineStatus, +- ObservableSupplier<@ControlsPosition Integer> toolbarPositionSupplier) { ++ ObservableSupplier<@ControlsPosition Integer> toolbarPositionSupplier, + boolean isAlwaysIncognito) { -+ mIsAlwaysIncognito = isAlwaysIncognito; // (uazo) to do, check mContext = context; mNtpDelegate = newTabPageDelegate; mUrlFormatter = urlFormatter; @@ -2065,7 +2056,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 -@@ -4108,6 +4108,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4095,6 +4095,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2131,7 +2122,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 -@@ -287,6 +287,7 @@ struct ContentSettingEntry { +@@ -288,6 +288,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2139,7 +2130,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -296,6 +297,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -297,6 +298,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2147,7 +2138,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()) { -@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -310,7 +312,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2167,7 +2158,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -551,6 +552,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2179,7 +2170,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 -@@ -66,3 +66,7 @@ base::WeakPtr +@@ -74,3 +74,7 @@ base::WeakPtr AutocompleteProviderClient::GetWeakPtr() { return nullptr; } @@ -2213,7 +2204,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 -@@ -916,7 +916,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -921,7 +921,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/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index d012f919..4699cfae 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html base/android/feature_map.cc | 5 + .../base/cached_flags/ValuesReturned.java | 2 +- base/feature_list.cc | 76 ++++++++ - base/feature_list.h | 80 +++++++- + base/feature_list.h | 98 +++++++++- build/android/gyp/java_cpp_features.py | 17 ++ chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + @@ -106,7 +106,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 + - 93 files changed, 832 insertions(+), 32 deletions(-) + 93 files changed, 850 insertions(+), 32 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 @@ -326,7 +326,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h // Some characters are not allowed to appear in feature names or the // associated field trial names, as they are used as special characters for // command-line serialization. This function checks that the strings are ASCII -@@ -815,4 +825,70 @@ class BASE_EXPORT FeatureList { +@@ -815,4 +825,88 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -388,13 +388,31 @@ diff --git a/base/feature_list.h b/base/feature_list.h + _Pragma("clang diagnostic pop") \ + static_assert(true, "") /* for a semicolon requirement */ + -+#define BASE_FEATURE_DISABLED(feature, name, default_state) \ ++#define BASE_FEATURE_DISABLED_3_ARGS(feature, name, default_state) \ + BASE_FEATURE(feature, name, default_state); \ + static_assert(default_state == base::FEATURE_DISABLED_BY_DEFAULT, "Check default state") + -+#define BASE_FEATURE_ENABLED(feature, name, default_state) \ ++#define BASE_FEATURE_DISABLED_2_ARGS(name, default_state) \ ++ BASE_FEATURE(name, default_state); \ ++ static_assert(default_state == base::FEATURE_DISABLED_BY_DEFAULT, "Check default state") ++ ++#define GET_BASE_FEATURE_DISABLED_MACRO(_1, _2, _3, NAME, ...) NAME ++#define BASE_FEATURE_DISABLED(...) \ ++ GET_BASE_FEATURE_DISABLED_MACRO(__VA_ARGS__, BASE_FEATURE_DISABLED_3_ARGS, \ ++ BASE_FEATURE_DISABLED_2_ARGS)(__VA_ARGS__) ++ ++#define BASE_FEATURE_ENABLED_3_ARGS(feature, name, default_state) \ + BASE_FEATURE(feature, name, default_state); \ + static_assert(default_state == base::FEATURE_ENABLED_BY_DEFAULT, "Check default state") ++ ++#define BASE_FEATURE_ENABLED_2_ARGS(name, default_state) \ ++ BASE_FEATURE(name, default_state); \ ++ static_assert(default_state == base::FEATURE_ENABLED_BY_DEFAULT, "Check default state") ++ ++#define GET_BASE_FEATURE_ENABLED_MACRO(_1, _2, _3, NAME, ...) NAME ++#define BASE_FEATURE_ENABLED(...) \ ++ GET_BASE_FEATURE_ENABLED_MACRO(__VA_ARGS__, BASE_FEATURE_ENABLED_3_ARGS, \ ++ BASE_FEATURE_ENABLED_2_ARGS)(__VA_ARGS__) + #endif // BASE_FEATURE_LIST_H_ diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp_features.py diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index 77221faa..8976f1cf 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -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 -@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; +@@ -62,6 +62,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; -@@ -145,6 +146,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity + import org.chromium.components.browser_ui.styles.SemanticColorUtils; + import org.chromium.components.browser_ui.util.AutomotiveUtils; +@@ -142,6 +143,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); @@ -119,15 +119,15 @@ 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 -@@ -69,6 +69,7 @@ import org.chromium.content_public.browser.WebContents; - import org.chromium.content_public.browser.WebContentsObserver; - import org.chromium.net.NetId; +@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer; + import org.chromium.components.embedder_support.util.UrlConstants; + import org.chromium.content_public.browser.WebContents; import org.chromium.ui.LayoutInflaterUtils; +import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.display.DisplayUtil; import org.chromium.url.GURL; -@@ -491,7 +492,9 @@ public class WarmupManager { +@@ -472,7 +473,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 -@@ -791,7 +791,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -803,7 +803,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 -@@ -127,6 +127,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -130,6 +130,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; -@@ -4955,8 +4956,13 @@ public class StripLayoutHelper +@@ -5147,8 +5148,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(); @@ -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; -@@ -495,7 +496,10 @@ public class StripLayoutHelperManager +@@ -498,7 +499,10 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled( /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); @@ -234,7 +234,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/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 -@@ -111,6 +111,14 @@ public class TabStripSceneLayer extends SceneOverlayLayer { +@@ -120,6 +120,14 @@ public class TabStripSceneLayer extends SceneOverlayLayer { if (mNativePtr == 0) return; final boolean visible = yOffset > -layoutHelper.getHeight(); @@ -252,15 +252,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen 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 -@@ -16,6 +16,7 @@ import org.chromium.base.library_loader.LibraryProcessType; - import org.chromium.base.task.ChainedTasks; - import org.chromium.base.task.TaskTraits; +@@ -18,6 +18,7 @@ import org.chromium.base.task.TaskTraits; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.signin.SigninCheckerProvider; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; -@@ -106,6 +107,7 @@ public class ChromeBrowserInitializer { +@@ -109,6 +110,7 @@ public class ChromeBrowserInitializer { public void handlePreNativeStartupAndLoadLibraries(final BrowserParts parts) { ThreadUtils.checkUiThread(); if (parts.isActivityFinishingOrDestroyed()) return; @@ -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 -@@ -747,7 +747,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -762,7 +762,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 -@@ -108,6 +108,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; +@@ -107,6 +107,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; @@ -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 -@@ -317,6 +317,7 @@ public final class ChromePreferenceKeys { +@@ -321,6 +321,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"; @@ -371,8 +371,8 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c --- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java +++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java @@ -42,6 +42,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa - import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider; import org.chromium.ui.display.DisplayUtil; + import org.chromium.ui.edge_to_edge.EdgeToEdgeStateProvider; import org.chromium.ui.insets.CaptionBarInsetsRectProvider; +import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.insets.InsetObserver; @@ -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 -@@ -833,7 +833,7 @@ public class LocationBarCoordinator +@@ -862,7 +862,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 -@@ -1531,6 +1531,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1483,6 +1483,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -422,24 +422,25 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container android:id="@+id/control_container" android:layout_width="match_parent" android:layout_height="wrap_content" -- android:minHeight="@dimen/control_container_height" > -+ android:minHeight="@dimen/control_container_height_cromite" > +- android:minHeight="@dimen/control_container_height"> ++ android:minHeight="@dimen/control_container_height_cromite"> - + app:layout_anchorGravity="bottom" +- /> + android:layout_marginTop="@dimen/control_container_height_cromite" /> 2dp 64dp - + 72dp diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java -@@ -27,7 +27,7 @@ public interface ControlContainer { +@@ -26,7 +26,7 @@ public interface ControlContainer { * * @param toolbarLayoutId The ID of the toolbar layout to use. */ @@ -515,7 +516,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PorterDuff; -@@ -163,8 +164,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -165,8 +166,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout @Override @Initializer @@ -545,7 +546,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/ToolbarLayout.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java -@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp; +@@ -64,6 +64,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp; import org.chromium.components.feature_engagement.Tracker; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.util.MotionEventUtils; @@ -553,7 +554,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.ui.util.TokenHolder; import org.chromium.url.GURL; -@@ -594,7 +595,9 @@ public abstract class ToolbarLayout extends FrameLayout +@@ -581,7 +582,9 @@ public abstract class ToolbarLayout extends FrameLayout * not have a tab strip. */ protected int getTabStripHeightFromResource() { diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index 8c0991d0..10c3c43d 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -38,11 +38,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../skia/src/ports/SkFontConfigInterface.cpp | 4 + .../ports/SkFontConfigInterface_direct.cpp | 5 + .../src/ports/SkFontConfigInterface_direct.h | 1 + - .../skia/src/ports/SkFontMgr_android.cpp | 279 ++- + .../skia/src/ports/SkFontMgr_android.cpp | 277 ++- .../skia/src/ports/SkFontMgr_android_data.cpp | 1640 +++++++++++++++++ .../src/ports/SkFontMgr_android_parser.cpp | 49 +- .../skia/src/ports/SkFontMgr_android_parser.h | 5 +- - 36 files changed, 2415 insertions(+), 76 deletions(-) + 36 files changed, 2414 insertions(+), 75 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h @@ -54,7 +54,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java -@@ -1007,6 +1007,9 @@ public final class ProductionSupportedFlagList { +@@ -1009,6 +1009,9 @@ public final class ProductionSupportedFlagList { "Hides user preference on the system keyboard by setting the standard " + "eng layout and removing the layout information from the " + "javascript keyboard events."), @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7951,6 +7951,13 @@ static_library("browser") { +@@ -8005,6 +8005,13 @@ static_library("browser") { } } @@ -161,7 +161,7 @@ new file mode 100644 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -258,6 +258,10 @@ static_library("renderer") { +@@ -264,6 +264,10 @@ static_library("renderer") { deps += [ "//components/strings" ] } @@ -615,7 +615,7 @@ diff --git a/components/services/font/public/mojom/font_service.mojom b/componen diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -2600,6 +2600,17 @@ source_set("browser") { +@@ -2614,6 +2614,17 @@ source_set("browser") { ] } @@ -633,7 +633,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn if (is_linux || is_chromeos) { sources -= [ "file_system_access/file_path_watcher/file_path_watcher_stub.cc" ] -@@ -2645,6 +2656,13 @@ source_set("browser") { +@@ -2659,6 +2670,13 @@ source_set("browser") { ] } @@ -696,7 +696,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn -@@ -346,6 +346,10 @@ target(link_target_type, "renderer") { +@@ -347,6 +347,10 @@ target(link_target_type, "renderer") { deps += [ "//services/screen_ai/public/mojom" ] } @@ -734,7 +734,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer using blink::Platform; using blink::WebAudioDevice; using blink::WebAudioLatencyHint; -@@ -180,6 +197,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { +@@ -174,6 +191,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { NOTREACHED(); } @@ -772,7 +772,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer } // namespace //------------------------------------------------------------------------------ -@@ -193,18 +241,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +@@ -187,18 +235,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( is_locked_to_site_(false), main_thread_scheduler_(main_thread_scheduler), next_frame_sink_id_(uint32_t{std::numeric_limits::max()} + 1) { @@ -838,7 +838,7 @@ new file mode 100644 diff --git a/skia/BUILD.gn b/skia/BUILD.gn --- a/skia/BUILD.gn +++ b/skia/BUILD.gn -@@ -463,6 +463,18 @@ component("skia") { +@@ -467,6 +467,18 @@ component("skia") { sources += skia_ports_fci_sources } @@ -1257,7 +1257,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia : fScanner(std::move(scanner)) { + custom_ = std::move(custom_in); + auto* custom = custom_.get(); - SkTDArray families; + std::vector> families; if (custom && SkFontMgr_Android_CustomFonts::kPreferSystem != custom->fSystemFontUse) { SkString base(custom->fBasePath); SkFontMgr_Android_Parser::GetCustomFontFamilies( @@ -1278,22 +1278,24 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia } this->buildNameToFamilyMap(families, custom ? custom->fIsolated : false); this->findDefaultStyleSet(); -@@ -309,33 +449,53 @@ protected: - return sset->matchStyle(style); +@@ -306,12 +446,12 @@ protected: } + enum class NameType { Self, Fallback }; - static sk_sp find_family_style_character( + sk_sp find_family_style_character( const SkString& familyName, - const TArray& fallbackNameToFamilyMap, + const TArray& nameToFamilyMap, + NameType nameType, const SkFontStyle& style, bool elegant, - const SkString& langTag, SkUnichar character) + const SkString& langTag, SkUnichar character) const { - for (int i = 0; i < fallbackNameToFamilyMap.size(); ++i) { - SkFontStyleSet_Android* family = fallbackNameToFamilyMap[i].styleSet; - if (familyName != family->fFallbackFor) { - continue; + for (auto&& nameToFamily : nameToFamilyMap) { + SkFontStyleSet_Android* family = nameToFamily.styleSet; +@@ -322,22 +462,42 @@ protected: + continue; + } } - sk_sp face(family->matchAStyle(style)); + if (custom_) { @@ -1334,38 +1336,29 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia + { + continue; + } -+ -+ if (SkToBool(face->fVariantStyle & kElegant_FontVariant) != elegant) { -+ continue; -+ } - if (face->unicharToGlyph(character) != 0) { - return face; ++ if (SkToBool(face->fVariantStyle & kElegant_FontVariant) != elegant) { ++ continue; ++ } ++ + if (face->unicharToGlyph(character) != 0) { + return face; + } } } return nullptr; -@@ -358,7 +518,7 @@ protected: - for (int bcp47Index = bcp47Count; bcp47Index --> 0;) { - SkLanguage lang(bcp47[bcp47Index]); - while (!lang.getTag().isEmpty()) { -- sk_sp matchingTypeface = -+ sk_sp matchingTypeface = - find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, - style, SkToBool(elegant), - lang.getTag(), character); -@@ -369,7 +529,7 @@ protected: - lang = lang.getParent(); - } - } -- sk_sp matchingTypeface = -+ sk_sp matchingTypeface = - find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, - style, SkToBool(elegant), - SkString(), character); -@@ -420,6 +580,7 @@ protected: +@@ -352,7 +512,7 @@ protected: + // The variant 'default' means 'compact and elegant'. + // As a result, it is not possible to know the variant context from the font alone. + // TODO: add 'is_elegant' and 'is_compact' bits to 'style' request. +- sk_sp matchingTypeface; ++ sk_sp matchingTypeface; + SkString familyNameString(familyName); + for (const SkString& currentFamilyName : { familyNameString, SkString() }) { + // The first time match anything elegant, second time anything not elegant. +@@ -432,6 +592,7 @@ protected: private: std::unique_ptr fScanner; @@ -1373,7 +1366,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia TArray> fStyleSets; sk_sp fDefaultStyleSet; -@@ -441,7 +602,7 @@ private: +@@ -453,7 +614,7 @@ private: } sk_sp newSet = @@ -1382,7 +1375,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia if (0 == newSet->count()) { return; } -@@ -486,7 +647,11 @@ static char const * const gSystemFontUseStrings[] = { +@@ -499,7 +660,11 @@ static char const * const gSystemFontUseStrings[] = { } // namespace @@ -1395,7 +1388,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia if (custom) { SkASSERT(0 <= custom->fSystemFontUse); SkASSERT(custom->fSystemFontUse < std::size(gSystemFontUseStrings)); -@@ -496,5 +661,5 @@ sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust +@@ -509,5 +674,5 @@ sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust custom->fFontsXml, custom->fFallbackFontsXml); } @@ -3050,10 +3043,10 @@ new file mode 100644 diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_party/skia/src/ports/SkFontMgr_android_parser.cpp --- a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp +++ b/third_party/skia/src/ports/SkFontMgr_android_parser.cpp -@@ -652,14 +652,27 @@ static const XML_Memory_Handling_Suite sk_XML_alloc = { - * families array. Returns the version of the file, negative if the file does not exist. +@@ -654,14 +654,27 @@ static const XML_Memory_Handling_Suite sk_XML_alloc = { */ - static int parse_config_file(const char* filename, SkTDArray& families, + static int parse_config_file(const char* filename, + std::vector>& families, - const SkString& basePath, bool isFallback) + const SkString& basePath, bool isFallback, + const SkFontMgr_Android_CustomFonts* custom = nullptr) @@ -3084,7 +3077,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par return -1; } -@@ -691,8 +704,8 @@ static int parse_config_file(const char* filename, SkTDArray& famil +@@ -693,8 +706,8 @@ static int parse_config_file(const char* filename, SkDebugf(SK_FONTMGR_ANDROID_PARSER_PREFIX "could not buffer enough to continue\n"); return -1; } @@ -3095,57 +3088,59 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par XML_Status status = XML_ParseBuffer(parser, len, done); if (XML_STATUS_ERROR == status) { XML_Error error = XML_GetErrorCode(parser); -@@ -765,8 +778,10 @@ static void append_fallback_font_families_for_locale(SkTDArray& fal - } +@@ -768,8 +781,10 @@ static void append_fallback_font_families_for_locale( - static void append_system_fallback_font_families(SkTDArray& fallbackFonts, -- const SkString& basePath) -+ const SkString& basePath, + static void append_system_fallback_font_families( + std::vector>& fallbackFonts, +- const SkString& basePath) ++ const SkString& basePath, + const SkFontMgr_Android_CustomFonts* custom) { + if (custom) return; parse_config_file(FALLBACK_FONTS_FILE, fallbackFonts, basePath, true); append_fallback_font_families_for_locale(fallbackFonts, LOCALE_FALLBACK_FONTS_SYSTEM_DIR, -@@ -774,8 +789,10 @@ static void append_system_fallback_font_families(SkTDArray& fallbac - } +@@ -778,8 +793,10 @@ static void append_system_fallback_font_families( - static void mixin_vendor_fallback_font_families(SkTDArray& fallbackFonts, -- const SkString& basePath) -+ const SkString& basePath, + static void mixin_vendor_fallback_font_families( + std::vector>& fallbackFonts, +- const SkString& basePath) ++ const SkString& basePath, + const SkFontMgr_Android_CustomFonts* custom) { + if (custom) return; - SkTDArray vendorFonts; + std::vector> vendorFonts; parse_config_file(VENDOR_FONTS_FILE, vendorFonts, basePath, true); append_fallback_font_families_for_locale(vendorFonts, -@@ -806,7 +823,8 @@ static void mixin_vendor_fallback_font_families(SkTDArray& fallback - } +@@ -811,7 +828,8 @@ static void mixin_vendor_fallback_font_families( } --void SkFontMgr_Android_Parser::GetSystemFontFamilies(SkTDArray& fontFamilies) { -+void SkFontMgr_Android_Parser::GetSystemFontFamilies(SkTDArray& fontFamilies, -+ const SkFontMgr_Android_CustomFonts* custom) { + void SkFontMgr_Android_Parser::GetSystemFontFamilies( +- std::vector>& fontFamilies) ++ std::vector>& fontFamilies, ++ const SkFontMgr_Android_CustomFonts* custom) + { // Version 21 of the system font configuration does not need any fallback configuration files. SkString basePath(getenv("ANDROID_ROOT")); - basePath.append(SK_FONT_FILE_PREFIX, sizeof(SK_FONT_FILE_PREFIX) - 1); -@@ -817,22 +835,23 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies(SkTDArray& fon +@@ -823,8 +841,8 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( // Append all the fallback fonts to system fonts - SkTDArray fallbackFonts; + std::vector> fallbackFonts; - append_system_fallback_font_families(fallbackFonts, basePath); - mixin_vendor_fallback_font_families(fallbackFonts, basePath); + append_system_fallback_font_families(fallbackFonts, basePath, custom); + mixin_vendor_fallback_font_families(fallbackFonts, basePath, custom); - fontFamilies.append(fallbackFonts.size(), fallbackFonts.begin()); - } - - void SkFontMgr_Android_Parser::GetCustomFontFamilies(SkTDArray& fontFamilies, - const SkString& basePath, -+ const SkFontMgr_Android_CustomFonts* custom, - const char* fontsXml, - const char* fallbackFontsXml, - const char* langFallbackFontsDir) + fontFamilies.insert(fontFamilies.end(), + std::make_move_iterator(fallbackFonts.begin()), + std::make_move_iterator(fallbackFonts.end())); +@@ -833,15 +851,16 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( + void SkFontMgr_Android_Parser::GetCustomFontFamilies( + std::vector>& fontFamilies, + const SkString& basePath, ++ const SkFontMgr_Android_CustomFonts* custom, + const char* fontsXml, + const char* fallbackFontsXml, + const char* langFallbackFontsDir) { if (fontsXml) { - parse_config_file(fontsXml, fontFamilies, basePath, false); @@ -3160,7 +3155,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.h b/third_party/skia/src/ports/SkFontMgr_android_parser.h --- a/third_party/skia/src/ports/SkFontMgr_android_parser.h +++ b/third_party/skia/src/ports/SkFontMgr_android_parser.h -@@ -15,6 +15,7 @@ +@@ -17,6 +17,7 @@ #include "include/private/base/SkTArray.h" #include "include/private/base/SkTDArray.h" #include "src/core/SkTHash.h" @@ -3168,16 +3163,16 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.h b/third_party #include #include -@@ -105,11 +106,13 @@ struct FontFamily { +@@ -109,11 +110,13 @@ struct FontFamily { namespace SkFontMgr_Android_Parser { /** Parses system font configuration files and appends result to fontFamilies. */ --void GetSystemFontFamilies(SkTDArray& fontFamilies); -+void GetSystemFontFamilies(SkTDArray& fontFamilies, +-void GetSystemFontFamilies(std::vector>& fontFamilies); ++void GetSystemFontFamilies(std::vector>& fontFamilies, + const SkFontMgr_Android_CustomFonts* custom); /** Parses font configuration files and appends result to fontFamilies. */ - void GetCustomFontFamilies(SkTDArray& fontFamilies, + void GetCustomFontFamilies(std::vector>& fontFamilies, const SkString& basePath, + const SkFontMgr_Android_CustomFonts* custom, const char* fontsXml, diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 14c90d4c..294881ed 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -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 -@@ -16,6 +16,7 @@ +@@ -17,6 +17,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" -@@ -678,7 +679,9 @@ double AudioContext::baseLatency() const { +@@ -850,7 +851,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" -@@ -710,6 +711,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -774,6 +775,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -170,25 +170,18 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ #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" -@@ -156,6 +157,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( - input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]); - -+ value = BaseAudioContext::ShuffleAudioData(value, i); - UNSAFE_TODO(destination[i]) = value; +@@ -117,7 +118,8 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array, + for (unsigned i = 0; i < len; ++i) { + const float linear_value = UNSAFE_TODO(source[i]); + const double db_mag = audio_utilities::LinearToDecibels(linear_value); +- UNSAFE_TODO(destination[i]) = static_cast(db_mag); ++ auto v = static_cast(db_mag); ++ UNSAFE_TODO(destination[i]) = BaseAudioContext::ShuffleAudioData(v, i); } } -@@ -183,6 +185,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { - input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]); - -+ value = BaseAudioContext::ShuffleAudioData(value, i); -+ - // Scale from nominal -1 -> +1 to unsigned byte. - double scaled_value = 128 * (value + 1); - -@@ -306,6 +310,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) { - double scaled_value = + } +@@ -158,6 +160,8 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, + const double scaled_value = UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor; + scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); @@ -196,20 +189,27 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ // Clip to valid range. UNSAFE_TODO(destination[i]) = static_cast(ClampTo(scaled_value, 0, UCHAR_MAX)); -@@ -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); -- UNSAFE_TODO(destination[i]) = static_cast(db_mag); -+ auto v = static_cast(db_mag); -+ UNSAFE_TODO(destination[i]) = BaseAudioContext::ShuffleAudioData(v, i); +@@ -188,6 +192,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( + input_buffer[(i + write_index - fft_size + kInputBufferSize) % + kInputBufferSize]); + ++ value = BaseAudioContext::ShuffleAudioData(value, i); + UNSAFE_TODO(destination[i]) = value; } } - } +@@ -215,6 +220,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { + input_buffer[(i + write_index - fft_size + kInputBufferSize) % + kInputBufferSize]); + ++ value = BaseAudioContext::ShuffleAudioData(value, i); ++ + // Scale from nominal -1 -> +1 to unsigned byte. + const double scaled_value = 128 * (value + 1); + 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 -@@ -575,9 +575,8 @@ +@@ -594,9 +594,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 9f79dd07..a86f6a38 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -109,9 +109,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C +import android.net.Uri; + /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ + @NullMarked public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { - private final Context mContext; -@@ -247,7 +251,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -243,7 +247,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -120,7 +120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -385,6 +389,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -381,6 +385,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -141,7 +141,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 -@@ -190,7 +190,7 @@ namespace { +@@ -191,7 +191,7 @@ namespace { void GetGuestViewDefaultContentSettingRules( bool incognito, RendererContentSettingRules* rules) { @@ -153,7 +153,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 -@@ -312,6 +312,7 @@ build_webui("build") { +@@ -319,6 +319,7 @@ build_webui("build") { "privacy_sandbox/privacy_sandbox_browser_proxy.ts", "relaunch_mixin.ts", "reset_page/reset_browser_proxy.ts", @@ -161,7 +161,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", -@@ -326,7 +327,6 @@ build_webui("build") { +@@ -333,7 +334,6 @@ build_webui("build") { "site_settings/constants.ts", "site_settings/site_settings_mixin.ts", "site_settings/site_settings_prefs_browser_proxy.ts", @@ -172,16 +172,16 @@ 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 -@@ -1342,4 +1342,5 @@ - +@@ -982,4 +982,5 @@ + - + +
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 -@@ -55,6 +55,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ +@@ -54,6 +54,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_availability_mixin.js'; import {getTemplate} from './privacy_page.html.js'; @@ -189,7 +189,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -78,8 +79,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -77,8 +78,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -284,9 +284,9 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -156,6 +157,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS = +@@ -175,6 +176,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS.createChild('localNetworkAccess'); + r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS.hasMigratedToPlugin = true; } + setupContentSettingsRoutes(r); } @@ -391,7 +391,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -334,4 +334,5 @@ +@@ -331,4 +331,5 @@ label="$i18n{siteSettingsLocalNetworkAccess}"> @@ -676,7 +676,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_util. diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -47,7 +47,7 @@ function getCategoryItemMap(): Map { +@@ -50,7 +50,7 @@ function getCategoryItemMap(): Map { } // The following list is ordered alphabetically by |id|. The order in which // these appear in the UI is determined elsewhere in this file. @@ -685,7 +685,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -450,10 +450,36 @@ function getCategoryItemMap(): Map { +@@ -451,10 +451,36 @@ function getCategoryItemMap(): Map { icon: 'privacy:cookie', }, ]; @@ -722,7 +722,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -543,7 +569,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -545,7 +571,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -734,15 +734,15 @@ 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 -@@ -1634,6 +1634,7 @@ static_library("ui") { +@@ -1542,6 +1542,7 @@ static_library("ui") { "//components/commerce/core/mojom:mojo_bindings", "//components/commerce/core/webui", "//components/endpoint_fetcher", + "//components/content_settings/core/browser:browser", "//components/enterprise/common:files_scan_data", "//components/feedback/proto", - "//components/headless/policy", -@@ -4821,6 +4822,7 @@ static_library("ui") { + "//components/headless/console_message_logger", +@@ -4672,6 +4673,7 @@ static_library("ui") { "//components/power_bookmarks/core", "//components/power_bookmarks/storage", "//components/prefs", @@ -770,7 +770,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_bubble_view.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc --- a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc -@@ -256,7 +256,7 @@ void PageInfoBubbleView::OpenMainPage(base::OnceClosure initialized_callback) { +@@ -231,7 +231,7 @@ void PageInfoBubbleView::OpenMainPage(base::OnceClosure initialized_callback) { auto* close_button = page_container_->GetViewByID( PageInfoViewFactory::VIEW_ID_PAGE_INFO_CLOSE_BUTTON); @@ -790,7 +790,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) -@@ -282,8 +283,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -284,8 +285,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -813,7 +813,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); -@@ -298,11 +311,16 @@ void PageInfoMainView::SetPermissionInfo( +@@ -300,11 +313,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -830,7 +830,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); -@@ -310,6 +328,8 @@ void PageInfoMainView::SetPermissionInfo( +@@ -312,6 +330,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -839,7 +839,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), -@@ -320,6 +340,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -322,6 +342,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -853,8 +853,8 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc --- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -28,6 +28,8 @@ - #include "chrome/browser/ui/views/page_info/page_info_security_content_view.h" +@@ -30,6 +30,8 @@ + #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/cookie_controls_state.h" +#include "components/content_settings/core/browser/website_settings_info.h" @@ -862,22 +862,22 @@ 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" -@@ -290,7 +292,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT - ? info.default_setting - : info.setting; +@@ -291,7 +293,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + bool blocked_on_system_level) { + PermissionSetting setting = + permission.setting.value_or(permission.default_setting); + return GetPermissionIcon(info, blocked_on_system_level, setting); +} +// static +const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( -+ const PageInfo::PermissionInfo& info, ++ const PageInfo::PermissionInfo& permission, + bool blocked_on_system_level, + ContentSetting setting) { + auto* info = content_settings::PermissionSettingsRegistry::GetInstance()->Get( + permission.type); // For guard content settings and Automatic Picture-in-Picture, ASK is treated - // as an "on" state. - const bool show_blocked_badge = -@@ -591,6 +600,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -595,6 +604,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kPrinterIcon; break; default: @@ -945,8 +945,8 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c namespace { -@@ -75,17 +100,12 @@ PermissionToggleRowView::PermissionToggleRowView( - // instead of adding it as the only child. +@@ -73,17 +98,12 @@ PermissionToggleRowView::PermissionToggleRowView( + navigation_handler_(navigation_handler) { SetUseDefaultFillLayout(true); row_view_ = AddChildView(std::make_unique()); + row_view_->SetCrossAxisAlignment(views::LayoutAlignment::kCenter); @@ -964,7 +964,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (permission.requesting_origin.has_value()) { std::u16string requesting_origin_string; switch (permission.type) { -@@ -183,6 +203,90 @@ void PermissionToggleRowView::UpdatePermission( +@@ -181,6 +201,90 @@ void PermissionToggleRowView::UpdatePermission( UpdateUiOnPermissionChanged(); } @@ -1055,7 +1055,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c void PermissionToggleRowView::OnToggleButtonPressed() { PageInfoUI::ToggleBetweenAllowAndBlock(permission_); PermissionChanged(); -@@ -191,27 +295,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { +@@ -189,27 +293,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { void PermissionToggleRowView::AddToggleButton( const std::u16string& toggle_accessible_name, int icon_label_spacing) { @@ -1090,7 +1090,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } void PermissionToggleRowView::InitForUserSource( -@@ -253,12 +349,6 @@ void PermissionToggleRowView::InitForUserSource( +@@ -251,12 +347,6 @@ void PermissionToggleRowView::InitForUserSource( auto spacer_view = std::make_unique(); spacer_view->SetPreferredSize(gfx::Size(icon_size, icon_size)); spacer_view_ = row_view_->AddControl(std::move(spacer_view)); @@ -1103,7 +1103,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } } } -@@ -284,6 +374,14 @@ void PermissionToggleRowView::InitForManagedSource( +@@ -282,6 +372,14 @@ void PermissionToggleRowView::InitForManagedSource( } void PermissionToggleRowView::UpdateUiOnPermissionChanged() { @@ -1116,9 +1116,9 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c + } + if (blocked_on_system_level_label_) { - if (permission_.setting == CONTENT_SETTING_DEFAULT) { + if (!permission_.setting) { permission_blocked_on_system_level_ = false; -@@ -329,6 +427,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { +@@ -326,6 +424,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { } } } @@ -1226,7 +1226,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" -@@ -3912,6 +3916,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3855,6 +3859,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1381,7 +1381,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b diff --git a/components/browser_ui/settings/android/BUILD.gn b/components/browser_ui/settings/android/BUILD.gn --- a/components/browser_ui/settings/android/BUILD.gn +++ b/components/browser_ui/settings/android/BUILD.gn -@@ -88,6 +88,7 @@ android_resources("java_resources") { +@@ -92,6 +92,7 @@ android_resources("java_resources") { "java/res/layout/managed_disclaimer_preference_for_radio_groups.xml", "java/res/layout/preference_chrome_image_view.xml", "java/res/layout/preference_spinner.xml", @@ -1544,7 +1544,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 -@@ -156,6 +156,23 @@ android_library("java") { +@@ -153,6 +153,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1568,7 +1568,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -205,6 +222,7 @@ robolectric_library("junit") { +@@ -202,6 +219,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1579,7 +1579,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 -@@ -193,4 +193,11 @@ The order of the following items is from: http://crbug.com/610358. +@@ -197,4 +197,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" /> @@ -2260,7 +2260,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + public ResourceItem( int icon, int title, - @ContentSettingValues @Nullable Integer defaultEnabledValue, + @ContentSetting @Nullable Integer defaultEnabledValue, @@ -662,6 +683,8 @@ public class ContentSettingsResources { R.string.website_settings_window_management_ask, R.string.website_settings_window_management_block); @@ -2270,8 +2270,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return assumeNonNull(null); } -@@ -820,6 +843,14 @@ public class ContentSettingsResources { - return getResourceItem(contentType).getDefaultDisabledValue(); +@@ -824,6 +847,14 @@ public class ContentSettingsResources { + return getCategorySummary(value, isOneTime, /* isApproximateGeolocation= */ false); } + public static int getCategorySummary(int contentType, @@ -2285,7 +2285,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. * -@@ -994,6 +1025,8 @@ public class ContentSettingsResources { +@@ -1002,6 +1033,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { @@ -2297,18 +2297,18 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -344,6 +344,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - website.site() - .getContentSetting( - browserContextHandle, mCategory.getContentSettingsType()); -+ if (contentSetting != null && -+ BromiteCustomContentSettingImpl.processOnBlockList(contentSetting, contentSetting)) { -+ return BromiteCustomContentSettingImpl.isOnBlockList(contentSetting, website, contentSetting); -+ } - if (contentSetting != null) { - return ContentSettingValues.BLOCK == contentSetting; - } -@@ -532,6 +536,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -349,6 +349,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + } else { + @ContentSetting + Integer contentSetting = website.site().getContentSetting(browserContextHandle, type); ++ if (contentSetting != null && ++ BromiteCustomContentSettingImpl.processOnBlockList(type, contentSetting)) { ++ return BromiteCustomContentSettingImpl.isOnBlockList(type, website, contentSetting); ++ } + if (contentSetting != null) { + return ContentSetting.BLOCK == contentSetting; + } +@@ -540,6 +544,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2316,7 +2316,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"); -@@ -567,7 +572,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -575,7 +580,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2326,7 +2326,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -579,12 +585,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -587,12 +593,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2347,9 +2347,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -664,6 +678,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - BrowserContextHandle browserContextHandle = - getSiteSettingsDelegate().getBrowserContextHandle(); +@@ -671,6 +685,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + public boolean onPreferenceChange(Preference preference, Object newValue) { + BrowserContextHandle browserContextHandle = getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); + if (BromiteCustomContentSettingImpl.onPreferenceChange(mCategory, + browserContextHandle, preference, newValue) == true) { @@ -2359,7 +2359,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_RADIO_BUTTON_KEY.equals(preference.getKey()) || BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); -@@ -842,7 +861,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -845,7 +864,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? R.string.website_settings_add_site_description_javascript_optimizer_block : R.string.website_settings_add_site_description_javascript_optimizer_allow; } @@ -2412,10 +2412,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c TriStateSiteSettingsPreference triStateToggle = getPreferenceScreen().findPreference(TRI_STATE_TOGGLE_KEY); + if (triStateToggle == null) return true; - return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); + return (triStateToggle.getCheckedSetting() == ContentSetting.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1320,7 +1345,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1322,7 +1347,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (res_id != -1) { infoText.setSummary(res_id); } else { @@ -2428,7 +2428,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1359,6 +1388,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1361,6 +1390,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2436,7 +2436,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c maybeShowReasonToggleDisabled(screen); -@@ -1571,6 +1601,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1569,6 +1599,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType); } triStateToggle.initialize( @@ -2444,9 +2444,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setting, descriptionIds, iconIds, -@@ -1730,6 +1761,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - @ContentSettingValues - Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); +@@ -1743,6 +1774,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + value = site.getContentSetting(browserContextHandle, contentSettingsType); + } + AlertDialog.Builder alertDialogBuilder = + BromiteCustomContentSettingImpl.buildPreferenceDialog(site, contentSettingsType, @@ -2462,7 +2462,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 -@@ -59,6 +59,7 @@ import java.util.Collection; +@@ -56,6 +56,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2470,7 +2470,7 @@ 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 -@@ -192,7 +193,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -196,7 +197,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.WINDOW_MANAGEMENT: return "window_management_permission_list"; default: @@ -2479,7 +2479,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -598,14 +599,27 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -596,14 +597,27 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { Preference permissionsHeaderPref = findPreference(PREF_PERMISSIONS_HEADER); mMaxPermissionOrder = permissionsHeaderPref.getOrder(); @@ -2508,8 +2508,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1290,7 +1304,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - @ContentSettingValues @Nullable Integer value, +@@ -1199,7 +1213,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + @ContentSetting @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { - if (value == null) return; @@ -2526,16 +2526,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setUpPreferenceCommon(preference, value); preference.setOnPreferenceChangeListener(this); @ContentSettingsType.EnumType -@@ -1298,7 +1321,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - preference.setSummary( +@@ -1211,7 +1234,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment isEmbargoed ? getString(R.string.automatically_blocked) -- : getString(ContentSettingsResources.getCategorySummary(value, isOneTime))); -+ : getString(ContentSettingsResources.getCategorySummary(content_type, value, isOneTime))); + : getString( +- ContentSettingsResources.getCategorySummary( ++ ContentSettingsResources.getCategorySummary(content_type, + value, isOneTime, isApproximateGeolocation))); if (preference instanceof ChromeImageViewPreference) { ChromeImageViewPreference oneTimePreference = (ChromeImageViewPreference) preference; - oneTimePreference.setImageView( -@@ -1313,10 +1336,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1237,10 +1260,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment oneTimePreference.setBackgroundColor(mHighlightColor); } } else { @@ -2554,9 +2554,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } -@@ -1542,14 +1569,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1532,7 +1559,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { - permission = (Boolean) newValue ? getEnabledValue(type) : ContentSettingValues.BLOCK; + permission = (Boolean) newValue ? getEnabledValue(type) : ContentSetting.BLOCK; } else { - permission = (Integer) newValue; + Integer newPermission = @@ -2568,19 +2568,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + permission = (Integer) newValue; } - assumeNonNull(mSite).setContentSetting(browserContextHandle, type, permission); - // In Clank, one time grants are only possible via prompt, not via page + if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS) { +@@ -1553,7 +1586,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment // info. preference.setSummary( -- getString(ContentSettingsResources.getCategorySummary(permission, false))); -+ getString(ContentSettingsResources.getCategorySummary(type, permission, false))); - preference.setIcon(getContentSettingsIcon(type, permission)); - - if (mWebsiteSettingsObserver != null) { + getString( +- ContentSettingsResources.getCategorySummary( ++ ContentSettingsResources.getCategorySummary(type, + permission, + false, + type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java -@@ -57,6 +57,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -55,6 +55,7 @@ public class SiteSettings extends BaseSiteSettingsFragment SettingsUtils.addPreferencesFromResource(this, R.xml.site_settings_preferences); mPageTitle.set(getContext().getString(R.string.prefs_site_settings)); @@ -2588,7 +2589,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configurePreferences(); updatePreferenceStates(); } -@@ -87,7 +88,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -85,7 +86,7 @@ public class SiteSettings extends BaseSiteSettingsFragment // Remove unsupported settings categories. for (@SiteSettingsCategory.Type int type = 0; @@ -2597,7 +2598,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c type++) { if (!getSiteSettingsDelegate().isCategoryVisible(type)) { Preference pref = findPreference(type); -@@ -113,7 +114,7 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -102,7 +103,7 @@ public class SiteSettings extends BaseSiteSettingsFragment @CookieControlsMode int cookieControlsMode = UserPrefs.get(browserContextHandle).getInteger(COOKIE_CONTROLS_MODE); @@ -2606,7 +2607,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -191,20 +192,22 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -176,20 +177,22 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. @@ -2615,7 +2616,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - ContentSettingsResources.getCategorySummary( - setting, /* isOneTime= */ false)); } else { -- @ContentSettingValues +- @ContentSetting - Integer defaultForToggle = - checked - ? ContentSettingsResources.getDefaultEnabledValue(contentType) @@ -2629,7 +2630,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + if (summary != 0) { + p.setSummary(summary); + } else { -+ @ContentSettingValues ++ @ContentSetting + Integer defaultForToggle = + checked + ? ContentSettingsResources.getDefaultEnabledValue(contentType) @@ -2645,25 +2646,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 -@@ -80,7 +80,7 @@ public class SiteSettingsCategory { - Type.SERIAL_PORT, +@@ -82,7 +82,7 @@ public class SiteSettingsCategory { Type.LOCAL_NETWORK_ACCESS, Type.WINDOW_MANAGEMENT, + Type.AUTO_PICTURE_IN_PICTURE, - Type.NUM_ENTRIES + Type.NUM_ENTRIES_CHROMIUM }) @Retention(RetentionPolicy.SOURCE) public @interface Type { -@@ -125,7 +125,7 @@ public class SiteSettingsCategory { - int WINDOW_MANAGEMENT = 36; +@@ -128,7 +128,7 @@ public class SiteSettingsCategory { + int AUTO_PICTURE_IN_PICTURE = 37; /** Number of handled categories used for calculating array sizes. */ -- int NUM_ENTRIES = 37; -+ int NUM_ENTRIES_CHROMIUM = 37; +- int NUM_ENTRIES = 38; ++ int NUM_ENTRIES_CHROMIUM = 38; } private final BrowserContextHandle mBrowserContextHandle; -@@ -176,6 +176,9 @@ public class SiteSettingsCategory { +@@ -179,6 +179,9 @@ public class SiteSettingsCategory { } else { permission = ""; } @@ -2673,7 +2674,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return new SiteSettingsCategory(browserContextHandle, type, permission); } -@@ -184,7 +187,7 @@ public class SiteSettingsCategory { +@@ -187,7 +190,7 @@ public class SiteSettingsCategory { @ContentSettingsType.EnumType int contentSettingsType) { assert contentSettingsType != -1; assert Type.ALL_SITES == 0; @@ -2682,7 +2683,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSettingsType(i) == contentSettingsType) { return createFromType(browserContextHandle, i); } -@@ -195,7 +198,7 @@ public class SiteSettingsCategory { +@@ -198,7 +201,7 @@ public class SiteSettingsCategory { public static @Nullable SiteSettingsCategory createFromPreferenceKey( BrowserContextHandle browserContextHandle, String preferenceKey) { assert Type.ALL_SITES == 0; @@ -2691,7 +2692,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (preferenceKey(i).equals(preferenceKey)) { return createFromType(browserContextHandle, i); } -@@ -278,8 +281,7 @@ public class SiteSettingsCategory { +@@ -283,8 +286,7 @@ public class SiteSettingsCategory { case Type.TRACKING_PROTECTION: return ContentSettingsType.DEFAULT; // Conversion unavailable. } @@ -2701,7 +2702,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } /** -@@ -378,8 +380,12 @@ public class SiteSettingsCategory { +@@ -385,8 +387,12 @@ public class SiteSettingsCategory { case Type.ZOOM: return "zoom"; default: @@ -2717,7 +2718,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 -@@ -208,6 +208,8 @@ public interface SiteSettingsDelegate { +@@ -203,6 +203,8 @@ public interface SiteSettingsDelegate { */ String getRelatedWebsiteSetOwner(String memberOrigin); @@ -2732,7 +2733,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c @@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.components.browser_ui.widget.RadioButtonWithDescription; - import org.chromium.components.content_settings.ContentSettingValues; + import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; /** A 3-state Allowed/Ask/Blocked radio group Preference used for SiteSettings. */ @@ -2750,7 +2751,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c */ public void initialize( + @ContentSettingsType.EnumType int contentType, - @ContentSettingValues int setting, + @ContentSetting int setting, int @Nullable [] descriptionIds, int @Nullable [] iconIds, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled, @@ -2759,7 +2760,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c mSetting = setting; mDescriptionIds = descriptionIds; mIconIds = iconIds; -@@ -92,6 +96,13 @@ public class TriStateSiteSettingsPreference extends Preference +@@ -94,6 +98,13 @@ public class TriStateSiteSettingsPreference extends Preference mRadioGroup = (RadioGroup) holder.findViewById(R.id.radio_button_layout); mRadioGroup.setOnCheckedChangeListener(this); @@ -2776,7 +2777,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/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -344,7 +344,11 @@ public final class Website implements WebsiteEntry { +@@ -361,7 +361,11 @@ public final class Website implements WebsiteEntry { RecordUserAction.record("SoundContentSetting.UnmuteBy.SiteSettings"); } } @@ -2792,7 +2793,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/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 -@@ -124,7 +124,7 @@ public class WebsitePermissionsFetcher { +@@ -128,7 +128,7 @@ public class WebsitePermissionsFetcher { } break; default: @@ -2804,7 +2805,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/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 -@@ -317,7 +317,7 @@ public class WebsitePreferenceBridge { +@@ -318,7 +318,7 @@ public class WebsitePreferenceBridge { case ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER: return true; default: @@ -2813,7 +2814,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -333,7 +333,6 @@ public class WebsitePreferenceBridge { +@@ -334,7 +334,6 @@ public class WebsitePreferenceBridge { public static boolean isCategoryEnabled( BrowserContextHandle browserContextHandle, @ContentSettingsType.EnumType int contentSettingsType) { @@ -2931,7 +2932,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -872,6 +873,7 @@ void ContentSettingsRegistry::Init() { +@@ -879,6 +880,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsRegistry::PLATFORM_CHROMEOS, ContentSettingsInfo::INHERIT_IN_INCOGNITO, PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -3165,7 +3166,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 -@@ -100,10 +100,22 @@ std::ostream& operator<<(std::ostream& os, +@@ -98,10 +98,22 @@ std::ostream& operator<<(std::ostream& os, typedef std::vector ContentSettingsForOneType; @@ -3398,7 +3399,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java -@@ -193,6 +193,15 @@ public class PageInfoPermissionsController extends PageInfoPreferenceSubpageCont +@@ -203,6 +203,15 @@ public class PageInfoPermissionsController extends PageInfoPreferenceSubpageCont : perm1.nameMidSentence.toString()); } @@ -3417,10 +3418,10 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java -@@ -109,6 +109,14 @@ public class PermissionParamsListBuilder { +@@ -100,6 +100,14 @@ public class PermissionParamsListBuilder { + nameStringMidSentence.setSpan( span, 0, nameStringMidSentence.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - boolean allowed = permission.setting != ContentSettingValues.BLOCK; + if (permission.setting == ContentSettingValues.ASK) { + allowed = false; + } @@ -3435,15 +3436,15 @@ 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 -@@ -14,6 +14,7 @@ - #include "base/feature_list.h" +@@ -15,6 +15,7 @@ #include "base/notimplemented.h" #include "components/content_settings/core/browser/host_content_settings_map.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/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" - #include "components/page_info/android/page_info_client.h" -@@ -184,6 +185,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( + #include "components/content_settings/core/common/features.h" +@@ -197,6 +198,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( permissions_to_display.push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -3456,10 +3457,10 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp + } + } + - std::map + std::map user_specified_settings_to_display; std::map -@@ -243,6 +253,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -259,6 +269,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -3477,7 +3478,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 -@@ -22,6 +22,7 @@ +@@ -23,6 +23,7 @@ #include "base/values.h" #include "build/build_config.h" #include "components/browsing_data/content/browsing_data_helper.h" @@ -3485,8 +3486,8 @@ 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" -@@ -1317,6 +1318,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, - // applies to permissions listed in |kPermissionType|. +@@ -1367,6 +1368,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, + // via `HasContentSettingChangedViaPageInfo(type)`. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { + content_settings::WebsiteSettingsRegistry* website_settings = @@ -3500,7 +3501,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) { -@@ -1433,7 +1442,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1494,7 +1503,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3524,15 +3525,15 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_info_ui.cc --- a/components/page_info/page_info_ui.cc +++ b/components/page_info/page_info_ui.cc -@@ -18,6 +18,7 @@ - #include "build/build_config.h" +@@ -16,6 +16,7 @@ + #include "components/content_settings/core/browser/permission_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/browser/website_settings_registry.h" #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" - #include "components/page_info/page_info_ui_delegate.h" -@@ -317,6 +318,13 @@ void CreateOppositeToDefaultSiteException( + #include "components/page_info/page_info_ui.h" +@@ -252,6 +253,13 @@ void CreateOppositeToDefaultSiteException( std::u16string GetPermissionAskStateString(ContentSettingsType type) { int message_id = kInvalidResourceID; @@ -3546,7 +3547,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; -@@ -615,6 +623,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -550,6 +558,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3559,7 +3560,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); -@@ -625,6 +639,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -560,6 +574,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3572,7 +3573,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); -@@ -1051,6 +1071,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -948,6 +968,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index 33dd341a..5b75c189 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -6,25 +6,23 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/BUILD.gn | 5 ---- chrome/android/chrome_java_sources.gni | 1 - - .../android/java/res/xml/main_preferences.xml | 3 +- + .../android/java/res/xml/main_preferences.xml | 2 +- .../PasswordCheckupLauncher.java | 25 ---------------- .../settings/FragmentDependencyProvider.java | 30 ------------------- .../chrome/browser/settings/MainSettings.java | 2 +- - .../settings/SettingsNavigationImpl.java | 13 ++------ + .../settings/SettingsNavigationImpl.java | 3 +- 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/ui/tab_helpers.cc | 2 +- - .../site_settings/SiteSettings.java | 2 +- .../Disable-safety-check.inc | 1 + - 14 files changed, 10 insertions(+), 84 deletions(-) + 12 files changed, 6 insertions(+), 73 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 -@@ -459,7 +459,6 @@ if (_is_default_toolchain) { +@@ -457,7 +457,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:java", "//chrome/browser/regional_capabilities/android:java", "//chrome/browser/safe_browsing/android:java", @@ -32,7 +30,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", -@@ -1136,8 +1135,6 @@ if (_is_default_toolchain) { +@@ -1138,8 +1137,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:junit", "//chrome/browser/recent_tabs/internal:junit", "//chrome/browser/safe_browsing/android:junit", @@ -41,7 +39,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", -@@ -1425,8 +1422,6 @@ if (_is_default_toolchain) { +@@ -1426,8 +1423,6 @@ if (_is_default_toolchain) { "//chrome/browser/quick_delete:javatests", "//chrome/browser/renderer_host/android:javatests", "//chrome/browser/safe_browsing/android:javatests", @@ -53,7 +51,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 -@@ -942,7 +942,6 @@ chrome_java_sources = [ +@@ -950,7 +950,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", @@ -64,20 +62,19 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java 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 -@@ -58,7 +58,8 @@ for the previous order (main_preferences_legacy). --> - android:fragment="org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment" - android:key="safety_check" - android:order="9" -- android:title="@string/prefs_safety_check"/> -+ android:title="@string/prefs_safety_check" -+ app:isPreferenceVisible="false" /> - ++ android:title="@string/prefs_safety_check" app:isPreferenceVisible="false"/> + + windowAndroid.getModalDialogManager(), - accountEmail, - new SettingsCustomTabLauncherImpl()); } @@ -122,12 +119,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage - SettingsNavigationFactory.createSettingsNavigation() - .startSettings(windowAndroid.getContext().get(), SettingsFragment.SAFETY_CHECK); } - - 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 -@@ -34,13 +34,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg +@@ -35,13 +35,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; @@ -187,48 +183,31 @@ 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 -@@ -306,7 +306,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -312,7 +312,7 @@ public class MainSettings extends ChromeBaseSettingsFragment removePreferenceIfPresent(PREF_UI_THEME); } -- if (BuildInfo.getInstance().isAutomotive) { -+ if (((true)) || BuildInfo.getInstance().isAutomotive) { - getPreferenceScreen().removePreference(findPreference(PREF_SAFETY_CHECK)); +- if (DeviceInfo.isAutomotive()) { ++ if (((true)) || isAutomotive()) { getPreferenceScreen().removePreference(findPreference(PREF_SAFETY_HUB)); - } else if (!ChromeFeatureList.sSafetyHub.isEnabled()) { + } else { + findPreference(PREF_SAFETY_HUB) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java --- 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 +@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragm + import org.chromium.chrome.browser.autofill.settings.FinancialAccountsManagementFragment; 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.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; -@@ -47,10 +45,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { - ClearBrowsingDataFragment.createFragmentArgs(context.getClass().getName()); - break; - case SettingsFragment.SAFETY_CHECK: -- if (!ChromeFeatureList.sSafetyHub.isEnabled()) { -- fragmentArgs = SafetyCheckSettingsFragment.createBundle(true); -- } -- break; -+ return; - case SettingsFragment.MAIN: - case SettingsFragment.PAYMENT_METHODS: - case SettingsFragment.SITE: -@@ -110,11 +105,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { +@@ -106,7 +105,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { case SettingsFragment.PAYMENT_METHODS: return AutofillPaymentMethodsFragment.class; case SettingsFragment.SAFETY_CHECK: -- if (ChromeFeatureList.sSafetyHub.isEnabled()) { -- return SafetyHubFragment.class; -- } else { -- return SafetyCheckSettingsFragment.class; -- } +- return SafetyHubFragment.class; + return null; case SettingsFragment.SITE: return SiteSettings.class; @@ -236,7 +215,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 -@@ -3458,7 +3458,6 @@ static_library("browser") { +@@ -3449,7 +3449,6 @@ static_library("browser") { "//chrome/browser/recent_tabs:jni_headers", "//chrome/browser/regional_capabilities", "//chrome/browser/safe_browsing/android:safe_browsing_enums", @@ -297,30 +276,6 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow case OmniboxPedalId.MANAGE_SITE_SETTINGS: delegate.openSettingsPage(SettingsFragment.SITE); break; -diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc ---- a/chrome/browser/ui/tab_helpers.cc -+++ b/chrome/browser/ui/tab_helpers.cc -@@ -571,7 +571,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { - tpcd::trial::ValidityService::MaybeCreateForWebContents(web_contents); - TrustedVaultEncryptionKeysTabHelper::CreateForWebContents(web_contents); - #if BUILDFLAG(IS_ANDROID) -- if (base::FeatureList::IsEnabled(features::kSafetyHub)) { -+ if (((true)) || base::FeatureList::IsEnabled(features::kSafetyHub)) { - auto* service = RevokedPermissionsServiceFactory::GetForProfile(profile); - if (service) { - RevokedPermissionsService::TabHelper::CreateForWebContents(web_contents, -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java -@@ -96,7 +96,7 @@ public class SiteSettings extends BaseSiteSettingsFragment - } - - // Remove the permission autorevocation preference if Safety Hub is not enabled. -- if (!getSiteSettingsDelegate().isSafetyHubEnabled()) { -+ if (((false)) && !getSiteSettingsDelegate().isSafetyHubEnabled()) { - Preference autorevocationPref = - findPreference(PERMISSION_AUTOREVOCATION_PREF); - getPreferenceScreen().removePreference(autorevocationPref); diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc b/cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 7d4b78c7..21de9951 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -15,41 +15,38 @@ See also: https://github.com/bromite/bromite/issues/547 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 --- - .../settings/PasswordSettings.java | 83 +++++++++++- - .../chrome/browser/settings/MainSettings.java | 2 +- - .../chromium/chrome/browser/tab/TabImpl.java | 41 +++++- - chrome/browser/about_flags.cc | 33 ----- - chrome/browser/android/tab_android.cc | 3 +- - chrome/browser/autofill/android/BUILD.gn | 2 +- - .../autofill/AutofillClientProviderUtils.java | 2 +- - ...AutofillThirdPartyModeContentProvider.java | 1 + - chrome/browser/flag_descriptions.cc | 6 - - chrome/browser/flag_descriptions.h | 3 - - .../strings/android_chrome_strings.grd | 6 + - .../ui/autofill/autofill_client_provider.cc | 124 +----------------- - .../ui/autofill/autofill_client_provider.h | 6 - - chrome/browser/ui/tab_helpers.cc | 4 +- - components/android_autofill/browser/BUILD.gn | 1 + - .../browser/android_autofill_manager.cc | 2 + - .../browser/android_autofill_manager.h | 2 + - .../autofill/AutofillManagerWrapper.java | 5 +- - .../components/autofill/AutofillProvider.java | 7 + - .../BrowserSelectionActionMenuDelegate.java | 68 ++++++++++ - .../browser/content_autofill_driver.cc | 11 ++ - .../content/browser/content_autofill_driver.h | 10 ++ - .../content_autofill_driver_factory.cc | 12 ++ - .../content/renderer/autofill_agent.cc | 5 + - .../renderer/password_autofill_agent.cc | 5 +- - .../browser/foundations/autofill_driver.h | 2 + - .../foundations/autofill_driver_factory.cc | 4 + - .../browser/foundations/autofill_manager.h | 2 + - .../foundations/browser_autofill_manager.cc | 2 + - .../foundations/browser_autofill_manager.h | 2 + - .../autofill/core/common/autofill_features.cc | 2 +- - .../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(+), 212 deletions(-) + .../settings/PasswordSettings.java | 83 +++++++++++++++- + .../chrome/browser/settings/MainSettings.java | 16 +-- + .../chromium/chrome/browser/tab/TabImpl.java | 42 ++++++-- + chrome/browser/about_flags.cc | 3 - + chrome/browser/android/tab_android.cc | 3 +- + chrome/browser/autofill/android/BUILD.gn | 2 +- + .../autofill/AutofillClientProviderUtils.java | 2 +- + ...AutofillThirdPartyModeContentProvider.java | 1 + + .../strings/android_chrome_strings.grd | 6 ++ + .../ui/autofill/autofill_client_provider.cc | 97 +------------------ + .../ui/autofill/autofill_client_provider.h | 6 -- + chrome/browser/ui/tab_helpers.cc | 4 +- + components/android_autofill/browser/BUILD.gn | 1 + + .../browser/android_autofill_manager.cc | 2 + + .../browser/android_autofill_manager.h | 2 + + .../autofill/AutofillManagerWrapper.java | 5 +- + .../components/autofill/AutofillProvider.java | 7 ++ + .../BrowserSelectionActionMenuDelegate.java | 68 +++++++++++++ + .../browser/content_autofill_driver.cc | 11 +++ + .../content/browser/content_autofill_driver.h | 10 ++ + .../content_autofill_driver_factory.cc | 12 +++ + .../content/renderer/autofill_agent.cc | 5 + + .../renderer/password_autofill_agent.cc | 5 +- + .../browser/foundations/autofill_driver.h | 2 + + .../foundations/autofill_driver_factory.cc | 4 + + .../browser/foundations/autofill_manager.h | 2 + + .../foundations/browser_autofill_manager.cc | 2 + + .../foundations/browser_autofill_manager.h | 2 + + .../autofill/core/common/autofill_features.cc | 2 +- + .../autofill/core/common/autofill_prefs.cc | 4 +- + .../autofill/core/common/autofill_prefs.h | 5 + + 31 files changed, 278 insertions(+), 138 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 @@ -190,21 +187,35 @@ 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 -@@ -442,7 +442,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -456,20 +456,8 @@ public class MainSettings extends ChromeBaseSettingsFragment } private void updateAutofillPreferences() { -- if (ChromeFeatureList.isEnabled(AutofillFeatures.AUTOFILL_VIRTUAL_VIEW_STRUCTURE_ANDROID)) { -+ if ((false)) { - addPreferenceIfAbsent(PREF_AUTOFILL_SECTION); - addPreferenceIfAbsent(PREF_AUTOFILL_OPTIONS); - Preference preference = findPreference(PREF_AUTOFILL_OPTIONS); +- addPreferenceIfAbsent(PREF_AUTOFILL_SECTION); +- addPreferenceIfAbsent(PREF_AUTOFILL_OPTIONS); +- Preference autofillOptionsPreference = findPreference(PREF_AUTOFILL_OPTIONS); +- autofillOptionsPreference.setFragment(null); +- autofillOptionsPreference.setOnPreferenceClickListener( +- unused -> { +- SettingsNavigationFactory.createSettingsNavigation() +- .startSettings( +- getContext(), +- AutofillOptionsFragment.class, +- AutofillOptionsFragment.createRequiredArgs( +- AutofillOptionsReferrer.SETTINGS)); +- return true; // Means event is consumed. +- }); ++ removePreferenceIfPresent(PREF_AUTOFILL_SECTION); ++ removePreferenceIfPresent(PREF_AUTOFILL_OPTIONS); + findPreference(PREF_AUTOFILL_PAYMENTS) + .setOnPreferenceClickListener( + preference -> diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -113,6 +113,13 @@ import java.lang.annotation.RetentionPolicy; - import java.nio.ByteBuffer; +@@ -116,6 +116,13 @@ import java.nio.ByteBuffer; import java.util.Objects; + import java.util.function.Supplier; +import org.chromium.components.autofill.AutofillSelectionMenuItemHelper; +import org.chromium.components.autofill.BrowserSelectionActionMenuDelegate; @@ -216,7 +227,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. -@@ -1133,6 +1140,11 @@ class TabImpl implements Tab { +@@ -1131,6 +1138,11 @@ class TabImpl implements Tab { for (TabObserver observer : mObservers) observer.onDestroyed(this); mObservers.clear(); @@ -228,15 +239,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1443,6 +1455,7 @@ class TabImpl implements Tab { +@@ -1448,7 +1460,7 @@ class TabImpl implements Tab { * @return iff the AutofillProvider should provide a ViewStructure when prompted. */ boolean providesAutofillStructure() { +- + if ((true)) return true; - if (!ChromeFeatureList.isEnabled( - AutofillFeatures.AUTOFILL_VIRTUAL_VIEW_STRUCTURE_ANDROID)) { + if (mProfile == null || !mProfile.isNativeInitialized()) { return false; -@@ -2249,16 +2262,21 @@ class TabImpl implements Tab { + } +@@ -2251,16 +2263,21 @@ class TabImpl implements Tab { * @return true if the the provider is available for the given WebContents. */ private boolean prepareAutofillProvider(WebContents newWebContents) { @@ -261,10 +273,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav - } else { + assert isInitialized(); + if (mAutofillProvider == null) { + // TODO: crbug.com/432447902 — Provide only an activity context and push changes. mAutofillProvider = new AutofillProvider( - getContext(), -@@ -2267,7 +2285,16 @@ class TabImpl implements Tab { +@@ -2270,7 +2287,16 @@ class TabImpl implements Tab { getContext().getString(R.string.app_name)); TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid); } @@ -285,57 +297,20 @@ 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 -@@ -3990,28 +3990,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { - std::size(kLinkPreviewTriggerTypeLongPress), nullptr}}; +@@ -3984,9 +3984,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { #endif // !BUILDFLAG(IS_ANDROID) --#if BUILDFLAG(IS_ANDROID) --inline constexpr flags_ui::FeatureEntry::FeatureParam -- kAutofillVirtualViewStructureAndroidSkipCompatibilityCheck = { -- autofill::features:: -- kAutofillVirtualViewStructureAndroidSkipsCompatibilityCheck.name, -- "skip_all_checks"}; --inline constexpr flags_ui::FeatureEntry::FeatureParam -- kAutofillVirtualViewStructureAndroidOnlySkipAwgCheck = { -- autofill::features:: -- kAutofillVirtualViewStructureAndroidSkipsCompatibilityCheck.name, -- "only_skip_awg_check"}; -- --inline constexpr flags_ui::FeatureEntry::FeatureVariation -- kAutofillVirtualViewStructureVariation[] = { -- {" without any compatibility check", -- &kAutofillVirtualViewStructureAndroidSkipCompatibilityCheck, 1, -- nullptr}, -- {" without AwG restriction", -- &kAutofillVirtualViewStructureAndroidOnlySkipAwgCheck, 1, nullptr}}; + #if BUILDFLAG(IS_ANDROID) - -#endif // BUILDFLAG(IS_ANDROID) - const FeatureEntry::FeatureParam kGroupSuggestionEnableRecentlyOpenedOnly[] = { {"group_suggestion_enable_recently_opened", "true"}, {"group_suggestion_enable_switch_between", "false"}, -@@ -6618,17 +6596,6 @@ const FeatureEntry kFeatureEntries[] = { - SINGLE_VALUE_TYPE(ui_devtools::switches::kEnableUiDevTools)}, - #endif // BUILDFLAG(IS_CHROMEOS) - --#if BUILDFLAG(IS_ANDROID) -- {"enable-autofill-virtual-view-structure", -- flag_descriptions::kAutofillVirtualViewStructureAndroidName, -- flag_descriptions::kAutofillVirtualViewStructureAndroidDescription, -- kOsAndroid, -- FEATURE_WITH_PARAMS_VALUE_TYPE( -- autofill::features::kAutofillVirtualViewStructureAndroid, -- kAutofillVirtualViewStructureVariation, -- "Skip AutofillService Check")}, --#endif -- - #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 -@@ -444,8 +444,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { +@@ -449,8 +449,7 @@ void TabAndroid::InitializeAutofillIfNecessary(JNIEnv* env) { ->MaybeInitKeyboardSuppressor(); return; } @@ -348,7 +323,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 -@@ -164,7 +164,7 @@ android_library("bottom_sheet_utils_java") { +@@ -163,7 +163,7 @@ android_library("bottom_sheet_utils_java") { generate_jni("jni_headers") { sources = [ "java/src/org/chromium/chrome/browser/autofill/AddressNormalizerFactory.java", @@ -360,12 +335,13 @@ diff --git a/chrome/browser/autofill/android/BUILD.gn b/chrome/browser/autofill/ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java --- a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java +++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java -@@ -82,8 +82,8 @@ public class AutofillClientProviderUtils { +@@ -77,9 +77,9 @@ public class AutofillClientProviderUtils { * @return {@link AndroidAutofillAvailabilityStatus.AVAILABLE} if Android Autofill can be used * or a reason why it can't. */ - @CalledByNative - public static int getAndroidAutofillFrameworkAvailability(PrefService prefs) { + public static int getAndroidAutofillFrameworkAvailability( + @JniType("PrefService*") PrefService prefs) { + if ((true)) return AndroidAutofillAvailabilityStatus.AVAILABLE; if (sAndroidAutofillFrameworkAvailabilityForTesting != null) { return sAndroidAutofillFrameworkAvailabilityForTesting; @@ -381,35 +357,6 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse if (createContentUri().equals(uri)) { final String[] columns = {AUTOFILL_THIRD_PARTY_MODE_COLUMN}; MatrixCursor cursor = new MatrixCursor(columns, 1); -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[] = - "When enabled, changes the amount of time required for VCN enrollment " - "prompt strikes to expire."; - --const char kAutofillVirtualViewStructureAndroidName[] = -- "Enable the setting to provide a virtual view structure for Autofill"; --const char kAutofillVirtualViewStructureAndroidDescription[] = -- "When enabled, a setting allows to switch to using Android Autofill. Chrome" -- " then provides a virtual view structure but no own suggestions."; -- - const char kAutoPictureInPictureForVideoPlaybackName[] = - "Auto picture in picture for video playback"; - const char kAutoPictureInPictureForVideoPlaybackDescription[] = -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 -@@ -597,9 +597,6 @@ extern const char kAutofillUploadCardRequestTimeoutDescription[]; - extern const char kAutofillVcnEnrollStrikeExpiryTimeName[]; - extern const char kAutofillVcnEnrollStrikeExpiryTimeDescription[]; - --extern const char kAutofillVirtualViewStructureAndroidName[]; --extern const char kAutofillVirtualViewStructureAndroidDescription[]; -- - extern const char kAutoPictureInPictureForVideoPlaybackName[]; - extern const char kAutoPictureInPictureForVideoPlaybackDescription[]; - 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 @@ -429,18 +376,18 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro 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 +++ b/chrome/browser/ui/autofill/autofill_client_provider.cc -@@ -17,123 +17,17 @@ - #include "base/android/jni_string.h" - #include "base/task/thread_pool.h" - #include "chrome/browser/autofill/android/android_autofill_availability_status.h" --#include "chrome/browser/autofill/android/jni_headers/AutofillClientProviderUtils_jni.h" +@@ -20,94 +20,15 @@ #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" #include "components/android_autofill/browser/android_autofill_client.h" + #include "components/prefs/android/pref_service_android.h" +- +-// Must come after all headers that specialize FromJniType() / ToJniType(). +-#include "chrome/browser/autofill/android/jni_headers/AutofillClientProviderUtils_jni.h" #endif // BUILDFLAG(IS_ANDROID) namespace autofill { -namespace { - +- -#if BUILDFLAG(IS_ANDROID) -void RecordAvailabilityStatus(AndroidAutofillAvailabilityStatus availability) { - base::UmaHistogramEnumeration("Autofill.AndroidAutofillAvailabilityStatus", @@ -471,18 +418,15 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro -void SetSharedPrefForDeepLink() { - Java_AutofillClientProviderUtils_setAutofillOptionsDeepLinkPref( - base::android::AttachCurrentThread(), -- base::FeatureList::IsEnabled( -- autofill::features::kAutofillVirtualViewStructureAndroid) && -- base::FeatureList::IsEnabled( -- autofill::features::kAutofillDeepLinkAutofillOptions)); --} - +- base::FeatureList::IsEnabled( +- autofill::features::kAutofillDeepLinkAutofillOptions)); +-} + -// Sets a shared pref that allows external apps to use a ContentResolver to -// figure out whether Chrome is using platform autofill over the default. -void SetSharedPrefForSettingsContentProvider(bool uses_platform_autofill) { - if (base::FeatureList::IsEnabled( -- autofill::features::kAutofillVirtualViewStructureAndroid) && -- base::FeatureList::IsEnabled( - autofill::features::kAutofillThirdPartyModeContentProvider)) { - Java_AutofillClientProviderUtils_setThirdPartyModePref( - base::android::AttachCurrentThread(), uses_platform_autofill); @@ -494,35 +438,9 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro - -AndroidAutofillAvailabilityStatus GetAndroidAutofillAvailabilityStatus( - PrefService& prefs) { -- AndroidAutofillAvailabilityStatus availability = static_cast< -- AndroidAutofillAvailabilityStatus>( +- return static_cast( - Java_AutofillClientProviderUtils_getAndroidAutofillFrameworkAvailability( -- base::android::AttachCurrentThread(), prefs.GetJavaObject())); -- // Check whether the returned availability is affected by feature parameters -- // that skip some checks on this client. -- switch (availability) { -- case AndroidAutofillAvailabilityStatus::kAndroidAutofillServiceIsGoogle: -- if (features::kAutofillVirtualViewStructureAndroidSkipsCompatibilityCheck -- .Get() == -- features::VirtualViewStructureSkipChecks::kOnlySkipAwGCheck) { -- availability = AndroidAutofillAvailabilityStatus::kAvailable; -- } -- ABSL_FALLTHROUGH_INTENDED; // No skip-awg-check but skip-all may apply. -- case AndroidAutofillAvailabilityStatus::kAndroidAutofillManagerNotAvailable: -- case AndroidAutofillAvailabilityStatus::kAndroidAutofillNotSupported: -- case AndroidAutofillAvailabilityStatus::kUnknownAndroidAutofillService: -- if (features::kAutofillVirtualViewStructureAndroidSkipsCompatibilityCheck -- .Get() == -- features::VirtualViewStructureSkipChecks::kSkipAllChecks) { -- availability = AndroidAutofillAvailabilityStatus::kAvailable; -- } -- return availability; -- case AndroidAutofillAvailabilityStatus::kAvailable: -- case AndroidAutofillAvailabilityStatus::kSettingTurnedOff: -- case AndroidAutofillAvailabilityStatus::kNotAllowedByPolicy: -- return availability; -- } -- NOTREACHED(); +- base::android::AttachCurrentThread(), &prefs)); -} -#endif // BUILDFLAG(IS_ANDROID) - @@ -555,7 +473,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro #endif // BUILDFLAG(IS_ANDROID) } -@@ -141,15 +35,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; +@@ -115,15 +36,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; void AutofillClientProvider::CreateClientForWebContents( content::WebContents* web_contents) { @@ -571,7 +489,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro } #if BUILDFLAG(IS_ANDROID) -@@ -161,12 +47,6 @@ void AutofillClientProvider::RegisterSyntheticFieldTrialForPackage( +@@ -135,12 +48,6 @@ void AutofillClientProvider::RegisterSyntheticFieldTrialForPackage( } void AutofillClientProvider::DelayRegisteringFieldTrialForA11yDeprecation() { @@ -610,7 +528,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/brow diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -385,9 +385,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -391,9 +391,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents); ChainedBackNavigationTracker::CreateForWebContents(web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); @@ -667,15 +585,15 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component if (event == EVENT_INPUT_SHOWN) manager.notifyInputUiChange(); } } -@@ -129,6 +130,7 @@ public class AutofillManagerWrapper { +@@ -120,6 +121,7 @@ public class AutofillManagerWrapper { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - ComponentName componentName = getAutofillServiceComponentName(autofillManager); + ComponentName componentName = getAutofillServiceComponentName(mAutofillManager); + if (isLoggable()) log("componentName=" + componentName); if (componentName != null) { mPackageName = componentName.getPackageName(); mIsAwGCurrentAutofillService = -@@ -350,7 +352,7 @@ public class AutofillManagerWrapper { +@@ -352,7 +354,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. @@ -684,7 +602,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component } public static boolean isLoggable() { -@@ -364,5 +366,6 @@ public class AutofillManagerWrapper { +@@ -366,5 +368,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); @@ -694,9 +612,9 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component diff --git a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java --- a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java +++ b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillProvider.java -@@ -220,6 +220,10 @@ public class AutofillProvider { - - /** @return whether query autofill suggestion. */ +@@ -252,6 +252,10 @@ public class AutofillProvider { + * @return whether query autofill suggestion. + */ public boolean shouldQueryAutofillSuggestion() { + AutofillManagerWrapper.log("---shouldQueryAutofillSuggestion" + + " mRequest != null=" + (mRequest != null) + @@ -705,7 +623,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component return mRequest != null && mRequest.getFocusField() != null && !getAutofillManagerWrapper().isAutofillInputUiShowing(); -@@ -228,6 +232,7 @@ public class AutofillProvider { +@@ -260,6 +264,7 @@ public class AutofillProvider { public boolean shouldOfferPasskeyEntry() { if (!AndroidAutofillFeatures.ANDROID_AUTOFILL_VIRTUAL_VIEW_STRUCTURE_PASSKEY_LONG_PRESS .isEnabled()) { @@ -713,7 +631,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component return false; } return AutofillProviderJni.get().hasPasskeyRequest(mNativeAutofillProvider); -@@ -240,6 +245,7 @@ public class AutofillProvider { +@@ -272,6 +277,7 @@ public class AutofillProvider { } public void queryAutofillSuggestion() { @@ -721,7 +639,7 @@ diff --git a/components/android_autofill/browser/java/src/org/chromium/component if (shouldQueryAutofillSuggestion()) { FocusField focusField = mRequest.getFocusField(); getAutofillManagerWrapper() -@@ -302,6 +308,7 @@ public class AutofillProvider { +@@ -334,6 +340,7 @@ public class AutofillProvider { float width, float height, boolean hasServerPrediction) { @@ -953,7 +871,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 -@@ -223,6 +223,8 @@ class AutofillManager +@@ -225,6 +225,8 @@ class AutofillManager LifecycleState new_state, base::PassKey pass_key); @@ -965,7 +883,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 -@@ -753,6 +753,8 @@ base::WeakPtr BrowserAutofillManager::GetWeakPtr() { +@@ -809,6 +809,8 @@ base::WeakPtr BrowserAutofillManager::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } @@ -989,51 +907,19 @@ 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 -@@ -948,7 +948,7 @@ BASE_FEATURE(kAutofillThirdPartyModeContentProvider, - BASE_FEATURE(kAutofillVirtualViewStructureAndroid, - "AutofillVirtualViewStructureAndroid", +@@ -935,7 +935,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid, + BASE_FEATURE(kAutofillThirdPartyModeContentProvider, + "AutofillThirdPartyModeContentProvider", base::FEATURE_ENABLED_BY_DEFAULT); - +SET_CROMITE_FEATURE_ENABLED(kAutofillVirtualViewStructureAndroid); #endif // BUILDFLAG(IS_ANDROID) - namespace test { -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 -@@ -338,28 +338,6 @@ COMPONENT_EXPORT(AUTOFILL) - BASE_DECLARE_FEATURE(kAutofillThirdPartyModeContentProvider); - COMPONENT_EXPORT(AUTOFILL) - BASE_DECLARE_FEATURE(kAutofillVirtualViewStructureAndroid); -- --// Used as param for `kAutofillVirtualViewStructureAndroid` to allow --// skipping certain checks when testing manually. --enum class VirtualViewStructureSkipChecks { -- kDontSkip = 0, -- kSkipAllChecks = 1, -- kOnlySkipAwGCheck = 2, --}; -- --inline constexpr base::FeatureParam::Option -- kVirtualViewStructureSkipChecksOption[] = { -- {VirtualViewStructureSkipChecks::kDontSkip, "dont_skip"}, -- {VirtualViewStructureSkipChecks::kSkipAllChecks, "skip_all_checks"}, -- {VirtualViewStructureSkipChecks::kOnlySkipAwGCheck, -- "only_skip_awg_check"}, --}; --inline constexpr base::FeatureParam -- kAutofillVirtualViewStructureAndroidSkipsCompatibilityCheck{ -- &kAutofillVirtualViewStructureAndroid, "skip_compatibility_check", -- VirtualViewStructureSkipChecks::kDontSkip, -- &kVirtualViewStructureSkipChecksOption}; -- - #endif // BUILDFLAG(IS_ANDROID) - - #if BUILDFLAG(IS_APPLE) + // Defines if the "Your Saved Info" page is eligible to be shown in Chrome 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 -@@ -56,6 +56,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -62,6 +62,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(kAutofillCreditCardFidoAuthOfferCheckboxState, true); #endif @@ -1042,7 +928,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto registry->RegisterIntegerPref(kAutocompleteLastVersionRetentionPolicy, 0); registry->RegisterStringPref(kAutofillUploadEncodingSeed, ""); registry->RegisterDictionaryPref(kAutofillVoteUploadEvents); -@@ -95,7 +97,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -101,7 +103,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -1054,7 +940,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h --- a/components/autofill/core/common/autofill_prefs.h +++ b/components/autofill/core/common/autofill_prefs.h -@@ -110,6 +110,11 @@ inline constexpr char kAutofillUploadEventsLastResetTimestamp[] = +@@ -118,6 +118,11 @@ inline constexpr char kAutofillNameAndEmailProfileNotSelectedCounter[] = // retention policy was run. inline constexpr char kAutocompleteLastVersionRetentionPolicy[] = "autocomplete.retention_policy_last_version"; diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index c0104f48..d9bcd35f 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -91,17 +91,17 @@ 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/settings/SettingsNavigationImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java -@@ -12,6 +12,9 @@ import android.os.Bundle; - import androidx.annotation.Nullable; +@@ -11,6 +11,9 @@ import android.os.Bundle; + import androidx.fragment.app.Fragment; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.customtabs.CustomTabActivity; + import org.chromium.base.IntentUtils; - import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragment; - import org.chromium.chrome.browser.autofill.settings.FinancialAccountsManagementFragment; -@@ -31,6 +34,13 @@ public class SettingsNavigationImpl implements SettingsNavigation { + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +@@ -32,6 +35,13 @@ public class SettingsNavigationImpl implements SettingsNavigation { /** Instantiated through SettingsNavigationFactory. */ SettingsNavigationImpl() {} @@ -130,7 +130,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources -@@ -509,7 +514,7 @@ are declared in tools/grit/grit_args.gni. +@@ -527,7 +532,7 @@ are declared in tools/grit/grit_args.gni. Disable @@ -142,7 +142,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp -@@ -2236,6 +2236,9 @@ +@@ -2218,6 +2218,9 @@ URL with %s in place of query @@ -420,7 +420,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3698,6 +3698,9 @@ static_library("browser") { +@@ -3706,6 +3706,9 @@ static_library("browser") { "//components/user_scripts/android", ] } @@ -459,7 +459,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h" #include "chrome/browser/ui/webui/feed_internals/feed_internals_ui.h" -@@ -497,6 +503,15 @@ void PopulateChromeWebUIFrameBinders( +@@ -503,6 +509,15 @@ void PopulateChromeWebUIFrameBinders( } #endif @@ -475,7 +475,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b #if !BUILDFLAG(IS_ANDROID) RegisterWebUIControllerInterfaceBinder< actor_internals::mojom::PageHandlerFactory, ActorInternalsUI>(map); -@@ -653,6 +668,9 @@ void PopulateChromeWebUIFrameBinders( +@@ -660,6 +675,9 @@ void PopulateChromeWebUIFrameBinders( RegisterWebUIControllerInterfaceBinder(map); @@ -485,7 +485,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b RegisterWebUIControllerInterfaceBinder< password_manager::mojom::PageHandlerFactory, PasswordManagerUI>(map); -@@ -676,6 +694,9 @@ void PopulateChromeWebUIFrameBinders( +@@ -683,6 +701,9 @@ void PopulateChromeWebUIFrameBinders( CertificateManagerUI>(map); #endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) @@ -510,7 +510,7 @@ diff --git a/chrome/browser/extensions/extension_util.h b/chrome/browser/extensi diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn -@@ -27,6 +27,13 @@ group("resources") { +@@ -28,6 +28,13 @@ group("resources") { public_deps += [ ":component_extension_resources" ] } @@ -936,7 +936,7 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/ 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 -@@ -680,7 +680,11 @@ static_library("ui") { +@@ -671,7 +671,11 @@ static_library("ui") { deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ] } } @@ -949,7 +949,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn # TODO(crbug.com/413572035): Move into build files of the actual # modules depending on this. eg: autofill, user_education. if (is_chrome_branded) { -@@ -969,6 +973,25 @@ static_library("ui") { +@@ -985,6 +989,25 @@ static_library("ui") { "//extensions/browser:extension_action_enums", ] } @@ -1171,7 +1171,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 -@@ -439,4 +444,7 @@ void RegisterChromeWebUIConfigs() { +@@ -441,4 +446,7 @@ void RegisterChromeWebUIConfigs() { #if BUILDFLAG(ENTERPRISE_WATERMARK) map.AddWebUIConfig(std::make_unique()); #endif @@ -1388,7 +1388,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.h b/chrome/ 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 -@@ -2571,6 +2571,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { +@@ -2560,6 +2560,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { {"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL}, {"searchEnginesQueryURLExplanation", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION}, @@ -1397,7 +1397,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide {"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT}, {"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE}, {"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE}, -@@ -3906,7 +3908,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3849,7 +3851,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, AddSiteSettingsStrings(html_source, profile); AddSiteDataPageStrings(html_source, profile); AddStorageAccessStrings(html_source); @@ -1890,7 +1890,7 @@ new file mode 100644 diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni -@@ -190,6 +190,17 @@ template("chrome_extra_paks") { +@@ -189,6 +189,17 @@ template("chrome_extra_paks") { deps += [ "//chrome/browser/resources:component_extension_resources" ] } @@ -1957,7 +1957,7 @@ diff --git a/components/search_engines/search_engines_switches.cc b/components/s diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc --- a/components/search_engines/template_url.cc +++ b/components/search_engines/template_url.cc -@@ -2079,6 +2079,10 @@ void TemplateURL::SetURL(const std::string& url) { +@@ -2125,6 +2125,10 @@ void TemplateURL::SetURL(const std::string& url) { url_ref().InvalidateCachedValues(); } @@ -1971,7 +1971,7 @@ diff --git a/components/search_engines/template_url.cc b/components/search_engin diff --git a/components/search_engines/template_url.h b/components/search_engines/template_url.h --- a/components/search_engines/template_url.h +++ b/components/search_engines/template_url.h -@@ -989,6 +989,7 @@ class TemplateURL { +@@ -1007,6 +1007,7 @@ class TemplateURL { bool CreatedByRegulatoryProgram() const; void SetURL(const std::string& url); @@ -2020,7 +2020,7 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h --- a/components/search_engines/template_url_service.h +++ b/components/search_engines/template_url_service.h -@@ -255,7 +255,8 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -259,7 +259,8 @@ class TemplateURLService final : public WebDataServiceConsumer, TemplateURL* AddWithOverrides(std::unique_ptr template_url, const std::u16string& short_name, const std::u16string& keyword, @@ -2030,7 +2030,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc // Removes the keyword from the model. This deletes the supplied TemplateURL. // This fails if the supplied template_url is the default search provider. -@@ -341,7 +342,8 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -345,7 +346,8 @@ class TemplateURLService final : public WebDataServiceConsumer, void ResetTemplateURL(TemplateURL* url, const std::u16string& title, const std::u16string& keyword, @@ -2136,7 +2136,7 @@ diff --git a/third_party/polymer/v3_0/BUILD.gn b/third_party/polymer/v3_0/BUILD. diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc --- a/ui/base/template_expressions.cc +++ b/ui/base/template_expressions.cc -@@ -20,6 +20,7 @@ +@@ -16,6 +16,7 @@ #include "base/notreached.h" #include "base/strings/escape.h" #include "base/values.h" @@ -2144,7 +2144,7 @@ diff --git a/ui/base/template_expressions.cc b/ui/base/template_expressions.cc #if DCHECK_IS_ON() #include "third_party/re2/src/re2/re2.h" // nogncheck -@@ -171,11 +172,25 @@ bool ReplaceTemplateExpressionsInternal( +@@ -168,11 +169,25 @@ bool ReplaceTemplateExpressionsInternal( std::string key(source.substr(current_pos, key_end - current_pos)); CHECK(!key.empty()); diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index c9c21a50..d830fb24 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -118,9 +118,9 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc + "DisableToolbarSwipeUp", + base::FEATURE_DISABLED_BY_DEFAULT); + - BASE_FEATURE(kMainRepaintScrollPrefersNewContent, - "MainRepaintScrollPrefersNewContent", - base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kDeferImplInvalidation, + "DeferImplInvalidation", + base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/cc/base/features.h b/cc/base/features.h --- a/cc/base/features.h +++ b/cc/base/features.h @@ -131,8 +131,8 @@ diff --git a/cc/base/features.h b/cc/base/features.h +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kMoveTopToolbarToBottom); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kDisableToolbarSwipeUp); - // Sets raster tree priority to NEW_CONTENT_TAKES_PRIORITY when performing a - // unified scroll with main-thread repaint reasons. + // When enabled, the scheduler will allow deferring impl invalidation frames + // for N frames (default 1) to reduce contention with main frames, allowing diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_controls_offset_manager.cc --- a/cc/input/browser_controls_offset_manager.cc +++ b/cc/input/browser_controls_offset_manager.cc @@ -159,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 -@@ -5098,6 +5098,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -5137,6 +5137,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { if (scroll_delta.IsZero()) return false; @@ -172,14 +172,14 @@ 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 -@@ -58,6 +58,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; +@@ -57,6 +57,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; +import org.chromium.chrome.browser.theme.TopUiThemeColorProvider; import java.util.List; - + import java.util.function.Supplier; @@ -196,7 +197,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T @Initializer public void initializeWithNative( @@ -203,9 +203,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/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 -@@ -76,6 +76,12 @@ import org.chromium.url.GURL; - import java.util.List; +@@ -76,6 +76,12 @@ import java.util.List; import java.util.Objects; + import java.util.function.Supplier; +import org.chromium.chrome.browser.theme.TopUiThemeColorProvider; +import org.chromium.chrome.browser.tab.CurrentTabObserver; @@ -415,7 +415,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import android.graphics.Rect; import android.util.Size; import android.view.InputDevice; -@@ -75,6 +81,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; +@@ -74,6 +80,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.recyclerview.widget.ItemTouchHelper2; import org.chromium.ui.widget.ViewLookupCachingFrameLayout; @@ -549,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. * -@@ -415,6 +541,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -416,6 +542,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO checkAwaitingLayout(); } }; @@ -562,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( -@@ -434,6 +566,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -435,6 +567,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO } }; mRecyclerView.setLayoutManager(layoutManager); @@ -588,7 +588,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations); } -@@ -456,7 +607,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -455,7 +606,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO assumeNonNull(mTabListEmptyCoordinator); mTabListEmptyCoordinator = new TabListEmptyCoordinator( @@ -597,7 +597,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mTabListHighlighter = new TabListHighlighter(mModelList); mTabListMergeAnimationManager = new TabListMergeAnimationManager(mRecyclerView); -@@ -790,6 +941,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -792,6 +943,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO void prepareTabSwitcherPaneView() { registerLayoutChangeListener(); mRecyclerView.setupCustomItemAnimator(); @@ -667,7 +667,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/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 -@@ -46,6 +46,7 @@ import org.chromium.build.BuildConfig; +@@ -45,6 +45,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; @@ -683,7 +683,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * @param context The activity context. -@@ -471,6 +473,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc +@@ -473,6 +475,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc Log.d(TAG, "Geometry not ready using fallback animation."); useFallbackAnimation = true; } @@ -708,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; -@@ -661,6 +662,9 @@ public class FeedSurfaceCoordinator +@@ -681,6 +682,9 @@ public class FeedSurfaceCoordinator ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMarginStart(margin); layoutParams.setMarginEnd(margin); @@ -721,7 +721,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ 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). --> +@@ -44,7 +44,8 @@ found in the LICENSE file. android:fragment="org.chromium.chrome.browser.toolbar.settings.AddressBarSettingsFragment" android:key="address_bar" android:order="7" @@ -843,7 +843,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tabmodel/He diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java -@@ -268,6 +268,10 @@ public class CompositorViewHolder extends FrameLayout +@@ -270,6 +270,10 @@ public class CompositorViewHolder extends FrameLayout @Override public void setCurrentTouchEventOffsets(float top) { EventForwarder forwarder = getEventForwarder(); @@ -854,7 +854,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp if (forwarder != null) forwarder.setCurrentTouchOffsetY(top); } -@@ -917,6 +921,9 @@ public class CompositorViewHolder extends FrameLayout +@@ -941,6 +945,9 @@ public class CompositorViewHolder extends FrameLayout ? assumeNonNull(mApplicationBottomInsetSupplier.get()) .webContentsHeightInset : 0; @@ -867,15 +867,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome.java -@@ -44,6 +44,7 @@ import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.Sc - import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.SwipeHandler; +@@ -43,6 +43,7 @@ import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener.Sw import org.chromium.ui.resources.dynamics.DynamicResourceLoader; + import org.chromium.ui.util.AccessibilityUtil; import org.chromium.ui.util.XrUtils; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import java.util.List; - -@@ -161,7 +162,9 @@ public class LayoutManagerChrome extends LayoutManagerImpl + import java.util.function.Supplier; +@@ -161,7 +162,9 @@ public class LayoutManagerChrome extends LayoutManagerImpl implements Accessibil @Override public SwipeHandler createToolbarSwipeHandler(boolean supportsSwipeToShowTabSwitcher) { @@ -886,7 +886,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -389,9 +392,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -390,9 +393,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl implements Accessibil private static final float SWIPE_RANGE_DEG = 25; private final boolean mSupportsSwipeToShowTabSwitcher; @@ -899,7 +899,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -498,7 +503,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -499,7 +504,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl implements Accessibil return direction == showTabSwitcherScrollDirection || direction == ScrollDirection.LEFT @@ -912,15 +912,15 @@ 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/layouts/LayoutManagerChromeTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java -@@ -42,6 +42,7 @@ import org.chromium.ui.base.WindowAndroid; +@@ -41,6 +41,7 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.dragdrop.DragAndDropDelegate; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; import org.chromium.ui.xr.scenecore.XrSceneCoreSessionManager; +import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; - /** LayoutManagerChromeTablet is the specialization of LayoutManagerChrome for the tablet. */ - @NullMarked -@@ -152,7 +153,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { + import java.util.function.Supplier; + +@@ -153,7 +154,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { bottomSheetController, shareDelegateSupplier, xrSpaceModeObservableSupplier, @@ -971,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 -@@ -355,7 +355,7 @@ public class ScrollDelegate { +@@ -361,7 +361,7 @@ public class ScrollDelegate { boolean useUnadjustedScrollOffset = isRtl != isLeft; float scrollOffset = mScrollOffset; @@ -990,7 +990,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.EnsuresNonNullIf; @@ -116,6 +117,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; @@ -1000,7 +1000,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -272,12 +275,16 @@ public class StripLayoutHelperManager +@@ -274,12 +277,16 @@ public class StripLayoutHelperManager // Drag-Drop private @Nullable TabStripDragHandler mTabStripDragHandler; @@ -1017,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; } -@@ -302,6 +309,7 @@ public class StripLayoutHelperManager +@@ -304,6 +311,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1025,7 +1025,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null) { mModelSelectorButton.drag(x, y); } -@@ -313,6 +321,7 @@ public class StripLayoutHelperManager +@@ -315,6 +323,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1033,7 +1033,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mModelSelectorButton != null && mModelSelectorButton.click(x, y, buttons)) { mModelSelectorButton.handleClick(time, buttons, modifiers); -@@ -326,6 +335,7 @@ public class StripLayoutHelperManager +@@ -328,6 +337,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1041,7 +1041,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -334,6 +344,7 @@ public class StripLayoutHelperManager +@@ -336,6 +346,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1049,7 +1049,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(x, y); } -@@ -475,7 +486,8 @@ public class StripLayoutHelperManager +@@ -477,7 +488,8 @@ public class StripLayoutHelperManager BottomSheetController bottomSheetController, Supplier shareDelegateSupplier, @Nullable ObservableSupplier xrSpaceModeObservableSupplier, @@ -1059,7 +1059,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mContext = context; Resources res = context.getResources(); mManagerHost = managerHost; -@@ -586,6 +598,8 @@ public class StripLayoutHelperManager +@@ -591,6 +603,8 @@ public class StripLayoutHelperManager multiInstanceManager, shareDelegateSupplier, TabGroupListBottomSheetCoordinator::new); @@ -1068,7 +1068,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -854,6 +868,10 @@ public class StripLayoutHelperManager +@@ -860,6 +874,10 @@ public class StripLayoutHelperManager yOffset = 0; } @@ -1079,10 +1079,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -867,7 +885,9 @@ public class StripLayoutHelperManager +@@ -873,7 +891,9 @@ public class StripLayoutHelperManager mStripTransitionScrimOpacity, - mLeftPadding, - mRightPadding, + getActiveStripLayoutHelper().getLeftPaddingToDraw(), + getActiveStripLayoutHelper().getRightPaddingToDraw(), - mTopPadding); + mTopPadding, + viewport.height(), @@ -1090,7 +1090,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -933,11 +953,21 @@ public class StripLayoutHelperManager +@@ -939,11 +959,21 @@ public class StripLayoutHelperManager mRightPadding, mTopPadding); @@ -1166,9 +1166,9 @@ 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 -@@ -26,6 +26,9 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; - import org.chromium.chrome.browser.layouts.scene_layer.SceneOverlayLayer; +@@ -34,6 +34,9 @@ import org.chromium.chrome.browser.tab.TabUtils; import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; + import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.resources.ResourceManager; +import org.chromium.ui.base.DeviceFormFactor; +import org.chromium.base.ContextUtils; @@ -1176,7 +1176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** * The Java component of what is basically a CC Layer that manages drawing the Tab Strip (which is -@@ -106,10 +109,23 @@ public class TabStripSceneLayer extends SceneOverlayLayer { +@@ -115,10 +118,23 @@ public class TabStripSceneLayer extends SceneOverlayLayer { float scrimOpacity, float leftPaddingDp, float rightPaddingDp, @@ -1205,7 +1205,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/findinpage/FindToolbarTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/findinpage/FindToolbarTablet.java --- a/chrome/android/java/src/org/chromium/chrome/browser/findinpage/FindToolbarTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/findinpage/FindToolbarTablet.java -@@ -16,6 +16,8 @@ import android.widget.FrameLayout; +@@ -15,6 +15,8 @@ import android.view.View; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -1214,15 +1214,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/findinpage/Find import org.chromium.chrome.R; import org.chromium.components.browser_ui.widget.animation.CancelAwareAnimatorListener; import org.chromium.ui.interpolators.Interpolators; -@@ -173,9 +175,11 @@ public class FindToolbarTablet extends FindToolbar { +@@ -172,9 +174,11 @@ public class FindToolbarTablet extends FindToolbar { if (show && getVisibility() != View.VISIBLE && mCurrentAnimation != mAnimationEnter) { View anchorView = getRootView().findViewById(R.id.toolbar); -- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams(); +- var lp = (MarginLayoutParams) getLayoutParams(); - lp.topMargin = anchorView.getBottom() - mYInsetPx; - setLayoutParams(lp); + if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { -+ FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams(); ++ var lp = (MarginLayoutParams) getLayoutParams(); + lp.topMargin = anchorView.getBottom() - mYInsetPx; + setLayoutParams(lp); + } @@ -1232,7 +1232,7 @@ 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 -@@ -54,6 +54,8 @@ import org.chromium.ui.OffsetTagConstraints; +@@ -55,6 +55,8 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.util.TokenHolder; @@ -1241,7 +1241,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow /** A class that manages browser control visibility and positioning. */ @NullMarked public class BrowserControlsManager implements ActivityStateListener, BrowserControlsSizer { -@@ -580,6 +582,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -589,6 +591,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon } } @@ -1256,7 +1256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow @Override public int getTopControlsMinHeight() { return mTopControlsMinHeight; -@@ -681,6 +691,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -690,6 +700,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon @Override public float getTopVisibleContentOffset() { @@ -1307,7 +1307,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag 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 -@@ -352,7 +352,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter +@@ -354,7 +354,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter Resources resources, BrowserControlsStateProvider provider) { int scrimVerticalMargin = resources.getDimensionPixelSize(R.dimen.tab_modal_scrim_vertical_margin); @@ -1327,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; -@@ -839,11 +840,16 @@ public class NewTabPage +@@ -840,11 +841,16 @@ public class NewTabPage final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1346,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; -@@ -859,9 +865,7 @@ public class NewTabPage +@@ -860,9 +866,7 @@ public class NewTabPage * strip. */ private int getToolbarExtraYOffset() { @@ -1370,7 +1370,7 @@ 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; -@@ -216,7 +219,12 @@ public class NewTabPageLayout extends LinearLayout +@@ -219,7 +222,12 @@ public class NewTabPageLayout extends LinearLayout mFakeSearchBoxLayout = findViewById(R.id.search_box); mFakeSearchBoxEditText = findViewById(R.id.search_box_text); initializeSiteSectionView(); @@ -1387,10 +1387,10 @@ 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 -@@ -34,6 +34,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; - import org.chromium.components.embedder_support.util.UrlConstants; +@@ -34,6 +34,7 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; + import org.chromium.ui.edge_to_edge.EdgeToEdgePadAdjuster; +import org.chromium.chrome.browser.flags.ChromeFeatureList; /** @@ -1463,7 +1463,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java -@@ -85,6 +85,11 @@ import org.chromium.url.GURL; +@@ -86,6 +86,11 @@ import org.chromium.url.GURL; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -1506,9 +1506,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java -@@ -28,6 +28,10 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; - import org.chromium.ui.resources.ResourceManager; - import org.chromium.ui.resources.dynamics.ViewResourceAdapter; +@@ -31,6 +31,10 @@ import org.chromium.ui.resources.dynamics.ViewResourceAdapter; + + import java.util.function.Supplier; +import android.view.Gravity; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -1517,7 +1517,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato /** * The coordinator for a status indicator that is positioned below the status bar and is persistent. * Typically used to relay status, e.g. indicate user is offline. -@@ -200,6 +204,11 @@ public class StatusIndicatorCoordinator implements TopControlLayer { +@@ -205,6 +209,11 @@ public class StatusIndicatorCoordinator implements TopControlLayer { private void initialize() { final ViewStub stub = mActivity.findViewById(R.id.status_indicator_stub); final ViewResourceFrameLayout root = (ViewResourceFrameLayout) stub.inflate(); @@ -1555,9 +1555,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -218,6 +218,9 @@ import org.chromium.url.GURL; - +@@ -219,6 +219,9 @@ import org.chromium.url.GURL; import java.util.List; + import java.util.function.Supplier; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import android.view.Gravity; @@ -1565,8 +1565,8 @@ 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. -@@ -863,6 +866,17 @@ public class ToolbarManager - }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); +@@ -870,6 +873,17 @@ public class ToolbarManager + mToolbarPositionSupplier, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); mControlContainer = controlContainer; mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { @@ -1583,7 +1583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBookmarkModelSupplier = bookmarkModelSupplier; mBookmarkModelSupplier.addObserver(mBookmarkModelSupplierObserver); -@@ -1505,6 +1519,7 @@ public class ToolbarManager +@@ -1531,6 +1545,7 @@ public class ToolbarManager // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1591,7 +1591,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } else if (mLayoutChangeListener == null) { mLayoutChangeListener = (view, -@@ -1518,6 +1533,7 @@ public class ToolbarManager +@@ -1544,6 +1559,7 @@ public class ToolbarManager oldBottom) -> { if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1599,7 +1599,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener( mLayoutChangeListener); mLayoutChangeListener = null; -@@ -2122,9 +2138,21 @@ public class ToolbarManager +@@ -2149,9 +2165,21 @@ public class ToolbarManager return ((LocationBarCoordinator) mLocationBar).getUrlBarViewRectProvider(); } @@ -1622,7 +1622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar assert mTabGroupUiOneshotSupplier == null; assert mUndoBarThrottle != null; ThemeColorProvider bottomUiThemeColorProvider = -@@ -2139,7 +2167,7 @@ public class ToolbarManager +@@ -2166,7 +2194,7 @@ public class ToolbarManager mActivityTabProvider, mTabModelSelector, mActivity, @@ -1631,7 +1631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBrowserControlsSizer, mScrimManager, mOmniboxFocusStateSupplier, -@@ -2166,7 +2194,7 @@ public class ToolbarManager +@@ -2193,7 +2221,7 @@ public class ToolbarManager mControlsVisibilityDelegate, mFullscreenManager, mEdgeToEdgeControllerSupplier, @@ -1640,7 +1640,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar bottomControlsContentDelegateSupplier, mTabObscuringHandler, mOverlayPanelVisibilitySupplier, -@@ -2174,7 +2202,8 @@ public class ToolbarManager +@@ -2201,7 +2229,8 @@ public class ToolbarManager /* readAloudRestoringSupplier= */ () -> { final var readAloud = mReadAloudControllerSupplier.get(); return readAloud != null && readAloud.isRestoringPlayer(); @@ -1700,16 +1700,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu +import android.os.Build; import androidx.annotation.ColorInt; - import androidx.annotation.Nullable; -@@ -20,6 +21,7 @@ import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.OneshotSupplier; + import androidx.annotation.VisibleForTesting; +@@ -21,6 +22,7 @@ import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.layouts.LayoutManager; import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; -@@ -503,6 +505,12 @@ public class StatusBarColorController +@@ -528,6 +530,12 @@ public class StatusBarColorController UiUtils.setStatusBarIconColor(root, needsDarkStatusBarIcons); UiUtils.setStatusBarColor(window, color); } @@ -1733,7 +1733,7 @@ diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/b #include "cc/resources/scoped_ui_resource.h" #include "cc/slim/layer.h" #include "cc/slim/nine_patch_layer.h" -@@ -116,8 +117,13 @@ void ToolbarLayer::PushResource(int toolbar_resource_id, +@@ -117,8 +118,13 @@ void ToolbarLayer::PushResource(int toolbar_resource_id, debug_layer_->RemoveFromParent(); // Position the toolbar at the bottom of the space available for top controls. @@ -1747,20 +1747,20 @@ diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/b + gfx::PointF(x_offset, content_offset - layer_->bounds().height())); + } - layer_->SetOffsetTag(offset_tag); - } + if (features::IsAndroidAnimatedProgressBarInVizEnabled()) { + toolbar_layers_->SetOffsetTag(offset_tag); diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc --- a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc +++ b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc -@@ -17,6 +17,7 @@ - #include "ui/android/resources/resource_manager_impl.h" +@@ -18,6 +18,7 @@ + #include "ui/base/l10n/l10n_util_android.h" #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/transform.h" +#include "cc/base/features.h" // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/TabStripSceneLayer_jni.h" -@@ -124,8 +125,10 @@ void TabStripSceneLayer::SetContentTree( +@@ -151,8 +152,10 @@ void TabStripSceneLayer::SetContentTree( content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1773,7 +1773,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -181,7 +184,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -208,7 +211,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, jfloat right_padding, jfloat top_padding) { gfx::RectF content(0, y_offset, width, height); @@ -1787,15 +1787,15 @@ 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)); -@@ -190,7 +198,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -217,7 +225,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. -- if (content_tree_) -+ if (content_tree_ && !base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom)) +- if (content_tree_) { ++ if (content_tree_ && !base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom)) { content_tree_->layer()->SetPosition(gfx::PointF(0, -y_offset)); + } - // Update left and right padding layers as required. 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 @@ -1833,7 +1833,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java -@@ -124,6 +124,12 @@ public interface BrowserControlsStateProvider { +@@ -127,6 +127,12 @@ public interface BrowserControlsStateProvider { */ int getTopControlsHairlineHeight(); @@ -1880,10 +1880,10 @@ 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" -@@ -354,6 +355,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -362,6 +363,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kMvcUpdateViewWhenModelChanged, &kNativePageTransitionHardwareCapture, &kNavBarColorAnimation, - &kNewTabPageAndroidTriggerForPrerender2, + &features::kMoveTopToolbarToBottom, + &features::kDisableToolbarSwipeUp, &kNotificationPermissionVariant, @@ -1892,8 +1892,8 @@ 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 -@@ -490,6 +490,10 @@ public abstract class ChromeFeatureList { - "NewTabPageAndroidTriggerForPrerender2"; +@@ -499,6 +499,10 @@ public abstract class ChromeFeatureList { + public static final String NAV_BAR_COLOR_ANIMATION = "NavBarColorAnimation"; public static final String NEW_TAB_PAGE_CUSTOMIZATION = "NewTabPageCustomization"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT = "NewTabPageCustomizationForMvt"; + public static final String DISABLE_TOOLBAR_SWIPE_UP = @@ -1903,10 +1903,10 @@ 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"; -@@ -980,6 +984,10 @@ public abstract class ChromeFeatureList { - newCachedFlag(NOTIFICATION_TRAMPOLINE, false); +@@ -1027,6 +1031,10 @@ public abstract class ChromeFeatureList { public static final CachedFlag sOptimizationGuidePushNotifications = newCachedFlag(OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, true); + public static final CachedFlag sPCctMinimumHeight = newCachedFlag(PCCT_MINIMUM_HEIGHT, true); + public static final CachedFlag sDisableToolbarSwipeUp = + newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); + public static final CachedFlag sMoveTopToolbarToBottom = @@ -1914,10 +1914,10 @@ 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); -@@ -1190,6 +1198,8 @@ public abstract class ChromeFeatureList { - sNewTabPageCustomizationV2, +@@ -1251,6 +1259,8 @@ public abstract class ChromeFeatureList { sNotificationTrampoline, sOptimizationGuidePushNotifications, + sPCctMinimumHeight, + sMoveTopToolbarToBottom, + sDisableToolbarSwipeUp, sPaintPreviewDemo, @@ -1935,7 +1935,7 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/ "android/java/src/org/chromium/chrome/browser/hub/EmptyHubBottomToolbarDelegate.java", "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactory.java", @@ -102,6 +103,10 @@ android_library("java") { - "//ui/android:ui_no_recycler_view_java", + "//ui/edge_to_edge:java", "//url:url_java", ] + deps += [ @@ -1964,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; -@@ -164,6 +166,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { +@@ -167,6 +169,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { mHubPaneHostCoordinator = new HubPaneHostCoordinator( hubPaneHostView, paneManager.getFocusedPaneSupplier(), hubColorMixer); @@ -2122,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 -@@ -2315,7 +2315,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2395,7 +2395,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, @@ -2250,9 +2250,9 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.base.Callback; import org.chromium.base.metrics.RecordUserAction; +import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.base.supplier.Supplier; import org.chromium.build.annotations.MonotonicNonNull; import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; @@ -273,7 +274,16 @@ class AppMenuHandlerImpl assert !(isByPermanentButton && startDragging); @@ -2273,7 +2273,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch 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 -@@ -710,6 +710,7 @@ public class EdgeToEdgeControllerImpl +@@ -694,6 +694,7 @@ public class EdgeToEdgeControllerImpl * the system insets due to the keyboard or the bottom controls being visible. */ private boolean shouldPadAdjusters() { @@ -2284,7 +2284,7 @@ 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 -@@ -134,6 +134,7 @@ public class EdgeToEdgeUtils { +@@ -130,6 +130,7 @@ public class EdgeToEdgeUtils { * being attached to the window. */ public static boolean isEdgeToEdgeBottomChinEnabled(Activity activity) { @@ -2292,7 +2292,7 @@ diff --git a/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome // Make sure we test SDK version before checking the Feature so Field Trials only collect // from qualifying devices. if (!EdgeToEdgeFieldTrialImpl.getBottomChinOverrides().isEnabledForManufacturerVersion()) { -@@ -399,6 +400,7 @@ public class EdgeToEdgeUtils { +@@ -389,6 +390,7 @@ public class EdgeToEdgeUtils { */ @Deprecated static boolean hasTappableNavigationBar(Window window) { @@ -2339,10 +2339,10 @@ 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 -@@ -214,6 +214,7 @@ public class LocationBarCoordinator - uiOverrides.isForcedPhoneStyleOmnibox(), - baseChromeLayout, - deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, +@@ -223,6 +223,7 @@ public class LocationBarCoordinator + ? ControlsPosition.TOP + : mBrowserControlsStateProvider.getControlsPosition(), + mDeferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, + deferredIMEWindowInsetApplicationCallback::getSystemBarInsetsBottom, bottomWindowPaddingSupplier); @@ -2357,39 +2357,40 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow +import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; - import org.chromium.base.BuildInfo; -@@ -25,6 +26,7 @@ import org.chromium.build.annotations.NullMarked; - import org.chromium.build.annotations.Nullable; + import org.chromium.base.Callback; +@@ -25,6 +26,7 @@ import org.chromium.build.annotations.Nullable; + import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider.ControlsPosition; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownEmbedder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.base.WindowAndroid; -@@ -47,6 +49,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl - private final View mAlignmentView; +@@ -50,6 +52,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl private final boolean mForcePhoneStyleOmnibox; + private final Supplier<@ControlsPosition Integer> mControlsPositionSupplier; private final Supplier mKeyboardHeightSupplier; + private final Supplier mSystemBarInsetsBottomSupplier; private final Supplier mBottomWindowPaddingSupplier; private final Context mContext; // Reusable int array to pass to positioning methods that operate on a two element int array. -@@ -85,12 +88,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl - boolean forcePhoneStyleOmnibox, +@@ -89,6 +92,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl @Nullable View baseChromeLayout, + Supplier<@ControlsPosition Integer> controlsPositionSupplier, Supplier keyboardHeightSupplier, + Supplier systemBarInsetsBottomSupplier, Supplier bottomWindowPaddingSupplier) { mWindowAndroid = windowAndroid; mAnchorView = anchorView; - mAlignmentView = alignmentView; +@@ -96,6 +100,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl mForcePhoneStyleOmnibox = forcePhoneStyleOmnibox; + mControlsPositionSupplier = controlsPositionSupplier; mKeyboardHeightSupplier = keyboardHeightSupplier; + mSystemBarInsetsBottomSupplier = systemBarInsetsBottomSupplier; mBottomWindowPaddingSupplier = bottomWindowPaddingSupplier; mContext = mAnchorView.getContext(); mContext.registerComponentCallbacks(this); -@@ -111,6 +116,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl +@@ -116,6 +121,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl mOmniboxAlignmentSupplier.removeObserver(obs); } @@ -2401,7 +2402,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public OmniboxAlignment getCurrentAlignment() { return assertNonNull(mOmniboxAlignmentSupplier.get()); -@@ -134,6 +144,10 @@ class OmniboxSuggestionsDropdownEmbedderImpl +@@ -139,6 +149,10 @@ class OmniboxSuggestionsDropdownEmbedderImpl @Override public void onDetachedFromWindow() { @@ -2412,19 +2413,19 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mAnchorView.removeOnLayoutChangeListener(this); mAlignmentView.removeOnLayoutChangeListener(this); mAnchorView.getViewTreeObserver().removeOnGlobalLayoutListener(this); -@@ -220,6 +234,9 @@ class OmniboxSuggestionsDropdownEmbedderImpl +@@ -235,6 +249,9 @@ class OmniboxSuggestionsDropdownEmbedderImpl + } else { + ViewUtils.getRelativeLayoutPosition(contentView, mAnchorView, mPositionArray); + top = mPositionArray[1] + mAnchorView.getMeasuredHeight() - contentView.getPaddingTop(); ++ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { ++ top -= mPositionArray[1]; ++ } + } - ViewUtils.getRelativeLayoutPosition(contentView, mAnchorView, mPositionArray); - int top = mPositionArray[1] + mAnchorView.getMeasuredHeight() - contentView.getPaddingTop(); -+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { -+ top -= mPositionArray[1]; -+ } - int left; - int width; - int paddingLeft; -@@ -293,6 +310,12 @@ class OmniboxSuggestionsDropdownEmbedderImpl - : contentView.getMeasuredHeight() - keyboardHeight; - int height = Math.min(windowSpace, contentSpace) - top; + if (isTablet()) { +@@ -311,6 +328,12 @@ class OmniboxSuggestionsDropdownEmbedderImpl + height = Math.min(windowSpace, contentSpace) - top; + } + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + ViewCompat.setPaddingRelative( @@ -2435,7 +2436,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow // TODO(pnoland@, https://crbug.com/1416985): avoid pushing changes that are identical to // the previous alignment value. OmniboxAlignment omniboxAlignment = -@@ -301,6 +324,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl +@@ -319,6 +342,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl mOmniboxAlignmentSupplier.set(omniboxAlignment); } @@ -2461,7 +2462,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import androidx.annotation.ColorInt; import androidx.annotation.VisibleForTesting; import androidx.core.view.ViewCompat; -@@ -51,6 +52,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -50,6 +51,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.LazyConstructionPropertyMcp; import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.PropertyModel; @@ -2469,7 +2470,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; -@@ -70,6 +72,7 @@ public class AutocompleteCoordinator +@@ -71,6 +73,7 @@ public class AutocompleteCoordinator private @Nullable OmniboxSuggestionsDropdown mDropdown; private final ObserverList mScrollListenerList = new ObserverList<>(); @@ -2477,7 +2478,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 { -@@ -105,6 +108,7 @@ public class AutocompleteCoordinator +@@ -106,6 +109,7 @@ public class AutocompleteCoordinator Context context = parent.getContext(); ModelList listItems = new ModelList(); @@ -2485,9 +2486,9 @@ 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) -@@ -228,6 +232,16 @@ public class AutocompleteCoordinator +@@ -230,6 +234,16 @@ public class AutocompleteCoordinator + container.findViewById(R.id.omnibox_suggestions_dropdown); - dropdown.forcePhoneStyleOmnibox(forcePhoneStyleOmnibox); dropdown.setAdapter(mAdapter); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // make margins works @@ -2500,12 +2501,12 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + mDropdownEmbedder.getAnchorView().getMeasuredHeight(); + } mRecycledViewPool.ifPresent(p -> dropdown.setRecycledViewPool(p)); - mHolder = new SuggestionListViewHolder(container, dropdown); + mHolder = new SuggestionListViewHolder(suggestionsContainer, dropdown); for (int i = 0; i < mCallbacks.size(); i++) { 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 -@@ -72,6 +72,8 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -74,6 +74,8 @@ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2513,8 +2514,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + import java.util.List; import java.util.Optional; - -@@ -1189,7 +1191,9 @@ class AutocompleteMediator + import java.util.function.Supplier; +@@ -1219,7 +1221,9 @@ class AutocompleteMediator @Override public void onSuggestionDropdownScroll() { mSuggestionsListScrolled = true; @@ -2539,9 +2540,9 @@ 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/OmniboxSuggestionsDropdown.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java -@@ -49,6 +49,9 @@ import org.chromium.ui.util.MotionEventUtils; - - import java.util.Optional; +@@ -36,6 +36,9 @@ import org.chromium.components.omnibox.OmniboxFeatures; + import org.chromium.ui.base.KeyNavigationUtil; + import org.chromium.ui.util.MotionEventUtils; +import android.graphics.Rect; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -2549,15 +2550,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** A widget for showing a list of omnibox suggestions. */ @NullMarked public class OmniboxSuggestionsDropdown extends RecyclerView { -@@ -270,7 +273,6 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -274,7 +277,6 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { addItemDecoration(new SuggestionHorizontalDivider(context)); - mLayoutScrollListener = new SuggestionLayoutScrollListener(context); + mLayoutScrollListener = suggestionLayoutScrollListener; - setLayoutManager(mLayoutScrollListener); mSelectionController = new RecyclerViewSelectionController( mLayoutScrollListener, SelectionController.Mode.SATURATING_WITH_SENTINEL); -@@ -281,6 +283,13 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -285,6 +287,13 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_bottom); int paddingTop = resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top); @@ -2626,7 +2627,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 -@@ -1563,6 +1563,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1515,6 +1515,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2642,7 +2643,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 -@@ -211,6 +211,7 @@ android_library("java") { +@@ -213,6 +213,7 @@ android_library("java") { "//content/public/android:content_java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_annotation_annotation_experimental_java", @@ -2707,7 +2708,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/BottomControlsCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator.java -@@ -34,6 +34,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -33,6 +33,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.resources.dynamics.ViewResourceAdapter; import org.chromium.ui.widget.Toast; @@ -2749,15 +2750,15 @@ 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/BottomControlsMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java -@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeSupplier.Change - import org.chromium.ui.KeyboardVisibilityDelegate; +@@ -27,6 +27,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.base.WindowAndroid; + import org.chromium.ui.edge_to_edge.EdgeToEdgeSupplier.ChangeObserver; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.chrome.browser.flags.ChromeFeatureList; - /** - * This class is responsible for reacting to events from the outside world, interacting with other -@@ -154,6 +155,12 @@ class BottomControlsMediator + import java.util.function.Supplier; + +@@ -155,6 +156,12 @@ class BottomControlsMediator void setBottomControlsVisible(boolean visible) { boolean visibilityChanged = mIsBottomControlsVisible != visible; @@ -2770,7 +2771,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mIsBottomControlsVisible = visible; updateCompositedViewVisibility(); updateAndroidViewVisibility(); -@@ -183,6 +190,19 @@ class BottomControlsMediator +@@ -184,6 +191,19 @@ class BottomControlsMediator mTabObscuringHandler.removeObserver(this); } @@ -2790,7 +2791,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow @Override public void onBottomControlsHeightChanged( int bottomControlsHeight, int bottomControlsMinHeight) { -@@ -272,11 +292,13 @@ class BottomControlsMediator +@@ -273,11 +293,13 @@ class BottomControlsMediator && !mIsInSwipeLayout && getBrowserControls().getBottomControlOffset() == 0; if (visible) { @@ -2903,9 +2904,9 @@ 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 -@@ -76,6 +76,10 @@ import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; +@@ -77,6 +77,10 @@ import java.lang.annotation.RetentionPolicy; import java.util.function.BooleanSupplier; + import java.util.function.Supplier; +import android.view.Gravity; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -2914,7 +2915,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 -@@ -183,6 +187,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -185,6 +189,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout if (view != null) ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height; } @@ -2929,7 +2930,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/TopToolbarOverlayCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator.java -@@ -24,11 +24,14 @@ import org.chromium.chrome.browser.tab.Tab; +@@ -23,12 +23,15 @@ import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.theme.TopUiThemeColorProvider; import org.chromium.chrome.browser.toolbar.R; import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar; @@ -2938,6 +2939,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.ui.resources.ResourceManager; import java.util.List; + import java.util.function.Supplier; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; + @@ -2957,7 +2959,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow .build(); mSceneLayer = new TopToolbarSceneLayer(resourceManagerSupplier); mChangeProcessor = -@@ -130,6 +139,7 @@ public class TopToolbarOverlayCoordinator implements SceneOverlay { +@@ -138,6 +147,7 @@ public class TopToolbarOverlayCoordinator implements SceneOverlay { @Override public SceneOverlayLayer getUpdatedSceneOverlayTree( RectF viewport, RectF visibleViewport, ResourceManager resourceManager, float yOffset) { @@ -2991,15 +2993,15 @@ 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/TopToolbarSceneLayer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java -@@ -17,6 +17,7 @@ import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar.Drawing +@@ -16,6 +16,7 @@ import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar.Drawing import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.resources.ResourceManager; +import org.chromium.chrome.browser.flags.ChromeFeatureList; - /** A SceneLayer to render the top toolbar. This is the "view" piece of the top toolbar overlay. */ - @JNINamespace("android") -@@ -44,6 +45,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { + import java.util.function.Supplier; + +@@ -45,6 +46,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; @@ -3013,7 +3015,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow TopToolbarSceneLayerJni.get() .updateToolbarLayer( mNativePtr, -@@ -53,7 +61,7 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -54,7 +62,7 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { model.get(TopToolbarOverlayProperties.URL_BAR_RESOURCE_ID), model.get(TopToolbarOverlayProperties.URL_BAR_COLOR), model.get(TopToolbarOverlayProperties.X_OFFSET), @@ -3126,7 +3128,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc -@@ -40,6 +40,7 @@ namespace features { +@@ -48,6 +48,7 @@ BASE_FEATURE(kAndroidAnimatedProgressBarInViz, BASE_FEATURE(kAndroidBrowserControlsInViz, "AndroidBrowserControlsInViz", base::FEATURE_ENABLED_BY_DEFAULT); @@ -3134,7 +3136,7 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. // If this flag is enabled, AndroidBrowserControlsInViz and // BottomControlsRefactor with the "Dispatch yOffset" variation must also be -@@ -47,6 +48,7 @@ BASE_FEATURE(kAndroidBrowserControlsInViz, +@@ -55,6 +56,7 @@ BASE_FEATURE(kAndroidBrowserControlsInViz, BASE_FEATURE(kAndroidBcivBottomControls, "AndroidBcivBottomControls", base::FEATURE_ENABLED_BY_DEFAULT); @@ -3145,15 +3147,15 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. 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 -@@ -32,6 +32,7 @@ - #include "base/task/single_thread_task_runner.h" +@@ -33,6 +33,7 @@ #include "base/task/thread_pool.h" #include "base/threading/scoped_blocking_call.h" + #include "base/trace_event/trace_event.h" +#include "cc/base/features.h" #include "cc/base/math_util.h" #include "cc/slim/layer.h" #include "components/input/cursor_manager.h" -@@ -916,6 +917,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -919,6 +920,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/patches/Partitioning-all-cookies-by-top-frame-domain.patch b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch index 3f0ea255..2a1df1ff 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -51,7 +51,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.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 -@@ -3692,7 +3692,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( +@@ -3825,7 +3825,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); if (!cookie_settings) { @@ -77,7 +77,7 @@ diff --git a/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chrome/b 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 -@@ -1127,16 +1127,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( +@@ -1130,16 +1130,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( // UI to interact with SameSite cookies on accounts.google.com, which is used // for displaying a list of available accounts on the NTP // (chrome://new-tab-page), etc. @@ -114,7 +114,7 @@ diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc --- a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +++ b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc -@@ -220,6 +220,7 @@ FederatedIdentityPermissionContext* IsAutograntViaFedCmAllowed( +@@ -221,6 +221,7 @@ FederatedIdentityPermissionContext* IsAutograntViaFedCmAllowed( const url::Origin& embedding_origin, const net::SchemefulSite& embedding_site, const net::SchemefulSite& requesting_site) { @@ -122,7 +122,7 @@ diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_c CHECK(browser_context); if (!rfh->IsFeatureEnabled( network::mojom::PermissionsPolicyFeature::kIdentityCredentialsGet)) { -@@ -466,6 +467,18 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( +@@ -482,6 +483,18 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( std::unique_ptr request_data, permissions::BrowserPermissionCallback callback, net::FirstPartySetMetadata metadata) { @@ -162,17 +162,17 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen - Third-party cookies are allowed + Third-party cookies are partitioned - - Third-party cookies are blocked in Incognito mode -@@ -658,7 +658,7 @@ - Allow third-party cookies + + Third-party cookies are blocked +@@ -667,7 +667,7 @@ + A site you visit can embed content from other sites, for example, images, ads, and text. Cookies set by these other sites are called third-party cookies. - -- Sites will work normally + +- Allow third-party cookies + Partitions all cookies by top frame url - - Block third-party cookies in Incognito mode + + Block third-party cookies diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc --- a/components/content_settings/core/browser/cookie_settings.cc +++ b/components/content_settings/core/browser/cookie_settings.cc @@ -184,7 +184,7 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo if (url.is_empty() || first_party_url.is_empty()) { return; } -@@ -402,8 +403,7 @@ bool CookieSettings::ShouldBlockThirdPartyCookiesInternal() const { +@@ -398,8 +399,7 @@ bool CookieSettings::ShouldBlockThirdPartyCookiesInternal() const { } bool CookieSettings::MitigationsEnabledFor3pcdInternal() const { @@ -506,7 +506,7 @@ diff --git a/services/network/cookie_settings.cc b/services/network/cookie_setti diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc -@@ -903,6 +903,7 @@ void CorsURLLoader::StartRequest() { +@@ -909,6 +909,7 @@ void CorsURLLoader::StartRequest() { } if (request_.credentials_mode == mojom::CredentialsMode::kInclude && @@ -533,7 +533,7 @@ diff --git a/services/network/restricted_cookie_manager.cc b/services/network/re diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc -@@ -2544,6 +2544,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { +@@ -2550,6 +2550,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { auto determine_storage_access_load_outcome = [&]() -> net::cookie_util::ActivateStorageAccessLoadOutcome { @@ -554,7 +554,7 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_init.idl b/t diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc --- a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc -@@ -386,6 +386,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, +@@ -393,6 +393,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, CookieInit* set_options = CookieInit::Create(); set_options->setName(name); set_options->setValue(value); @@ -562,7 +562,7 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/t return set(script_state, set_options, exception_state); } -@@ -409,6 +410,7 @@ ScriptPromise CookieStore::Delete( +@@ -416,6 +417,7 @@ ScriptPromise CookieStore::Delete( set_options->setName(name); set_options->setValue(name.empty() ? "deleted" : ""); set_options->setExpires(0); @@ -570,7 +570,7 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/t return DoWrite(script_state, set_options, exception_state); } -@@ -424,6 +426,7 @@ ScriptPromise CookieStore::Delete( +@@ -431,6 +433,7 @@ ScriptPromise CookieStore::Delete( set_options->setPath(options->path()); set_options->setSameSite(V8CookieSameSite::Enum::kStrict); set_options->setPartitioned(options->partitioned()); diff --git a/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch b/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch index b8e78514..039a58dc 100644 --- a/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch +++ b/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch @@ -10,11 +10,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/blob/blob_memory_controller.cc | 20 ++++++++++--------- .../browser/quota/quota_device_info_helper.cc | 17 ++++++++++++++-- .../approximated_device_memory.cc | 7 ++++++- - .../frame/navigator_concurrent_hardware.cc | 16 ++++++--------- + .../frame/navigator_concurrent_hardware.cc | 18 ++++++----------- .../measure_memory_controller.cc | 5 +++++ .../blink/renderer/core/timing/memory_info.cc | 14 ++++++++++--- .../core/timing/window_performance.cc | 2 +- - 10 files changed, 66 insertions(+), 26 deletions(-) + 10 files changed, 66 insertions(+), 28 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc @@ -59,28 +59,28 @@ new file mode 100644 diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/blob/blob_memory_controller.cc --- a/storage/browser/blob/blob_memory_controller.cc +++ b/storage/browser/blob/blob_memory_controller.cc -@@ -54,6 +54,15 @@ using MemoryAllocation = BlobMemoryController::MemoryAllocation; +@@ -55,6 +55,15 @@ using MemoryAllocation = BlobMemoryController::MemoryAllocation; using QuotaAllocationTask = BlobMemoryController::QuotaAllocationTask; using DiskSpaceFuncPtr = BlobMemoryController::DiskSpaceFuncPtr; +// static +#if BUILDFLAG(IS_ANDROID) -+float approximated_device_memory_gb_ = 4.0; ++constexpr base::ByteCount approximated_device_memory_gb_ = GiB(4.0); +constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024; +#else -+float approximated_device_memory_gb_ = 8.0; ++constexpr base::ByteCount approximated_device_memory_gb_ = GiB(8.0); +constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024; +#endif + File::Error CreateBlobDirectory(const FilePath& blob_storage_dir) { File::Error error = File::FILE_OK; base::CreateDirectoryAndGetError(blob_storage_dir, &error); -@@ -83,23 +92,16 @@ BlobStorageLimits CalculateBlobStorageLimitsImpl( - int64_t disk_size = 0ull; - uint64_t memory_size = optional_memory_size_for_testing - ? optional_memory_size_for_testing.value() -- : base::SysInfo::AmountOfPhysicalMemory(); -+ : approximated_device_memory_gb_; +@@ -85,22 +94,15 @@ BlobStorageLimits CalculateBlobStorageLimitsImpl( + uint64_t memory_size = + optional_memory_size_for_testing + ? optional_memory_size_for_testing.value() +- : base::SysInfo::AmountOfPhysicalMemory().InBytesUnsigned(); ++ : approximated_device_memory_gb_.InBytesUnsigned(); if (disk_enabled && CreateBlobDirectory(storage_dir) == base::File::FILE_OK) - disk_size = base::SysInfo::AmountOfTotalDiskSpace(storage_dir); + disk_size = approximated_device_disk_size; @@ -91,8 +91,7 @@ diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/bl if (memory_size > 0) { -#if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) && \ - defined(ARCH_CPU_64_BITS) - constexpr size_t kTwoGigabytes = 2ull * 1024 * 1024 * 1024; - limits.max_blob_in_memory_space = kTwoGigabytes; + limits.max_blob_in_memory_space = base::GiB(2).InBytesUnsigned(); -#elif BUILDFLAG(IS_ANDROID) - limits.max_blob_in_memory_space = static_cast(memory_size / 100); -#else @@ -112,10 +111,10 @@ diff --git a/storage/browser/quota/quota_device_info_helper.cc b/storage/browser + +// static +#if BUILDFLAG(IS_ANDROID) -+float approximated_device_memory_gb_ = 4.0; ++constexpr base::ByteCount approximated_device_memory_gb_ = GiB(4.0); +constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024; +#else -+float approximated_device_memory_gb_ = 8.0; ++constexpr base::ByteCount approximated_device_memory_gb_ = GiB(8.0); +constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024; +#endif + @@ -132,8 +131,8 @@ diff --git a/storage/browser/quota/quota_device_info_helper.cc b/storage/browser } uint64_t QuotaDeviceInfoHelper::AmountOfPhysicalMemory() const { -- return base::SysInfo::AmountOfPhysicalMemory(); -+ return approximated_device_memory_gb_; +- return base::SysInfo::AmountOfPhysicalMemory().InBytesUnsigned(); ++ return approximated_device_memory_gb_.InBytesUnsigned(); } } // namespace storage @@ -163,7 +162,7 @@ diff --git a/third_party/blink/common/device_memory/approximated_device_memory.c diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc --- a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc +++ b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc -@@ -3,22 +3,18 @@ +@@ -3,26 +3,20 @@ // found in the LICENSE file. #include "third_party/blink/renderer/core/frame/navigator_concurrent_hardware.h" @@ -174,18 +173,22 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware namespace blink { +-namespace { +- -// TODO(435582603): Hard-coding this to a common value is a reasonable start, -// but it likely makes sense to vary the hard-coded number by platform and -// form-factor in order to maintain plausibility over time. -constexpr unsigned kReducedHardwareConcurrencyValue = 8u; - + } // namespace + unsigned NavigatorConcurrentHardware::hardwareConcurrency() const { - if (RuntimeEnabledFeatures::ReduceHardwareConcurrencyEnabled()) { - return kReducedHardwareConcurrencyValue; - } - return static_cast(base::SysInfo::NumberOfProcessors()); +#if BUILDFLAG(IS_ANDROID) -+ return static_cast(2); ++ return static_cast(4); +#else + return static_cast(8); +#endif @@ -195,7 +198,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware diff --git a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc --- a/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc +++ b/third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.cc -@@ -8,6 +8,7 @@ +@@ -10,6 +10,7 @@ #include "base/rand_util.h" #include "components/performance_manager/public/mojom/coordination_unit.mojom-blink.h" #include "services/metrics/public/cpp/ukm_builders.h" @@ -203,7 +206,7 @@ diff --git a/third_party/blink/renderer/core/timing/measure_memory/measure_memor #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/to_v8_traits.h" -@@ -85,6 +86,10 @@ enum class ApiStatus { +@@ -86,6 +87,10 @@ enum class ApiStatus { }; ApiStatus CheckMeasureMemoryAvailability() { diff --git a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch index eacf52dd..2c832d42 100644 --- a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch +++ b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch @@ -6,16 +6,16 @@ Avoid displaying info about intrusive ads License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../site_settings/SingleWebsiteSettings.java | 52 ++++++++++++------- + .../site_settings/SingleWebsiteSettings.java | 51 ++++++++++++------- .../browser_ui/site_settings/Website.java | 14 ++++- .../bromite_content_settings/javascript.inc | 4 ++ - 3 files changed, 50 insertions(+), 20 deletions(-) + 3 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 components/content_settings/core/browser/bromite_content_settings/javascript.inc 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 -@@ -628,6 +628,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -626,6 +626,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { setUpJavascriptPreference(preference); @@ -23,16 +23,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + setUpCookiesPreference(preference); } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); - } else if (type == ContentSettingsType.NOTIFICATIONS) { -@@ -1212,18 +1214,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + } else if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS) { +@@ -1110,17 +1112,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setUpAdsInformationalBanner() { // Add the informational banner which shows at the top of the UI if ad blocking is // activated on this site. - boolean adBlockingActivated = - SiteSettingsCategory.adsCategoryEnabled() - && WebsitePreferenceBridge.getAdBlockingActivated( -- getSiteSettingsDelegate().getBrowserContextHandle(), -- mSite.getAddress().getOrigin()) +- getBrowserContextHandle(), mSite.getAddress().getOrigin()) - && findPreference(assumeNonNull(getPreferenceKey(ContentSettingsType.ADS))) - != null; - @@ -43,8 +42,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } @RequiresNonNull({"mSite"}) -@@ -1449,12 +1441,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - @ContentSettingValues +@@ -1440,12 +1433,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + @ContentSetting @Nullable Integer currentValue = mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT); - // If Javascript is blocked by default, then always show a Javascript permission. @@ -52,18 +51,18 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - if ((currentValue == null) - && !WebsitePreferenceBridge.isCategoryEnabled( - browserContextHandle, ContentSettingsType.JAVASCRIPT)) { -- currentValue = ContentSettingValues.BLOCK; +- currentValue = ContentSetting.BLOCK; + // Always show the Javascript permission + if (currentValue == null) { + currentValue = + WebsitePreferenceBridge.isCategoryEnabled( + browserContextHandle, ContentSettingsType.JAVASCRIPT) + ? ContentSettingValues.ALLOW -+ : ContentSettingValues.BLOCK; ++ : ContentSetting.BLOCK; } // Not possible to embargo JAVASCRIPT. setupContentSettingsPreference( -@@ -1464,6 +1457,29 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1455,6 +1449,29 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment isOneTime(ContentSettingsType.JAVASCRIPT)); } @@ -92,8 +91,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + /** * Updates the ads list preference based on whether the site is a candidate for blocking. This - * has some custom behavior. -@@ -1483,9 +1499,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + * has some custom behavior. 1. If the site is a candidate and has activation, the permission +@@ -1472,9 +1489,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } // If the ad blocker is activated, then this site will have ads blocked unless there is an // explicit permission disallowing the blocking. @@ -101,17 +100,17 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - WebsitePreferenceBridge.getAdBlockingActivated( - browserContextHandle, mSite.getAddress().getOrigin()); + boolean activated = true; - @ContentSettingValues + @ContentSetting @Nullable Integer permission = mSite.getContentSetting(browserContextHandle, ContentSettingsType.ADS); diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -299,7 +299,19 @@ public final class Website implements WebsiteEntry { +@@ -316,7 +316,19 @@ public final class Website implements WebsiteEntry { new ContentSettingException( ContentSettingsType.ADS, getAddress().getOrigin(), -- ContentSettingValues.BLOCK, +- ContentSetting.BLOCK, + value, + ProviderType.NONE, + /* isEmbargoed= */ false); diff --git a/build/patches/kill-Auth.patch b/build/patches/kill-Auth.patch index d1b03d49..3cd70e5f 100644 --- a/build/patches/kill-Auth.patch +++ b/build/patches/kill-Auth.patch @@ -4,127 +4,23 @@ Subject: kill Auth License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../signin/SystemAccountManagerDelegate.java | 78 +------------------ - 1 file changed, 4 insertions(+), 74 deletions(-) + .../components/signin/AccountManagerFacadeProvider.java | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) -diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java ---- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java -+++ b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java -@@ -24,9 +24,6 @@ import android.os.PatternMatcher; - import android.os.Process; - import android.os.SystemClock; +diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeProvider.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeProvider.java +--- a/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeProvider.java ++++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountManagerFacadeProvider.java +@@ -24,11 +24,7 @@ public class AccountManagerFacadeProvider { + private static final AccountManagerFacade INSTANCE; --import com.google.android.gms.auth.GoogleAuthException; --import com.google.android.gms.auth.GoogleAuthUtil; -- - import org.chromium.base.ApiCompatibilityUtils; - import org.chromium.base.Callback; - import org.chromium.base.ContextUtils; -@@ -94,18 +91,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - - @Override - public Account[] getAccountsSynchronous() throws AccountManagerDelegateException { -- if (!isGooglePlayServicesAvailable()) { -- throw new AccountManagerDelegateException("Can't use Google Play Services"); -- } -- if (hasGetAccountsPermission()) { -- long startTime = SystemClock.elapsedRealtime(); -- Account[] accounts = -- mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); -- RecordHistogram.recordTimesHistogram( -- "Signin.AndroidGetAccountsTime_AccountManager", -- SystemClock.elapsedRealtime() - startTime); -- return accounts; -- } - // Don't report any accounts if we don't have permission. - // TODO(crbug.com/40942462): Throw an exception if permission was denied. - return new Account[] {}; -@@ -116,43 +101,13 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - public AccessTokenData getAccessToken(Account account, String authTokenScope) - throws AuthException { - ThreadUtils.assertOnBackgroundThread(); -- assert AccountUtils.GOOGLE_ACCOUNT_TYPE.equals(account.type); -- try { -- return new AccessTokenData( -- GoogleAuthUtil.getTokenWithNotification( -- ContextUtils.getApplicationContext(), account, authTokenScope, null)); -- } catch (GoogleAuthException ex) { -- // This case includes a UserRecoverableNotifiedException, but most clients will have -- // their own retry mechanism anyway. -- throw new AuthException( -- "Error while getting token for scope '" + authTokenScope + "'", -- ex, -- new GoogleServiceAuthError( -- GoogleServiceAuthErrorState.INVALID_GAIA_CREDENTIALS)); -- } catch (IOException ex) { -- throw new AuthException( -- "Error while getting token for scope '" + authTokenScope + "'", -- ex, -- new GoogleServiceAuthError(GoogleServiceAuthErrorState.CONNECTION_FAILED)); -- } -+ throw new AuthException(AuthException.NONTRANSIENT, -+ "Error while getting token for scope '" + authTokenScope + "'", -+ new IOException()); + static { +- AccountManagerDelegate delegate = +- ServiceLoaderUtil.maybeCreate(AccountManagerDelegate.class); +- if (delegate == null) { +- delegate = new NullAccountManagerDelegate(); +- } ++ delegate = new NullAccountManagerDelegate(); + INSTANCE = new AccountManagerFacadeImpl(delegate); + } } - - @Override - public void invalidateAccessToken(String authToken) throws AuthException { -- try { -- GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken); -- } catch (GoogleAuthException ex) { -- throw new AuthException( -- "Error while invalidating access token", -- ex, -- new GoogleServiceAuthError( -- GoogleServiceAuthErrorState.INVALID_GAIA_CREDENTIALS)); -- } catch (IOException ex) { -- throw new AuthException( -- "Error while invalidating access token", -- ex, -- new GoogleServiceAuthError(GoogleServiceAuthErrorState.CONNECTION_FAILED)); -- } - } - - @Override -@@ -168,24 +123,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - @SuppressLint("MissingPermission") - @Override - public void createAddAccountIntent(Callback<@Nullable Intent> callback) { -- AccountManagerCallback accountManagerCallback = -- accountManagerFuture -> { -- try { -- Bundle bundle = accountManagerFuture.getResult(); -- callback.onResult(bundle.getParcelable(AccountManager.KEY_INTENT)); -- } catch (OperationCanceledException | IOException | AuthenticatorException e) { -- Log.e(TAG, "Error while creating an intent to add an account: ", e); -- callback.onResult(null); -- } -- }; -- mAccountManager.addAccount( -- GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, -- null, -- null, -- null, -- null, -- accountManagerCallback, -- null); - } - - // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs -@@ -219,14 +156,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - - @Override - public @Nullable GaiaId getAccountGaiaId(String accountEmail) { -- try { -- return new GaiaId( -- GoogleAuthUtil.getAccountId( -- ContextUtils.getApplicationContext(), accountEmail)); -- } catch (IOException | GoogleAuthException ex) { -- Log.e(TAG, "SystemAccountManagerDelegate.getAccountGaiaId", ex); -- return null; -- } -+ return null; - } - - @Override -- From 52aa63df2f60b5a729ff8ed5d38ba502005aea8d Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 29 Sep 2025 11:51:54 +0200 Subject: [PATCH 3/8] Bump to 141.0.7390.43 --- build/RELEASE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASE b/build/RELEASE index 8cdc4f23..8de0288a 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -140.0.7339.186 \ No newline at end of file +141.0.7390.43 \ No newline at end of file From 610064ef2d39ff23c4bd85ca7b13baaa7687e8d6 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 1 Oct 2025 16:04:10 +0200 Subject: [PATCH 4/8] Patches for 141 (final) --- ...dd-Alt-D-hotkey-to-focus-address-bar.patch | 15 +- .../Add-an-always-incognito-mode.patch | 2 +- build/patches/Add-autoplay-site-setting.patch | 16 +- build/patches/Add-cromite-flags-support.patch | 2 +- ...-to-disable-external-intent-requests.patch | 2 +- .../Add-menu-item-to-bookmark-all-tabs.patch | 15 +- ...-to-not-persist-tabs-across-sessions.patch | 20 +- build/patches/Add-webGL-site-setting.patch | 16 +- build/patches/Add-webRTC-site-settings.patch | 16 +- .../patches/Android-Pixel-Perfect-Mode.patch | 7 +- ...Ask-for-restart-on-connection-change.patch | 2 +- ...ioBuffer-AnalyserNode-fp-mitigations.patch | 19 +- build/patches/Change-popup-site-setting.patch | 18 +- build/patches/Client-hints-overrides.patch | 37 +- .../Content-settings-infrastructure.patch | 191 +++--- build/patches/Cromite-Branding.patch | 30 +- ...ctionary-suggestions-for-the-Omnibox.patch | 14 +- .../patches/Disable-all-predictors-code.patch | 148 ++++- build/patches/Disable-safety-check.patch | 4 +- build/patches/Enable-Cert-Management-UI.patch | 12 +- build/patches/Enable-component-updater.patch | 2 +- .../Enable-native-Android-autofill.patch | 52 +- ...le-search-engine-settings-desktop-ui.patch | 37 +- build/patches/Eyeo-Adblock-for-Cromite.patch | 547 ++++++++++++++++-- build/patches/JIT-site-settings.patch | 16 +- build/patches/Logcat-crash-reports-UI.patch | 27 +- .../Move-navigation-bar-to-bottom.patch | 154 ++--- ...vate-network-access-content-settings.patch | 16 +- .../Remove-binary-blob-integrations.patch | 61 +- ...t-for-device-memory-and-cpu-recovery.patch | 18 +- ...Remove-voice-recognition-integration.patch | 13 +- .../Restore-LastTabStandingTracker.patch | 7 +- .../Restore-Search-Ready-Omnibox-flag.patch | 9 +- .../Restore-Simplified-NTP-launch.patch | 78 ++- .../Restore-chrome-password-store.patch | 122 ++-- ...tings-for-cookies-javascript-and-ads.patch | 10 +- build/patches/Site-setting-for-images.patch | 16 +- ...e-experimental-web-platform-features.patch | 2 +- build/patches/Timezone-customization.patch | 53 +- .../Use-list-mode-for-tab-switcher.patch | 33 +- build/patches/User-agent-customization.patch | 28 +- build/patches/Viewport-Protection-flag.patch | 16 +- build/patches/kill-Auth.patch | 2 +- ...ed-chromium-no-special-hosts-domains.patch | 22 +- 44 files changed, 1352 insertions(+), 575 deletions(-) diff --git a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index 26d2be12..fceaf6d3 100644 --- a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -4,21 +4,22 @@ Subject: Add Alt+D hotkey to focus address bar License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../src/org/chromium/chrome/browser/KeyboardShortcuts.java | 5 +++++ - 1 file changed, 5 insertions(+) + .../src/org/chromium/chrome/browser/KeyboardShortcuts.java | 6 ++++++ + 1 file changed, 6 insertions(+) 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 -@@ -895,6 +895,11 @@ public class KeyboardShortcuts { +@@ -895,6 +895,12 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_ESCAPE, KeyEvent.META_CTRL_ON); } + addShortcut(context, -+ shortcutGroupsById.get(R.string.keyboard_shortcut_chrome_feature_group_header), -+ R.string.keyboard_shortcut_address_bar, -+ KeyEvent.KEYCODE_D, -+ KeyEvent.META_ALT_ON); ++ shortcutGroupsById, ++ R.string.keyboard_shortcut_chrome_feature_group_header, ++ R.string.keyboard_shortcut_address_bar, ++ KeyEvent.KEYCODE_D, ++ KeyEvent.META_ALT_ON); return new ArrayList<>(shortcutGroupsById.values()); } diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index a546fdaf..ea86a9a7 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -802,7 +802,7 @@ new file mode 100644 + ApplicationLifetime.terminate(true); + } + }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN) -+ .setSingleLine(false) ++ .setDefaultLines(false) + .setAction(getActivity().getString(R.string.relaunch), + /*actionData*/null) + .setDuration(/*durationMs*/70000); diff --git a/build/patches/Add-autoplay-site-setting.patch b/build/patches/Add-autoplay-site-setting.patch index 4d3ff33b..de521ad9 100644 --- a/build/patches/Add-autoplay-site-setting.patch +++ b/build/patches/Add-autoplay-site-setting.patch @@ -164,7 +164,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -177,8 +177,8 @@ new file mode 100644 +public class BromiteAutoplayContentSetting extends BromiteCustomContentSetting { + public BromiteAutoplayContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.AUTOPLAY, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "autoplay", + /*profilePrefKey*/ "autoplay"); @@ -197,11 +197,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_autoplay_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_autoplay_disabled; + default: + return 0; @@ -229,8 +229,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/autoplay.grdp b/components/browser_ui/strings/bromite_content_settings/autoplay.grdp diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 4699cfae..dd948ed4 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -605,7 +605,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin + ApplicationLifetime.terminate(true); + } + }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN) -+ .setSingleLine(false) ++ .setDefaultLines(false) + .setAction(mActivity.getString(R.string.relaunch), + /*actionData*/null) + .setDuration(/*durationMs*/70000); diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index 578cfdd3..10ff8e43 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext public boolean shouldDisableExternalIntentRequestsForUrl( ExternalNavigationParams params, Intent intent) { - return false; -+ if ("tel".equals(url.getScheme())) return false; ++ if ("tel".equals(params.getUrl().getScheme())) return false; + return !sAllowExternalIntentRequests.getInstance().isEnabled(); } diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index 509b0d25..24ae1208 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -16,6 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../dialogs/DownloadLocationCustomView.java | 4 +- .../strings/android_chrome_strings.grd | 3 ++ .../bookmark_ui_operations_helper.cc | 2 + + .../bookmark_bar_page_handler.cc | 2 + components/bookmark_bar_strings.grdp | 6 +++ .../bookmarks/browser/bookmark_codec.cc | 20 +++++++-- components/bookmarks/browser/bookmark_codec.h | 7 ++- @@ -30,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 9 +++- .../bookmark_specifics_conversions.cc | 1 + - 26 files changed, 255 insertions(+), 14 deletions(-) + 27 files changed, 257 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 @@ -481,6 +482,18 @@ diff --git a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc b/chro case bookmarks::BookmarkNode::URL: NOTREACHED(); case bookmarks::BookmarkNode::FOLDER: +diff --git a/chrome/browser/ui/webui_browser/bookmark_bar_page_handler.cc b/chrome/browser/ui/webui_browser/bookmark_bar_page_handler.cc +--- a/chrome/browser/ui/webui_browser/bookmark_bar_page_handler.cc ++++ b/chrome/browser/ui/webui_browser/bookmark_bar_page_handler.cc +@@ -37,6 +37,8 @@ bookmark_bar::mojom::BookmarkType ConvertType( + return bookmark_bar::mojom::BookmarkType::OTHER_NODE; + case bookmarks::BookmarkNode::MOBILE: + return bookmark_bar::mojom::BookmarkType::MOBILE; ++ case bookmarks::BookmarkNode::TABS_COLLECTION: ++ NOTREACHED(); + } + NOTREACHED(); + } diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_strings.grdp --- a/components/bookmark_bar_strings.grdp +++ b/components/bookmark_bar_strings.grdp diff --git a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch index a57c446c..46458afb 100644 --- a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -4,11 +4,11 @@ Subject: Add option to not persist tabs across sessions License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../android/java/res/xml/privacy_preferences.xml | 5 +++++ - .../chrome/browser/ChromeTabbedActivity.java | 5 ++++- - .../privacy/settings/PrivacySettings.java | 16 +++++++++++++++- - .../android/strings/android_chrome_strings.grd | 6 ++++++ - 4 files changed, 30 insertions(+), 2 deletions(-) + .../android/java/res/xml/privacy_preferences.xml | 5 +++++ + .../chrome/browser/ChromeTabbedActivity.java | 5 ++++- + .../browser/privacy/settings/PrivacySettings.java | 15 ++++++++++++++- + .../ui/android/strings/android_chrome_strings.grd | 6 ++++++ + 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml @@ -59,17 +59,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.SpannableString; -@@ -21,7 +22,9 @@ import android.view.View; - import androidx.annotation.VisibleForTesting; +@@ -22,6 +23,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; -+import org.chromium.base.BuildInfo; import org.chromium.base.Callback; +import org.chromium.base.ContextUtils; import org.chromium.base.IntentUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; -@@ -114,6 +117,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -114,6 +116,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private final SharedPreferencesManager mSharedPreferencesManager = ChromeSharedPreferences.getInstance(); @@ -78,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private ManagedPreferenceDelegate mManagedPreferenceDelegate; @VisibleForTesting static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies"; @VisibleForTesting static final String PREF_TRACKING_PROTECTION = "tracking_protection"; -@@ -382,7 +387,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -382,7 +386,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); @@ -91,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting UserPrefs.get(getProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); } else if (PREF_HTTPS_FIRST_MODE_LEGACY.equals(key)) { -@@ -442,6 +451,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -442,6 +450,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment getContext(), getProfile())); } diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 8879ca48..ebcfe814 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -52,7 +52,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -65,8 +65,8 @@ new file mode 100644 +public class BromiteWebGLContentSetting extends BromiteCustomContentSetting { + public BromiteWebGLContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.WEBGL, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "webgl", + /*profilePrefKey*/ "webgl"); @@ -85,11 +85,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_webgl_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_webgl_disabled; + default: + return 0; @@ -117,8 +117,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/webgl.grdp b/components/browser_ui/strings/bromite_content_settings/webgl.grdp diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index 4d19637d..d981ed2d 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -49,7 +49,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -62,8 +62,8 @@ new file mode 100644 +public class BromiteWebRTCContentSetting extends BromiteCustomContentSetting { + public BromiteWebRTCContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.WEBRTC, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "webrtc", + /*profilePrefKey*/ "webrtc"); @@ -82,11 +82,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_webrtc_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_webrtc_disabled; + default: + // this will cause a runtime exception @@ -115,8 +115,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/webrtc.grdp b/components/browser_ui/strings/bromite_content_settings/webrtc.grdp diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index 23b128b4..7033c494 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -36,7 +36,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../settings/ChromeBaseSettingsFragment.java | 4 ++ .../Pixel-perfect-mode.grdp | 9 ++++ .../common/interventions_features.cc | 1 + - components/input/BUILD.gn | 1 + + components/input/BUILD.gn | 2 + components/input/android_input_helper.cc | 2 +- components/input/child_frame_input_helper.cc | 2 +- components/input/input_router_impl.cc | 2 +- @@ -109,7 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/display/mojom/screen_info_mojom_traits.h | 4 ++ ui/display/screen_info.h | 1 + ui/events/blink/blink_event_util.cc | 2 +- - 99 files changed, 533 insertions(+), 140 deletions(-) + 99 files changed, 534 insertions(+), 140 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sPixelPerfect.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Pixel-perfect-mode.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Pixel-perfect-mode.inc @@ -740,10 +740,11 @@ diff --git a/components/fingerprinting_protection_filter/interventions/common/in diff --git a/components/input/BUILD.gn b/components/input/BUILD.gn --- a/components/input/BUILD.gn +++ b/components/input/BUILD.gn -@@ -101,6 +101,7 @@ component("input") { +@@ -101,6 +101,8 @@ component("input") { "//ui/events:gesture_detection", "//ui/events/blink", "//ui/events/gestures/blink", ++ "//content/public/common:buildflags", + "//tools/v8_context_snapshot:buildflags", ] if (use_aura) { diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index ec737b91..35b1e806 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -199,7 +199,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in + Snackbar snackbar = Snackbar.make( + mContext.getString(R.string.ask_to_restart_on_connection_change_restart), + /* snackbarController */ this, Snackbar.TYPE_PERSISTENT, Snackbar.UMA_UNKNOWN) -+ .setSingleLine(false) ++ .setDefaultLines(false) + .setAction(mContext.getString(R.string.relaunch), /*actionData*/0) + .setDismissAction(mContext.getString(R.string.ask_to_restart_on_connection_change_close_notification), /*actionData*/1); + SnackbarManager snackbarManager = mSnackbarManagerSupplier.get(); diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 294881ed..caa7d309 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/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 | 9 ++++++++- + .../renderer/modules/webaudio/realtime_analyser.cc | 13 ++++++++++--- .../platform/runtime_enabled_features.json5 | 5 ++--- - 11 files changed, 57 insertions(+), 5 deletions(-) + 11 files changed, 59 insertions(+), 7 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 @@ -180,8 +180,12 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ } } } -@@ -158,6 +160,8 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, - const double scaled_value = +@@ -155,9 +157,11 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, + + // The range m_minDecibels to m_maxDecibels will be scaled to byte values + // from 0 to UCHAR_MAX. +- const double scaled_value = ++ double scaled_value = UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor; + scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); @@ -197,7 +201,12 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ UNSAFE_TODO(destination[i]) = value; } } -@@ -215,6 +220,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { +@@ -211,10 +216,12 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { + + for (unsigned i = 0; i < len; ++i) { + // Buffer access is protected due to modulo operation. +- const float value = UNSAFE_TODO( ++ float value = UNSAFE_TODO( input_buffer[(i + write_index - fft_size + kInputBufferSize) % kInputBufferSize]); diff --git a/build/patches/Change-popup-site-setting.patch b/build/patches/Change-popup-site-setting.patch index 1debe100..7879328c 100644 --- a/build/patches/Change-popup-site-setting.patch +++ b/build/patches/Change-popup-site-setting.patch @@ -160,7 +160,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -173,8 +173,8 @@ new file mode 100644 +public class BromitePopupContentSetting extends BromiteCustomContentSetting { + public BromitePopupContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.POPUPS, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "popups", + /*profilePrefKey*/ "popups"); @@ -193,13 +193,13 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_popup_allowed; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_popup_blocked; -+ case ContentSettingValues.ASK: ++ case ContentSetting.ASK: + return R.string.website_settings_category_popup_block_all; + default: + return 0; @@ -236,8 +236,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return ContentSettingValues.ALLOW != value; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return ContentSetting.ALLOW != value; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/popups.grdp b/components/browser_ui/strings/bromite_content_settings/popups.grdp diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index 0f5fba00..be0cb9e3 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -7,22 +7,22 @@ Use Google Chrome branding for client hints License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/embedder_support/user_agent_utils.cc | 4 +--- - content/browser/client_hints/client_hints.cc | 14 +++++++++----- - .../browser/loader/navigation_url_loader_impl.cc | 5 +++++ - .../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++ - .../common/features_cc/Client-hints-overrides.inc | 1 + - .../cpp/features_cc/Client-hints-overrides.inc | 1 + - net/http/http_network_transaction.cc | 1 + - services/network/public/cpp/client_hints.cc | 1 + - .../blink/common/client_hints/client_hints.cc | 6 ++++-- - .../common/client_hints/enabled_client_hints.cc | 6 ++++++ - .../blink/renderer/core/frame/navigator_ua.idl | 4 +++- - .../blink/renderer/core/frame/navigator_ua_data.cc | 1 + - .../renderer/core/frame/navigator_ua_data.idl | 5 ++++- - .../renderer/core/loader/frame_fetch_context.cc | 4 +++- - .../platform/runtime_enabled_features.json5 | 8 ++++++-- - 15 files changed, 55 insertions(+), 15 deletions(-) + components/embedder_support/user_agent_utils.cc | 4 +--- + content/browser/client_hints/client_hints.cc | 15 ++++++++++----- + .../browser/loader/navigation_url_loader_impl.cc | 5 +++++ + .../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++ + .../common/features_cc/Client-hints-overrides.inc | 1 + + .../cpp/features_cc/Client-hints-overrides.inc | 1 + + net/http/http_network_transaction.cc | 1 + + services/network/public/cpp/client_hints.cc | 1 + + .../blink/common/client_hints/client_hints.cc | 6 ++++-- + .../common/client_hints/enabled_client_hints.cc | 6 ++++++ + .../blink/renderer/core/frame/navigator_ua.idl | 4 +++- + .../renderer/core/frame/navigator_ua_data.cc | 1 + + .../renderer/core/frame/navigator_ua_data.idl | 5 ++++- + .../renderer/core/loader/frame_fetch_context.cc | 4 +++- + .../platform/runtime_enabled_features.json5 | 8 ++++++-- + 15 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc create mode 100644 cromite_flags/content/common/features_cc/Client-hints-overrides.inc create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc @@ -62,7 +62,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie if (!disable_due_to_custom_ua) { if (!ua_metadata.has_value()) ua_metadata = delegate->GetUserAgentMetadata(); -@@ -897,10 +899,11 @@ void AddRequestClientHintsHeaders( +@@ -897,10 +899,12 @@ void AddRequestClientHintsHeaders( AddEctHeader(headers, network_quality_tracker, url); } @@ -75,10 +75,11 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie + delegate, is_ua_override_on, frame_tree_node, + ClientUaHeaderCallType::kDuringCreation, headers, container_policy, data, + ftn_for_devtools_override); ++ } if (ShouldAddClientHint(data, WebClientHintsType::kPrefersColorScheme)) { AddPrefersColorSchemeHeader(headers, frame_tree_node); -@@ -988,6 +991,7 @@ ParseAndPersistAcceptCHForNavigation( +@@ -988,6 +992,7 @@ ParseAndPersistAcceptCHForNavigation( BrowserContext* context, ClientHintsControllerDelegate* delegate, FrameTreeNode* frame_tree_node) { diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index a86f6a38..d03ccf8b 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -32,7 +32,7 @@ Require: bromite-build-utils.patch .../ui/views/page_info/page_info_main_view.cc | 28 +- .../views/page_info/page_info_view_factory.cc | 20 + .../views/page_info/page_info_view_factory.h | 5 + - .../page_info/permission_toggle_row_view.cc | 183 ++++++-- + .../page_info/permission_toggle_row_view.cc | 188 ++++++-- .../page_info/permission_toggle_row_view.h | 18 +- .../settings_localized_strings_provider.cc | 54 +++ .../ui/webui/settings/site_settings_helper.cc | 46 +- @@ -43,9 +43,9 @@ Require: bromite-build-utils.patch .../res/xml/site_settings_preferences.xml | 7 + .../site_settings/AllSiteSettings.java | 5 +- .../BromiteCustomContentSetting.java | 155 +++++++ - .../BromiteCustomContentSettingImpl.java | 412 ++++++++++++++++++ + .../BromiteCustomContentSettingImpl.java | 415 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + - .../ContentSettingsResources.java | 37 +- + .../ContentSettingsResources.java | 39 +- .../site_settings/SingleCategorySettings.java | 57 ++- .../site_settings/SingleWebsiteSettings.java | 53 ++- .../site_settings/SiteSettings.java | 33 +- @@ -78,7 +78,6 @@ Require: bromite-build-utils.patch .../renderer/content_settings_agent_impl.cc | 74 ++++ .../renderer/content_settings_agent_impl.h | 9 + .../PageInfoPermissionsController.java | 9 + - .../PermissionParamsListBuilder.java | 8 + .../android/page_info_controller_android.cc | 18 + components/page_info/page_info.cc | 23 +- components/page_info/page_info_ui.cc | 25 ++ @@ -86,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 + - 75 files changed, 1963 insertions(+), 108 deletions(-) + 74 files changed, 1965 insertions(+), 108 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 @@ -866,14 +865,14 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom bool blocked_on_system_level) { PermissionSetting setting = permission.setting.value_or(permission.default_setting); -+ return GetPermissionIcon(info, blocked_on_system_level, setting); ++ return GetPermissionIcon(permission, blocked_on_system_level, setting); +} +// static +const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + const PageInfo::PermissionInfo& permission, + bool blocked_on_system_level, -+ ContentSetting setting) { ++ PermissionSetting setting) { auto* info = content_settings::PermissionSettingsRegistry::GetInstance()->Get( permission.type); // For guard content settings and Automatic Picture-in-Picture, ASK is treated @@ -885,7 +884,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom + content_settings::WebsiteSettingsRegistry* website_settings = + content_settings::WebsiteSettingsRegistry::GetInstance(); + for (const content_settings::WebsiteSettingsInfo* cs : *website_settings) { -+ if (cs->type() == info.type && cs->show_into_info_page()) { ++ if (cs->type() == permission.type && cs->show_into_info_page()) { + icon = &vector_icons::kProtectedContentIcon; + found = true; + break; @@ -905,7 +904,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome + static const ui::ImageModel GetPermissionIcon( + const PageInfo::PermissionInfo& info, + bool blocked_on_system_level, -+ ContentSetting setting); ++ PermissionSetting setting); + // Returns the icon for the given object |info|. static const ui::ImageModel GetChosenObjectIcon( @@ -913,7 +912,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc --- a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc +++ b/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc -@@ -39,6 +39,31 @@ +@@ -39,6 +39,34 @@ #include "ui/views/controls/styled_label.h" #include "ui/views/style/typography.h" #include "ui/views/view_class_properties.h" @@ -922,30 +921,33 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c + +namespace { + bool IsAllowed(const PageInfo::PermissionInfo& permission) { -+ if (permission.setting == CONTENT_SETTING_DEFAULT) -+ return permission.default_setting == CONTENT_SETTING_ALLOW; ++ auto value = std::get(permission.setting.value_or(CONTENT_SETTING_DEFAULT)); ++ if (value == CONTENT_SETTING_DEFAULT) ++ return std::get(permission.default_setting) == CONTENT_SETTING_ALLOW; + else -+ return permission.setting == CONTENT_SETTING_ALLOW; ++ return value == CONTENT_SETTING_ALLOW; + } + + bool IsBlocked(const PageInfo::PermissionInfo& permission) { -+ if (permission.setting == CONTENT_SETTING_DEFAULT) -+ return permission.default_setting == CONTENT_SETTING_BLOCK; ++ auto value = std::get(permission.setting.value_or(CONTENT_SETTING_DEFAULT)); ++ if (value == CONTENT_SETTING_DEFAULT) ++ return std::get(permission.default_setting) == CONTENT_SETTING_BLOCK; + else -+ return permission.setting == CONTENT_SETTING_BLOCK; ++ return value == CONTENT_SETTING_BLOCK; + } + + bool IsAsk(const PageInfo::PermissionInfo& permission) { -+ if (permission.setting == CONTENT_SETTING_DEFAULT) -+ return permission.default_setting == CONTENT_SETTING_ASK; ++ auto value = std::get(permission.setting.value_or(CONTENT_SETTING_DEFAULT)); ++ if (value == CONTENT_SETTING_DEFAULT) ++ return std::get(permission.default_setting) == CONTENT_SETTING_ASK; + else -+ return permission.setting == CONTENT_SETTING_ASK; ++ return value == CONTENT_SETTING_ASK; + } +} namespace { -@@ -73,17 +98,12 @@ PermissionToggleRowView::PermissionToggleRowView( +@@ -73,17 +101,12 @@ PermissionToggleRowView::PermissionToggleRowView( navigation_handler_(navigation_handler) { SetUseDefaultFillLayout(true); row_view_ = AddChildView(std::make_unique()); @@ -964,7 +966,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (permission.requesting_origin.has_value()) { std::u16string requesting_origin_string; switch (permission.type) { -@@ -181,6 +201,90 @@ void PermissionToggleRowView::UpdatePermission( +@@ -181,6 +204,91 @@ void PermissionToggleRowView::UpdatePermission( UpdateUiOnPermissionChanged(); } @@ -1022,7 +1024,8 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c +} + +bool PermissionToggleRowView::IsCommandIdChecked(int command_id) const { -+ if (permission_.setting == CONTENT_SETTING_DEFAULT && command_id == 4) { ++ auto value = std::get(permission_.setting.value_or(CONTENT_SETTING_DEFAULT)); ++ if (value == CONTENT_SETTING_DEFAULT && command_id == 4) { + return true; + } else if (IsAllowed(permission_)) { + return command_id == 1; @@ -1055,7 +1058,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c void PermissionToggleRowView::OnToggleButtonPressed() { PageInfoUI::ToggleBetweenAllowAndBlock(permission_); PermissionChanged(); -@@ -189,27 +293,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { +@@ -189,27 +297,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { void PermissionToggleRowView::AddToggleButton( const std::u16string& toggle_accessible_name, int icon_label_spacing) { @@ -1090,7 +1093,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } void PermissionToggleRowView::InitForUserSource( -@@ -251,12 +347,6 @@ void PermissionToggleRowView::InitForUserSource( +@@ -251,12 +351,6 @@ void PermissionToggleRowView::InitForUserSource( auto spacer_view = std::make_unique(); spacer_view->SetPreferredSize(gfx::Size(icon_size, icon_size)); spacer_view_ = row_view_->AddControl(std::move(spacer_view)); @@ -1103,13 +1106,14 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } } } -@@ -282,6 +372,14 @@ void PermissionToggleRowView::InitForManagedSource( +@@ -282,6 +376,15 @@ void PermissionToggleRowView::InitForManagedSource( } void PermissionToggleRowView::UpdateUiOnPermissionChanged() { ++ auto value = std::get(permission_.setting.value_or(CONTENT_SETTING_DEFAULT)); + if (choose_button_) { + choose_button_->SetEnabledTextColors(std::nullopt); -+ if (permission_.setting == CONTENT_SETTING_DEFAULT) { ++ if (value == CONTENT_SETTING_DEFAULT) { + choose_button_->SetTextColor(views::Button::ButtonState::STATE_NORMAL, + ui::kColorLabelForeground); + } @@ -1118,7 +1122,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (blocked_on_system_level_label_) { if (!permission_.setting) { permission_blocked_on_system_level_ = false; -@@ -326,6 +424,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { +@@ -326,6 +429,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { } } } @@ -1148,7 +1152,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c + caption = u"Unknown"; + } + choose_button_->SetText(caption); -+ if (permission_.setting == CONTENT_SETTING_DEFAULT) { ++ if (value == CONTENT_SETTING_DEFAULT) { + choose_button_->SetTextColor(views::Button::ButtonState::STATE_NORMAL, + ui::kColorLabelForeground); + } @@ -1641,7 +1645,7 @@ new file mode 100644 + +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -1655,15 +1659,15 @@ new file mode 100644 + + private @ContentSettingsType.EnumType int mContentSettingsType; + private @SiteSettingsCategory.Type int mSiteSettingsCategory; -+ private @ContentSettingValues Integer mDefaultEnabledValue; -+ private @ContentSettingValues Integer mDefaultDisabledValue; ++ private @ContentSetting Integer mDefaultEnabledValue; ++ private @ContentSetting Integer mDefaultDisabledValue; + private boolean mAllowException; + private String mPreferenceKey; + private String mProfilePrefKey; + + public BromiteCustomContentSetting(@ContentSettingsType.EnumType int contentSettingsType, -+ @ContentSettingValues Integer defaultEnabledValue, -+ @ContentSettingValues Integer defaultDisabledValue, ++ @ContentSetting Integer defaultEnabledValue, ++ @ContentSetting Integer defaultDisabledValue, + boolean allowException, + String preferenceKey, + String profilePrefKey) { @@ -1687,21 +1691,21 @@ new file mode 100644 + return mSiteSettingsCategory; + } + -+ protected @ContentSettingValues Integer getDefaultEnabledValue() { ++ protected @ContentSetting Integer getDefaultEnabledValue() { + return mDefaultEnabledValue; + } + -+ public @ContentSettingValues Integer getDefaultDisabledValue() { ++ public @ContentSetting Integer getDefaultDisabledValue() { + return mDefaultDisabledValue; + } + + public Preference createWebSitePreference(Context context, -+ @ContentSettingValues @Nullable Integer value) { ++ @ContentSetting @Nullable Integer value) { + return null; + } + + public boolean setWebSitePreferenceValue(Preference preference, -+ @ContentSettingValues @Nullable Integer value) { ++ @ContentSetting @Nullable Integer value) { + return false; + } + @@ -1726,22 +1730,22 @@ new file mode 100644 + } + + public abstract ContentSettingsResources.ResourceItem getResourceItem(); -+ public abstract int getCategorySummary(@Nullable @ContentSettingValues int value); ++ public abstract int getCategorySummary(@Nullable @ContentSetting int value); + public abstract int getAddExceptionDialogMessage(); + public abstract int getCategoryDescription(); + -+ public boolean processOnBlockList(@ContentSettingValues Integer value) { ++ public boolean processOnBlockList(@ContentSetting Integer value) { + return true; + } + -+ public boolean isOnBlockList(@ContentSettingValues Integer contentSetting) { ++ public boolean isOnBlockList(@ContentSetting Integer contentSetting) { + return mDefaultDisabledValue == contentSetting; + } + -+ public abstract @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value); ++ public abstract @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value); + + public ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, -+ @ContentSettingValues int value, ++ @ContentSetting int value, + WebsiteAddress websiteAddress) { + return null; + } @@ -1777,7 +1781,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c new file mode 100644 --- /dev/null +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java -@@ -0,0 +1,412 @@ +@@ -0,0 +1,415 @@ +/* + This file is part of Bromite. + @@ -1804,7 +1808,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.settings.SpinnerPreference; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.components.content_settings.ProviderType; +import org.chromium.content_public.browser.BrowserContextHandle; @@ -1824,17 +1828,17 @@ new file mode 100644 + extends BromiteCustomContentSettingImplBase { + + static class ContentSettingsSpinnerOption { -+ private @ContentSettingValues int mValue; ++ private @ContentSetting int mValue; + private String mDescription; + + public ContentSettingsSpinnerOption( -+ @ContentSettingValues int value, ++ @ContentSetting int value, + String description) { + mValue = value; + mDescription = description; + } + -+ public @ContentSettingValues int getValue() { ++ public @ContentSetting int getValue() { + return mValue; + } + @@ -1870,7 +1874,7 @@ new file mode 100644 + public static Preference createWebSitePreference( + @ContentSettingsType.EnumType int type, + Context context, -+ @ContentSettingValues @Nullable Integer value) { ++ @ContentSetting @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) { + Preference pref = cs.createWebSitePreference(context, value); @@ -1881,13 +1885,13 @@ new file mode 100644 + + List options = new ArrayList<>(); + options.add(new ContentSettingsSpinnerOption( -+ ContentSettingValues.ALLOW, ++ ContentSetting.ALLOW, + context.getText(descriptions[0]).toString())); + options.add(new ContentSettingsSpinnerOption( -+ ContentSettingValues.ASK, ++ ContentSetting.ASK, + context.getText(descriptions[1]).toString())); + options.add(new ContentSettingsSpinnerOption( -+ ContentSettingValues.BLOCK, ++ ContentSetting.BLOCK, + context.getText(descriptions[2]).toString())); + + SpinnerPreference spinner = new SpinnerPreference(context, true); @@ -1900,14 +1904,14 @@ new file mode 100644 + } + + private static int GetContentSettingValuesIndex( -+ @ContentSettingValues @Nullable Integer value) { ++ @ContentSetting @Nullable Integer value) { + if (value == null) + return 0; -+ else if (value == ContentSettingValues.ALLOW) ++ else if (value == ContentSetting.ALLOW) + return 0; -+ else if (value == ContentSettingValues.ASK) ++ else if (value == ContentSetting.ASK) + return 1; -+ else if (value == ContentSettingValues.BLOCK) ++ else if (value == ContentSetting.BLOCK) + return 2; + return 0; + } @@ -1915,7 +1919,7 @@ new file mode 100644 + public static void setWebSitePreferenceValue( + @ContentSettingsType.EnumType int type, + Preference preference, -+ @ContentSettingValues @Nullable Integer value) { ++ @ContentSetting @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) { + if (cs.setWebSitePreferenceValue(preference, value)) @@ -1984,7 +1988,10 @@ new file mode 100644 + return null; + } + -+ public static int getCategorySummary(@ContentSettingsType.EnumType int type, @Nullable @ContentSettingValues int value) { ++ public static int getCategorySummary(@ContentSettingsType.EnumType int type, ++ @Nullable @ContentSetting int value, ++ boolean isOneTime, ++ boolean isApproximateGeolocation) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getCategorySummary(value); + return 0; @@ -2032,7 +2039,7 @@ new file mode 100644 + return false; + } + -+ public static boolean processOnBlockList(@ContentSettingsType.EnumType int type, @ContentSettingValues Integer value) { ++ public static boolean processOnBlockList(@ContentSettingsType.EnumType int type, @ContentSetting Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.processOnBlockList(value); + return false; @@ -2040,13 +2047,13 @@ new file mode 100644 + + public static boolean isOnBlockList(@ContentSettingsType.EnumType int type, + WebsitePreference website, -+ @ContentSettingValues Integer contentSetting) { ++ @ContentSetting Integer contentSetting) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.isOnBlockList(contentSetting); + return false; + } + -+ public static @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { ++ public static @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { + for (BromiteCustomContentSetting cs : mItemList) { + if (category.getType() == cs.getSiteSettingsCategory()) { + return cs.considerException(category, value); @@ -2131,7 +2138,7 @@ new file mode 100644 + } + + public static ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, -+ @ContentSettingValues int value, ++ @ContentSetting int value, + WebsiteAddress websiteAddress) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) { @@ -2159,7 +2166,7 @@ new file mode 100644 + descriptions[1] = context.getString(values[1]); // ASK + descriptions[2] = context.getString(values[2]); // BLOCKED + -+ @ContentSettingValues ++ @ContentSetting + Integer value = site.getContentSetting(browserContextHandle, type); + + return new AlertDialog.Builder(context, R.style.ThemeOverlay_BrowserUI_AlertDialog) @@ -2167,19 +2174,19 @@ new file mode 100644 + .setNegativeButton(R.string.remove, + (dialog, which) -> { + site.setContentSetting(browserContextHandle, type, -+ ContentSettingValues.DEFAULT); ++ ContentSetting.DEFAULT); + listener.onClick(dialog, which); + dialog.dismiss(); + }) + .setSingleChoiceItems(descriptions, -+ value == ContentSettingValues.ALLOW ? 0 : -+ value == ContentSettingValues.ASK ? 1 : ++ value == ContentSetting.ALLOW ? 0 : ++ value == ContentSetting.ASK ? 1 : + 2, + (dialog, which) -> { -+ @ContentSettingValues -+ int permission = which == 0 ? ContentSettingValues.ALLOW : -+ which == 1 ? ContentSettingValues.ASK : -+ ContentSettingValues.BLOCK; ++ @ContentSetting ++ int permission = which == 0 ? ContentSetting.ALLOW : ++ which == 1 ? ContentSetting.ASK : ++ ContentSetting.BLOCK; + site.setContentSetting( + browserContextHandle, type, permission); + @@ -2214,10 +2221,10 @@ new file mode 100644 + +package org.chromium.components.browser_ui.site_settings; + -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; + +public interface BromiteCustomTriStateSiteSettingsPreferenceImpl { -+ public @ContentSettingValues int getCheckedSetting(); ++ public @ContentSetting int getCheckedSetting(); +} diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java @@ -2239,8 +2246,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + public ResourceItem( + int icon, + int title, -+ @ContentSettingValues @Nullable Integer defaultEnabledValue, -+ @ContentSettingValues @Nullable Integer defaultDisabledValue, ++ @ContentSetting @Nullable Integer defaultEnabledValue, ++ @ContentSetting @Nullable Integer defaultDisabledValue, + int enabledSummary, + int disabledSummary, + int summaryOverrideForScreenReader) { @@ -2270,14 +2277,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return assumeNonNull(null); } -@@ -824,6 +847,14 @@ public class ContentSettingsResources { +@@ -824,6 +847,16 @@ public class ContentSettingsResources { return getCategorySummary(value, isOneTime, /* isApproximateGeolocation= */ false); } + public static int getCategorySummary(int contentType, -+ @Nullable @ContentSettingValues int value, -+ boolean isOneTime) { -+ int result = BromiteCustomContentSettingImpl.getCategorySummary(contentType, value); ++ @Nullable @ContentSetting int value, ++ boolean isOneTime, ++ boolean isApproximateGeolocation) { ++ int result = BromiteCustomContentSettingImpl.getCategorySummary(contentType, ++ value, isOneTime, isApproximateGeolocation); + if (result != 0) return result; + return getCategorySummary(value, isOneTime); + } @@ -2285,7 +2294,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. * -@@ -1002,6 +1033,8 @@ public class ContentSettingsResources { +@@ -1002,6 +1035,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { @@ -2486,7 +2495,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - for (@ContentSettingsType.EnumType int type : SiteSettingsUtil.SETTINGS_ORDER) { + List order = BromiteCustomContentSettingImpl.getSettingsOrder(); + for (@ContentSettingsType.EnumType int type : order) { -+ @ContentSettingValues @Nullable Integer value = ++ @ContentSetting @Nullable Integer value = + mSite.getContentSetting( + getSiteSettingsDelegate().getBrowserContextHandle(), type); + if (value == null) { @@ -2545,7 +2554,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - switchPreference.setBackgroundColor( + Preference switchPreference = preference; + if (preference instanceof ChromeSwitchPreference) { -+ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSettingValues.BLOCK); ++ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSetting.BLOCK); + } else { + BromiteCustomContentSettingImpl.setWebSitePreferenceValue(content_type, preference, value); + } @@ -2626,7 +2635,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - ContentSettingsResources.getCategorySummary( - defaultForToggle, /* isOneTime= */ false)); + int summary = ContentSettingsResources.getCategorySummary( -+ contentType, setting, /* isOneTime= */ false); ++ contentType, setting, /* isOneTime= */ false, /*isApproximateGeolocation*/ false); + if (summary != 0) { + p.setSummary(summary); + } else { @@ -2637,7 +2646,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + : ContentSettingsResources.getDefaultDisabledValue(contentType); + assumeNonNull(defaultForToggle); + summary = ContentSettingsResources.getCategorySummary( -+ contentType, defaultForToggle, /* isOneTime= */ false); ++ contentType, defaultForToggle, /* isOneTime= */ false, /*isApproximateGeolocation*/ false); + p.setSummary(summary); + } } @@ -3415,24 +3424,6 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ // More than 2 permissions. if (same) { int resId = -diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java ---- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java -+++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java -@@ -100,6 +100,14 @@ public class PermissionParamsListBuilder { - nameStringMidSentence.setSpan( - span, 0, nameStringMidSentence.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - -+ if (permission.setting == ContentSettingValues.ASK) { -+ allowed = false; -+ } -+ if (permission.type == ContentSettingsType.FILE_SYSTEM_WRITE_GUARD -+ && permission.setting == ContentSettingValues.ASK) { -+ // see https://source.chromium.org/chromium/chromium/src/+/e3e48613de29440ae1cf11b0ff7fa7c613d9f416 -+ allowed = true; -+ } - return new PermissionObject( - /* type= */ permission.type, - /* name= */ nameString, 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 diff --git a/build/patches/Cromite-Branding.patch b/build/patches/Cromite-Branding.patch index 6bc4866d..73eccb57 100644 --- a/build/patches/Cromite-Branding.patch +++ b/build/patches/Cromite-Branding.patch @@ -42,6 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../prefs/chrome_pref_service_factory.cc | 6 +- .../profiles/profile_shortcut_manager_win.cc | 2 +- .../settings/settings_menu/settings_menu.html | 14 ++- + .../OmniboxSuggestionsContainer.java | 8 +- .../strings/android_chrome_strings.grd | 2 +- .../toolbar/chrome_labs/chrome_labs_utils.cc | 1 + chrome/common/url_constants.h | 4 +- @@ -62,7 +63,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html content/child/runtime_features.cc | 44 ++++----- .../Cromite-Branding.inc | 1 + tools/grit/grit/grd_reader.py | 35 +++++++ - 58 files changed, 204 insertions(+), 130 deletions(-) + 59 files changed, 210 insertions(+), 132 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc diff --git a/build/BUILD.gn b/build/BUILD.gn @@ -13281,6 +13282,31 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html $i18n{aboutPageTitle} +diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java +--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java ++++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java +@@ -34,6 +34,7 @@ import org.chromium.components.omnibox.OmniboxFeatures; + import org.chromium.ui.KeyboardVisibilityDelegate; + import org.chromium.ui.base.DeviceFormFactor; + import org.chromium.ui.base.ViewUtils; ++import org.chromium.ui.KeyboardUtils; + + import java.util.Optional; + +@@ -104,8 +105,11 @@ public class OmniboxSuggestionsContainer extends FrameLayout { + // Omnibox. + // Making the container `clickable=true` achieves similar goal, but this consumes all + // activators, including keyboard key. +- super.onTouchEvent(event); +- return true; ++ if (KeyboardUtils.isAndroidSoftKeyboardShowing(this)) { ++ KeyboardUtils.hideAndroidSoftKeyboard(this); ++ return true; ++ } ++ return false; + } + + private void maybeUpdateLayoutParams(int topMargin) { 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 @@ -19101,7 +19127,7 @@ new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc @@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kSwapNewTabAndNewTabInGroupAndroid); ++// Empty file diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py --- a/tools/grit/grit/grd_reader.py +++ b/tools/grit/grit/grd_reader.py diff --git a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch index 49e713cb..ba5f0bf3 100644 --- a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -10,9 +10,9 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/java/res/layout/url_bar.xml | 1 + - .../browser/omnibox/LocationBarMediator.java | 13 ++++++++-- + .../browser/omnibox/LocationBarMediator.java | 14 ++++++++--- .../chrome/browser/omnibox/UrlBar.java | 24 +++++++++++++++++++ - 3 files changed, 36 insertions(+), 2 deletions(-) + 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml --- a/chrome/android/java/res/layout/url_bar.xml @@ -37,7 +37,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + UrlBarData data = mLocationBarDataProvider.getUrlBarData(); + @SelectionState int selectionState = SelectionState.SELECT_ALL; + GURL url = mLocationBarDataProvider.getUrlBarData().url; -+ if (url != null && mTemplateUrlServiceSupplier.hasValue()) { ++ if (url != null && mTemplateUrlServiceSupplier.get() != null) { + String searchParams = + mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url); + if (searchParams != null && !searchParams.isEmpty()) { @@ -48,6 +48,14 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } else if (shouldRetainOmniboxOnFocus) { mUrlCoordinator.setSelectAllOnFocus(true); } +@@ -1642,7 +1651,6 @@ class LocationBarMediator + mUrlCoordinator.setKeyboardVisibility(true, false); + } + +- + // UrlBarDelegate implementation. + + @Override diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index a76fa5d8..a9802541 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -16,6 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permissions/chrome_permissions_client.cc | 2 -- .../passage_embedder_delegate.cc | 2 ++ .../prediction_model_handler_provider.cc | 9 ++++++--- + .../prediction_model_handler_provider.h | 2 ++ .../predictors/autocomplete_action_predictor.cc | 2 ++ .../predictors/loading_predictor_config.cc | 4 ++-- chrome/browser/predictors/predictors_features.cc | 3 +-- @@ -24,6 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome_browser_main_extra_parts_profiles.cc | 1 - chrome/browser/safe_browsing/BUILD.gn | 1 - ...fication_content_detection_service_factory.cc | 6 ++++++ + .../preloading/AndroidPrerenderManager.java | 1 + .../ui/autofill/chrome_autofill_client.cc | 15 --------------- chrome/browser/ui/tab_helpers.cc | 1 - .../autofill_ml_internals_page_handler.cc | 2 ++ @@ -36,9 +38,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/utility/BUILD.gn | 2 +- chrome/utility/services.cc | 8 -------- components/BUILD.gn | 2 +- + .../core/browser/foundations/autofill_manager.cc | 2 ++ + .../core/browser/foundations/autofill_manager.h | 3 +++ .../autofill_optimization_guide_decider.cc | 5 +++-- .../field_classification_model_handler.cc | 12 ++++++++---- - .../field_classification_model_handler.h | 8 ++++++-- + .../field_classification_model_handler.h | 10 ++++++++-- .../browser/aim_eligibility_service_features.cc | 1 + .../omnibox/browser/autocomplete_controller.cc | 4 ++++ .../omnibox/browser/base_search_provider.cc | 4 ++-- @@ -59,13 +63,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../features_cc/Disable-all-predictors-code.inc | 1 + .../features_cc/Disable-all-predictors-code.inc | 1 + .../features_cc/Disable-all-predictors-code.inc | 2 ++ + services/on_device_model/ml/BUILD.gn | 2 +- + services/on_device_model/ml/ts_model.cc | 4 ++-- + services/on_device_model/safety/BUILD.gn | 2 +- services/webnn/BUILD.gn | 2 +- services/webnn/features.gni | 2 +- services/webnn/webnn_context_provider_impl.cc | 16 +--------------- .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 60 files changed, 151 insertions(+), 89 deletions(-) + 67 files changed, 165 insertions(+), 93 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 @@ -290,6 +297,21 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand VLOG(1) << "[PermissionsAI] PredictionModelHandlerProvider ctor " "passage_embedder available: " << (passage_embedder ? "true" : "false"); +diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h +--- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h ++++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h +@@ -59,9 +59,11 @@ class PredictionModelHandlerProvider + #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) + + private: ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + // EmbedderMetadataObserver: + void EmbedderMetadataUpdated( + passage_embeddings::EmbedderMetadata metadata) override; ++#endif + + std::unique_ptr permissions_aiv1_handler_; + #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) 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 @@ -410,6 +432,17 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific } } // namespace safe_browsing +diff --git a/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/browser/preloading/AndroidPrerenderManager.java b/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/browser/preloading/AndroidPrerenderManager.java +--- a/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/browser/preloading/AndroidPrerenderManager.java ++++ b/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/browser/preloading/AndroidPrerenderManager.java +@@ -89,6 +89,7 @@ public class AndroidPrerenderManager { + * @param prerenderUrl The url to be prerendered. + */ + public void startPrerendering(GURL prerenderUrl) { ++ if ((true)) return; + if (mNativeAndroidPrerenderManager == 0 || mWebContents == null) return; + AndroidPrerenderManagerJni.get() + .startPrerendering(mNativeAndroidPrerenderManager, prerenderUrl, mWebContents); 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 @@ -769,6 +802,50 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn "//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/foundations/autofill_manager.cc b/components/autofill/core/browser/foundations/autofill_manager.cc +--- a/components/autofill/core/browser/foundations/autofill_manager.cc ++++ b/components/autofill/core/browser/foundations/autofill_manager.cc +@@ -895,6 +895,7 @@ void AutofillManager::LogCurrentFieldTypes(const FormStructure& form) { + } + } + ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + void AutofillManager::SubscribeToMlModelChanges( + FieldClassificationModelHandler& handler, + optimization_guide::proto::OptimizationTarget optimization_target) { +@@ -919,5 +920,6 @@ void AutofillManager::SubscribeToMlModelChanges( + NOTREACHED(); + } + } ++#endif + + } // namespace autofill +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 +@@ -38,6 +38,7 @@ + #include "components/autofill/core/common/signatures.h" + #include "components/autofill/core/common/unique_ids.h" + #include "components/optimization_guide/proto/models.pb.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" + #include "components/translate/core/browser/translate_driver.h" + + namespace autofill { +@@ -355,12 +356,14 @@ class AutofillManager + // Reparses all known forms. + void ReparseKnownForms(); + ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + // After subscribing, FieldClassificationModelHandler::OnModelUpdated() will + // trigger ReparseKnownForms(). There may be a handler for Autofill and/or + // Password Manager. + void SubscribeToMlModelChanges( + FieldClassificationModelHandler& handler, + optimization_guide::proto::OptimizationTarget optimization_target); ++#endif + + protected: + explicit AutofillManager(AutofillDriver* driver); diff --git a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc --- a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc +++ b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc @@ -866,7 +943,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode 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 -@@ -17,9 +17,12 @@ +@@ -17,8 +17,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" @@ -874,11 +951,10 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode +#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" - #include "components/autofill/core/browser/ml_model/model_predictions.h" +#endif + #include "components/autofill/core/browser/ml_model/model_predictions.h" #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" @@ -50,8 +53,7 @@ class FieldClassificationModelHandler FieldClassificationModelHandler( @@ -889,7 +965,18 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode ~FieldClassificationModelHandler() override; // This function asynchronously queries predictions for the `form_structure` -@@ -155,7 +157,9 @@ class FieldClassificationModelHandler +@@ -132,8 +134,10 @@ class FieldClassificationModelHandler + ModelInputHash CalculateModelInputHash( + const FieldClassificationModelEncoder::ModelInput& input); + ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + autofill_ml_internals::mojom::MlPredictionLogPtr CreateMlPredictionLog( + const FormData& form_structure) const; ++#endif + + struct ModelState { + optimization_guide::proto::AutofillFieldClassificationModelMetadata +@@ -155,7 +159,9 @@ class FieldClassificationModelHandler ModelChangeCallbackList model_change_callback_list_; @@ -1140,14 +1227,14 @@ new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc @@ -0,0 +1,2 @@ -+SET_CROMITE_FEATURE_DISABLED(kBookmarkTriggerForPrerender2); ++SET_CROMITE_FEATURE_ENABLED(kBookmarkTriggerForPrerender2KillSwitch); +SET_CROMITE_FEATURE_DISABLED(kNewTabPageTriggerForPrerender2); diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc @@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kNewTabPageAndroidTriggerForPrerender2); ++// Empty file diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc b/cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc new file mode 100644 --- /dev/null @@ -1181,6 +1268,51 @@ new file mode 100644 @@ -0,0 +1,2 @@ +SET_CROMITE_FEATURE_DISABLED(kNavigationPredictor); +SET_CROMITE_FEATURE_DISABLED(kPreloadingHeuristicsMLModel); +diff --git a/services/on_device_model/ml/BUILD.gn b/services/on_device_model/ml/BUILD.gn +--- a/services/on_device_model/ml/BUILD.gn ++++ b/services/on_device_model/ml/BUILD.gn +@@ -79,7 +79,7 @@ if (use_blink || (is_ios && build_with_internal_optimization_guide)) { + if (use_blink) { + deps += [ "//gpu/config" ] + } +- if (!is_fuchsia) { ++ if (build_with_tflite_lib && !is_fuchsia) { + deps += [ "//services/on_device_model/safety:bert_safety_model" ] + } + public_deps = [ +diff --git a/services/on_device_model/ml/ts_model.cc b/services/on_device_model/ml/ts_model.cc +--- a/services/on_device_model/ml/ts_model.cc ++++ b/services/on_device_model/ml/ts_model.cc +@@ -25,7 +25,7 @@ + #include "services/on_device_model/public/mojom/on_device_model_service.mojom.h" + #include "services/on_device_model/safety/safety_util.h" + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) + #include "services/on_device_model/safety/bert_safety_model.h" + #endif + +@@ -189,7 +189,7 @@ void TsHolder::Reset(mojom::TextSafetyModelParamsPtr params, + mojo::PendingReceiver model) { + model_.Clear(); + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) + if (params->safety_assets->which() == + mojom::SafetyModelAssets::Tag::kTsAssets) { + auto impl = TsModel::Create(*chrome_ml_, std::move(params)); +diff --git a/services/on_device_model/safety/BUILD.gn b/services/on_device_model/safety/BUILD.gn +--- a/services/on_device_model/safety/BUILD.gn ++++ b/services/on_device_model/safety/BUILD.gn +@@ -4,7 +4,7 @@ + + import("//components/optimization_guide/features.gni") + +-if (!is_fuchsia) { ++if (build_with_tflite_lib && !is_fuchsia) { + source_set("bert_safety_op_resolver") { + sources = [ + "bert_safety_op_resolver.cc", diff --git a/services/webnn/BUILD.gn b/services/webnn/BUILD.gn --- a/services/webnn/BUILD.gn +++ b/services/webnn/BUILD.gn diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index 5b75c189..7563fa58 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -188,7 +188,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe } - if (DeviceInfo.isAutomotive()) { -+ if (((true)) || isAutomotive()) { ++ if (((true)) || DeviceInfo.isAutomotive()) { getPreferenceScreen().removePreference(findPreference(PREF_SAFETY_HUB)); } else { findPreference(PREF_SAFETY_HUB) @@ -281,5 +281,5 @@ new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc @@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kSafetyHub); ++// intentionally empty -- diff --git a/build/patches/Enable-Cert-Management-UI.patch b/build/patches/Enable-Cert-Management-UI.patch index 3c1e9a77..a6b3de21 100644 --- a/build/patches/Enable-Cert-Management-UI.patch +++ b/build/patches/Enable-Cert-Management-UI.patch @@ -8,8 +8,8 @@ disabling the use of system certificates by default (which can be activated from License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- chrome/browser/net/profile_network_context_service.cc | 7 ++++++- - .../chrome_features_cc/Enable-Cert-Management-UI.inc | 5 +++++ - 2 files changed, 11 insertions(+), 1 deletion(-) + .../chrome_features_cc/Enable-Cert-Management-UI.inc | 1 + + 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Enable-Cert-Management-UI.inc diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc @@ -33,10 +33,6 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Enable-Cert-Manageme new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Enable-Cert-Management-UI.inc -@@ -0,0 +1,5 @@ -+#if BUILDFLAG(IS_WIN) -+SET_CROMITE_FEATURE_ENABLED(kEnableCertManagementUIV2); -+SET_CROMITE_FEATURE_ENABLED(kEnableCertManagementUIV2Write); -+SET_CROMITE_FEATURE_ENABLED(kEnableCertManagementUIV2EditCerts); -+#endif +@@ -0,0 +1 @@ ++// Empty file -- diff --git a/build/patches/Enable-component-updater.patch b/build/patches/Enable-component-updater.patch index 9f3441cd..bd5b3270 100644 --- a/build/patches/Enable-component-updater.patch +++ b/build/patches/Enable-component-updater.patch @@ -696,7 +696,7 @@ diff --git a/components/update_client/utils.cc b/components/update_client/utils. } + DLOG(INFO) << "VerifyFileHash256 " -+ << "sha256_hash=" << base::HexEncode(sha256_hash); ++ << "sha256_hash=" << base::HexEncode(hash); + return base::span(hash) == base::span(expected_hash); } diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 21de9951..9b40587e 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -15,10 +15,9 @@ See also: https://github.com/bromite/bromite/issues/547 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 --- - .../settings/PasswordSettings.java | 83 +++++++++++++++- + .../settings/PasswordSettings.java | 84 +++++++++++++++- .../chrome/browser/settings/MainSettings.java | 16 +-- .../chromium/chrome/browser/tab/TabImpl.java | 42 ++++++-- - chrome/browser/about_flags.cc | 3 - chrome/browser/android/tab_android.cc | 3 +- chrome/browser/autofill/android/BUILD.gn | 2 +- .../autofill/AutofillClientProviderUtils.java | 2 +- @@ -43,25 +42,25 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/foundations/autofill_manager.h | 2 + .../foundations/browser_autofill_manager.cc | 2 + .../foundations/browser_autofill_manager.h | 2 + - .../autofill/core/common/autofill_features.cc | 2 +- + .../autofill/core/common/autofill_features.cc | 1 - .../autofill/core/common/autofill_prefs.cc | 4 +- .../autofill/core/common/autofill_prefs.h | 5 + - 31 files changed, 278 insertions(+), 138 deletions(-) + 30 files changed, 278 insertions(+), 135 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,6 +27,8 @@ import androidx.preference.PreferenceCategory; +@@ -26,6 +26,8 @@ import androidx.preference.Preference; + import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceGroup; - import org.chromium.base.BuildInfo; +import org.chromium.base.StrictModeContext; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.build.annotations.Nullable; -@@ -58,6 +60,11 @@ import java.lang.annotation.Retention; +@@ -57,6 +59,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Locale; @@ -73,7 +72,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. -@@ -65,7 +72,7 @@ import java.util.Locale; +@@ -64,7 +71,7 @@ import java.util.Locale; public class PasswordSettings extends ChromeBaseSettingsFragment implements PasswordListObserver, Preference.OnPreferenceClickListener, @@ -82,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage @IntDef({ TrustedVaultBannerState.NOT_SHOWN, TrustedVaultBannerState.OFFER_OPT_IN, -@@ -95,6 +102,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -94,6 +101,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"; @@ -95,24 +94,25 @@ 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"; -@@ -127,6 +140,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -126,6 +139,9 @@ public class PasswordSettings extends ChromeBaseSettingsFragment private Preference mLinkPref; private Menu mMenu; + private ChromeSwitchPreference mEnableAndroidAutofillSwitch; + private ChromeSwitchPreference mEnableAndroidAutofillIncognitoSwitch; - private @ManagePasswordsReferrer int mManagePasswordsReferrer; ++ private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); -@@ -321,6 +336,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment - } + /** For controlling the UX flow of exporting passwords. */ +@@ -305,6 +321,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment createSavePasswordsSwitch(); + createAutoSignInCheckbox(); + createEnableAndroidAutofillSwitch(); - if (shouldShowAutoSigninOption()) { - createAutoSignInCheckbox(); - } -@@ -589,6 +605,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment + + PasswordManagerHandlerProvider.getForProfile(getProfile()) + .getPasswordManagerHandler() +@@ -565,6 +582,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE)); } @@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage + ApplicationLifetime.terminate(true); + } + }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN) -+ .setSingleLine(false) ++ .setDefaultLines(false) + .setAction(getActivity().getString(R.string.relaunch), + /*actionData*/null) + .setDuration(/*durationMs*/70000); @@ -294,19 +294,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav return true; } -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 -@@ -3984,9 +3984,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { - #endif // !BUILDFLAG(IS_ANDROID) - - #if BUILDFLAG(IS_ANDROID) -- --#endif // BUILDFLAG(IS_ANDROID) -- - const FeatureEntry::FeatureParam kGroupSuggestionEnableRecentlyOpenedOnly[] = { - {"group_suggestion_enable_recently_opened", "true"}, - {"group_suggestion_enable_switch_between", "false"}, 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 @@ -907,12 +894,11 @@ 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 -@@ -935,7 +935,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid, +@@ -935,7 +935,6 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid, BASE_FEATURE(kAutofillThirdPartyModeContentProvider, "AutofillThirdPartyModeContentProvider", base::FEATURE_ENABLED_BY_DEFAULT); - -+SET_CROMITE_FEATURE_ENABLED(kAutofillVirtualViewStructureAndroid); #endif // BUILDFLAG(IS_ANDROID) // Defines if the "Your Saved Info" page is eligible to be shown in Chrome diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index d9bcd35f..753c2537 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -74,12 +74,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../cr_components/theme_color_picker/BUILD.gn | 2 +- ui/webui/resources/cr_elements/BUILD.gn | 6 +- .../cr_elements/cr_dialog/cr_dialog.css | 2 +- - .../resources/cr_elements/cr_shared_vars.css | 4 + + .../cr_elements/cr_shared_style_lit.css | 2 +- + .../resources/cr_elements/cr_shared_vars.css | 8 + ui/webui/resources/css/BUILD.gn | 2 +- ui/webui/resources/images/BUILD.gn | 2 +- ui/webui/resources/js/BUILD.gn | 2 +- ui/webui/resources/js/load_time_data.ts | 17 +- - 72 files changed, 1166 insertions(+), 72 deletions(-) + 73 files changed, 1171 insertions(+), 73 deletions(-) create mode 100644 chrome/app/settings_strings_android.grdp create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc @@ -751,7 +752,7 @@ diff --git a/chrome/browser/resources/settings/search_page/search_page_index.htm } + + settings-search-engines-page { -+ width: 90%; ++ width: 100%; + } + @@ -2354,20 +2355,36 @@ diff --git a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.css b/ui/webui/r overflow-y: hidden; padding: 0; position: absolute; +diff --git a/ui/webui/resources/cr_elements/cr_shared_style_lit.css b/ui/webui/resources/cr_elements/cr_shared_style_lit.css +--- a/ui/webui/resources/cr_elements/cr_shared_style_lit.css ++++ b/ui/webui/resources/cr_elements/cr_shared_style_lit.css +@@ -61,7 +61,7 @@ iron-list.cr-separators > *:not([first]) { + height: inherit; + margin: 0 auto; + max-width: var(--cr-centered-card-max-width); +- min-width: 550px; ++ min-width: var(--cr-centered-card-min-width); + position: relative; + width: calc(100% * var(--cr-centered-card-width-percentage)); + } diff --git a/ui/webui/resources/cr_elements/cr_shared_vars.css b/ui/webui/resources/cr_elements/cr_shared_vars.css --- a/ui/webui/resources/cr_elements/cr_shared_vars.css +++ b/ui/webui/resources/cr_elements/cr_shared_vars.css -@@ -228,6 +228,10 @@ html { +@@ -226,6 +226,14 @@ html { + --cr-form-field-label-font-size: .625rem; + --cr-form-field-label-height: 1em; --cr-form-field-label-line-height: 1; - } - -+html[chrome-android] { -+ --cr-section-indent-width: 0px; ++ ++ --cr-centered-card-min-width: 550px; +} + ++html[chrome-android] { ++ --cr-section-indent-width: 0px; ++ --cr-centered-card-width-percentage: 1; ++ --cr-centered-card-min-width: 0px; + } + html { - /* Colors: These variables should never be overridden and should only be used - as fallback values for shared cr_elements or in UIs that do not have diff --git a/ui/webui/resources/css/BUILD.gn b/ui/webui/resources/css/BUILD.gn --- a/ui/webui/resources/css/BUILD.gn +++ b/ui/webui/resources/css/BUILD.gn diff --git a/build/patches/Eyeo-Adblock-for-Cromite.patch b/build/patches/Eyeo-Adblock-for-Cromite.patch index fa1666ae..578391ee 100644 --- a/build/patches/Eyeo-Adblock-for-Cromite.patch +++ b/build/patches/Eyeo-Adblock-for-Cromite.patch @@ -48,9 +48,10 @@ suit Cromite logic. .../browser/adblock_content_browser_client.h | 241 +- .../browser/adblock_internals_page_handler.cc | 9 +- .../browser/adblock_url_loader_factory.cc | 71 +- - .../browser/adblock_webcontents_observer.cc | 62 +- + .../adblock_web_ui_controller_factory.cc | 1 + + .../browser/adblock_webcontents_observer.cc | 63 +- .../browser/adblock_webcontents_observer.h | 5 +- - .../content/browser/element_hider_impl.cc | 13 +- + .../content/browser/element_hider_impl.cc | 17 +- .../content/browser/eyeo_document_info.cc | 15 + .../content/browser/eyeo_document_info.h | 9 + .../adblock_request_throttle_factory.cc | 2 +- @@ -60,25 +61,28 @@ suit Cromite logic. .../factories/subscription_service_factory.cc | 22 +- .../factories/subscription_service_factory.h | 1 + .../browser/frame_hierarchy_builder.cc | 1 + - .../content/browser/page_view_stats.cc | 71 +- + .../content/browser/page_view_stats.cc | 83 +- .../browser/resource_classification_runner.h | 7 + .../resource_classification_runner_impl.cc | 71 +- .../resource_classification_runner_impl.h | 8 + components/adblock/core/BUILD.gn | 39 - components/adblock/core/common/BUILD.gn | 8 - - .../adblock/core/common/adblock_constants.cc | 2 - + .../adblock/core/common/adblock_constants.cc | 17 +- .../adblock/core/common/adblock_constants.h | 1 - - .../adblock/core/common/adblock_prefs.cc | 57 +- - .../adblock/core/common/adblock_prefs.h | 7 +- - components/adblock/core/common/app_info.cc | 12 - + .../adblock/core/common/adblock_prefs.cc | 66 +- + .../adblock/core/common/adblock_prefs.h | 9 +- + components/adblock/core/common/app_info.cc | 17 +- + components/adblock/core/common/app_info.h | 1 - .../configuration/filtering_configuration.h | 5 + - .../persistent_filtering_configuration.cc | 28 +- + .../persistent_filtering_configuration.cc | 37 +- .../persistent_filtering_configuration.h | 6 + .../core/converter/flatbuffer_converter.cc | 2 +- - .../adblock/core/converter/parser/metadata.cc | 1 + + .../converter/parser/filter_classifier.cc | 5 +- + .../adblock/core/converter/parser/metadata.cc | 14 +- .../core/converter/parser/test/test_rules.txt | 21 + - .../core/converter/parser/url_filter.cc | 15 +- - .../converter/parser/url_filter_options.cc | 21 +- + .../core/converter/parser/url_filter.cc | 20 +- + .../converter/parser/url_filter_options.cc | 34 +- + .../serializer/filter_keyword_extractor.cc | 13 +- .../serializer/flatbuffer_serializer.cc | 102 +- components/adblock/core/features.cc | 6 +- .../core/net/adblock_resource_request_impl.cc | 26 +- @@ -99,7 +103,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 | 41 +- + .../core/subscription/subscription_config.cc | 92 +- .../core/subscription/subscription_config.h | 6 +- .../subscription_downloader_impl.cc | 19 +- .../subscription_persistent_metadata.h | 1 + @@ -127,7 +131,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 + - 122 files changed, 9249 insertions(+), 618 deletions(-) + 126 files changed, 9337 insertions(+), 689 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 @@ -3081,16 +3085,28 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ } else { // We blocked a subresource request. Collapse whitespace around the // blocked element. +diff --git a/components/adblock/content/browser/adblock_web_ui_controller_factory.cc b/components/adblock/content/browser/adblock_web_ui_controller_factory.cc +--- a/components/adblock/content/browser/adblock_web_ui_controller_factory.cc ++++ b/components/adblock/content/browser/adblock_web_ui_controller_factory.cc +@@ -20,6 +20,7 @@ + #include "components/adblock/content/browser/adblock_internals_ui.h" + #include "components/adblock/core/common/web_ui_constants.h" + #include "content/public/common/url_utils.h" ++#include "url/gurl.h" + + namespace adblock { + diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc b/components/adblock/content/browser/adblock_webcontents_observer.cc --- a/components/adblock/content/browser/adblock_webcontents_observer.cc +++ b/components/adblock/content/browser/adblock_webcontents_observer.cc -@@ -22,10 +22,15 @@ +@@ -22,10 +22,16 @@ #include "components/adblock/content/browser/request_initiator.h" #include "components/adblock/core/common/sitekey.h" #include "components/adblock/core/subscription/subscription_service.h" +#include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings.h" #include "content/public/browser/navigation_handle.h" ++#include "content/public/browser/navigation_controller.h" #include "net/base/url_util.h" #include "third_party/blink/public/common/frame/frame_owner_element_type.h" @@ -3100,7 +3116,7 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc namespace { const char* WindowOpenDispositionToString(WindowOpenDisposition value) { switch (value) { -@@ -84,6 +89,16 @@ bool ShouldSkipElementHiding(const GURL& url) { +@@ -84,6 +90,16 @@ bool ShouldSkipElementHiding(const GURL& url) { !url.IsAboutBlank(); } @@ -3117,7 +3133,7 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc } // namespace namespace adblock { -@@ -94,14 +109,16 @@ AdblockWebContentObserver::AdblockWebContentObserver( +@@ -94,14 +110,16 @@ AdblockWebContentObserver::AdblockWebContentObserver( ElementHider* element_hider, SitekeyStorage* sitekey_storage, std::unique_ptr frame_hierarchy_builder, @@ -3136,7 +3152,7 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc AdblockWebContentObserver::~AdblockWebContentObserver() = default; -@@ -141,7 +158,8 @@ void AdblockWebContentObserver::DidFinishNavigation( +@@ -141,7 +159,8 @@ void AdblockWebContentObserver::DidFinishNavigation( VLOG(1) << "[eyeo] Finished navigation: URL=" << url << ", has_commited=" << navigation_handle->HasCommitted() << ", is_error=" << navigation_handle->IsErrorPage() @@ -3146,7 +3162,7 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.cc content::RenderFrameHost* frame = nullptr; if (navigation_handle->HasCommitted()) { frame = navigation_handle->GetRenderFrameHost(); -@@ -153,6 +171,44 @@ void AdblockWebContentObserver::DidFinishNavigation( +@@ -153,6 +172,44 @@ void AdblockWebContentObserver::DidFinishNavigation( VLOG(1) << "[eyeo] Unsupported scheme, skipping injection."; return; } @@ -3223,6 +3239,24 @@ diff --git a/components/adblock/content/browser/adblock_webcontents_observer.h b diff --git a/components/adblock/content/browser/element_hider_impl.cc b/components/adblock/content/browser/element_hider_impl.cc --- a/components/adblock/content/browser/element_hider_impl.cc +++ b/components/adblock/content/browser/element_hider_impl.cc +@@ -133,7 +133,7 @@ void GenerateElemHidingEmuJavaScript(const GURL& url, + } + + std::string GenerateXpath3Dep() { +- static std::string xpath3_dep = ++ std::string xpath3_dep = + "(" + + ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( + IDR_ADBLOCK_SNIPPETS_XPATH3_DEP_JS) + +@@ -155,7 +155,7 @@ void GenerateSnippetScript(const GURL& url, + serializer.Serialize(std::move(input)); + // snippets_lib should be the library as-is, without any escaping or JSON + // parsing. +- static std::string snippets_lib = ++ std::string snippets_lib = + ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( + IDR_ADBLOCK_SNIPPETS_JS); + @@ -242,7 +242,7 @@ void InsertUserCSSAndApplyElemHidingEmuJS( if (!frame_host) { // Render frame host was destroyed before element hiding could be applied. @@ -3500,7 +3534,7 @@ diff --git a/components/adblock/content/browser/frame_hierarchy_builder.cc b/com diff --git a/components/adblock/content/browser/page_view_stats.cc b/components/adblock/content/browser/page_view_stats.cc --- a/components/adblock/content/browser/page_view_stats.cc +++ b/components/adblock/content/browser/page_view_stats.cc -@@ -57,21 +57,6 @@ const char kBlockedStatsCountKey[] = "blocked_pageviews"; +@@ -57,47 +57,26 @@ const char kBlockedStatsCountKey[] = "blocked_pageviews"; // than AA page views. const char kTotalPagesStatsCountKey[] = "pageviews"; @@ -3517,12 +3551,29 @@ diff --git a/components/adblock/content/browser/page_view_stats.cc b/components/ - case PageViewStats::Metric::TotalPages: - return kTotalPagesStatsCountKey; - } --} -- - base::WeakPtr g_last_used_instance; ++base::WeakPtr& GetLastUsedInstance() { ++ static base::NoDestructor> instance; ++ return *instance; + } +-base::WeakPtr g_last_used_instance; +- void RegisterNavigationWithLastUsedPageViewStats( -@@ -89,15 +74,6 @@ void RegisterAcceptableAdsBlockthroughtHitWithLastUsedPageViewStats( + content::RenderFrameHost* render_frame_host) { +- if (g_last_used_instance) { +- g_last_used_instance->RegisterMainFrameNavigation(render_frame_host); ++ if (GetLastUsedInstance()) { ++ GetLastUsedInstance()->RegisterMainFrameNavigation(render_frame_host); + } + } + + void RegisterAcceptableAdsBlockthroughtHitWithLastUsedPageViewStats( + content::RenderFrameHost* render_frame_host) { +- if (g_last_used_instance) { +- g_last_used_instance->RegisterAcceptableAdsBlockthroughtHit( ++ if (GetLastUsedInstance()) { ++ GetLastUsedInstance()->RegisterAcceptableAdsBlockthroughtHit( + render_frame_host); } } @@ -3538,7 +3589,15 @@ diff --git a/components/adblock/content/browser/page_view_stats.cc b/components/ } // namespace PageViewStats::PageViewStats( -@@ -215,22 +191,6 @@ void PageViewStats::RecordParkedMetrics(content::Page& page) { +@@ -107,7 +86,6 @@ PageViewStats::PageViewStats( + DCHECK(classification_runner_); + DCHECK(prefs_); + classification_runner_->AddObserver(this); +- g_last_used_instance = weak_factory_.GetWeakPtr(); + } + + PageViewStats::~PageViewStats() { +@@ -215,22 +193,6 @@ void PageViewStats::RecordParkedMetrics(content::Page& page) { } // If this is the entry matching Page we are looking for... if (main_frame_id == it->first) { @@ -3561,7 +3620,7 @@ diff --git a/components/adblock/content/browser/page_view_stats.cc b/components/ it = parked_metrics_before_main_navigation_.erase(it); } else { ++it; -@@ -239,42 +199,13 @@ void PageViewStats::RecordParkedMetrics(content::Page& page) { +@@ -239,42 +201,13 @@ void PageViewStats::RecordParkedMetrics(content::Page& page) { } void PageViewStats::RecordPageView(content::Page& page, Metric metric) { @@ -3878,7 +3937,14 @@ diff --git a/components/adblock/core/common/BUILD.gn b/components/adblock/core/c diff --git a/components/adblock/core/common/adblock_constants.cc b/components/adblock/core/common/adblock_constants.cc --- a/components/adblock/core/common/adblock_constants.cc +++ b/components/adblock/core/common/adblock_constants.cc -@@ -23,8 +23,6 @@ +@@ -17,14 +17,13 @@ + + #include "components/adblock/core/common/adblock_constants.h" + ++#include "base/no_destructor.h" + #include "base/base64.h" + #include "components/adblock/core/schema/filter_list_schema_generated.h" + #include "components/adblock/core/schema/schema_hash.h" namespace adblock { @@ -3887,6 +3953,34 @@ diff --git a/components/adblock/core/common/adblock_constants.cc b/components/ad const char kAllowlistEverythingFilter[] = "@@*$document"; const char kAdblockFilteringConfigurationName[] = "adblock"; +@@ -108,20 +107,20 @@ const char kBlankPng32x32[] = + "3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII="; + + const std::string& CurrentSchemaVersion() { +- static std::string kCurrentSchemaVersion = +- base::Base64Encode(kSha256_filter_list_schema_generated_h); +- return kCurrentSchemaVersion; ++ static const base::NoDestructor kCurrentSchemaVersion( ++ base::Base64Encode(kSha256_filter_list_schema_generated_h)); ++ return *kCurrentSchemaVersion; + } + + const GURL& TestPagesSubscriptionUrl() { +- static GURL kTestPagesUrl( ++ static const base::NoDestructor kTestPagesUrl( + "https://abptestpages.org/en/abp-testcase-subscription.txt"); +- return kTestPagesUrl; ++ return *kTestPagesUrl; + } + + const GURL& CustomFiltersUrl() { +- static GURL kCustomFiltersUrl("adblock:custom"); +- return kCustomFiltersUrl; ++ static const base::NoDestructor kCustomFiltersUrl("adblock:custom"); ++ return *kCustomFiltersUrl; + } + + std::string_view RewriteUrl(flat::AbpResource type) { diff --git a/components/adblock/core/common/adblock_constants.h b/components/adblock/core/common/adblock_constants.h --- a/components/adblock/core/common/adblock_constants.h +++ b/components/adblock/core/common/adblock_constants.h @@ -3901,7 +3995,14 @@ diff --git a/components/adblock/core/common/adblock_constants.h b/components/adb diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adblock/core/common/adblock_prefs.cc --- a/components/adblock/core/common/adblock_prefs.cc +++ b/components/adblock/core/common/adblock_prefs.cc -@@ -23,7 +23,9 @@ +@@ -17,13 +17,16 @@ + + #include "components/adblock/core/common/adblock_prefs.h" + ++#include "base/no_destructor.h" + #include "base/logging.h" + #include "components/prefs/pref_registry_simple.h" + namespace adblock::common::prefs { // Legacy: Whether to block ads @@ -3912,7 +4013,7 @@ diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adbloc // Legacy: Whether to allow acceptable ads or block them all. // Used now just to map CLI switch. Otherwise use kAdblockSubscriptionsLegacy. -@@ -65,35 +67,6 @@ const char kLastUsedSchemaVersion[] = "adblock.last_used_schema_version"; +@@ -65,35 +68,6 @@ const char kLastUsedSchemaVersion[] = "adblock.last_used_schema_version"; // and for setting query parameters in subscription download requests. const char kSubscriptionMetadata[] = "adblock.subscription_metadata"; @@ -3948,7 +4049,7 @@ diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adbloc // FilteringConfiguration data const char kConfigurationsPrefsPath[] = "filtering.configurations"; -@@ -106,21 +79,12 @@ const char kAutoInstalledSubscriptionsNextUpdateTime[] = +@@ -106,21 +80,12 @@ const char kAutoInstalledSubscriptionsNextUpdateTime[] = "adblock.auto_installed_subscriptions.last_update_time"; // Dict containing stats about acceptable ads page views @@ -3973,7 +4074,7 @@ diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adbloc registry->RegisterListPref(kAdblockAllowedDomainsLegacy, {}); registry->RegisterListPref(kAdblockCustomFiltersLegacy, {}); registry->RegisterListPref(kAdblockSubscriptionsLegacy, {}); -@@ -130,11 +94,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -130,17 +95,16 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { registry->RegisterStringPref(kLastUsedSchemaVersion, ""); registry->RegisterDictionaryPref(kSubscriptionMetadata); registry->RegisterDictionaryPref(kConfigurationsPrefsPath); @@ -3986,7 +4087,15 @@ diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adbloc VLOG(3) << "[eyeo] Registered prefs"; } -@@ -152,12 +115,6 @@ std::vector GetPrefs() { + +-std::vector GetPrefs() { +- static std::vector prefs = { ++const std::vector& GetPrefs() { ++ static const base::NoDestructor> prefs({ + kEnableAdblockLegacy, + kEnableAcceptableAdsLegacy, + kAdblockMoreOptionsEnabled, +@@ -152,16 +116,10 @@ std::vector GetPrefs() { kSubscriptionSignatures, kLastUsedSchemaVersion, kSubscriptionMetadata, @@ -3998,7 +4107,13 @@ diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adbloc - kTelemetryPageViewStats, kConfigurationsPrefsPath, kEnableAutoInstalledSubscriptions, - kAutoInstalledSubscriptionsNextUpdateTime}; +- kAutoInstalledSubscriptionsNextUpdateTime}; +- return prefs; ++ kAutoInstalledSubscriptionsNextUpdateTime}); ++ return *prefs; + } + + } // namespace adblock::common::prefs diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock/core/common/adblock_prefs.h --- a/components/adblock/core/common/adblock_prefs.h +++ b/components/adblock/core/common/adblock_prefs.h @@ -4010,7 +4125,7 @@ diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock extern const char kEnableAcceptableAdsLegacy[]; extern const char kAdblockAllowedDomainsLegacy[]; extern const char kAdblockCustomFiltersLegacy[]; -@@ -36,12 +37,6 @@ extern const char kInstallFirstStartSubscriptions[]; +@@ -36,19 +37,13 @@ extern const char kInstallFirstStartSubscriptions[]; extern const char kSubscriptionSignatures[]; extern const char kLastUsedSchemaVersion[]; extern const char kSubscriptionMetadata[]; @@ -4023,10 +4138,33 @@ diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock extern const char kConfigurationsPrefsPath[]; extern const char kEnableAutoInstalledSubscriptions[]; extern const char kAutoInstalledSubscriptionsNextUpdateTime[]; + + void RegisterProfilePrefs(PrefRegistrySimple* registry); + +-std::vector GetPrefs(); ++const std::vector& GetPrefs(); + + } // namespace adblock::common::prefs + diff --git a/components/adblock/core/common/app_info.cc b/components/adblock/core/common/app_info.cc --- a/components/adblock/core/common/app_info.cc +++ b/components/adblock/core/common/app_info.cc -@@ -29,18 +29,6 @@ const AppInfo& AppInfo::Get() { +@@ -17,6 +17,7 @@ + + #include "components/adblock/core/common/app_info.h" + ++#include "base/no_destructor.h" + #include "base/strings/string_util.h" + #include "components/version_info/version_info.h" + +@@ -24,23 +25,11 @@ namespace adblock { + + // static + const AppInfo& AppInfo::Get() { +- static AppInfo instance; +- return instance; ++ static const base::NoDestructor instance; ++ return *instance; } AppInfo::AppInfo() { @@ -4045,6 +4183,17 @@ diff --git a/components/adblock/core/common/app_info.cc b/components/adblock/cor } } // namespace adblock +diff --git a/components/adblock/core/common/app_info.h b/components/adblock/core/common/app_info.h +--- a/components/adblock/core/common/app_info.h ++++ b/components/adblock/core/common/app_info.h +@@ -34,7 +34,6 @@ class AppInfo { + std::string client_os; + std::string version; + +- private: + AppInfo(); + }; + diff --git a/components/adblock/core/configuration/filtering_configuration.h b/components/adblock/core/configuration/filtering_configuration.h --- a/components/adblock/core/configuration/filtering_configuration.h +++ b/components/adblock/core/configuration/filtering_configuration.h @@ -4070,7 +4219,12 @@ diff --git a/components/adblock/core/configuration/filtering_configuration.h b/c diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.cc b/components/adblock/core/configuration/persistent_filtering_configuration.cc --- a/components/adblock/core/configuration/persistent_filtering_configuration.cc +++ b/components/adblock/core/configuration/persistent_filtering_configuration.cc -@@ -25,6 +25,7 @@ +@@ -21,10 +21,12 @@ + #include + #include + ++#include "base/no_destructor.h" + #include "base/strings/string_util.h" #include "components/adblock/core/common/adblock_prefs.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" @@ -4078,7 +4232,7 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur #include "base/logging.h" -@@ -34,6 +35,7 @@ namespace { +@@ -34,6 +36,7 @@ namespace { constexpr auto kEnabledKey = std::string_view("enabled"); constexpr auto kDomainsKey = std::string_view("domains"); constexpr auto kCustomFiltersKey = std::string_view("filters"); @@ -4086,7 +4240,7 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur constexpr auto kFilterListsKey = std::string_view("subscriptions"); base::Value::Dict ReadFromPrefs(PrefService* pref_service, -@@ -42,7 +44,9 @@ base::Value::Dict ReadFromPrefs(PrefService* pref_service, +@@ -42,7 +45,9 @@ base::Value::Dict ReadFromPrefs(PrefService* pref_service, pref_service->GetValue(common::prefs::kConfigurationsPrefsPath).GetDict(); const auto* this_config = all_configurations.FindDict(configuration_name); if (this_config) { @@ -4097,7 +4251,19 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur } return base::Value::Dict(); } -@@ -63,6 +67,7 @@ void SetDefaultValuesIfNeeded(base::Value::Dict& configuration) { +@@ -51,9 +56,9 @@ void StoreToPrefs(const base::Value::Dict& configuration, + PrefService* pref_service, + std::string_view configuration_name) { + // ScopedDictPrefUpdate requires an std::string for some reason: +- static std::string kConfigurationsPrefsPathString( ++ static const base::NoDestructor kConfigurationsPrefsPathString( + common::prefs::kConfigurationsPrefsPath); +- ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); ++ ScopedDictPrefUpdate update(pref_service, *kConfigurationsPrefsPathString); + update.Get().Set(configuration_name, configuration.Clone()); + } + +@@ -63,6 +68,7 @@ void SetDefaultValuesIfNeeded(base::Value::Dict& configuration) { } configuration.EnsureList(kDomainsKey); configuration.EnsureList(kCustomFiltersKey); @@ -4105,7 +4271,7 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur configuration.EnsureList(kFilterListsKey); } -@@ -133,6 +138,7 @@ const std::string& PersistentFilteringConfiguration::GetName() const { +@@ -133,6 +139,7 @@ const std::string& PersistentFilteringConfiguration::GetName() const { } void PersistentFilteringConfiguration::SetEnabled(bool enabled) { @@ -4113,7 +4279,7 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur if (IsEnabled() == enabled) { return; } -@@ -141,6 +147,14 @@ void PersistentFilteringConfiguration::SetEnabled(bool enabled) { +@@ -141,6 +148,14 @@ void PersistentFilteringConfiguration::SetEnabled(bool enabled) { NotifyEnabledStateChanged(); } @@ -4128,7 +4294,7 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur bool PersistentFilteringConfiguration::IsEnabled() const { const auto pref_value = dictionary_.FindBool(kEnabledKey); DCHECK(pref_value); -@@ -209,6 +223,18 @@ void PersistentFilteringConfiguration::RemoveCustomFilter( +@@ -209,6 +224,18 @@ void PersistentFilteringConfiguration::RemoveCustomFilter( } } @@ -4147,6 +4313,18 @@ diff --git a/components/adblock/core/configuration/persistent_filtering_configur std::vector PersistentFilteringConfiguration::GetCustomFilters() const { return GetFromList(dictionary_, kCustomFiltersKey); +@@ -261,9 +288,9 @@ PersistentFilteringConfiguration::GetPersistedConfigurations( + void PersistentFilteringConfiguration::RemovePersistedData( + PrefService* pref_service, + const std::string& name) { +- static std::string kConfigurationsPrefsPathString( ++ static const base::NoDestructor kConfigurationsPrefsPathString( + common::prefs::kConfigurationsPrefsPath); +- ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); ++ ScopedDictPrefUpdate update(pref_service, *kConfigurationsPrefsPathString); + update.Get().Remove(name); + } + diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.h b/components/adblock/core/configuration/persistent_filtering_configuration.h --- a/components/adblock/core/configuration/persistent_filtering_configuration.h +++ b/components/adblock/core/configuration/persistent_filtering_configuration.h @@ -4182,17 +4360,89 @@ diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/compone } break; } +diff --git a/components/adblock/core/converter/parser/filter_classifier.cc b/components/adblock/core/converter/parser/filter_classifier.cc +--- a/components/adblock/core/converter/parser/filter_classifier.cc ++++ b/components/adblock/core/converter/parser/filter_classifier.cc +@@ -17,6 +17,7 @@ + + #include "components/adblock/core/converter/parser/filter_classifier.h" + ++#include "base/no_destructor.h" + #include "third_party/re2/src/re2/re2.h" + + namespace adblock { +@@ -26,8 +27,8 @@ FilterType FilterClassifier::Classify(std::string_view filter) { + if (!filter.empty() && filter.back() == '}' && + (base::StartsWith(filter, kElemHideFilterSeparator) || + base::StartsWith(filter, kElemHideEmulationFilterSeparator))) { +- static re2::RE2 remove_re("\\{\\s*remove\\s*:\\s*true\\s*;\\s*\\}$"); +- if (re2::RE2::PartialMatch(filter, remove_re)) { ++ static const base::NoDestructor remove_re("\\{\\s*remove\\s*:\\s*true\\s*;\\s*\\}$"); ++ if (re2::RE2::PartialMatch(filter, *remove_re)) { + return FilterType::Remove; + } else { + return FilterType::InlineCss; diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/adblock/core/converter/parser/metadata.cc --- a/components/adblock/core/converter/parser/metadata.cc +++ b/components/adblock/core/converter/parser/metadata.cc -@@ -108,6 +108,7 @@ Metadata::~Metadata() = default; +@@ -19,6 +19,7 @@ + + #include + ++#include "base/no_destructor.h" + #include "base/logging.h" + #include "base/strings/string_number_conversions.h" + #include "base/strings/string_util.h" +@@ -30,7 +31,7 @@ namespace adblock { + // comment line any upcoming comments will be skipped. + // static + absl::optional Metadata::FromStream(std::istream& filter_stream) { +- static re2::RE2 comment_re("^!\\s*(.*?)\\s*:\\s*(.*)"); ++ static base::NoDestructor comment_re("^!\\s*(.*?)\\s*:\\s*(.*)"); + + std::string homepage; + std::string title; +@@ -51,7 +52,7 @@ absl::optional Metadata::FromStream(std::istream& filter_stream) { + auto position_in_stream = filter_stream.tellg(); + while (std::getline(filter_stream, line)) { + base::TrimWhitespaceASCII(line, base::TRIM_ALL, &line); +- if (!re2::RE2::FullMatch(line, comment_re, &key, &value)) { ++ if (!re2::RE2::FullMatch(line, *comment_re, &key, &value)) { + break; + } + +@@ -108,14 +109,15 @@ Metadata::~Metadata() = default; // static bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) { +- static re2::RE2 adblock_header_re("^\\[Adblock.*\\]"); + if ((true)) return true; - static re2::RE2 adblock_header_re("^\\[Adblock.*\\]"); ++ static base::NoDestructor adblock_header_re("^\\[Adblock.*\\]"); std::string adblock_header_trimmed; + base::TrimWhitespaceASCII(adblock_header, base::TRIM_ALL, + &adblock_header_trimmed); + if (!re2::RE2::FullMatch(re2::StringPiece(adblock_header_trimmed.data(), + adblock_header_trimmed.size()), +- adblock_header_re)) { ++ *adblock_header_re)) { + return false; + } + return true; +@@ -126,11 +128,11 @@ bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) { + // static + base::TimeDelta Metadata::ParseExpirationTime( + const std::string& expiration_value) { +- static re2::RE2 expiration_time_re("\\s*([0-9]+)\\s*(h)?.*"); ++ static base::NoDestructor expiration_time_re("\\s*([0-9]+)\\s*(h)?.*"); + std::string expiration_unit; + uint64_t expiration_time; + +- if (!re2::RE2::FullMatch(expiration_value, expiration_time_re, ++ if (!re2::RE2::FullMatch(expiration_value, *expiration_time_re, + &expiration_time, &expiration_unit)) { + VLOG(1) << "[eyeo] Invalid expiration time format: " << expiration_value + << ". Will use default value of " diff --git a/components/adblock/core/converter/parser/test/test_rules.txt b/components/adblock/core/converter/parser/test/test_rules.txt new file mode 100644 --- /dev/null @@ -4222,7 +4472,15 @@ new file mode 100644 diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components/adblock/core/converter/parser/url_filter.cc --- a/components/adblock/core/converter/parser/url_filter.cc +++ b/components/adblock/core/converter/parser/url_filter.cc -@@ -50,6 +50,10 @@ std::string SanitizePipeCharacters(std::string pattern) { +@@ -19,6 +19,7 @@ + + #include + ++#include "base/no_destructor.h" + #include "base/command_line.h" + #include "base/logging.h" + #include "base/strings/string_util.h" +@@ -50,6 +51,10 @@ std::string SanitizePipeCharacters(std::string pattern) { // Skip up to one trailing | characters, this is the right anchor. bool pattern_has_right_anchor = base::EndsWith(piece, "|"); if (pattern_has_right_anchor) { @@ -4233,7 +4491,18 @@ diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components piece.remove_suffix(1); } if (piece.find('|') == std::string_view::npos) { -@@ -133,25 +137,18 @@ absl::optional UrlFilter::FromString(std::string filter_str) { +@@ -81,8 +86,8 @@ bool IsInvalidHostAnchoredFilter(const std::string& pattern) { + // "http://domain.com". + // However, "||domain.com/url=http://example.com" is valid. + // Discard filters that start with "||http://" or similar. +- static re2::RE2 starts_with_protocol(R"(^\|\|\w*:\/\/)"); +- return re2::RE2::PartialMatch(pattern, starts_with_protocol); ++ static const base::NoDestructor starts_with_protocol(R"(^\|\|\w*:\/\/)"); ++ return re2::RE2::PartialMatch(pattern, *starts_with_protocol); + } + + } // namespace +@@ -133,25 +138,18 @@ absl::optional UrlFilter::FromString(std::string filter_str) { if (options->Csp().has_value() && options->Csp().value().empty() && !is_allowing) { @@ -4264,7 +4533,15 @@ diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/components/adblock/core/converter/parser/url_filter_options.cc --- a/components/adblock/core/converter/parser/url_filter_options.cc +++ b/components/adblock/core/converter/parser/url_filter_options.cc -@@ -92,20 +92,14 @@ absl::optional UrlFilterOptions::FromString( +@@ -17,6 +17,7 @@ + + #include "components/adblock/core/converter/parser/url_filter_options.h" + ++#include "base/no_destructor.h" + #include "base/logging.h" + #include "base/strings/string_split.h" + #include "base/strings/string_util.h" +@@ -92,20 +93,14 @@ absl::optional UrlFilterOptions::FromString( return {}; } } else if (key == "sitekey") { @@ -4291,7 +4568,7 @@ diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/co } else { ContentType content_type = ContentTypeFromString(key); if (content_type != ContentType::Unknown) { -@@ -188,6 +182,7 @@ absl::optional UrlFilterOptions::ParseRewrite( +@@ -188,6 +183,7 @@ absl::optional UrlFilterOptions::ParseRewrite( // static SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) { SiteKeys sitekeys; @@ -4299,22 +4576,72 @@ diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/co for (auto& sitekey : base::SplitString( base::ToUpperASCII(sitekey_value), kDomainOrSitekeySeparator, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { -@@ -199,6 +194,7 @@ SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) { +@@ -199,23 +195,25 @@ SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) { // static bool UrlFilterOptions::IsValidCsp(const std::string& csp_value) { +- static re2::RE2 invalid_csp( + if ((true)) return false; - static re2::RE2 invalid_csp( ++ static const base::NoDestructor invalid_csp( "(;|^) " "?(base-uri|referrer|report-to|report-uri|upgrade-insecure-requests)\\b"); -@@ -209,6 +205,7 @@ bool UrlFilterOptions::IsValidCsp(const std::string& csp_value) { + + return !(re2::RE2::PartialMatch( +- re2::StringPiece(csp_value.data(), csp_value.size()), invalid_csp)); ++ re2::StringPiece(csp_value.data(), csp_value.size()), *invalid_csp)); + } // static void UrlFilterOptions::ParseHeaders(std::string& headers_value) { + if ((true)) return; // replace \x2c with actual , - static re2::RE2 r1("([^\\\\])\\\\x2c"); - re2::RE2::GlobalReplace(&headers_value, r1, "\\1,"); +- static re2::RE2 r1("([^\\\\])\\\\x2c"); +- re2::RE2::GlobalReplace(&headers_value, r1, "\\1,"); ++ static const base::NoDestructor r1("([^\\\\])\\\\x2c"); ++ re2::RE2::GlobalReplace(&headers_value, *r1, "\\1,"); + + // remove extra escape for \\x2c which left +- static re2::RE2 r2("\\\\x2c"); +- re2::RE2::GlobalReplace(&headers_value, r2, "x2c"); ++ static const base::NoDestructor r2("\\\\x2c"); ++ re2::RE2::GlobalReplace(&headers_value, *r2, "x2c"); + } + + // static +diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.cc b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc +--- a/components/adblock/core/converter/serializer/filter_keyword_extractor.cc ++++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc +@@ -20,6 +20,7 @@ + #include + #include + ++#include "base/no_destructor.h" + #include "base/strings/string_util.h" + #include "components/adblock/core/common/keyword_extractor_utils.h" + #include "third_party/re2/src/re2/re2.h" +@@ -38,16 +39,16 @@ absl::optional FilterKeywordExtractor::GetNextKeyword() { + // keyword because when we have a valid to block url like this one + // domain.cc/in_discovery5 returns with "discovery5" as + // one of the extracted keywords instead of "discovery" +- static const re2::RE2 filter_keyword_extractor( ++ static const base::NoDestructor filter_keyword_extractor( + "([^a-zA-Z0-9%*][a-zA-Z0-9%]{2,})"); +- static const re2::RE2 has_a_following_keyword("(^[^a-zA-Z0-9%*])"); +- static const re2::RE2 following_keyword_consume("(^[a-zA-Z0-9%*]*)"); +- if (!RE2::FindAndConsume(&input_, filter_keyword_extractor, ++ static const base::NoDestructor has_a_following_keyword("(^[^a-zA-Z0-9%*])"); ++ static const base::NoDestructor following_keyword_consume("(^[a-zA-Z0-9%*]*)"); ++ if (!RE2::FindAndConsume(&input_, *filter_keyword_extractor, + ¤t_keyword)) { + return absl::nullopt; + } +- if (!RE2::PartialMatch(input_, has_a_following_keyword)) { +- RE2::Consume(&input_, following_keyword_consume); ++ if (!RE2::PartialMatch(input_, *has_a_following_keyword)) { ++ RE2::Consume(&input_, *following_keyword_consume); + current_keyword.clear(); + continue; + } diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.cc b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc --- a/components/adblock/core/converter/serializer/flatbuffer_serializer.cc +++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc @@ -11848,15 +12175,16 @@ diff --git a/components/adblock/core/subscription/subscription_collection_impl.c diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc --- a/components/adblock/core/subscription/subscription_config.cc +++ b/components/adblock/core/subscription/subscription_config.cc -@@ -19,6 +19,7 @@ +@@ -19,6 +19,8 @@ #include ++#include "base/no_destructor.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "components/adblock/core/common/adblock_constants.h" -@@ -29,7 +30,7 @@ namespace { +@@ -29,7 +31,7 @@ namespace { int g_port_for_testing = 0; std::string GetHost() { @@ -11865,7 +12193,53 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo if (!g_port_for_testing) { return url.spec(); } -@@ -108,7 +109,19 @@ const std::vector& config::GetKnownSubscriptions() { +@@ -43,29 +45,29 @@ std::string GetHost() { + namespace adblock { + + const GURL& AdblockBaseFilterListUrl() { +- static GURL kAdblockBaseFilterListUrl(GetHost()); +- return kAdblockBaseFilterListUrl; ++ static const base::NoDestructor kAdblockBaseFilterListUrl(GetHost()); ++ return *kAdblockBaseFilterListUrl; + } + + const GURL& AcceptableAdsUrl() { +- static GURL kAcceptableAds(GetHost() + "exceptionrules.txt"); +- return kAcceptableAds; ++ static const base::NoDestructor kAcceptableAds(GetHost() + "exceptionrules.txt"); ++ return *kAcceptableAds; + } + + const GURL& AntiCVUrl() { +- static GURL kAntiCV(GetHost() + "abp-filters-anti-cv.txt"); +- return kAntiCV; ++ static const base::NoDestructor kAntiCV(GetHost() + "abp-filters-anti-cv.txt"); ++ return *kAntiCV; + } + + const GURL& DefaultSubscriptionUrl() { +- static GURL kEasylistUrl(GetHost() + "easylist.txt"); +- return kEasylistUrl; ++ static const base::NoDestructor kEasylistUrl(GetHost() + "easylist.txt"); ++ return *kEasylistUrl; + } + + const GURL& RecommendedSubscriptionListUrl() { +- static GURL kRecommendedSubscriptionListUrl(GetHost() + ++ static const base::NoDestructor kRecommendedSubscriptionListUrl(GetHost() + + "recommendations.json"); +- return kRecommendedSubscriptionListUrl; ++ return *kRecommendedSubscriptionListUrl; + } + + KnownSubscriptionInfo::KnownSubscriptionInfo() = default; +@@ -103,12 +105,24 @@ const std::vector& config::GetKnownSubscriptions() { + // The list isn't updated very often. If it starts to become a burden to + // align the C++ representation, better to update it manually because it also + // contains visibility and first run behavior options. +- static std::vector recommendations = { ++ static const base::NoDestructor> recommendations({ + {DefaultSubscriptionUrl(), "EasyList", {"en"}, SubscriptionUiVisibility::Visible, @@ -11886,7 +12260,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo SubscriptionPrivilegedFilterStatus::Forbidden}, {GURL(GetHost() + "abpindo.txt"), "ABPindo", -@@ -262,17 +275,23 @@ const std::vector& config::GetKnownSubscriptions() { +@@ -262,17 +276,23 @@ const std::vector& config::GetKnownSubscriptions() { SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, SubscriptionPrivilegedFilterStatus::Forbidden}, {AcceptableAdsUrl(), @@ -11914,7 +12288,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo {GURL(GetHost() + "i_dont_care_about_cookies.txt"), "I don't care about cookies", {}, -@@ -303,13 +322,13 @@ const std::vector& config::GetKnownSubscriptions() { +@@ -303,13 +323,13 @@ const std::vector& config::GetKnownSubscriptions() { {}, SubscriptionUiVisibility::Invisible, SubscriptionFirstRunBehavior::Ignore, @@ -11930,7 +12304,19 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo // You can customize subscriptions available on first run and in settings // here. Items are displayed in settings in order declared here. See -@@ -346,7 +365,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { +@@ -329,9 +349,9 @@ const std::vector& config::GetKnownSubscriptions() { + */ + // clang-format on + +- }; ++ }); + +- return recommendations; ++ return *recommendations; + } + + bool config::AllowPrivilegedFilters(const GURL& url) { +@@ -346,7 +366,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { for (const auto& cur : GetKnownSubscriptions()) { if (cur.url == url) { return cur.privileged_status == @@ -11939,7 +12325,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo } } -@@ -356,9 +375,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { +@@ -356,9 +376,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) { const std::vector& config::GetPreloadedSubscriptionConfiguration() { static const std::vector preloaded_subscriptions = @@ -11950,6 +12336,49 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo return preloaded_subscriptions; } +@@ -368,10 +386,11 @@ void SetFilterListServerPortForTesting(int port_for_testing) { + + const std::vector& config::MaybeSplitCombinedAdblockList( + const GURL& filter_list) { +- static std::vector EMPTY_VALUE; +- static std::string_view VALUE_EASYLIST_EN = "easylist.txt"; +- static std::map> +- filter_lists_map = { ++ static const base::NoDestructor> EMPTY_VALUE; ++ static constexpr std::string_view VALUE_EASYLIST_EN = "easylist.txt"; ++ static const base::NoDestructor< ++ std::map>> ++ filter_lists_map({ + {"abpindo+easylist.txt", {"abpindo.txt", VALUE_EASYLIST_EN}}, + {"abpvn+easylist", {"abpvn.txt", VALUE_EASYLIST_EN}}, + {"bulgarian_list+easylist.", +@@ -410,17 +429,20 @@ const std::vector& config::MaybeSplitCombinedAdblockList( + {"rolist+easylist.txt", {"rolist.txt", VALUE_EASYLIST_EN}}, + {"ruadlist+easylist.txt", {"ruadlist.txt", VALUE_EASYLIST_EN}}, + {"turkish+easylist.txt", {"turkish.txt", VALUE_EASYLIST_EN}}, +- }; ++ }); + if (filter_list.host() != AdblockBaseFilterListUrl().host()) { +- // This method works only for ad block maintained lists. +- return EMPTY_VALUE; ++ return *EMPTY_VALUE; + } ++ + auto path = + base::TrimString(filter_list.path_piece(), "/", base::TRIM_LEADING); +- if (filter_lists_map.find(path) == filter_lists_map.end()) { +- return EMPTY_VALUE; ++ ++ auto it = filter_lists_map->find(path); ++ if (it == filter_lists_map->end()) { ++ return *EMPTY_VALUE; + } +- return filter_lists_map[path]; ++ ++ return it->second; + } + + } // namespace adblock diff --git a/components/adblock/core/subscription/subscription_config.h b/components/adblock/core/subscription/subscription_config.h --- a/components/adblock/core/subscription/subscription_config.h +++ b/components/adblock/core/subscription/subscription_config.h diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index fb4e9059..e87e7702 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -164,7 +164,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -177,8 +177,8 @@ new file mode 100644 +public class BromiteJavascriptJITContentSetting extends BromiteCustomContentSetting { + public BromiteJavascriptJITContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.JAVASCRIPT_JIT, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "javascript_jit", + /*profilePrefKey*/ "javascript_jit"); @@ -197,11 +197,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_javascript_jit_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_javascript_jit_disabled; + default: + return 0; @@ -229,8 +229,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp b/components/browser_ui/strings/bromite_content_settings/javascript_jit.grdp diff --git a/build/patches/Logcat-crash-reports-UI.patch b/build/patches/Logcat-crash-reports-UI.patch index 037c272c..273d04c0 100644 --- a/build/patches/Logcat-crash-reports-UI.patch +++ b/build/patches/Logcat-crash-reports-UI.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../crash_upload_list_android.h | 1 + chrome/browser/net/chrome_network_delegate.cc | 7 + chrome/browser/ui/BUILD.gn | 1 + - chrome/browser/ui/webui/crashes/crashes_ui.cc | 175 ++++++++++++++++-- + chrome/browser/ui/webui/crashes/crashes_ui.cc | 176 ++++++++++++++++-- .../crash/core/browser/crashes_ui_util.h | 4 + .../crash/core/browser/resources/crashes.css | 67 ++++++- .../crash/core/browser/resources/crashes.html | 17 ++ @@ -18,11 +18,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/crash_strings.grdp | 22 ++- .../minidump_uploader/CrashFileManager.java | 7 +- .../MinidumpUploadCallable.java | 24 +-- - .../minidump_uploader/MinidumpUploader.java | 31 +--- + .../minidump_uploader/MinidumpUploader.java | 31 +-- .../upload_list/text_log_upload_list.cc | 1 + components/upload_list/upload_list.cc | 14 ++ components/upload_list/upload_list.h | 9 + - 17 files changed, 377 insertions(+), 138 deletions(-) + 17 files changed, 378 insertions(+), 138 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java @@ -164,7 +164,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/webui/crashes/crashes_ui.cc --- a/chrome/browser/ui/webui/crashes/crashes_ui.cc +++ b/chrome/browser/ui/webui/crashes/crashes_ui.cc -@@ -39,6 +39,19 @@ +@@ -39,6 +39,20 @@ #include "ui/base/resource/resource_scale_factor.h" #include "ui/webui/webui_util.h" @@ -177,6 +177,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w +#include "base/task/thread_pool.h" +#if BUILDFLAG(IS_ANDROID) +#include "base/android/path_utils.h" ++#include "content/public/browser/navigation_controller.h" +#endif +#include "net/base/filename_util.h" +#include "third_party/zlib/google/zip.h" @@ -184,7 +185,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w #if BUILDFLAG(IS_CHROMEOS) #include "chromeos/ash/components/dbus/debug_daemon/debug_daemon_client.h" #endif -@@ -68,6 +81,10 @@ void CreateAndAddCrashesUIHTMLSource(Profile* profile) { +@@ -68,6 +82,10 @@ void CreateAndAddCrashesUIHTMLSource(Profile* profile) { IDR_CRASHES_CRASHES_HTML); } @@ -195,7 +196,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w //////////////////////////////////////////////////////////////////////////////// // // CrashesDOMHandler -@@ -77,7 +94,7 @@ void CreateAndAddCrashesUIHTMLSource(Profile* profile) { +@@ -77,7 +95,7 @@ void CreateAndAddCrashesUIHTMLSource(Profile* profile) { // The handler for Javascript messages for the chrome://crashes/ page. class CrashesDOMHandler : public WebUIMessageHandler { public: @@ -204,7 +205,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w CrashesDOMHandler(const CrashesDOMHandler&) = delete; CrashesDOMHandler& operator=(const CrashesDOMHandler&) = delete; -@@ -94,6 +111,8 @@ class CrashesDOMHandler : public WebUIMessageHandler { +@@ -94,6 +112,8 @@ class CrashesDOMHandler : public WebUIMessageHandler { // Asynchronously fetches the list of crashes. Called from JS. void HandleRequestCrashes(const base::Value::List& args); @@ -213,7 +214,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w #if BUILDFLAG(IS_CHROMEOS) // Asynchronously triggers crash uploading. Called from JS. void HandleRequestUploads(const base::Value::List& args); -@@ -105,13 +124,30 @@ class CrashesDOMHandler : public WebUIMessageHandler { +@@ -105,13 +125,30 @@ class CrashesDOMHandler : public WebUIMessageHandler { // Asynchronously requests a user triggered upload. Called from JS. void HandleRequestSingleCrashUpload(const base::Value::List& args); @@ -245,7 +246,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w } CrashesDOMHandler::~CrashesDOMHandler() { -@@ -137,6 +173,16 @@ void CrashesDOMHandler::RegisterMessages() { +@@ -137,6 +174,16 @@ void CrashesDOMHandler::RegisterMessages() { crash_reporter::kCrashesUIRequestSingleCrashUpload, base::BindRepeating(&CrashesDOMHandler::HandleRequestSingleCrashUpload, base::Unretained(this))); @@ -262,7 +263,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w } void CrashesDOMHandler::OnJavascriptDisallowed() { -@@ -145,6 +191,10 @@ void CrashesDOMHandler::OnJavascriptDisallowed() { +@@ -145,6 +192,10 @@ void CrashesDOMHandler::OnJavascriptDisallowed() { void CrashesDOMHandler::HandleRequestCrashes(const base::Value::List& args) { AllowJavascript(); @@ -273,7 +274,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w if (first_load_) { first_load_ = false; if (list_available_) { -@@ -178,8 +228,7 @@ void CrashesDOMHandler::OnUploadListAvailable() { +@@ -178,8 +229,7 @@ void CrashesDOMHandler::OnUploadListAvailable() { } void CrashesDOMHandler::UpdateUI() { @@ -283,7 +284,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w bool system_crash_reporter = false; #if BUILDFLAG(IS_CHROMEOS) -@@ -228,14 +277,117 @@ void CrashesDOMHandler::UpdateUI() { +@@ -228,14 +278,117 @@ void CrashesDOMHandler::UpdateUI() { void CrashesDOMHandler::HandleRequestSingleCrashUpload( const base::Value::List& args) { @@ -407,7 +408,7 @@ diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/w } } // namespace -@@ -247,7 +399,8 @@ void CrashesDOMHandler::HandleRequestSingleCrashUpload( +@@ -247,7 +400,8 @@ void CrashesDOMHandler::HandleRequestSingleCrashUpload( /////////////////////////////////////////////////////////////////////////////// CrashesUI::CrashesUI(content::WebUI* web_ui) : WebUIController(web_ui) { diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index d830fb24..4498eb90 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -22,19 +22,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tab_management/TabGroupUiProperties.java | 5 + .../tab_management/TabGroupUiToolbarView.java | 17 ++ .../tab_management/TabGroupUiViewBinder.java | 3 + - .../tab_management/TabListCoordinator.java | 156 +++++++++++++++++- + .../tab_management/TabListCoordinator.java | 148 +++++++++++++++++- .../TabListEmptyCoordinator.java | 17 +- - .../tab_management/TabSwitcherPaneBase.java | 9 + + .../tab_management/TabSwitcherPaneBase.java | 9 ++ .../browser/feed/FeedSurfaceCoordinator.java | 4 + .../android/java/res/xml/main_preferences.xml | 3 +- - .../ChromeAccessibilitySettingsDelegate.java | 70 ++++++++ + .../chrome/browser/ChromeTabbedActivity.java | 3 +- + .../ChromeAccessibilitySettingsDelegate.java | 70 +++++++++ .../HeadlessBrowserControlsStateProvider.java | 5 + .../compositor/CompositorViewHolder.java | 7 + .../layouts/LayoutManagerChrome.java | 12 +- - .../layouts/LayoutManagerChromeTablet.java | 4 +- + .../layouts/LayoutManagerChromeTablet.java | 7 +- .../layouts/ToolbarSwipeLayout.java | 14 +- .../overlays/strip/ScrollDelegate.java | 2 +- - .../strip/StripLayoutHelperManager.java | 38 ++++- + .../strip/StripLayoutHelperManager.java | 37 ++++- .../scene_layer/StaticTabSceneLayer.java | 7 +- .../scene_layer/TabListSceneLayer.java | 8 + .../scene_layer/TabStripSceneLayer.java | 20 ++- @@ -47,10 +48,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ntp/RecentTabsPage.java | 31 +++- .../browser/searchwidget/SearchActivity.java | 11 ++ .../settings/FragmentDependencyProvider.java | 5 + - .../StatusIndicatorCoordinator.java | 9 + + .../StatusIndicatorCoordinator.java | 9 ++ .../StatusIndicatorSceneLayer.java | 6 +- .../browser/toolbar/ToolbarManager.java | 37 ++++- - .../chrome/browser/ui/BottomContainer.java | 18 ++ + .../chrome/browser/ui/BottomContainer.java | 18 +++ .../ui/system/StatusBarColorController.java | 8 + .../android/compositor/layer/toolbar_layer.cc | 10 +- .../scene_layer/tab_strip_scene_layer.cc | 16 +- @@ -76,30 +77,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...mniboxSuggestionsDropdownEmbedderImpl.java | 31 ++++ .../suggestions/AutocompleteCoordinator.java | 14 ++ .../suggestions/AutocompleteMediator.java | 6 +- - .../DropdownItemViewInfoListManager.java | 1 + - .../OmniboxSuggestionsDropdown.java | 11 +- + .../OmniboxSuggestionsDropdown.java | 8 + .../OmniboxSuggestionsDropdownEmbedder.java | 6 + .../base/BaseSuggestionViewBinder.java | 7 + .../strings/android_chrome_strings.grd | 6 + chrome/browser/ui/android/toolbar/BUILD.gn | 1 + .../toolbar/LocationBarFocusScrimHandler.java | 5 + + .../toolbar/ToolbarLongPressMenuHandler.java | 8 - .../bottom/BottomControlsContentDelegate.java | 12 +- .../bottom/BottomControlsCoordinator.java | 11 +- .../bottom/BottomControlsMediator.java | 32 +++- .../bottom/BottomControlsProperties.java | 6 +- .../bottom/BottomControlsViewBinder.java | 2 + .../bottom/ScrollingBottomViewSceneLayer.java | 19 ++- - .../toolbar/top/ToolbarControlContainer.java | 9 + + .../toolbar/top/ToolbarControlContainer.java | 9 ++ .../top/TopToolbarOverlayCoordinator.java | 10 ++ .../top/TopToolbarOverlayProperties.java | 8 +- .../toolbar/top/TopToolbarSceneLayer.java | 10 +- .../res/xml/accessibility_preferences.xml | 8 + - .../accessibility/AccessibilitySettings.java | 27 +++ - .../AccessibilitySettingsDelegate.java | 9 + + .../accessibility/AccessibilitySettings.java | 27 ++++ + .../AccessibilitySettingsDelegate.java | 9 ++ components/viz/common/features.cc | 2 + .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ - 86 files changed, 1061 insertions(+), 78 deletions(-) + 87 files changed, 1053 insertions(+), 87 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 @@ -562,19 +563,11 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mRecyclerView.setLayoutManager(gridLayoutManager); mMediator.registerOrientationListener(gridLayoutManager); mMediator.updateSpanCount( -@@ -435,6 +567,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -435,6 +567,17 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO } }; mRecyclerView.setLayoutManager(layoutManager); + } else if (mMode == TabListMode.LIST) { -+ if (dialogHandler == null && selectionDelegateProvider == null && -+ ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { -+ FrameLayout.LayoutParams recyclerViewParams = -+ (FrameLayout.LayoutParams) mRecyclerView.getLayoutParams(); -+ int toolbarHeightPx = mBrowserControlsStateProvider.getTopControlsHeight(); -+ recyclerViewParams.topMargin = toolbarHeightPx; -+ mRecyclerView.setLayoutParams(recyclerViewParams); -+ } + LinearLayoutManager layout = + new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) { + @Override @@ -588,7 +581,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations); } -@@ -455,7 +606,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -455,7 +598,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO assumeNonNull(mTabListEmptyCoordinator); mTabListEmptyCoordinator = new TabListEmptyCoordinator( @@ -597,7 +590,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mTabListHighlighter = new TabListHighlighter(mModelList); mTabListMergeAnimationManager = new TabListMergeAnimationManager(mRecyclerView); -@@ -792,6 +943,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -792,6 +935,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO void prepareTabSwitcherPaneView() { registerLayoutChangeListener(); mRecyclerView.setupCustomItemAnimator(); @@ -731,6 +724,19 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j getBrowserControlsManager()); + mLayoutStateProviderSupplier.set(mLayoutManager); + } + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java @@ -814,7 +820,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s + ApplicationLifetime.terminate(true); + } + }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN) -+ .setSingleLine(false) ++ .setDefaultLines(false) + .setAction(activity.getString(R.string.relaunch), + /*actionData*/null) + .setDuration(/*durationMs*/70000); @@ -920,13 +926,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo import java.util.function.Supplier; -@@ -153,7 +154,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { +@@ -114,7 +115,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { + BottomSheetController bottomSheetController, + Supplier shareDelegateSupplier, + @Nullable XrSceneCoreSessionManager xrSceneCoreSessionManager, +- TopControlsStacker topControlsStacker) { ++ TopControlsStacker topControlsStacker, ++ Supplier browserControlsManagerSupplier) { + super( + host, + contentContainer, +@@ -153,7 +155,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { bottomSheetController, shareDelegateSupplier, xrSpaceModeObservableSupplier, - topControlsStacker); + topControlsStacker, -+ /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager()); ++ browserControlsManagerSupplier); addSceneOverlay(mTabStripLayoutHelperManager); addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); mDesktopWindowStateManager = desktopWindowStateManager; @@ -983,15 +999,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 -@@ -30,6 +30,7 @@ import androidx.appcompat.content.res.AppCompatResources; - - import org.chromium.base.Callback; - import org.chromium.base.metrics.RecordUserAction; -+import org.chromium.base.supplier.Supplier; - import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.build.annotations.EnsuresNonNullIf; -@@ -116,6 +117,8 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -116,6 +116,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -1000,7 +1008,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -274,12 +277,16 @@ public class StripLayoutHelperManager +@@ -274,12 +276,16 @@ public class StripLayoutHelperManager // Drag-Drop private @Nullable TabStripDragHandler mTabStripDragHandler; @@ -1017,7 +1025,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null && mModelSelectorButton.onDown(x, y, buttons)) { return; } -@@ -304,6 +311,7 @@ public class StripLayoutHelperManager +@@ -304,6 +310,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1025,7 +1033,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null) { mModelSelectorButton.drag(x, y); } -@@ -315,6 +323,7 @@ public class StripLayoutHelperManager +@@ -315,6 +322,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1033,7 +1041,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mModelSelectorButton != null && mModelSelectorButton.click(x, y, buttons)) { mModelSelectorButton.handleClick(time, buttons, modifiers); -@@ -328,6 +337,7 @@ public class StripLayoutHelperManager +@@ -328,6 +336,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1041,7 +1049,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -336,6 +346,7 @@ public class StripLayoutHelperManager +@@ -336,6 +345,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1049,7 +1057,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(x, y); } -@@ -477,7 +488,8 @@ public class StripLayoutHelperManager +@@ -477,7 +487,8 @@ public class StripLayoutHelperManager BottomSheetController bottomSheetController, Supplier shareDelegateSupplier, @Nullable ObservableSupplier xrSpaceModeObservableSupplier, @@ -1059,7 +1067,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mContext = context; Resources res = context.getResources(); mManagerHost = managerHost; -@@ -591,6 +603,8 @@ public class StripLayoutHelperManager +@@ -591,6 +602,8 @@ public class StripLayoutHelperManager multiInstanceManager, shareDelegateSupplier, TabGroupListBottomSheetCoordinator::new); @@ -1068,7 +1076,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -860,6 +874,10 @@ public class StripLayoutHelperManager +@@ -860,6 +873,10 @@ public class StripLayoutHelperManager yOffset = 0; } @@ -1079,7 +1087,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -873,7 +891,9 @@ public class StripLayoutHelperManager +@@ -873,7 +890,9 @@ public class StripLayoutHelperManager mStripTransitionScrimOpacity, getActiveStripLayoutHelper().getLeftPaddingToDraw(), getActiveStripLayoutHelper().getRightPaddingToDraw(), @@ -1090,7 +1098,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -939,11 +959,21 @@ public class StripLayoutHelperManager +@@ -939,11 +958,21 @@ public class StripLayoutHelperManager mRightPadding, mTopPadding); @@ -2343,7 +2351,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow ? ControlsPosition.TOP : mBrowserControlsStateProvider.getControlsPosition(), mDeferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, -+ deferredIMEWindowInsetApplicationCallback::getSystemBarInsetsBottom, ++ mDeferredIMEWindowInsetApplicationCallback::getSystemBarInsetsBottom, bottomWindowPaddingSupplier); mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar); @@ -2526,17 +2534,6 @@ 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/DropdownItemViewInfoListManager.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java ---- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java -+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java -@@ -8,6 +8,7 @@ import android.content.Context; - import android.view.View; - - import org.chromium.build.annotations.NullMarked; -+import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.ui.theme.BrandedColorScheme; - import org.chromium.ui.base.DeviceFormFactor; - import org.chromium.ui.modelutil.MVCListAdapter.ListItem; diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java @@ -2550,28 +2547,25 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** A widget for showing a list of omnibox suggestions. */ @NullMarked public class OmniboxSuggestionsDropdown extends RecyclerView { -@@ -274,7 +277,6 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { - addItemDecoration(new SuggestionHorizontalDivider(context)); - - mLayoutScrollListener = suggestionLayoutScrollListener; -- setLayoutManager(mLayoutScrollListener); - mSelectionController = - new RecyclerViewSelectionController( - mLayoutScrollListener, SelectionController.Mode.SATURATING_WITH_SENTINEL); -@@ -285,6 +287,13 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -285,6 +288,9 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_bottom); int paddingTop = resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { -+ // reverse the layout so that the items are at the bottom (in reverse order) -+ // and anchored to the bottom edge -+ mLayoutScrollListener.setReverseLayout(true); + paddingTop = 0; + } -+ setLayoutManager(mLayoutScrollListener); this.setPaddingRelative(0, paddingTop, 0, mBaseBottomPadding); if (OmniboxFeatures.sAsyncViewInflation.isEnabled()) { +@@ -502,6 +508,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { + } + + /* package */ void setToolbarPosition(@ControlsPosition int toolbarPosition) { ++ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) ++ toolbarPosition = ControlsPosition.BOTTOM; + mToolbarOnTop = toolbarPosition != ControlsPosition.BOTTOM; + mLayoutScrollListener.setToolbarPosition(mToolbarOnTop); + diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java @@ -2673,6 +2667,24 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mLightScrimColor = context.getColor(R.color.omnibox_focused_fading_background_color_light); mScrimModel = new PropertyModel.Builder(ScrimProperties.ALL_KEYS) +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarLongPressMenuHandler.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarLongPressMenuHandler.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarLongPressMenuHandler.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarLongPressMenuHandler.java +@@ -216,14 +216,6 @@ public class ToolbarLongPressMenuHandler implements ConfigurationChangedObserver + @VisibleForTesting + ModelList buildMenuItems(boolean onTop) { + ModelList itemList = new ModelList(); +- itemList.add( +- new ListItemBuilder() +- .withTitleRes( +- onTop +- ? R.string.toolbar_move_to_the_bottom +- : R.string.toolbar_move_to_the_top) +- .withMenuId(MenuItemType.MOVE_ADDRESS_BAR_TO) +- .build()); + itemList.add( + new ListItemBuilder() + .withTitleRes(R.string.toolbar_copy_link) diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsContentDelegate.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsContentDelegate.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsContentDelegate.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsContentDelegate.java diff --git a/build/patches/Private-network-access-content-settings.patch b/build/patches/Private-network-access-content-settings.patch index 8ebea768..60d2585d 100644 --- a/build/patches/Private-network-access-content-settings.patch +++ b/build/patches/Private-network-access-content-settings.patch @@ -107,7 +107,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -120,8 +120,8 @@ new file mode 100644 +public class BromiteInsecurePrivateNetworkContentSetting extends BromiteCustomContentSetting { + public BromiteInsecurePrivateNetworkContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.INSECURE_PRIVATE_NETWORK, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "insecure_private_network", + /*profilePrefKey*/ "insecure_private_network"); @@ -140,11 +140,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_insecure_private_network_allowed; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_insecure_private_network_blocked; + default: + return 0; @@ -172,8 +172,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/insecure_private_network.grdp b/components/browser_ui/strings/bromite_content_settings/insecure_private_network.grdp diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index e12ba6be..462c17dd 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -97,8 +97,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../components/webauthn/GmsCoreUtils.java | 31 +- .../webauthn/IdentityCredentialsHelper.java | 78 +- .../webauthn/WebauthnModeProvider.java | 15 - - .../webauthn/cred_man/CredManHelper.java | 15 +- - .../cred_man/CredManMetricsHelper.java | 2 +- + .../webauthn/cred_man/CredManHelper.java | 24 +- + .../cred_man/CredManMetricsHelper.java | 17 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - content/test/BUILD.gn | 4 - @@ -112,7 +112,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../gms/ChromiumPlayServicesAvailability.java | 10 +- third_party/androidx/customizations.gni | 14 +- third_party/cardboard/BUILD.gn | 4 - - 88 files changed, 128 insertions(+), 2603 deletions(-) + 88 files changed, 137 insertions(+), 2618 deletions(-) create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -732,7 +732,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom import org.jni_zero.JniType; import org.jni_zero.NativeMethods; -@@ -534,13 +532,6 @@ public class PasswordManagerHelper { +@@ -531,13 +529,6 @@ public class PasswordManagerHelper { // If the exception is not a Chrome-defined one, it means that the call failed at the // API call level. It could have either failed with a known ApiException or because of a // different error (e.g. a different exception thrown by the implementation of the API). @@ -3816,17 +3816,33 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java -@@ -40,8 +40,7 @@ import org.chromium.build.annotations.NullMarked; +@@ -40,8 +40,6 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.components.webauthn.AuthenticationContextProvider; import org.chromium.components.webauthn.Barrier; -import org.chromium.components.webauthn.Fido2CredentialRequest.CancellableUiState; -import org.chromium.components.webauthn.Fido2CredentialRequestJni; -+import org.chromium.components.webauthn.CancellableUiState; import org.chromium.components.webauthn.GetAssertionOutcome; import org.chromium.components.webauthn.GetCredentialResponseCallback; import org.chromium.components.webauthn.MakeCredentialOutcome; -@@ -113,8 +112,7 @@ public class CredManHelper { +@@ -83,6 +81,16 @@ public class CredManHelper { + private CredManMetricsHelper mMetricsHelper; + private @Nullable Runnable mNoCredentialsFallback; + ++ public enum CancellableUiState { ++ NONE, ++ WAITING_FOR_RP_ID_VALIDATION, ++ WAITING_FOR_CREDENTIAL_LIST, ++ WAITING_FOR_SELECTION, ++ REQUEST_SENT_TO_PLATFORM, ++ CANCEL_PENDING, ++ CANCEL_PENDING_RP_ID_VALIDATION_COMPLETE, ++ } ++ + // A callback that provides an AuthenticatorStatus error in the first argument, and optionally a + // metrics recording outcome in the second. + public interface ErrorCallback { +@@ -113,8 +121,7 @@ public class CredManHelper { ErrorCallback errorCallback) { log(TAG, "startMakeRequest"); mClientDataJson = clientDataJson; @@ -3836,7 +3852,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut OutcomeReceiver receiver = new OutcomeReceiver<>() { -@@ -450,8 +448,7 @@ public class CredManHelper { +@@ -450,8 +457,7 @@ public class CredManHelper { CRED_MAN_PREFIX + "BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON"); assertNonNull(json); @@ -3846,7 +3862,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut if (responseSerialized == null) { logError( TAG, -@@ -619,8 +616,7 @@ public class CredManHelper { +@@ -619,8 +625,7 @@ public class CredManHelper { boolean requestPasswords, boolean preferImmediatelyAvailable, boolean ignoreGpm) { @@ -3856,7 +3872,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut boolean hasAllowCredentials = options.allowCredentials != null && options.allowCredentials.length != 0; -@@ -658,8 +654,7 @@ public class CredManHelper { +@@ -658,8 +663,7 @@ public class CredManHelper { Bundle data) { String json = data.getString(BUNDLE_KEY_REGISTRATION_RESPONSE_JSON); assertNonNull(json); @@ -3869,15 +3885,36 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java -@@ -8,7 +8,7 @@ import androidx.annotation.IntDef; +@@ -8,7 +8,6 @@ import androidx.annotation.IntDef; import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.NullMarked; -import org.chromium.components.webauthn.Fido2CredentialRequest.CancellableUiState; -+import org.chromium.components.webauthn.CancellableUiState; /** * This class is responsible for emitting histograms regarding CredMan usage in +@@ -104,20 +103,6 @@ public class CredManMetricsHelper { + } + + public void reportGetCredentialMetrics( +- @CredManGetRequestEnum int value, CancellableUiState cancellableUiState) { +- assert !(cancellableUiState == CancellableUiState.NONE) +- || !(value == CredManGetRequestEnum.SUCCESS_PASSWORD) +- : "Passwords cannot be received from modal requests!"; +- if (cancellableUiState == CancellableUiState.NONE) { +- RecordHistogram.recordEnumeratedHistogram( +- "WebAuthentication.Android.CredManModalRequests", +- value, +- CredManGetRequestEnum.NUM_ENTRIES); +- return; +- } +- RecordHistogram.recordEnumeratedHistogram( +- "WebAuthentication.Android.CredManConditionalRequest", +- value, +- CredManGetRequestEnum.NUM_ENTRIES); ++ @CredManGetRequestEnum int value, Object cancellableUiState) { + } + } diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc --- a/content/browser/push_messaging/push_messaging_manager.cc +++ b/content/browser/push_messaging/push_messaging_manager.cc diff --git a/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch b/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch index 039a58dc..008a9f45 100644 --- a/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch +++ b/build/patches/Remove-support-for-device-memory-and-cpu-recovery.patch @@ -10,11 +10,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/blob/blob_memory_controller.cc | 20 ++++++++++--------- .../browser/quota/quota_device_info_helper.cc | 17 ++++++++++++++-- .../approximated_device_memory.cc | 7 ++++++- - .../frame/navigator_concurrent_hardware.cc | 18 ++++++----------- + .../frame/navigator_concurrent_hardware.cc | 20 ++++++------------- .../measure_memory_controller.cc | 5 +++++ .../blink/renderer/core/timing/memory_info.cc | 14 ++++++++++--- .../core/timing/window_performance.cc | 2 +- - 10 files changed, 66 insertions(+), 28 deletions(-) + 10 files changed, 66 insertions(+), 30 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc @@ -65,10 +65,10 @@ diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/bl +// static +#if BUILDFLAG(IS_ANDROID) -+constexpr base::ByteCount approximated_device_memory_gb_ = GiB(4.0); ++constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(4.0); +constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024; +#else -+constexpr base::ByteCount approximated_device_memory_gb_ = GiB(8.0); ++constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(8.0); +constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024; +#endif + @@ -111,10 +111,10 @@ diff --git a/storage/browser/quota/quota_device_info_helper.cc b/storage/browser + +// static +#if BUILDFLAG(IS_ANDROID) -+constexpr base::ByteCount approximated_device_memory_gb_ = GiB(4.0); ++constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(4.0); +constexpr int64_t approximated_device_disk_size = 8ull * 1024 * 1024 * 1024; +#else -+constexpr base::ByteCount approximated_device_memory_gb_ = GiB(8.0); ++constexpr base::ByteCount approximated_device_memory_gb_ = base::GiB(8.0); +constexpr int64_t approximated_device_disk_size = 200ull * 1024 * 1024 * 1024; +#endif + @@ -162,7 +162,7 @@ diff --git a/third_party/blink/common/device_memory/approximated_device_memory.c diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc --- a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc +++ b/third_party/blink/renderer/core/frame/navigator_concurrent_hardware.cc -@@ -3,26 +3,20 @@ +@@ -3,26 +3,18 @@ // found in the LICENSE file. #include "third_party/blink/renderer/core/frame/navigator_concurrent_hardware.h" @@ -180,8 +180,8 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_concurrent_hardware -// form-factor in order to maintain plausibility over time. -constexpr unsigned kReducedHardwareConcurrencyValue = 8u; - - } // namespace - +-} // namespace +- unsigned NavigatorConcurrentHardware::hardwareConcurrency() const { - if (RuntimeEnabledFeatures::ReduceHardwareConcurrencyEnabled()) { - return kReducedHardwareConcurrencyValue; diff --git a/build/patches/Remove-voice-recognition-integration.patch b/build/patches/Remove-voice-recognition-integration.patch index d5bab139..95192f5e 100644 --- a/build/patches/Remove-voice-recognition-integration.patch +++ b/build/patches/Remove-voice-recognition-integration.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ui/RootUiCoordinator.java | 18 ----- chrome/browser/ui/android/omnibox/BUILD.gn | 1 - .../chrome/browser/omnibox/LocationBar.java | 6 -- - .../omnibox/LocationBarCoordinator.java | 12 ---- + .../omnibox/LocationBarCoordinator.java | 14 +--- .../browser/omnibox/LocationBarLayout.java | 6 -- .../browser/omnibox/LocationBarMediator.java | 65 ++----------------- .../chrome/browser/omnibox/OmniboxStub.java | 8 --- @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../suggestions/AutocompleteMediator.java | 8 --- .../omnibox/voice/VoiceRecognitionUtil.java | 1 + chrome/browser/ui/android/toolbar/BUILD.gn | 1 - - 20 files changed, 9 insertions(+), 257 deletions(-) + 20 files changed, 10 insertions(+), 258 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java @@ -422,6 +422,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public @Nullable OmniboxStub getOmniboxStub() { return mLocationBarMediator; +@@ -688,7 +681,7 @@ public class LocationBarCoordinator + public void startAutocompletePrefetch() { + if (!mNativeInitialized) return; + mAutocompleteCoordinator.prefetchZeroSuggestResults( +- mLocationBarMediator.getLocationBarDataProvider().getTab()); ++ /* tab */ null); + } + + /** @@ -854,11 +847,6 @@ public class LocationBarCoordinator // End tablet-specific methods. diff --git a/build/patches/Restore-LastTabStandingTracker.patch b/build/patches/Restore-LastTabStandingTracker.patch index c9bda8f5..b5f45d7f 100644 --- a/build/patches/Restore-LastTabStandingTracker.patch +++ b/build/patches/Restore-LastTabStandingTracker.patch @@ -11,11 +11,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../last_tab_standing_tracker_factory.cc | 36 +++++++++++ .../last_tab_standing_tracker_factory.h | 40 +++++++++++++ .../last_tab_standing_tracker_observer.h | 24 ++++++++ - .../last_tab_standing_tracker_tab_helper.cc | 45 ++++++++++++++ + .../last_tab_standing_tracker_tab_helper.cc | 46 +++++++++++++++ .../last_tab_standing_tracker_tab_helper.h | 37 ++++++++++++ ...hrome_browser_main_extra_parts_profiles.cc | 2 + chrome/browser/ui/tab_helpers.cc | 2 + - 11 files changed, 297 insertions(+) + 11 files changed, 298 insertions(+) create mode 100644 chrome/browser/permissions/last_tab_standing_tracker.cc create mode 100644 chrome/browser/permissions/last_tab_standing_tracker.h create mode 100644 chrome/browser/permissions/last_tab_standing_tracker_factory.cc @@ -291,7 +291,7 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker_tab_helper.cc new file mode 100644 --- /dev/null +++ b/chrome/browser/permissions/last_tab_standing_tracker_tab_helper.cc -@@ -0,0 +1,45 @@ +@@ -0,0 +1,46 @@ +// Copyright 2020 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -301,6 +301,7 @@ new file mode 100644 +#include "chrome/browser/permissions/last_tab_standing_tracker.h" +#include "chrome/browser/permissions/last_tab_standing_tracker_factory.h" +#include "content/public/browser/navigation_handle.h" ++#include "content/public/browser/page.h" + +LastTabStandingTrackerTabHelper::~LastTabStandingTrackerTabHelper() = default; + diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index f03f2e8a..24b301c7 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -11,11 +11,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/flags/android/chrome_feature_list.cc | 1 + .../chrome/browser/flags/ChromeFeatureList.java | 1 + - .../DropdownItemViewInfoListBuilder.java | 11 +++++++++-- + .../DropdownItemViewInfoListBuilder.java | 9 ++++++++- .../restore-Search-Ready-Omnibox-flag.inc | 13 +++++++++++++ .../restore-Search-Ready-Omnibox-flag.inc | 3 +++ .../restore-Search-Ready-Omnibox-flag.inc | 1 + - 6 files changed, 28 insertions(+), 2 deletions(-) + 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/restore-Search-Ready-Omnibox-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/restore-Search-Ready-Omnibox-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/restore-Search-Ready-Omnibox-flag.inc @@ -66,11 +66,10 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mGroupSeparatorProcessor = new GroupSeparatorProcessor(uiContext.context); mHeaderProcessor = new HeaderProcessor(uiContext.context); - registerSuggestionProcessor(new EditUrlSuggestionProcessor(uiContext)); -+ mEditUrlSuggestionProcessor = new EditUrlSuggestionProcessor(uiContext)); ++ mEditUrlSuggestionProcessor = new EditUrlSuggestionProcessor(uiContext); registerSuggestionProcessor(new AnswerSuggestionProcessor(uiContext)); registerSuggestionProcessor(new ClipboardSuggestionProcessor(uiContext)); -- registerSuggestionProcessor(new EntitySuggestionProcessor(uiContext)); -+ registerSuggestionProcessor(new EntitySuggestionProcessor(uiContext); + registerSuggestionProcessor(new EntitySuggestionProcessor(uiContext)); + registerSuggestionProcessor(mEditUrlSuggestionProcessor); + registerSuggestionProcessor(new TailSuggestionProcessor(uiContext)); diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index aef27116..5fed3693 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -21,11 +21,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/attrs.xml | 4 + chrome/android/java/res/values/dimens.xml | 2 + .../chrome/browser/ChromeTabbedActivity.java | 3 +- - .../browser/TabbedModeTabDelegateFactory.java | 10 +- + .../browser/TabbedModeTabDelegateFactory.java | 12 +- .../feedback/ChromeFeedbackCollector.java | 1 + .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++ .../identity_disc/IdentityDiscController.java | 5 +- - .../native_page/NativePageFactory.java | 19 +- + .../native_page/NativePageFactory.java | 20 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- .../chrome/browser/ntp/NewTabPageLayout.java | 29 +- @@ -42,12 +42,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/flags/ChromeFeatureList.java | 3 +- .../client_util/HomeModulesRankingHelper.java | 1 + .../strings/android_chrome_strings.grd | 6 + - .../history/core/browser/top_sites_impl.h | 4 +- + .../core/browser/top_sites_constants.h | 2 +- components/ntp_tiles/custom_links_store.cc | 2 - .../Restore-Simplified-NTP-launch.inc | 12 + - .../Restore-Simplified-NTP-launch.inc | 5 + + .../Restore-Simplified-NTP-launch.inc | 10 + .../Restore-Simplified-NTP-launch.inc | 1 + - 41 files changed, 632 insertions(+), 61 deletions(-) + 41 files changed, 639 insertions(+), 60 deletions(-) create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png @@ -594,7 +594,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; -@@ -89,6 +90,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -55,6 +56,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; + import java.util.List; + import java.util.function.Supplier; + ++import androidx.annotation.NonNull; ++ + /** + * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link + * ChromeTabbedActivity}. +@@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; private final @Nullable ExclusiveAccessManager mExclusiveAccessManager; @@ -603,7 +612,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private @Nullable NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( -@@ -119,7 +122,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -119,7 +124,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, StartupMetricsTracker startupMetricsTracker, @@ -613,7 +622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe mActivity = activity; mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate; mShareDelegateSupplier = shareDelegateSupplier; -@@ -148,6 +152,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -148,6 +154,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; mExclusiveAccessManager = exclusiveAccessManager; @@ -621,7 +630,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe } @Override -@@ -218,7 +223,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -218,7 +225,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, @@ -703,7 +712,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/I diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +@@ -12,6 +12,7 @@ import android.graphics.Rect; + import android.view.View; + + import androidx.annotation.VisibleForTesting; ++import androidx.annotation.NonNull; + + import org.chromium.base.jank_tracker.JankTracker; + import org.chromium.base.supplier.DestroyableObservableSupplier; +@@ -24,6 +25,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; @@ -711,7 +728,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; -@@ -87,6 +88,7 @@ public class NativePageFactory { +@@ -87,6 +89,7 @@ public class NativePageFactory { private final ObservableSupplier mEdgeToEdgeControllerSupplier; private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; @@ -719,7 +736,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker; private @Nullable NativePageBuilder mNativePageBuilder; -@@ -110,7 +112,8 @@ public class NativePageFactory { +@@ -110,7 +113,8 @@ public class NativePageFactory { OneshotSupplier moduleRegistrySupplier, ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, @@ -729,7 +746,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat mActivity = activity; mBottomSheetController = sheetController; mBrowserControlsManager = browserControlsManager; -@@ -129,6 +132,7 @@ public class NativePageFactory { +@@ -129,6 +133,7 @@ public class NativePageFactory { mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier; mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; @@ -737,7 +754,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat } private NativePageBuilder getBuilder() { -@@ -153,7 +157,8 @@ public class NativePageFactory { +@@ -153,7 +158,8 @@ public class NativePageFactory { mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, @@ -747,7 +764,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat } return mNativePageBuilder; } -@@ -187,9 +192,10 @@ public class NativePageFactory { +@@ -187,9 +193,10 @@ public class NativePageFactory { private final ObservableSupplier mEdgeToEdgeControllerSupplier; private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; @@ -759,7 +776,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier newTabPageCreationTracker, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -207,7 +213,8 @@ public class NativePageFactory { +@@ -207,7 +214,8 @@ public class NativePageFactory { OneshotSupplier moduleRegistrySupplier, ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, @@ -769,7 +786,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat mActivity = activity; mNewTabPageCreationTracker = newTabPageCreationTracker; mBottomSheetController = sheetController; -@@ -227,6 +234,7 @@ public class NativePageFactory { +@@ -227,6 +235,7 @@ public class NativePageFactory { mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier; mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; @@ -777,7 +794,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat } protected NativePage buildNewTabPage(Tab tab, String url) { -@@ -265,7 +273,8 @@ public class NativePageFactory { +@@ -265,7 +274,8 @@ public class NativePageFactory { mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, @@ -1523,20 +1540,18 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Item removed -diff --git a/components/history/core/browser/top_sites_impl.h b/components/history/core/browser/top_sites_impl.h ---- a/components/history/core/browser/top_sites_impl.h -+++ b/components/history/core/browser/top_sites_impl.h -@@ -37,8 +37,8 @@ class FilePath; +diff --git a/components/history/core/browser/top_sites_constants.h b/components/history/core/browser/top_sites_constants.h +--- a/components/history/core/browser/top_sites_constants.h ++++ b/components/history/core/browser/top_sites_constants.h +@@ -9,7 +9,7 @@ namespace history { - --class TopSitesImplTest; --struct SitesAndQueriesRequest; -+// How many top sites to store in the cache. + // How many top sites to store in the cache. +-static constexpr size_t kTopSitesNumber = 10; +static constexpr size_t kTopSitesNumber = 4 * 4 + 2; + } // namespace history - // This class allows requests for most visited urls on any thread. All other - // methods must be invoked on the UI thread. All mutations to internal state + #endif // COMPONENTS_HISTORY_CORE_BROWSER_TOP_SITES_CONSTANTS_H_ diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/custom_links_store.cc --- a/components/ntp_tiles/custom_links_store.cc +++ b/components/ntp_tiles/custom_links_store.cc @@ -1570,12 +1585,17 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/R new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc -@@ -0,0 +1,5 @@ +@@ -0,0 +1,10 @@ +CROMITE_FEATURE(kSimplifiedNTP, + "SimplifiedNTP", + base::FEATURE_ENABLED_BY_DEFAULT); + +SET_CROMITE_FEATURE_DISABLED(kMagicStackAndroid); ++ ++SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomization); ++SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationV2); ++SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationToolbarButton); ++SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationForMvt); diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Restore-chrome-password-store.patch b/build/patches/Restore-chrome-password-store.patch index 0b6e76bc..a4f93a3c 100644 --- a/build/patches/Restore-chrome-password-store.patch +++ b/build/patches/Restore-chrome-password-store.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ...e_password_preferences_action_bar_menu.xml | 36 + chrome/android/java/res/values/dimens.xml | 6 + .../android/java/res/xml/main_preferences.xml | 3 +- - .../settings/PasswordSettings.java | 724 ++++++++++++++++++ + .../settings/PasswordSettings.java | 697 ++++++++++++++++++ .../settings/FragmentDependencyProvider.java | 5 + .../chrome/browser/settings/MainSettings.java | 12 - .../settings/SettingsNavigationImpl.java | 4 + @@ -40,10 +40,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../CredentialEditFragmentView.java | 226 ++++++ .../CredentialEntryFragmentViewBase.java | 135 ++++ .../browser/password_manager/android/BUILD.gn | 23 + + .../PasswordManagerHelper.java | 19 +- + .../PasswordManagerUtilBridge.java | 3 +- .../settings/CallbackDelayer.java | 18 + - .../settings/DialogManager.java | 168 ++++ + .../settings/DialogManager.java | 168 +++++ .../settings/ExportErrorDialogFragment.java | 110 +++ - .../password_manager/settings/ExportFlow.java | 583 ++++++++++++++ + .../password_manager/settings/ExportFlow.java | 583 +++++++++++++++ .../settings/ExportFlowInterface.java | 90 +++ .../settings/NonCancelableProgressBar.java | 55 ++ .../PasswordAccessReauthenticationHelper.java | 143 ++++ @@ -55,15 +57,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../settings/PasswordsPreference.java | 1 + .../settings/ProgressBarDialogFragment.java | 70 ++ .../settings/ReauthenticationManager.java | 198 +++++ - .../settings/SavedPasswordEntry.java | 41 + + .../settings/SavedPasswordEntry.java | 41 ++ .../settings/SingleThreadBarrierClosure.java | 49 ++ .../settings/TimedCallbackDelayer.java | 33 + .../login_db_deprecation_runner_factory.cc | 2 +- .../android/password_manager_android_util.cc | 1 + .../android/password_ui_view_android.cc | 449 +++++++++++ .../android/password_ui_view_android.h | 196 +++++ + .../android/pwm_disabled/BUILD.gn | 2 - ...ssword_manager_settings_service_factory.cc | 4 +- - .../strings/android_chrome_strings.grd | 123 ++- + .../strings/android_chrome_strings.grd | 123 +++- .../Import-Password-Android.grdp | 9 + .../autofill/core/common/autofill_features.cc | 1 + .../settings/SettingsNavigation.java | 3 + @@ -72,7 +75,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../core/browser/import/password_importer.cc | 11 + components/sync/service/sync_prefs.cc | 2 +- .../Restore-chrome-password-store.inc | 1 + - 64 files changed, 5529 insertions(+), 23 deletions(-) + 67 files changed, 5511 insertions(+), 38 deletions(-) create mode 100644 chrome/android/java/res/layout/password_no_result.xml create mode 100644 chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -293,7 +296,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java -@@ -0,0 +1,724 @@ +@@ -0,0 +1,697 @@ +// Copyright 2014 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -322,7 +325,6 @@ new file mode 100644 +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceGroup; + -+import org.chromium.base.BuildInfo; +import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.base.supplier.ObservableSupplierImpl; +import org.chromium.build.annotations.Nullable; @@ -423,7 +425,6 @@ new file mode 100644 + private Preference mLinkPref; + private Menu mMenu; + -+ private @ManagePasswordsReferrer int mManagePasswordsReferrer; + private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); + + /** For controlling the UX flow of exporting passwords. */ @@ -472,8 +473,6 @@ new file mode 100644 + + setHasOptionsMenu(true); // Password Export might be optional but Search is always present. + -+ mManagePasswordsReferrer = getReferrerFromInstanceStateOrLaunchBundle(savedInstanceState); -+ + mIntentRequestTracker = IntentRequestTracker.createFromDelegate( + new ActivityIntentRequestTrackerDelegate(getActivity()) { + @Override @@ -499,19 +498,6 @@ new file mode 100644 + return mPageTitle; + } + -+ private @ManagePasswordsReferrer int getReferrerFromInstanceStateOrLaunchBundle( -+ Bundle savedInstanceState) { -+ if (savedInstanceState != null -+ && savedInstanceState.containsKey( -+ PasswordManagerHelper.MANAGE_PASSWORDS_REFERRER)) { -+ return savedInstanceState.getInt(PasswordManagerHelper.MANAGE_PASSWORDS_REFERRER); -+ } -+ Bundle extras = getArguments(); -+ if (!extras.containsKey(PasswordManagerHelper.MANAGE_PASSWORDS_REFERRER)) -+ return ManagePasswordsReferrer.CHROME_SETTINGS; -+ return extras.getInt(PasswordManagerHelper.MANAGE_PASSWORDS_REFERRER); -+ } -+ + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); @@ -617,19 +603,13 @@ new file mode 100644 + } + + createSavePasswordsSwitch(); -+ if (shouldShowAutoSigninOption()) { -+ createAutoSignInCheckbox(); -+ } ++ createAutoSignInCheckbox(); + + PasswordManagerHandlerProvider.getForProfile(getProfile()) + .getPasswordManagerHandler() + .updatePasswordLists(); + } + -+ private boolean shouldShowAutoSigninOption() { -+ return !BuildInfo.getInstance().isAutomotive; -+ } -+ + /** + * Removes the UI displaying the list of saved passwords or exceptions. + * @param preferenceCategoryKey The key string identifying the PreferenceCategory to be removed. @@ -799,7 +779,6 @@ new file mode 100644 + if (mSearchQuery != null) { + outState.putString(SAVED_STATE_SEARCH_QUERY, mSearchQuery); + } -+ outState.putInt(PasswordManagerHelper.MANAGE_PASSWORDS_REFERRER, mManagePasswordsReferrer); + } + + @Override @@ -916,9 +895,6 @@ new file mode 100644 + if (syncService == null || !syncService.isEngineInitialized()) { + return; + } -+ if (!PasswordManagerHelper.isSyncingPasswordsWithNoCustomPassphrase(syncService)) { -+ return; -+ } + if (mSearchQuery != null && !mNoPasswords) { + return; // Don't add the Manage Account link if there is a search going on. + } @@ -2966,6 +2942,70 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p } android_library("utils_java") { +diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java ++++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +@@ -38,8 +38,9 @@ import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.profiles.ProfileKeyedMap; + import org.chromium.chrome.browser.pwm_disabled.PasswordCsvDownloadFlowControllerFactory; +-import org.chromium.chrome.browser.pwm_disabled.PasswordManagerUnavailableDialogCoordinator; + import org.chromium.chrome.browser.sync.SyncServiceFactory; ++import org.chromium.chrome.browser.settings.SettingsNavigationFactory; ++import org.chromium.components.browser_ui.settings.SettingsNavigation; + import org.chromium.components.browser_ui.settings.SettingsCustomTabLauncher; + import org.chromium.components.prefs.PrefService; + import org.chromium.components.sync.SyncService; +@@ -187,6 +188,7 @@ public class PasswordManagerHelper { + Context context, + Supplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, + SettingsCustomTabLauncher settingsCustomTabLauncher) { ++ if ((true)) return false; + // Automotive doesn't support the export flow. + if (!DeviceInfo.isAutomotive() + && LoginDbDeprecationUtilBridge.hasPasswordsInCsv(mProfile)) { +@@ -194,16 +196,6 @@ public class PasswordManagerHelper { + return true; + } + +- if (!PasswordManagerUtilBridge.isPasswordManagerAvailable(UserPrefs.get(mProfile))) { +- new PasswordManagerUnavailableDialogCoordinator() +- .showDialog( +- context, +- assertNonNull(modalDialogManagerSupplier.get()), +- PasswordManagerUtilBridge.isGooglePlayServicesUpdatable() +- ? GmsUpdateLauncher::launch +- : null); +- return true; +- } + return false; + } + +@@ -432,6 +424,11 @@ public class PasswordManagerHelper { + Supplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, + Context context, + @Nullable String account) { ++ SettingsNavigation settingsNavigation = ++ SettingsNavigationFactory.createSettingsNavigation(); ++ settingsNavigation.startSettings( ++ context, SettingsNavigation.SettingsFragment.PASSWORDS); ++ if ((true)) return; + assert syncService != null; + assert PasswordManagerUtilBridge.isPasswordManagerAvailable(prefService); + CredentialManagerLauncher credentialManagerLauncher = +diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java +--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java ++++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java +@@ -41,8 +41,7 @@ public class PasswordManagerUtilBridge { + */ + @CalledByNative + public static boolean isGooglePlayServicesUpdatable() { +- return PackageUtils.isPackageInstalled("com.google.android.gms") +- && PackageUtils.getPackageInfo("com.android.vending", 0) != null; ++ return false; + } + + @NativeMethods diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/CallbackDelayer.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/CallbackDelayer.java new file mode 100644 --- /dev/null @@ -5890,6 +5930,18 @@ new file mode 100644 +}; + +#endif // CHROME_BROWSER_PASSWORD_MANAGER_ANDROID_PASSWORD_UI_VIEW_ANDROID_H_ +diff --git a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn b/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn +--- a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn ++++ b/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn +@@ -19,8 +19,6 @@ android_library("java") { + "java/src/org/chromium/chrome/browser/pwm_disabled/PasswordCsvDownloadDialogViewBinder.java", + "java/src/org/chromium/chrome/browser/pwm_disabled/PasswordCsvDownloadFlowController.java", + "java/src/org/chromium/chrome/browser/pwm_disabled/PasswordCsvDownloadFlowControllerFactory.java", +- "java/src/org/chromium/chrome/browser/pwm_disabled/PasswordManagerUnavailableDialogCoordinator.java", +- "java/src/org/chromium/chrome/browser/pwm_disabled/PasswordManagerUnavailableDialogMediator.java", + "java/src/org/chromium/chrome/browser/pwm_disabled/PwmDeprecationDialogsMetricsRecorder.java", + "java/src/org/chromium/chrome/browser/pwm_disabled/SingleThreadBarrierClosure.java", + "java/src/org/chromium/chrome/browser/pwm_disabled/TimedCallbackDelayer.java", diff --git a/chrome/browser/password_manager/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/password_manager_settings_service_factory.cc --- a/chrome/browser/password_manager/password_manager_settings_service_factory.cc +++ b/chrome/browser/password_manager/password_manager_settings_service_factory.cc diff --git a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch index 2c832d42..8f0d4cc4 100644 --- a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch +++ b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch @@ -57,7 +57,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + currentValue = + WebsitePreferenceBridge.isCategoryEnabled( + browserContextHandle, ContentSettingsType.JAVASCRIPT) -+ ? ContentSettingValues.ALLOW ++ ? ContentSetting.ALLOW + : ContentSetting.BLOCK; } // Not possible to embargo JAVASCRIPT. @@ -69,17 +69,17 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + private void setUpCookiesPreference(Preference preference) { + BrowserContextHandle browserContextHandle = + getSiteSettingsDelegate().getBrowserContextHandle(); -+ @ContentSettingValues ++ @ContentSetting + @Nullable + Integer currentValue = + mSite.getContentSetting(browserContextHandle, ContentSettingsType.COOKIES); + // Always show the cookies permission -+ if (currentValue == null || currentValue == ContentSettingValues.DEFAULT) { ++ if (currentValue == null || currentValue == ContentSetting.DEFAULT) { + currentValue = + WebsitePreferenceBridge.isCategoryEnabled( + browserContextHandle, ContentSettingsType.COOKIES) -+ ? ContentSettingValues.ALLOW -+ : ContentSettingValues.BLOCK; ++ ? ContentSetting.ALLOW ++ : ContentSetting.BLOCK; + } + // Not possible to embargo COOKIES. + setupContentSettingsPreference( diff --git a/build/patches/Site-setting-for-images.patch b/build/patches/Site-setting-for-images.patch index 3027d5d0..7418f412 100644 --- a/build/patches/Site-setting-for-images.patch +++ b/build/patches/Site-setting-for-images.patch @@ -148,7 +148,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -161,8 +161,8 @@ new file mode 100644 +public class BromiteImagesContentSetting extends BromiteCustomContentSetting { + public BromiteImagesContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.IMAGES, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "images", + /*profilePrefKey*/ "images"); @@ -181,11 +181,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_images_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_images_disabled; + default: + return 0; @@ -213,8 +213,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/images.grdp b/components/browser_ui/strings/bromite_content_settings/images.grdp diff --git a/build/patches/Temp-disable-experimental-web-platform-features.patch b/build/patches/Temp-disable-experimental-web-platform-features.patch index e821f55e..3618237d 100644 --- a/build/patches/Temp-disable-experimental-web-platform-features.patch +++ b/build/patches/Temp-disable-experimental-web-platform-features.patch @@ -9,7 +9,7 @@ Subject: Temp disable experimental-web-platform-features 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 -@@ -5173,10 +5173,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -5176,10 +5176,10 @@ const FeatureEntry kFeatureEntries[] = { {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName, flag_descriptions::kGpuRasterizationDescription, kOsAll, MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)}, diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 9451f33a..29b5be2f 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -34,9 +34,9 @@ Require: Content-settings-infrastructure.patch .../renderer/content_settings_agent_impl.h | 11 + .../blink/renderer/core/timezone/build.gni | 2 + .../timezone/external_timezone_controller.cc | 37 ++++ - .../timezone/external_timezone_controller.h | 33 +++ + .../timezone/external_timezone_controller.h | 34 +++ .../core/timezone/timezone_controller.h | 6 +- - 26 files changed, 755 insertions(+), 2 deletions(-) + 26 files changed, 756 insertions(+), 2 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java @@ -226,7 +226,7 @@ new file mode 100755 +import androidx.appcompat.app.AlertDialog; + +import org.chromium.content_public.browser.BrowserContextHandle; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; +import org.chromium.components.browser_ui.widget.RadioButtonWithDescription; +import org.chromium.components.browser_ui.widget.RadioButtonWithEditText; @@ -243,7 +243,7 @@ new file mode 100755 + extends Preference implements BromiteCustomTriStateSiteSettingsPreferenceImpl, + RadioGroup.OnCheckedChangeListener, + RadioButtonWithEditText.OnTextChangeListener { -+ private @ContentSettingValues int mSetting = ContentSettingValues.DEFAULT; ++ private @ContentSetting int mSetting = ContentSetting.DEFAULT; + private RadioButtonWithDescription mAllowed; + private RadioButtonWithEditText mAsk; + private RadioButtonWithDescription mBlocked; @@ -261,24 +261,24 @@ new file mode 100755 + setSelectable(false); + } + -+ public void initialize(@ContentSettingValues int setting, BrowserContextHandle browserContextHandle) { ++ public void initialize(@ContentSetting int setting, BrowserContextHandle browserContextHandle) { + mSetting = setting; + mBrowserContextHandle = browserContextHandle; + } + + @Override -+ public @ContentSettingValues int getCheckedSetting() { ++ public @ContentSetting int getCheckedSetting() { + return mSetting; + } + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + if (mAllowed.isChecked()) { -+ mSetting = ContentSettingValues.ALLOW; ++ mSetting = ContentSetting.ALLOW; + } else if (mAsk.isChecked()) { -+ mSetting = ContentSettingValues.ASK; ++ mSetting = ContentSetting.ASK; + } else if (mBlocked.isChecked()) { -+ mSetting = ContentSettingValues.BLOCK; ++ mSetting = ContentSetting.BLOCK; + } + + callChangeListener(mSetting); @@ -309,12 +309,12 @@ new file mode 100755 + if (radioButton != null) radioButton.setChecked(true); + } + -+ private RadioButtonWithDescription findRadioButton(@ContentSettingValues int setting) { -+ if (setting == ContentSettingValues.ALLOW) { ++ private RadioButtonWithDescription findRadioButton(@ContentSetting int setting) { ++ if (setting == ContentSetting.ALLOW) { + return mAllowed; -+ } else if (setting == ContentSettingValues.ASK) { ++ } else if (setting == ContentSetting.ASK) { + return mAsk; -+ } else if (setting == ContentSettingValues.BLOCK) { ++ } else if (setting == ContentSetting.BLOCK) { + return mBlocked; + } else { + return null; @@ -441,7 +441,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; +import org.chromium.components.browser_ui.site_settings.TimezoneOverrideSiteSettingsPreference; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -457,8 +457,8 @@ new file mode 100644 + + public BromiteTimezoneOverrideContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.TIMEZONE_OVERRIDE, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "timezone_override", + /*profilePrefKey*/ "timezone_override_permission_list"); @@ -477,13 +477,13 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_timezone_override_allowed; -+ case ContentSettingValues.ASK: ++ case ContentSetting.ASK: + return R.string.website_settings_category_timezone_override_custom; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_timezone_override_random; + default: + return 0; @@ -520,13 +520,13 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.ALLOW; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.ALLOW; + } + + @Override -+ public boolean isOnBlockList(@ContentSettingValues Integer contentSetting) { -+ return ContentSettingValues.ALLOW != contentSetting; ++ public boolean isOnBlockList(@ContentSetting Integer contentSetting) { ++ return ContentSetting.ALLOW != contentSetting; + } + + @Override @@ -556,7 +556,7 @@ new file mode 100644 + timeOverrideStatePreference.setOrder(order); + + timeOverrideStatePreference.setOnPreferenceChangeListener(setting); -+ @ContentSettingValues ++ @ContentSetting + int value = WebsitePreferenceBridge.getDefaultContentSetting( + browserContext, ContentSettingsType.TIMEZONE_OVERRIDE); + timeOverrideStatePreference.initialize(value, browserContext); @@ -1016,11 +1016,12 @@ diff --git a/third_party/blink/renderer/core/timezone/external_timezone_controll new file mode 100644 --- /dev/null +++ b/third_party/blink/renderer/core/timezone/external_timezone_controller.h -@@ -0,0 +1,33 @@ +@@ -0,0 +1,34 @@ +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_TIMEZONE_EXTERNAL_TIMEZONE_CONTROLLER_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_TIMEZONE_EXTERNAL_TIMEZONE_CONTROLLER_H_ + +#include ++#include + +#include "third_party/blink/renderer/core/core_export.h" + diff --git a/build/patches/Use-list-mode-for-tab-switcher.patch b/build/patches/Use-list-mode-for-tab-switcher.patch index 71d92630..3ecffb90 100644 --- a/build/patches/Use-list-mode-for-tab-switcher.patch +++ b/build/patches/Use-list-mode-for-tab-switcher.patch @@ -18,12 +18,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../tab_management/TabGridDialogView.java | 13 + .../TabGridDialogViewBinder.java | 8 + .../TabListContainerViewBinder.java | 29 +- - .../tab_management/TabListCoordinator.java | 33 +- + .../tab_management/TabListCoordinator.java | 37 +- .../TabListEditorCoordinator.java | 2 +- .../tab_management/TabListItemAnimator.java | 2 +- .../tasks/tab_management/TabListMediator.java | 22 +- .../tasks/tab_management/TabListView.java | 123 ++++++ - .../tab_management/TabListViewBinder.java | 354 ++++++++++++++++++ + .../tab_management/TabListViewBinder.java | 353 ++++++++++++++++++ .../tab_management/TabSwitcherPaneBase.java | 4 +- .../TabSwitcherPaneCoordinatorFactory.java | 5 +- .../tab_management/TabUiFeatureUtilities.java | 7 + @@ -39,7 +39,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/toolbar/top/ToolbarPhone.java | 6 +- .../layout/title_and_description_layout.xml | 31 +- .../tab-switcher-list-mode.inc | 3 + - 32 files changed, 1151 insertions(+), 35 deletions(-) + 32 files changed, 1152 insertions(+), 37 deletions(-) create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background.xml create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background_incognito.xml create mode 100644 chrome/android/features/tab_ui/java/res/layout/tab_list_card_item.xml @@ -409,7 +409,25 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser @Override public void onLayoutCompleted(RecyclerView.State state) { super.onLayoutCompleted(state); -@@ -741,7 +762,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -644,7 +665,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + public void addTabListItemSizeChangedObserver(TabListItemSizeChangedObserver observer) { + mTabListItemSizeChangedObserverList.addObserver(observer); + Size size = mMediator.getDefaultGridCardSize(); +- assert size != null; ++ if (size == null) return; + observer.onSizeChanged(mMediator.getCurrentSpanCount(), size); + } + +@@ -679,7 +700,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + + Size getThumbnailSize() { + Size size = mMediator.getDefaultGridCardSize(); +- assert size != null; ++ if (size == null) return new Size(0, 0); + return TabUtils.deriveThumbnailSize(size, mActivity); + } + +@@ -733,7 +754,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO } private void configureRecyclerViewTouchHelpers() { @@ -606,7 +624,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser new file mode 100644 --- /dev/null +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListViewBinder.java -@@ -0,0 +1,354 @@ +@@ -0,0 +1,353 @@ +// Copyright 2019 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -639,9 +657,8 @@ new file mode 100644 + +import org.chromium.chrome.browser.tab_ui.TabListFaviconProvider; +import org.chromium.chrome.browser.tab_ui.TabCardThemeUtil; -+import org.chromium.chrome.browser.tasks.tab_management.TabListMediator.TabActionButtonData; -+import org.chromium.chrome.browser.tasks.tab_management.TabListMediator.TabActionButtonData.TabActionButtonType; -+import org.chromium.chrome.browser.tasks.tab_management.TabListMediator.TabActionListener; ++import org.chromium.chrome.browser.tasks.tab_management.TabActionListener; ++import org.chromium.chrome.browser.tasks.tab_management.TabActionButtonData.TabActionButtonType; +import org.chromium.chrome.browser.tasks.tab_management.TabProperties.TabActionState; +import org.chromium.chrome.tab_ui.R; +import org.chromium.components.browser_ui.styles.SemanticColorUtils; diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 6e48f1fb..f27bf351 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -574,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav import org.chromium.components.autofill.AutofillProviderUMA; import org.chromium.components.autofill.AutofillSelectionActionMenuDelegate; import org.chromium.components.autofill.AutofillSelectionMenuItemHelper; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; @@ -604,9 +604,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav url = webContents.getVisibleUrl(); } -+ if (tabUserAgent == TabUserAgent.MOBILE) ++ if (mUserAgent == TabUserAgent.MOBILE) + return UserAgentOverrideOption.FALSE; -+ else if (tabUserAgent == TabUserAgent.DESKTOP) ++ else if (mUserAgent == TabUserAgent.DESKTOP) + return UserAgentOverrideOption.TRUE; + CommandLine commandLine = CommandLine.getInstance(); @@ -642,14 +642,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav + if (forcedByUser) { + @TabUserAgent + int tabUserAgent = TabUserAgent.DEFAULT; -+ @ContentSettingValues ++ @ContentSetting + int contentSetting = WebsitePreferenceBridge.getContentSetting( + mProfile, ContentSettingsType.REQUEST_DESKTOP_SITE, url, url); + if (!usingDesktopUserAgent -+ && contentSetting != ContentSettingValues.BLOCK) { ++ && contentSetting != ContentSetting.BLOCK) { + tabUserAgent = TabUserAgent.MOBILE; + } else if (usingDesktopUserAgent -+ && contentSetting != ContentSettingValues.ALLOW) { ++ && contentSetting != ContentSetting.ALLOW) { + tabUserAgent = TabUserAgent.DESKTOP; + } + @@ -1138,7 +1138,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -1151,8 +1151,8 @@ new file mode 100644 +public class BromiteRequestDesktopSiteContentSetting extends BromiteCustomContentSetting { + public BromiteRequestDesktopSiteContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.REQUEST_DESKTOP_SITE, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "request_desktop_site", + /*profilePrefKey*/ "request_desktop_site_permission_list"); @@ -1164,11 +1164,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_request_desktop_site_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_request_desktop_site_disabled; + default: + return 0; @@ -1186,8 +1186,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.ALLOW; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.ALLOW; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp b/components/browser_ui/strings/bromite_content_settings/request_desktop_site.grdp diff --git a/build/patches/Viewport-Protection-flag.patch b/build/patches/Viewport-Protection-flag.patch index 76b67efe..c4befe4b 100644 --- a/build/patches/Viewport-Protection-flag.patch +++ b/build/patches/Viewport-Protection-flag.patch @@ -73,7 +73,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting; +import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; +import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSetting; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.content_public.browser.BrowserContextHandle; + @@ -86,8 +86,8 @@ new file mode 100644 +public class BromiteViewportContentSetting extends BromiteCustomContentSetting { + public BromiteViewportContentSetting() { + super(/*contentSettingsType*/ ContentSettingsType.VIEWPORT, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*defaultEnabledValue*/ ContentSetting.ALLOW, ++ /*defaultDisabledValue*/ ContentSetting.BLOCK, + /*allowException*/ true, + /*preferenceKey*/ "viewport", + /*profilePrefKey*/ "viewport"); @@ -106,11 +106,11 @@ new file mode 100644 + } + + @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ public int getCategorySummary(@Nullable @ContentSetting int value) { + switch (value) { -+ case ContentSettingValues.ALLOW: ++ case ContentSetting.ALLOW: + return R.string.website_settings_category_viewport_enabled; -+ case ContentSettingValues.BLOCK: ++ case ContentSetting.BLOCK: + return R.string.website_settings_category_viewport_disabled; + default: + // this will cause a runtime exception @@ -139,8 +139,8 @@ new file mode 100644 + } + + @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) { ++ return value != ContentSetting.BLOCK; + } +} diff --git a/components/browser_ui/strings/bromite_content_settings/viewport.grdp b/components/browser_ui/strings/bromite_content_settings/viewport.grdp diff --git a/build/patches/kill-Auth.patch b/build/patches/kill-Auth.patch index 3cd70e5f..1b461fbf 100644 --- a/build/patches/kill-Auth.patch +++ b/build/patches/kill-Auth.patch @@ -19,7 +19,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s - if (delegate == null) { - delegate = new NullAccountManagerDelegate(); - } -+ delegate = new NullAccountManagerDelegate(); ++ var delegate = new NullAccountManagerDelegate(); INSTANCE = new AccountManagerFacadeImpl(delegate); } } diff --git a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch index 845b9051..80407088 100644 --- a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch +++ b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch @@ -42,6 +42,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../omnibox/LocationBarCoordinator.java | 2 - .../browser/omnibox/LocationBarMediator.java | 24 -- .../ui/webui/new_tab_page/new_tab_page_ui.cc | 6 - + chrome/browser/upgrade_detector/BUILD.gn | 2 - .../upgrade_detector/upgrade_detector_impl.cc | 6 - chrome/common/BUILD.gn | 2 - .../google_accounts_private_api_util.cc | 3 + @@ -68,7 +69,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...gled-chromium-no-special-hosts-domains.inc | 1 + net/base/url_util.cc | 25 +- services/network/network_context.cc | 2 +- - 61 files changed, 55 insertions(+), 885 deletions(-) + 62 files changed, 55 insertions(+), 887 deletions(-) create mode 100644 cromite_flags/content/public/common/content_features_cc/ungoogled-chromium-no-special-hosts-domains.inc 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 @@ -899,6 +900,25 @@ diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/br return source; } +diff --git a/chrome/browser/upgrade_detector/BUILD.gn b/chrome/browser/upgrade_detector/BUILD.gn +--- a/chrome/browser/upgrade_detector/BUILD.gn ++++ b/chrome/browser/upgrade_detector/BUILD.gn +@@ -98,7 +98,6 @@ source_set("impl") { + ] + deps += [ + "//chrome/browser:buildflags", +- "//chrome/browser/google", + "//content/public/browser", + ] + } else { +@@ -200,7 +199,6 @@ source_set("unit_tests") { + + deps += [ + "//base:i18n", +- "//chrome/browser/google", + "//components/enterprise:test_support", + "//components/network_time", + "//content/test:test_support", diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc --- a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc +++ b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc From 2c5a3eafdb7930806be4df1ca51775b8a13af675 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 1 Oct 2025 16:04:45 +0200 Subject: [PATCH 5/8] Patches for 141 (no changes) --- build/patches/Add-a-proxy-configuration-page.patch | 2 +- .../Add-custom-tab-intents-privacy-option.patch | 10 +++++----- build/patches/Add-option-to-disable-snapshots.patch | 12 ++++++------ .../patches/Add-setting-to-clear-data-on-exit.patch | 2 +- .../Cromite-Branding--improve-settings-ui.patch | 4 ++-- build/patches/Enable-Global-Privacy-Control.patch | 4 ++-- .../History-number-of-days-privacy-setting.patch | 10 +++++----- ...e-HTTP-referrals-in-cross-origin-navigation.patch | 6 +++--- build/patches/Show-NTP-at-startup.patch | 2 +- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index cd0fc177..ee5e9648 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -78,7 +78,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -102,6 +102,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -101,6 +101,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index e5cd9a9f..bb3c0812 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -239,7 +239,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import android.os.Bundle; import android.text.SpannableString; import android.text.style.ClickableSpan; -@@ -80,6 +81,15 @@ import org.chromium.ui.text.SpanApplier; +@@ -79,6 +80,15 @@ import org.chromium.ui.text.SpanApplier; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -255,7 +255,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import androidx.preference.PreferenceCategory; import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.base.shared_preferences.SharedPreferencesManager; -@@ -154,6 +164,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -153,6 +163,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment startTag, endTag, new ChromeClickableSpan(context, onClickCallback)); } @@ -265,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); -@@ -385,6 +398,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -384,6 +397,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -275,7 +275,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -405,6 +421,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -404,6 +420,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -307,7 +307,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -437,6 +478,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -436,6 +477,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index f5019581..d1945aa5 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -105,7 +105,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -29,6 +29,7 @@ import org.chromium.base.ContextUtils; +@@ -28,6 +28,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.IntentUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; @@ -113,7 +113,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.build.annotations.NullMarked; -@@ -99,13 +100,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -98,13 +99,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; -@@ -217,6 +232,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -216,6 +231,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } } @@ -164,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); // Record the launch of PG from the S&P link-row entry point privacyGuidePreference.setOnPreferenceClickListener( -@@ -442,6 +472,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -441,6 +471,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito"; @@ -172,7 +172,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { -@@ -488,6 +519,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -487,6 +518,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -538,6 +576,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -537,6 +575,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } diff --git a/build/patches/Add-setting-to-clear-data-on-exit.patch b/build/patches/Add-setting-to-clear-data-on-exit.patch index 96ab1bb5..32726289 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler; import org.chromium.chrome.browser.recent_tabs.CrossDevicePaneFactory; import org.chromium.chrome.browser.reengagement.ReengagementNotificationController; -@@ -2156,7 +2157,11 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2157,7 +2158,11 @@ public class ChromeTabbedActivity extends ChromeActivity { Intent intent = getIntent(); boolean hadCipherData = diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index e76bfff1..1d2a420e 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -247,7 +247,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -195,7 +195,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -194,7 +194,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); @@ -256,7 +256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference incognitoTrackingProtectionsPreference = findPreference(PREF_INCOGNITO_TRACKING_PROTECTIONS); -@@ -291,7 +291,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -290,7 +290,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment ChromeSwitchPreference passwordLeakTogglePref = (ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION); diff --git a/build/patches/Enable-Global-Privacy-Control.patch b/build/patches/Enable-Global-Privacy-Control.patch index 33552429..e2dcb471 100644 --- a/build/patches/Enable-Global-Privacy-Control.patch +++ b/build/patches/Enable-Global-Privacy-Control.patch @@ -178,7 +178,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -128,6 +128,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -127,6 +127,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_HTTPS_FIRST_MODE_LEGACY = "https_first_mode_legacy"; private static final String PREF_SECURE_DNS = "secure_dns"; private static final String PREF_USAGE_STATS = "usage_stats_reporting"; @@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_SAFE_BROWSING = "safe_browsing"; private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; -@@ -576,6 +577,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -575,6 +576,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } diff --git a/build/patches/History-number-of-days-privacy-setting.patch b/build/patches/History-number-of-days-privacy-setting.patch index f0ebeee7..d396b5c0 100644 --- a/build/patches/History-number-of-days-privacy-setting.patch +++ b/build/patches/History-number-of-days-privacy-setting.patch @@ -56,7 +56,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -64,6 +64,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +@@ -63,6 +63,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.SettingsFragment; import org.chromium.components.browser_ui.settings.SettingsNavigation; import org.chromium.components.browser_ui.settings.SettingsUtils; @@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; import org.chromium.components.browser_ui.site_settings.SingleCategorySettings; import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; -@@ -97,6 +98,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -96,6 +97,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -74,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** Fragment to keep track of the all the privacy related preferences. */ @NullMarked public class PrivacySettings extends ChromeBaseSettingsFragment -@@ -167,6 +171,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -166,6 +170,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private ChromeSwitchPreference allowCustomTabIntentsPref; private ChromeSwitchPreference openExternalLinksPref; @@ -83,7 +83,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); -@@ -318,6 +324,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -317,6 +323,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK); syncAndServicesLink.setSummary(buildFooterString()); @@ -124,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference thirdPartyCookies = findPreference(PREF_THIRD_PARTY_COOKIES); if (showTrackingProtectionUi()) { if (thirdPartyCookies != null) thirdPartyCookies.setVisible(false); -@@ -650,6 +690,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -649,6 +689,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment || ((System.currentTimeMillis() - updateTimeMs) < TimeUnit.DAYS.toMillis(90)); } diff --git a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch index f9f4c404..45f8d6d7 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -170,7 +170,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsFragment; @@ -178,7 +178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings; import org.chromium.chrome.browser.privacy_guide.PrivacyGuideInteractions; import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxBridge; -@@ -115,6 +116,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -114,6 +115,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_SAFE_BROWSING = "safe_browsing"; private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; @@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; private static final String PREF_PROXY_OPTIONS = "proxy"; private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; -@@ -536,6 +538,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -535,6 +537,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } diff --git a/build/patches/Show-NTP-at-startup.patch b/build/patches/Show-NTP-at-startup.patch index aaad43e5..ed361595 100644 --- a/build/patches/Show-NTP-at-startup.patch +++ b/build/patches/Show-NTP-at-startup.patch @@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivit 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 -@@ -3040,6 +3040,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3041,6 +3041,8 @@ public class ChromeTabbedActivity extends ChromeActivity { mInactivityTracker = new ChromeInactivityTracker( ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF); From 0c640542272aca6d582c9d7a4b21a94857186b6d Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 1 Oct 2025 16:05:19 +0200 Subject: [PATCH 6/8] Patches for 141: drop Temporarily-disable-Tab-Group-Sync-Android.patch --- build/cromite_patches_list.txt | 1 - ...arily-disable-Tab-Group-Sync-Android.patch | 32 ------------------- 2 files changed, 33 deletions(-) delete mode 100644 build/patches/Temporarily-disable-Tab-Group-Sync-Android.patch diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index 878cc5de..3020c30b 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -314,7 +314,6 @@ Temp-guard-FileSystemAccessPersistentPermissions.patch Never-treat-Proguard-warnings-as-errors.patch Temp-disable-experimental-web-platform-features.patch Block-leakage-of-urls-in-sandbox-iframes.patch -Temporarily-disable-Tab-Group-Sync-Android.patch Fix-chromium-build-bugs.patch Try-to-fix-2082.patch diff --git a/build/patches/Temporarily-disable-Tab-Group-Sync-Android.patch b/build/patches/Temporarily-disable-Tab-Group-Sync-Android.patch deleted file mode 100644 index 3707f6ac..00000000 --- a/build/patches/Temporarily-disable-Tab-Group-Sync-Android.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: uazo -Date: Mon, 3 Mar 2025 14:33:03 +0000 -Subject: Temporarily disable Tab Group Sync Android - ---- - .../src/org/chromium/chrome/browser/ChromeTabbedActivity.java | 2 -- - components/saved_tab_groups/public/features.cc | 2 ++ - 2 files changed, 2 insertions(+), 2 deletions(-) - -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 -@@ -1087,8 +1087,6 @@ public class ChromeTabbedActivity extends ChromeActivity { - builder.registerPane( - PaneId.INCOGNITO_TAB_SWITCHER, - LazyOneshotSupplier.fromSupplier(() -> createTabSwitcherPane(true))); -- builder.registerPane( -- PaneId.TAB_GROUPS, LazyOneshotSupplier.fromSupplier(this::createTabGroupsPane)); - if (ChromeFeatureList.sCrossDeviceTabPaneAndroid.isEnabled()) { - builder.registerPane( - PaneId.CROSS_DEVICE, -diff --git a/components/saved_tab_groups/public/features.cc b/components/saved_tab_groups/public/features.cc ---- a/components/saved_tab_groups/public/features.cc -+++ b/components/saved_tab_groups/public/features.cc -@@ -107,4 +107,6 @@ base::TimeDelta GetOriginatingSavedGroupCleanUpTimeInterval() { - return base::Seconds(time_in_seconds); - } - -+//SET_CROMITE_FEATURE_DISABLED(kTabGroupSyncAndroid); -+SET_CROMITE_FEATURE_ENABLED(kTabGroupSyncDisableNetworkLayer); - } // namespace tab_groups --- From ad41529d2c746118b76ab4ff0208750ac723475c Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 1 Oct 2025 16:06:00 +0200 Subject: [PATCH 7/8] Bump to 141.0.7390.55 --- build/RELEASE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASE b/build/RELEASE index 8de0288a..f3af872f 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -141.0.7390.43 \ No newline at end of file +141.0.7390.55 \ No newline at end of file From cf1d9c00eb61b61751c0fd2d13bf37de36f0a5bb Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:13:36 +0000 Subject: [PATCH 8/8] [AUTO] Patches auto-rebase --- build/patches/Add-cromite-flags-support.patch | 4 ++-- .../Add-custom-tab-intents-privacy-option.patch | 2 +- build/patches/Disable-all-predictors-code.patch | 2 +- .../Enable-search-engine-settings-desktop-ui.patch | 12 ++++++------ build/patches/Fix-chromium-build-bugs.patch | 2 +- ...crease-number-of-autocomplete-matches-to-10.patch | 2 +- build/patches/Remove-binary-blob-integrations.patch | 2 +- build/patches/eyeo-133.0.6943.49-base.patch | 2 +- build/patches/kill-Vision.patch | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index dd948ed4..78de0c5e 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -747,7 +747,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 -@@ -1554,5 +1554,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1558,5 +1558,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -757,7 +757,7 @@ 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 -@@ -345,6 +345,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( +@@ -346,6 +346,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( "snippet_as_subtitle", /*default_value=*/false); diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index bb3c0812..a898ec2b 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -327,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 -@@ -1149,7 +1149,7 @@ BASE_FEATURE(kMagicStackAndroid, +@@ -1153,7 +1153,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. diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index a9802541..0a2af2e3 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -1279,7 +1279,7 @@ diff --git a/services/on_device_model/ml/BUILD.gn b/services/on_device_model/ml/ + if (build_with_tflite_lib && !is_fuchsia) { deps += [ "//services/on_device_model/safety:bert_safety_model" ] } - public_deps = [ + if (is_win || is_mac || is_linux) { diff --git a/services/on_device_model/ml/ts_model.cc b/services/on_device_model/ml/ts_model.cc --- a/services/on_device_model/ml/ts_model.cc +++ b/services/on_device_model/ml/ts_model.cc diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index 753c2537..ca80737c 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -1033,7 +1033,7 @@ diff --git a/chrome/browser/ui/search_engines/edit_search_engine_controller.h b/ diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.cc b/chrome/browser/ui/search_engines/keyword_editor_controller.cc --- a/chrome/browser/ui/search_engines/keyword_editor_controller.cc +++ b/chrome/browser/ui/search_engines/keyword_editor_controller.cc -@@ -30,13 +30,14 @@ KeywordEditorController::~KeywordEditorController() = default; +@@ -29,13 +29,14 @@ KeywordEditorController::~KeywordEditorController() = default; int KeywordEditorController::AddTemplateURL(const std::u16string& title, const std::u16string& keyword, @@ -1050,7 +1050,7 @@ diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.cc b/chr return new_index; } -@@ -44,7 +45,8 @@ int KeywordEditorController::AddTemplateURL(const std::u16string& title, +@@ -43,7 +44,8 @@ int KeywordEditorController::AddTemplateURL(const std::u16string& title, void KeywordEditorController::ModifyTemplateURL(TemplateURL* template_url, const std::u16string& title, const std::u16string& keyword, @@ -1060,7 +1060,7 @@ diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.cc b/chr DCHECK(!url.empty()); const std::optional index = table_model_->IndexOfTemplateURL(template_url); -@@ -56,11 +58,12 @@ void KeywordEditorController::ModifyTemplateURL(TemplateURL* template_url, +@@ -55,11 +57,12 @@ void KeywordEditorController::ModifyTemplateURL(TemplateURL* template_url, // Don't do anything if the entry didn't change. if ((template_url->short_name() == title) && @@ -1100,7 +1100,7 @@ diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.h b/chro diff --git a/chrome/browser/ui/search_engines/template_url_table_model.cc b/chrome/browser/ui/search_engines/template_url_table_model.cc --- a/chrome/browser/ui/search_engines/template_url_table_model.cc +++ b/chrome/browser/ui/search_engines/template_url_table_model.cc -@@ -212,7 +212,8 @@ void TemplateURLTableModel::Remove(size_t index) { +@@ -211,7 +211,8 @@ void TemplateURLTableModel::Remove(size_t index) { void TemplateURLTableModel::Add(size_t index, const std::u16string& short_name, const std::u16string& keyword, @@ -1110,7 +1110,7 @@ diff --git a/chrome/browser/ui/search_engines/template_url_table_model.cc b/chro DCHECK(index <= RowCount()); DCHECK(!url.empty()); TemplateURLData data; -@@ -220,13 +221,15 @@ void TemplateURLTableModel::Add(size_t index, +@@ -219,13 +220,15 @@ void TemplateURLTableModel::Add(size_t index, data.SetKeyword(keyword); data.SetURL(url); data.is_active = TemplateURLData::ActiveStatus::kTrue; @@ -1127,7 +1127,7 @@ diff --git a/chrome/browser/ui/search_engines/template_url_table_model.cc b/chro DCHECK(index <= RowCount()); DCHECK(!url.empty()); TemplateURL* template_url = GetTemplateURL(index); -@@ -235,7 +238,7 @@ void TemplateURLTableModel::ModifyTemplateURL(size_t index, +@@ -234,7 +237,7 @@ void TemplateURLTableModel::ModifyTemplateURL(size_t index, DCHECK(template_url_service_->GetDefaultSearchProvider() != template_url || template_url->SupportsReplacement( template_url_service_->search_terms_data())); diff --git a/build/patches/Fix-chromium-build-bugs.patch b/build/patches/Fix-chromium-build-bugs.patch index cc83669a..d8eaadab 100644 --- a/build/patches/Fix-chromium-build-bugs.patch +++ b/build/patches/Fix-chromium-build-bugs.patch @@ -80,7 +80,7 @@ diff --git a/components/omnibox/browser/autocomplete_classifier.cc b/components/ 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 -@@ -896,11 +896,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; +@@ -860,11 +860,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; ScopedMLConfigForTesting::ScopedMLConfigForTesting() : original_config_(std::make_unique(GetMLConfig())) { diff --git a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch index 6defba87..1599f42e 100644 --- a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch +++ b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch @@ -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 -@@ -172,7 +172,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( +@@ -173,7 +173,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( size_t OmniboxFieldTrial::GetProviderMaxMatches( AutocompleteProvider::Type provider) { diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index 462c17dd..645b3b68 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -4012,7 +4012,7 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn --- a/services/shape_detection/BUILD.gn +++ b/services/shape_detection/BUILD.gn -@@ -127,8 +127,6 @@ if (is_android) { +@@ -129,8 +129,6 @@ if (is_android) { ] deps = [ diff --git a/build/patches/eyeo-133.0.6943.49-base.patch b/build/patches/eyeo-133.0.6943.49-base.patch index 76d26df9..42fcfb89 100644 --- a/build/patches/eyeo-133.0.6943.49-base.patch +++ b/build/patches/eyeo-133.0.6943.49-base.patch @@ -719,7 +719,7 @@ diff --git a/DEPS b/DEPS + # If you change this, also update the libc++ revision in # //buildtools/deps_revisions.gni. - 'libcxx_revision': '65a5746fb4cc5fd7fdd1773b0c50bc556ff8900a', + 'libcxx_revision': '9ce37ed6b68eda96a67199e6564ceb958ad4b37e', @@ -1617,6 +1623,10 @@ deps = { 'condition': 'checkout_android and checkout_src_internal', }, diff --git a/build/patches/kill-Vision.patch b/build/patches/kill-Vision.patch index 7388c445..29d2e195 100644 --- a/build/patches/kill-Vision.patch +++ b/build/patches/kill-Vision.patch @@ -27,7 +27,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn --- a/services/shape_detection/BUILD.gn +++ b/services/shape_detection/BUILD.gn -@@ -122,21 +122,13 @@ if (is_android) { +@@ -124,21 +124,13 @@ if (is_android) { android_library("shape_detection_java") { sources = [