From ca9926de51560ca0eb00e3c4cde77b5a17586c0b Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 8 May 2026 08:35:17 +0200 Subject: [PATCH 01/12] Patches for 148.0.7778.97 --- .../Add-AllowUserCertificates-flag.patch | 22 +- ...dd-Alt-D-hotkey-to-focus-address-bar.patch | 2 +- ...tialLowEndModeOnMidRangeDevices-flag.patch | 4 +- .../Add-a-flag-to-disable-GamePad-API.patch | 10 +- .../Add-a-proxy-configuration-page.patch | 16 +- .../Add-an-always-incognito-mode.patch | 352 ++++++++++------- .../Add-bookmark-import-export-actions.patch | 46 +-- build/patches/Add-cromite-flags-support.patch | 368 +++++++++--------- build/patches/Add-cromite-test-support.patch | 24 +- ...dd-custom-tab-intents-privacy-option.patch | 26 +- build/patches/Add-exit-menu-item.patch | 14 +- ...g-for-omnibox-autocomplete-filtering.patch | 10 +- ...nfigure-maximum-connections-per-host.patch | 8 +- .../Add-flag-to-disable-IPv6-probes.patch | 6 +- ...-to-disable-external-intent-requests.patch | 4 +- .../Add-flag-to-disable-vibration.patch | 4 +- ...-switch-for-unsupported-clangd-flags.patch | 8 +- ...Add-lifetime-options-for-permissions.patch | 80 ++-- .../Add-menu-item-to-bookmark-all-tabs.patch | 48 +-- .../Add-menu-item-to-view-source.patch | 16 +- .../Add-option-to-disable-snapshots.patch | 18 +- .../Add-option-to-force-tablet-UI.patch | 30 +- ...-to-not-persist-tabs-across-sessions.patch | 12 +- .../Add-option-to-use-home-page-as-NTP.patch | 24 +- build/patches/Add-search-engine.patch | 14 +- .../Add-setting-to-clear-data-on-exit.patch | 82 ++-- ...tting-to-enable-Credman-for-passkeys.patch | 12 +- ...d-setting-to-invert-tap-and-long-tap.patch | 68 ++-- build/patches/Add-site-engagement-flag.patch | 2 +- ...-support-for-ISupportHelpAndFeedback.patch | 2 +- build/patches/Add-webGL-site-setting.patch | 8 +- build/patches/Add-webRTC-site-settings.patch | 2 +- ...ow-building-without-enable_reporting.patch | 30 +- ...ow-building-without-supervised-users.patch | 28 +- .../Allow-playing-audio-in-background.patch | 6 +- .../Always-allow-inspect-fallback.patch | 2 +- ...ays-open-browser-controls-in-new-tab.patch | 10 +- ...e-new-tab-page-for-default-home-page.patch | 4 +- .../patches/Android-Pixel-Perfect-Mode.patch | 355 +++++++++-------- ...roid-fonts-fingerprinting-mitigation.patch | 54 +-- ...Ask-for-restart-on-connection-change.patch | 30 +- ...ioBuffer-AnalyserNode-fp-mitigations.patch | 12 +- ...Block-gateway-attacks-via-websockets.patch | 6 +- ...k-leakage-of-urls-in-sandbox-iframes.patch | 57 +-- .../Bookmarks-select-all-menu-entry.patch | 2 +- build/patches/Bromite-auto-updater.patch | 34 +- .../Bromite-subresource-adblocker.patch | 58 +-- .../Bubble-Locking-on-UI-DevTools.patch | 10 +- .../patches/Chrome-web-store-protection.patch | 267 ++++++------- ...ORS-Preflight-Cache-on-clearing-data.patch | 8 +- build/patches/Client-hints-overrides.patch | 30 +- .../patches/Close-Sessions-On-Ip-Change.patch | 2 +- ...ress-libchrome-to-free-up-some-space.patch | 2 +- .../Content-settings-infrastructure.patch | 62 +-- ...romite-Branding--improve-settings-ui.patch | 6 +- build/patches/Cromite-Branding.patch | 40 +- build/patches/Customize-selection-popup.patch | 10 +- ...ble-Accessibility-service-by-default.patch | 2 +- .../Disable-Android-Tab-Declutter.patch | 4 +- .../Disable-CSS-blink-feature-support.patch | 2 +- .../Disable-CSSDynamicRangeLimit.patch | 2 +- build/patches/Disable-Compose-feature.patch | 2 +- ...ble-Compression-Dictionary-Transport.patch | 2 +- build/patches/Disable-FedCm.patch | 2 +- build/patches/Disable-GSA-by-default.patch | 8 +- .../Disable-GetInstalledRelatedApps-API.patch | 2 +- build/patches/Disable-PrivacyGuide.patch | 4 +- .../Disable-Read-Aloud-by-default.patch | 2 +- build/patches/Disable-Real-Box.patch | 32 +- ...vation-Across-Same-Origin-Navigation.patch | 2 +- build/patches/Disable-TLS-resumption.patch | 4 +- build/patches/Disable-UA-full-version.patch | 12 +- build/patches/Disable-Viewport-Segments.patch | 2 +- build/patches/Disable-WebGPU.patch | 4 +- build/patches/Disable-all-promo-dialogs.patch | 4 +- .../Disable-conversion-measurement-api.patch | 52 +-- build/patches/Disable-crash-reporting.patch | 6 +- .../Disable-css-preferred-text-scale.patch | 2 +- .../Disable-device-bound-session.patch | 8 +- .../Disable-feeds-support-by-default.patch | 2 +- ...Disable-fetching-of-all-field-trials.patch | 28 +- build/patches/Disable-idle-detection.patch | 4 +- .../Disable-integration-with-Gemini.patch | 185 +++------ ...media-router-and-remoting-by-default.patch | 6 +- .../Disable-omission-of-URL-elements.patch | 2 +- .../patches/Disable-plugins-enumeration.patch | 2 +- ...ers-reduced-transparency-media-query.patch | 2 +- ...e-privacy-issues-in-password-manager.patch | 28 +- build/patches/Disable-privacy-sandbox.patch | 67 ++-- .../patches/Disable-ranker-url-fetcher.patch | 4 +- ...e-references-to-fonts.googleapis.com.patch | 2 +- build/patches/Disable-safety-check.patch | 47 +-- .../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 | 6 +- .../Disable-third-party-origin-trials.patch | 12 +- build/patches/Disable-various-metrics.patch | 28 +- ...allow-Android-App-Scheme-as-referrer.patch | 2 +- .../Do-not-build-API-keys-infobar.patch | 4 +- .../Do-not-compile-QR-code-sharing.patch | 30 +- .../patches/Do-not-link-with-libatomic.patch | 2 +- build/patches/DoH-improvements.patch | 10 +- ...ndroid-Dynamic-Performance-Framework.patch | 4 +- build/patches/Enable-Cert-Management-UI.patch | 2 +- .../Enable-Certificate-Transparency.patch | 17 +- .../Enable-ClientHello-Segmentation.patch | 16 +- .../Enable-Do-Not-Track-by-default.patch | 2 +- ...le-Document-Open-Inheritance-Removal.patch | 6 +- .../Enable-Global-Privacy-Control.patch | 30 +- build/patches/Enable-HEVC-by-default.patch | 2 +- ...Enable-HighEfficiencyMode-by-default.patch | 12 +- ...ctOriginIsolation-and-SitePerProcess.patch | 4 +- build/patches/Enable-component-updater.patch | 37 +- ...e-darken-websites-checkbox-in-themes.patch | 2 +- .../patches/Enable-gwp-asan-on-Android.patch | 6 +- .../Enable-menu-on-reload-button.patch | 4 +- .../Enable-network-isolation-features.patch | 2 +- ...le-platform-aac-audio-and-h264-video.patch | 14 +- build/patches/Enable-share-intent.patch | 34 +- build/patches/Enable-snackbar-swipe.patch | 10 +- ...ivation-of-the-js-debugger-statement.patch | 61 ++- ...based-site-search-on-Android-devices.patch | 2 +- .../Experimental-user-scripts-support.patch | 58 +-- build/patches/Eyeo-Adblock-for-Cromite.patch | 59 +-- build/patches/Fix-chromium-build-bugs.patch | 22 +- .../Fonts-fingerprinting-mitigation.patch | 4 +- .../Guard-for-user-agent-reduction.patch | 2 +- ...ing-against-incognito-mode-detection.patch | 4 +- ...story-number-of-days-privacy-setting.patch | 34 +- ...shared-workers-when-closing-the-page.patch | 4 +- .../patches/Improve-the-browser-sandbox.patch | 2 +- ...number-of-autocomplete-matches-to-10.patch | 2 +- build/patches/Internal-firewall.patch | 34 +- build/patches/JIT-site-settings.patch | 9 +- .../Keep-ComputePressure-disabled.patch | 2 +- .../patches/Keep-Manta-Service-Disabled.patch | 2 +- .../Keep-disabled-CpuPerformance.patch | 2 +- .../patches/Keep-disabled-FetchLaterAPI.patch | 14 +- ...ep-disabled-WebViewMediaIntegrityApi.patch | 2 +- .../Keep-empty-tabs-between-sessions.patch | 4 +- ...-allow-screenshots-in-Incognito-mode.patch | 2 +- build/patches/Keyboard-protection-flag.patch | 4 +- .../Lock-Profile-Cookie-Database.patch | 6 +- ...ing-attributes-in-some-html-elements.patch | 20 +- build/patches/Logcat-crash-reports-UI.patch | 2 +- .../patches/Modify-default-preferences.patch | 14 +- .../Move-navigation-bar-to-bottom.patch | 266 ++++++------- ...nt-settings-back-to-privacy-settings.patch | 14 +- ...ulti-Screen-Window-Placement-API-fix.patch | 20 +- .../Multiple-fingerprinting-mitigations.patch | 42 +- build/patches/Never-fetch-popular-sites.patch | 8 +- build/patches/OpenSearch-miscellaneous.patch | 36 +- .../patches/Override-Navigator-Language.patch | 2 +- .../Override-the-MV2-deprecation.patch | 2 +- .../Partition-Blink-memory-cache.patch | 6 +- .../patches/Partition-HSTS-cache-by-NAK.patch | 102 ++--- .../Partition-blobs-by-top-frame-URL.patch | 2 +- ...ning-all-cookies-by-top-frame-domain.patch | 74 ++-- .../patches/Permit-PGO-for-debug-builds.patch | 2 +- ...vate-network-access-content-settings.patch | 6 +- ...redential-fingerprinting-mitigations.patch | 6 +- ...-modal-dialog-flag-to-close-all-tabs.patch | 4 +- ...e-introduce-override_build_timestamp.patch | 2 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 10 +- ...referrals-in-cross-origin-navigation.patch | 34 +- ...th-header-upon-cross-origin-redirect.patch | 2 +- .../Remove-binary-blob-integrations.patch | 326 ++++++++++------ .../Remove-detection-of-captive-portals.patch | 2 +- build/patches/Remove-help-menu-item.patch | 34 +- ...t-for-device-memory-and-cpu-recovery.patch | 6 +- ...Remove-voice-recognition-integration.patch | 111 +++--- ...ndow-name-on-cross-origin-navigation.patch | 4 +- .../Restore-LastTabStandingTracker.patch | 20 +- .../Restore-Search-Ready-Omnibox-flag.patch | 4 +- ...-button-in-top-toolbar-customization.patch | 48 +-- .../Restore-classic-new-tab-page.patch | 6 +- .../Restore-offline-indicator-v2-flag.patch | 8 +- ...emove-disable-pull-to-refresh-effect.patch | 8 +- ...l-of-execution-context-address-space.patch | 48 +-- ...script-content-setting-secondary-url.patch | 8 +- ...-Note-9-SDK27-crazylinker-workaround.patch | 4 +- .../Set-caret-blink-interval-to-default.patch | 2 +- .../Set-the-screen-frame-rate-to-60-Hz.patch | 37 +- build/patches/Show-NTP-at-startup.patch | 36 +- ...tings-for-cookies-javascript-and-ads.patch | 8 +- build/patches/Site-setting-for-images.patch | 6 +- ...gling-Ptr-Detection-via-BackupRefPtr.patch | 12 +- ...-Add-a-log-to-track-strange-behavior.patch | 2 +- .../Temp-disable-UseContextSnapshot.patch | 2 +- ...e-experimental-web-platform-features.patch | 2 +- ...Temp-disable-predictive-back-gesture.patch | 2 +- ...ileSystemAccessPersistentPermissions.patch | 8 +- build/patches/Timezone-customization.patch | 20 +- .../Use-64-bit-WebView-processes.patch | 2 +- .../patches/Use-BoringSSL-for-RandBytes.patch | 2 +- .../Use-browser-navigation-handler.patch | 6 +- build/patches/User-agent-customization.patch | 52 +-- build/patches/Viewport-Protection-flag.patch | 42 +- ...Add-some-prefs-to-secure-preferences.patch | 2 +- .../WIN-disable-annotate-downloads.patch | 2 +- build/patches/WIN-enable-pdf-plugin.patch | 2 +- ...message-for-unsupported-hardware-aes.patch | 12 +- build/patches/Welcome-screen.patch | 36 +- build/patches/add-browser-policy.patch | 42 +- build/patches/autofill-miscellaneous.patch | 12 +- build/patches/bromite-build-utils.patch | 2 +- .../disable-WebView-variations-support.patch | 2 +- ...IPv6-connectivity-probes-to-RIPE-DNS.patch | 6 +- ...ot-block-build-incompatible-profiles.patch | 2 +- .../eyeo-133.0.6943.49-android_api.patch | 10 +- .../eyeo-133.0.6943.49-android_settings.patch | 8 +- build/patches/eyeo-133.0.6943.49-base.patch | 54 +-- ...yeo-133.0.6943.49-chrome_integration.patch | 74 ++-- .../eyeo-133.0.6943.49-extension_api.patch | 69 ++-- build/patches/kill-Vision.patch | 2 +- .../sharing-hub-always-use-visible-URL.patch | 2 +- ...le-fetching-of-languages-from-server.patch | 4 +- ...gled-chromium-Disable-profile-avatar.patch | 8 +- ...romium-Disable-translate-integration.patch | 10 +- ...chromium-Disable-webRTC-log-uploader.patch | 2 +- ...ed-chromium-no-special-hosts-domains.patch | 135 ++++--- ...RTC-do-not-expose-local-IP-addresses.patch | 2 +- 223 files changed, 2869 insertions(+), 2836 deletions(-) diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index ebc6bc0bf..ebbccdaa0 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 -@@ -255,6 +255,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -256,6 +256,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; -@@ -1134,6 +1135,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -1137,6 +1138,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 -@@ -204,6 +204,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -206,6 +206,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedNoViewCache, &feed::kFeedPerformanceStudy, &feed::kFeedRecyclerBinderUnmountOnDetach, @@ -51,7 +51,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 -@@ -167,6 +167,7 @@ public abstract class ChromeFeatureList { +@@ -168,6 +168,7 @@ public abstract class ChromeFeatureList { "AccountForSuppressedKeyboardInsets"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 = "AdaptiveButtonInTopToolbarCustomizationV2"; @@ -59,23 +59,23 @@ 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"; // Don't clean up this flag yet, BCIV is launched, so this needs to be enabled by -@@ -803,6 +804,8 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn = - newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false, true); +@@ -836,6 +837,8 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sAndroidXrImmersivePlayer = + newCachedFlag(ANDROID_XR_IMMERSIVE_PLAYER, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); + public static final CachedFlag sAllowUserCertificates = + newCachedFlag(ALLOW_USER_CERTIFICATES, false); public static final CachedFlag sAppSpecificHistoryViewIntent = newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true); public static final CachedFlag sAsyncNotificationManager = -@@ -1156,6 +1159,7 @@ public abstract class ChromeFeatureList { +@@ -1217,6 +1220,7 @@ public abstract class ChromeFeatureList { sAccountForSuppressedKeyboardInsets, sAndroidAnimatedProgressBarInBrowser, sAndroidApb144Patch1, + sAllowUserCertificates, - sAndroidAppIntegrationModule, - sAndroidAppIntegrationMultiDataSource, - sAndroidAutoMintedTwa, + sAndroidApb144Patch2, + sAndroidApb144Patch3, + sAndroidApb144Patch4, diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc new file mode 100644 --- /dev/null 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 8326f07a5..4e446fa00 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,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -935,6 +935,12 @@ public class KeyboardShortcuts { +@@ -939,6 +939,12 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_ESCAPE, KeyEvent.META_CTRL_ON); } diff --git a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch index 5080026d8..a699d5cae 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 -@@ -198,6 +198,10 @@ bool IsReducePPMsEnabled() { +@@ -199,6 +199,10 @@ bool IsReducePPMsEnabled() { return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed); } @@ -37,7 +37,7 @@ diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_p #include "content/renderer/render_process_impl.h" #include "build/build_config.h" -@@ -122,10 +123,18 @@ RenderProcessImpl::RenderProcessImpl() +@@ -123,10 +124,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 7461dba41..eddd35f11 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -241,6 +241,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { +@@ -246,6 +246,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)}, {wf::EnablePeriodicBackgroundSync, raw_ref(features::kPeriodicBackgroundSync)}, @@ -40,7 +40,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 -@@ -63,4 +63,12 @@ bool IsGamepadMultitouchEnabled() { +@@ -59,4 +59,12 @@ bool IsGamepadMultitouchEnabled() { return false; } @@ -56,10 +56,10 @@ diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/publ diff --git a/device/gamepad/public/cpp/gamepad_features.h b/device/gamepad/public/cpp/gamepad_features.h --- a/device/gamepad/public/cpp/gamepad_features.h +++ b/device/gamepad/public/cpp/gamepad_features.h -@@ -17,6 +17,7 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kEnableGamepadMultitouch); - GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE( - kEnableSimulatedGamepadDataFetcher); +@@ -17,6 +17,7 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE( GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kGamepadRawInputChangeEvent); + GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE( + kClaimDuplicateGamepadsProductIdentifier); +GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kRestrictGamepadAccess); #if BUILDFLAG(IS_WIN) diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index a196d790c..ac66adcaa 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -80,7 +80,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 -@@ -108,6 +108,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -110,6 +110,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"; @@ -91,7 +91,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 -@@ -424,6 +424,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -420,6 +420,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); @@ -102,7 +102,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -225,6 +225,9 @@ +@@ -236,6 +236,9 @@ @@ -208,7 +208,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 -@@ -1438,6 +1440,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1374,6 +1376,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -663,7 +663,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 -@@ -158,6 +158,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", @@ -685,7 +685,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 -@@ -449,7 +452,7 @@ void RegisterChromeWebUIConfigs() { +@@ -453,7 +456,7 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); #endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID) @@ -1148,7 +1148,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -206,6 +206,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -210,6 +210,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer"; @@ -1339,7 +1339,7 @@ diff --git a/net/features.gni b/net/features.gni diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc --- a/net/proxy_resolution/pac_file_fetcher_impl.cc +++ b/net/proxy_resolution/pac_file_fetcher_impl.cc -@@ -359,14 +359,6 @@ bool PacFileFetcherImpl::ConsumeBytesRead(URLRequest* request, int num_bytes) { +@@ -364,14 +364,6 @@ bool PacFileFetcherImpl::ConsumeBytesRead(URLRequest* request, int num_bytes) { return false; } diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index e69d526e2..eff62faa2 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tab_restore/HistoricalTabSaverImpl.java | 17 +- .../TabbedAppMenuPropertiesDelegate.java | 4 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- - .../browser/tabmodel/ChromeTabCreator.java | 5 +- + .../browser/tabmodel/ChromeTabCreator.java | 1 - .../tabmodel/TabModelSelectorImpl.java | 3 + .../tabmodel/TabPersistentStoreImpl.java | 7 + .../browser/toolbar/ToolbarManager.java | 1 + @@ -68,8 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/prefs/browser_prefs.cc | 5 + chrome/browser/profiles/profile_selections.cc | 10 + chrome/browser/profiles/profile_selections.h | 7 +- - .../signin/services/ProfileDataCache.java | 18 +- - .../browser/ui/android/native_page/BUILD.gn | 2 + + .../signin/services/ProfileDataCache.java | 61 +----- .../browser/ui/native_page/NativePage.java | 17 +- .../browser/omnibox/LocationBarMediator.java | 8 + .../strings/android_chrome_strings.grd | 25 +++ @@ -89,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 + - 70 files changed, 812 insertions(+), 120 deletions(-) + 69 files changed, 808 insertions(+), 161 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 @@ -102,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -649,6 +649,7 @@ chrome_java_resources = [ +@@ -661,6 +661,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", @@ -121,7 +120,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -984,6 +985,7 @@ chrome_java_sources = [ +@@ -999,6 +1000,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", @@ -259,12 +258,12 @@ 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.accessibility.settings.CaretBrowsingDialog; -@@ -860,13 +864,18 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -868,13 +872,18 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt mMultiInstanceManager); // For saving non-incognito tab closures for Recent Tabs. - mHistoricalTabModelObserver = -- new HistoricalTabModelObserver(mTabModelSelector.getTabGroupModelFilter(false)); +- new HistoricalTabModelObserver(mTabModelSelector.getModel(false)); - mHistoricalTabModelObserver.addSecondaryTabModelSupplier( - ArchivedTabModelOrchestrator.getForProfile( + boolean alwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); @@ -273,7 +272,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); + if ((alwaysIncognito && historyEnabledInIncognito) || !alwaysIncognito) { + mHistoricalTabModelObserver = -+ new HistoricalTabModelObserver(mTabModelSelector.getTabGroupModelFilter(alwaysIncognito)); ++ new HistoricalTabModelObserver(mTabModelSelector.getModel(alwaysIncognito)); + mHistoricalTabModelObserver.addSecondaryTabModelSupplier( + ArchivedTabModelOrchestrator.getForProfile( mTabModelSelector.getCurrentModel().getProfile()) @@ -283,7 +282,7 @@ 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( -@@ -3544,7 +3553,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -3573,7 +3582,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt shouldPersistAcrossReboots() && persistentState != null && persistentState.getBoolean(IS_INCOGNITO_SELECTED, false); @@ -325,7 +324,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -685,8 +687,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -684,8 +686,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !isNativePage && !isFileScheme && !isContentScheme @@ -348,7 +347,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; -@@ -466,6 +467,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -473,6 +474,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { mShowEphemeralTabNewLabel = null; mCustomActionMap.clear(); @@ -358,10 +357,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -537,7 +541,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -544,7 +548,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } - if (FirstRunStatus.getFirstRunFlowComplete()) { + if (areMandatoryFlowsCompleted(getProfile())) { - if (!mItemDelegate.isIncognito() + if ((always_incognito || !mItemDelegate.isIncognito()) && UrlUtilities.isDownloadableScheme(mParams.getLinkUrl())) { @@ -416,7 +415,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.DefaultBrowserInfo; + import org.chromium.chrome.browser.DefaultBrowserMenuUtils; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.bookmarks.BookmarkModel; @@ -239,6 +240,10 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat @@ -433,7 +432,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 -@@ -106,6 +106,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -111,6 +111,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -443,7 +442,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; -@@ -1372,6 +1375,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1403,6 +1406,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid return getInitialActivityWidth() > 0; } @@ -460,7 +459,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/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -40,6 +40,7 @@ import org.chromium.build.annotations.Contract; +@@ -41,6 +41,7 @@ import org.chromium.build.annotations.Contract; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -468,7 +467,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher; -@@ -84,6 +85,10 @@ import org.chromium.url.GURL; +@@ -85,6 +86,10 @@ import org.chromium.url.GURL; import java.io.File; import java.util.Locale; @@ -479,7 +478,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo /** A class containing some utility static methods. */ @NullMarked public class DownloadUtils { -@@ -295,7 +300,13 @@ public class DownloadUtils { +@@ -296,7 +301,13 @@ public class DownloadUtils { public static boolean isAllowedToDownloadPage(@Nullable Tab tab) { if (tab == null) return false; @@ -497,7 +496,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java -@@ -374,6 +374,7 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -378,6 +378,7 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver }; mTabSupplier = tabSupplier; @@ -505,7 +504,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History if (canShowSigninPromo) { mHistorySyncPromoCoordinator = new SigninPromoCoordinator( -@@ -453,8 +454,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -458,8 +459,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.generateFooterItems(); // Listen to changes in sign in state. @@ -517,7 +516,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // Create PrefChangeRegistrar to receive notifications on preference changes. mPrefChangeRegistrar = PrefServiceUtil.createFor(profile); -@@ -531,8 +533,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -536,8 +538,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.onDestroyed(); mLargeIconBridge.destroy(); mLargeIconBridge = null; @@ -546,16 +545,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ @NullMarked public class HistoryManager -@@ -177,7 +185,7 @@ public class HistoryManager +@@ -179,7 +187,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. - if (mIsIncognito) { + if (shouldShowIncognitoPlaceholder()) { + mIsLargeFormFactorDevice = false; mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); - return; -@@ -472,9 +480,22 @@ public class HistoryManager +@@ -487,9 +495,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -579,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -542,7 +563,7 @@ public class HistoryManager +@@ -557,7 +578,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -591,7 +590,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/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 -@@ -25,6 +25,14 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -26,6 +26,14 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.function.Supplier; @@ -606,7 +605,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Native page for managing browsing history. */ @NullMarked public class HistoryPage extends BasicNativePage { -@@ -61,6 +69,14 @@ public class HistoryPage extends BasicNativePage { +@@ -64,6 +72,14 @@ public class HistoryPage extends BasicNativePage { BackPressManager backPressManager) { super(host); @@ -632,7 +631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -465,7 +466,8 @@ public class NativePageFactory { +@@ -455,7 +456,8 @@ public class NativePageFactory { NativePage page; @@ -880,7 +879,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 -@@ -54,6 +54,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; +@@ -53,6 +53,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; @@ -888,7 +887,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.FragmentSettingsNavigation; -@@ -243,6 +244,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -248,6 +249,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl SigninAndHistorySyncActivityLauncherImpl.get(), new SettingsCustomTabLauncherImpl())); } @@ -1016,7 +1015,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ai.AiAssistantService; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; -@@ -260,7 +261,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -267,7 +268,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // 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. @@ -1029,7 +1028,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -244,6 +244,8 @@ import org.chromium.ui.UiUtils; +@@ -261,6 +261,8 @@ import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityResultTracker; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1038,7 +1037,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.UiAndroidFeatureList; import org.chromium.ui.display.DisplayUtil; -@@ -1404,7 +1406,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1469,7 +1471,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1050,21 +1049,10 @@ 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 -@@ -54,6 +54,10 @@ import org.chromium.url.GURL; - import java.util.concurrent.CompletableFuture; - import java.util.function.Supplier; - -+import org.chromium.base.ContextUtils; -+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; -+import org.chromium.chrome.browser.tab.TabObserver; -+ - /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ - public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabModelOrderController { - /** -@@ -591,7 +595,6 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode - // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. +@@ -595,7 +595,6 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode public @Nullable Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { + if (mTabModel == null) return null; - assert !mIncognito; // Don't re-use tabs for intents from Chrome. Note that this can be spoofed so shouldn't be // relied on for anything security sensitive. @@ -1079,8 +1067,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.CustomTabProfileType; - import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; -@@ -143,6 +144,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod + import org.chromium.chrome.browser.multiwindow.MultiInstanceOrchestratorFactory; +@@ -140,6 +141,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ProfileProvider profileProvider = mProfileProviderSupplier.get(); assert profileProvider != null; @@ -1100,7 +1088,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; import org.chromium.chrome.browser.crypto.CipherFactory; import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -728,6 +729,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore { +@@ -735,6 +736,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore { } } } @@ -1116,7 +1104,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 -@@ -58,6 +58,7 @@ import org.chromium.build.annotations.Nullable; +@@ -57,6 +57,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -1241,7 +1229,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 -@@ -475,6 +475,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { +@@ -463,6 +463,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { return AimEligibilityServiceFactory::GetForProfile(profile_); } @@ -1328,7 +1316,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c #include "components/content_settings/core/browser/content_settings_pref_provider.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/permissions/features.h" -@@ -117,9 +118,25 @@ scoped_refptr +@@ -121,9 +122,25 @@ scoped_refptr GetForProfile(original_profile); bool should_record_metrics = profiles::IsRegularUserProfile(profile); @@ -1355,7 +1343,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c /*store_last_modified=*/true, profile->ShouldRestoreOldSessionCookies(), should_record_metrics)); -@@ -137,6 +154,9 @@ scoped_refptr +@@ -141,6 +158,9 @@ scoped_refptr std::move(component_extension_provider)); #endif // BUILDFLAG(IS_CHROMEOS) @@ -1368,7 +1356,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc -@@ -93,6 +93,12 @@ +@@ -92,6 +92,12 @@ #include "chrome/browser/safe_browsing/safe_browsing_service.h" #endif @@ -1381,7 +1369,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE)); using safe_browsing::SafeBrowsingNavigationObserverManager; -@@ -232,6 +238,16 @@ const int kExtensionReferrerUserGestureLimit = 2; +@@ -231,6 +237,16 @@ const int kExtensionReferrerUserGestureLimit = 2; WebstorePrivateApi::Delegate* test_delegate = nullptr; @@ -1398,7 +1386,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api // We allow the web store to set a string containing login information when a // purchase is made, so that when a user logs into sync with a different // account we can recognize the situation. The Get function returns the login if -@@ -453,7 +469,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() { +@@ -452,7 +468,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() { params_ = Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params_); @@ -1407,16 +1395,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api if (!crx_file::id_util::IdIsValid(details().id)) { return RespondNow(BuildResponse(api::webstore_private::Result::kInvalidId, -@@ -1097,7 +1113,7 @@ void WebstorePrivateBeginInstallWithManifest3Function:: - DCHECK(extension); - DCHECK(contents); - -- Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); -+ Profile* profile = GetProfileInIncognito(Profile::FromBrowserContext(contents->GetBrowserContext())); - - std::string message_from_admin = - ExtensionManagementFactory::GetForBrowserContext(profile) -@@ -1133,7 +1149,7 @@ WebstorePrivateCompleteInstallFunction::Run() { +@@ -1137,7 +1153,7 @@ WebstorePrivateCompleteInstallFunction::Run() { std::optional params = CompleteInstall::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); @@ -1425,7 +1404,16 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api if (profile->IsGuestSession() || profile->IsOffTheRecord()) { return RespondNow(Error(kIncognitoError)); } -@@ -1442,7 +1458,7 @@ ExtensionFunction::ResponseValue +@@ -1303,7 +1319,7 @@ WebstorePrivateIsInIncognitoModeFunction:: + + ExtensionFunction::ResponseAction + WebstorePrivateIsInIncognitoModeFunction::Run() { +- Profile* profile = Profile::FromBrowserContext(browser_context()); ++ Profile* profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); + return RespondNow(ArgumentList(IsInIncognitoMode::Results::Create( + profile != profile->GetOriginalProfile()))); + } +@@ -1446,7 +1462,7 @@ ExtensionFunction::ResponseValue WebstorePrivateGetExtensionStatusFunction::BuildResponseWithoutManifest( const ExtensionId& extension_id) { ExtensionInstallStatus status = GetWebstoreExtensionInstallStatus( @@ -1434,7 +1422,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api api::webstore_private::ExtensionInstallStatus api_status = ConvertExtensionInstallStatusForAPI(status); return ArgumentList(GetExtensionStatus::Results::Create(api_status)); -@@ -1456,7 +1472,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed( +@@ -1460,7 +1476,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed( return; } @@ -1456,7 +1444,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" -@@ -632,6 +635,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -631,6 +634,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1470,7 +1458,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) { return nullptr; } -@@ -640,6 +650,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -639,6 +649,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1524,7 +1512,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc --- a/chrome/browser/offline_pages/android/offline_page_bridge.cc +++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc -@@ -45,6 +45,9 @@ +@@ -44,6 +44,9 @@ #include "content/public/browser/web_contents.h" #include "net/base/filename_util.h" #include "url/android/gurl_android.h" @@ -1534,7 +1522,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/OfflinePageBridge_jni.h" -@@ -728,9 +731,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( +@@ -727,9 +730,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( } if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { @@ -1689,7 +1677,7 @@ diff --git a/chrome/browser/offline_pages/offline_page_model_factory.h b/chrome/ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/offline_pages/recent_tab_helper.cc --- a/chrome/browser/offline_pages/recent_tab_helper.cc +++ b/chrome/browser/offline_pages/recent_tab_helper.cc -@@ -28,6 +28,11 @@ +@@ -27,6 +27,11 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/navigation_handle.h" @@ -1701,7 +1689,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ namespace { class DefaultRecentTabHelperDelegate : public offline_pages::RecentTabHelper::Delegate { -@@ -179,6 +184,14 @@ bool RecentTabHelper::EnsureInitialized() { +@@ -178,6 +183,14 @@ bool RecentTabHelper::EnsureInitialized() { // WebContents with its origin as well. snapshots_enabled_ = !tab_id_.empty() && !web_contents()->GetBrowserContext()->IsOffTheRecord(); @@ -1716,7 +1704,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ if (snapshots_enabled_) { page_model_ = OfflinePageModelFactory::GetForBrowserContext( -@@ -338,7 +351,8 @@ void RecentTabHelper::WebContentsWasHidden() { +@@ -337,7 +350,8 @@ void RecentTabHelper::WebContentsWasHidden() { GetRecentPagesClientId(), base::BindOnce(&RecentTabHelper::ContinueSnapshotWithIdsToPurge, weak_ptr_factory_.GetWeakPtr(), @@ -1726,7 +1714,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ last_n_latest_saved_snapshot_info_.reset(); } -@@ -402,11 +416,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { +@@ -401,11 +415,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { downloads_latest_saved_snapshot_info_->request_id, downloads_latest_saved_snapshot_info_->origin); std::vector ids{downloads_latest_saved_snapshot_info_->request_id}; @@ -1740,7 +1728,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ OfflinePageModel::DeletePageResult::SUCCESS); } } -@@ -423,6 +438,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { +@@ -422,6 +437,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { // for early termination in case of errors. void RecentTabHelper::ContinueSnapshotWithIdsToPurge( SnapshotProgressInfo* snapshot_info, @@ -1748,7 +1736,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ const std::vector& page_ids) { DCHECK(snapshot_info); -@@ -432,13 +448,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge( +@@ -431,13 +447,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge( criteria.offline_ids = page_ids; page_model_->DeletePagesWithCriteria( criteria, base::BindOnce(&RecentTabHelper::ContinueSnapshotAfterPurge, @@ -1819,7 +1807,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -244,6 +244,7 @@ +@@ -248,6 +248,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1827,7 +1815,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" -@@ -1918,6 +1919,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1865,6 +1866,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1892,15 +1880,15 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java --- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java +++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java -@@ -75,7 +75,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang - - private final Context mContext; +@@ -80,7 +80,6 @@ public class ProfileDataCache implements IdentityManager.Observer { private final AccountManagerFacade mAccountManagerFacade; + private final @Nullable AccountManagerAccountsChangeObserver + mAccountManagerAccountsChangeObserver; - private final IdentityManager mIdentityManager; + private final @Nullable IdentityManagerAccountsChangeObserver + mIdentityManagerAccountsChangeObserver; private final int mImageSize; - // The badge for a given account is selected as follows: - // * If there is a config for that specific account, use that -@@ -91,13 +90,11 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang +@@ -98,13 +97,11 @@ public class ProfileDataCache implements IdentityManager.Observer { ProfileDataCache( Context context, AccountManagerFacade accountManagerFacade, @@ -1912,73 +1900,137 @@ diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome mContext = context; mAccountManagerFacade = accountManagerFacade; - mIdentityManager = identityManager; - mImageSize = imageSize; - mDefaultBadgeConfig = badgeConfig; - mPlaceholderImage = getScaledPlaceholderImage(context, imageSize); -@@ -255,8 +252,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang - return; - } - mPerAccountBadgeConfig.put(accountId, badgeConfig); -- var accountInfo = mIdentityManager.findExtendedAccountInfoByAccountId(accountId); -- onExtendedAccountInfoUpdated(accountInfo); - } - - /** -@@ -266,7 +261,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang - ThreadUtils.assertOnUiThread(); + if (SigninFeatureMap.isEnabled(SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS)) { + mAccountManagerAccountsChangeObserver = null; + mIdentityManagerAccountsChangeObserver = new IdentityManagerAccountsChangeObserver(); +@@ -280,12 +277,10 @@ public class ProfileDataCache implements IdentityManager.Observer { if (mObservers.isEmpty()) { - mAccountManagerFacade.addObserver(this); + if (SigninFeatureMap.isEnabled( + SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS)) { +- mIdentityManager.addObserver(assumeNonNull(mIdentityManagerAccountsChangeObserver)); + } else { + mAccountManagerFacade.addObserver( + assumeNonNull(mAccountManagerAccountsChangeObserver)); + } - mIdentityManager.addObserver(this); } mObservers.addObserver(observer); } -@@ -279,7 +273,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang +@@ -297,11 +292,8 @@ public class ProfileDataCache implements IdentityManager.Observer { + ThreadUtils.assertOnUiThread(); mObservers.removeObserver(observer); if (mObservers.isEmpty()) { - mAccountManagerFacade.removeObserver(this); - mIdentityManager.removeObserver(this); + if (SigninFeatureMap.isEnabled( + SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS)) { +- mIdentityManager.removeObserver( +- assumeNonNull(mIdentityManagerAccountsChangeObserver)); + } else { + mAccountManagerFacade.removeObserver( + assumeNonNull(mAccountManagerAccountsChangeObserver)); +@@ -354,20 +346,13 @@ public class ProfileDataCache implements IdentityManager.Observer { + } + + private void updateCache(List accounts) { ++ if ((true)) return; + var displayableAccounts = new LinkedHashMap(); + for (AccountInfo account : accounts) { + // Accounts list is combined from accounts with refresh tokens and the primary account + // at the last position. Because list of accounts is manually combined, there is a + // chance that the primary account is duplicated. We want to use computeIfAbsent here to + // avoid overriding the existing entry and double avatar generation. +- displayableAccounts.computeIfAbsent( +- account.getId(), +- id -> { +- var extendedAccountInfo = +- mIdentityManager.findExtendedAccountInfoByAccountId(id); +- return toDisplayableProfileData( +- extendedAccountInfo != null ? extendedAccountInfo : account); +- }); } + mAccountsCache.setAccounts(displayableAccounts); + +@@ -429,46 +414,15 @@ public class ProfileDataCache implements IdentityManager.Observer { + } + + private @Nullable AccountInfo findAccountInfo(CoreAccountId accountId) { +- var accountInfo = mIdentityManager.findExtendedAccountInfoByAccountId(accountId); +- if (accountInfo != null) { +- return accountInfo; +- } +- var coreAccounts = getCoreAccountsIfLoaded(); +- if (coreAccounts != null) { +- for (var coreAccountInfo : coreAccounts) { +- if (coreAccountInfo.getId().equals(accountId)) { +- return coreAccountInfo; +- } +- } +- } +- var primaryAccountInfo = getPrimaryAccountInfo(); +- if (primaryAccountInfo != null && primaryAccountInfo.getId().equals(accountId)) { +- return primaryAccountInfo; +- } + return null; } -@@ -311,6 +304,7 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang + private @Nullable AccountInfo getPrimaryAccountInfo() { +- var primaryAccountInfo = mIdentityManager.getPrimaryAccountInfo(ConsentLevel.SIGNIN); +- if (primaryAccountInfo == null) { +- return null; +- } +- return new AccountInfo.Builder(primaryAccountInfo).build(); ++ return null; } - private void updateCache() { -+ if ((true)) return; - var accounts = mAccountManagerFacade.getAccounts(); - if (!accounts.isFulfilled()) { - // When the list of accounts is ready - onCoreAccountInfosChanged will call -@@ -320,14 +314,6 @@ public class ProfileDataCache implements IdentityManager.Observer, AccountsChang - - List displayableAccounts = new ArrayList<>(); - for (CoreAccountInfo account : accounts.getResult()) { -- var accountInfo = mIdentityManager.findExtendedAccountInfoByAccountId(account.getId()); -- if (accountInfo != null -- && (accountInfo.hasDisplayableInfo() -- || getBadgeConfigForAccount(accountInfo.getId()) != null)) { -- displayableAccounts.add( -- new AccountsCache.AccountEntry( -- accountInfo.getId(), toDisplayableProfileData(accountInfo))); + private @Nullable List getCoreAccountsIfLoaded() { +- if (SigninFeatureMap.isEnabled(SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS)) { +- if (mIdentityManager.areRefreshTokensLoaded()) { +- return mIdentityManager.getExtendedAccountInfoForAccountsWithRefreshToken(); +- } +- return null; +- } else { +- var accounts = mAccountManagerFacade.getAccounts(); +- if (accounts.isFulfilled()) { +- return accounts.getResult(); - } +- return null; +- } ++ return null; + } + + // TODO(crbug.com/40944114): Consider using UiUtils.drawIconWithBadge instead. +@@ -543,7 +497,6 @@ public class ProfileDataCache implements IdentityManager.Observer { + public void onRefreshTokensLoaded() { + assert SigninFeatureMap.isEnabled( + SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS); +- updateCache(mIdentityManager.getExtendedAccountInfoForAccountsWithRefreshToken()); } - mAccountsCache.setAccounts(displayableAccounts); -diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn ---- a/chrome/browser/ui/android/native_page/BUILD.gn -+++ b/chrome/browser/ui/android/native_page/BUILD.gn -@@ -34,6 +34,8 @@ robolectric_library("junit") { - - deps = [ - ":java", -+ "//base:base_java", -+ "//components/embedder_support/android:util_java", - "//base:base_junit_test_support", - "//third_party/android_deps:org_mockito_mockito_core_java", - "//third_party/junit", + /** Implements {@link IdentityManager.Observer}. */ +@@ -551,9 +504,6 @@ public class ProfileDataCache implements IdentityManager.Observer { + public void onRefreshTokenUpdatedForAccount(CoreAccountInfo coreAccountInfo) { + assert SigninFeatureMap.isEnabled( + SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS); +- if (mIdentityManager.areRefreshTokensLoaded()) { +- updateCache(mIdentityManager.getExtendedAccountInfoForAccountsWithRefreshToken()); +- } + } + + /** Implements {@link IdentityManager.Observer}. */ +@@ -561,9 +511,6 @@ public class ProfileDataCache implements IdentityManager.Observer { + public void onRefreshTokenRemovedForAccount(CoreAccountId accountId) { + assert SigninFeatureMap.isEnabled( + SigninFeatures.MAKE_IDENTITY_MANAGER_SOURCE_OF_ACCOUNTS); +- if (mIdentityManager.areRefreshTokensLoaded()) { +- updateCache(mIdentityManager.getExtendedAccountInfoForAccountsWithRefreshToken()); +- } + } + } + diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java --- a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java +++ b/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/browser/ui/native_page/NativePage.java -@@ -17,6 +17,8 @@ import org.chromium.url.GURL; +@@ -18,6 +18,8 @@ import org.chromium.url.GURL; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -1987,7 +2039,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ /** An interface for pages that will be using Android views instead of html/rendered Web content. */ @NullMarked public interface NativePage { -@@ -201,7 +203,8 @@ public interface NativePage { +@@ -204,7 +206,8 @@ public interface NativePage { */ static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean hasPdfDownload) { return url != null @@ -1997,7 +2049,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -211,7 +214,7 @@ public interface NativePage { +@@ -214,7 +217,7 @@ public interface NativePage { * not have chrome or chrome-native scheme. */ static boolean isChromePageUrl(GURL url, boolean isIncognito) { @@ -2006,7 +2058,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -225,7 +228,8 @@ public interface NativePage { +@@ -228,7 +231,8 @@ public interface NativePage { GURL url, @Nullable NativePage candidatePage, boolean isIncognito, @@ -2016,7 +2068,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. -@@ -243,7 +247,7 @@ public interface NativePage { +@@ -246,7 +250,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { @@ -2025,7 +2077,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } } -@@ -255,7 +259,7 @@ public interface NativePage { +@@ -258,7 +262,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ private static @NativePageType int chromePageType( @@ -2034,7 +2086,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) -@@ -275,7 +279,8 @@ public interface NativePage { +@@ -278,7 +282,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -2047,7 +2099,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -114,6 +114,11 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -116,6 +116,11 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.url.GURL; @@ -2059,7 +2111,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.Collection; import java.util.List; -@@ -522,6 +527,9 @@ class LocationBarMediator +@@ -521,6 +526,9 @@ class LocationBarMediator if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return; Tab tab = mLocationBarDataProvider.getTab(); if (tab == null) return; @@ -2072,7 +2124,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 -@@ -7184,6 +7184,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -7169,6 +7169,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -2151,7 +2203,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc --- a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc +++ b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc -@@ -12,6 +12,7 @@ +@@ -11,6 +11,7 @@ #include "chrome/browser/search_engines/template_url_fetcher_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/ui/search_engines/edit_search_engine_controller.h" @@ -2159,7 +2211,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro #include "chrome/common/url_constants.h" #include "components/search_engines/template_url.h" #include "components/search_engines/template_url_fetcher.h" -@@ -166,6 +167,11 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -165,6 +166,11 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( // Download the OpenSearch description document. If this is successful, a // new keyword will be created when done. @@ -2174,7 +2226,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 -@@ -3843,6 +3843,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -3425,6 +3425,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2228,7 +2280,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov bool store_last_modified, bool restore_session); -@@ -122,6 +123,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -118,6 +119,7 @@ class PrefProvider : public UserModifiableProvider { raw_ptr prefs_; const bool off_the_record_; @@ -2275,7 +2327,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -562,6 +563,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -564,6 +565,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 46dfcc992..b19a4fad6 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; -@@ -63,7 +64,7 @@ import java.util.function.Supplier; +@@ -61,7 +62,7 @@ import java.util.function.Supplier; */ @NullMarked public class TabbedModeTabDelegateFactory implements TabDelegateFactory { @@ -111,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier<@Nullable ShareDelegate> mShareDelegateSupplier; private final Supplier<@Nullable EphemeralTabCoordinator> mEphemeralTabCoordinatorSupplier; -@@ -97,7 +98,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -93,7 +94,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; public TabbedModeTabDelegateFactory( @@ -132,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B import android.content.ComponentName; import android.content.Intent; import android.text.TextUtils; -@@ -133,6 +135,9 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -125,6 +127,9 @@ public class BookmarkActivity extends SnackbarActivity { mOnKeyDownHandler = BackPressHelper.create( this, getOnBackPressedDispatcher(), mBookmarkManagerCoordinator); @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B } @Override -@@ -179,6 +184,21 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -167,6 +172,21 @@ public class BookmarkActivity extends SnackbarActivity { } } @@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -83,7 +84,7 @@ import java.util.function.Supplier; +@@ -82,7 +83,7 @@ import java.util.function.Supplier; */ @NullMarked public class NativePageFactory { @@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier<@Nullable Tab> mCurrentTabSupplier; -@@ -111,7 +112,7 @@ public class NativePageFactory { +@@ -108,7 +109,7 @@ public class NativePageFactory { private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; public NativePageFactory( @@ -193,7 +193,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat BottomSheetController sheetController, BrowserControlsManager browserControlsManager, Supplier<@Nullable Tab> currentTabSupplier, -@@ -198,7 +199,7 @@ public class NativePageFactory { +@@ -189,7 +190,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -205,7 +205,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 -@@ -1327,6 +1327,13 @@ static_library("browser") { +@@ -1060,6 +1060,13 @@ static_library("browser") { "webauthn/webauthn_switches.cc", ] @@ -711,7 +711,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; -@@ -643,6 +689,14 @@ class BookmarkManagerMediator +@@ -651,6 +697,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -726,7 +726,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. -@@ -811,6 +865,235 @@ class BookmarkManagerMediator +@@ -819,6 +873,235 @@ class BookmarkManagerMediator } } @@ -975,7 +975,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** A native page holding a {@link BookmarkManagerCoordinator} on _tablet_. */ @NullMarked -@@ -45,7 +48,7 @@ public class BookmarkPage extends BasicNativePage { +@@ -48,7 +51,7 @@ public class BookmarkPage extends BasicNativePage { */ public BookmarkPage( WindowAndroid windowAndroid, @@ -984,7 +984,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows SnackbarManager snackbarManager, Supplier bottomSheetControllerSupplier, ActivityResultTracker activityResultTracker, -@@ -83,6 +86,9 @@ public class BookmarkPage extends BasicNativePage { +@@ -87,6 +90,9 @@ public class BookmarkPage extends BasicNativePage { backPressManager); mBookmarkManagerCoordinator.setBasicNativePage(this); @@ -1186,7 +1186,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 -@@ -265,6 +265,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -279,6 +279,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, &kBottomSheetAsBrowserControls, @@ -1197,7 +1197,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 -@@ -709,6 +709,7 @@ public abstract class ChromeFeatureList { +@@ -724,6 +724,7 @@ public abstract class ChromeFeatureList { "UseLibunwindstackNativeUnwinderAndroid"; public static final String VERIFY_QWACS = "VerifyQWACs"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1260,7 +1260,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"; -@@ -1208,6 +1210,7 @@ public final class ChromePreferenceKeys { +@@ -1131,6 +1133,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1271,7 +1271,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 -@@ -271,6 +271,24 @@ CHAR_LIMIT guidelines: +@@ -277,6 +277,24 @@ CHAR_LIMIT guidelines: Sites @@ -1409,7 +1409,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui import org.chromium.ui.UiUtils; import java.io.File; -@@ -75,6 +76,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -74,6 +75,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick private static final String TAG = "SelectFileDialog"; private static final String IMAGE_TYPE = "image"; private static final String VIDEO_TYPE = "video"; @@ -1417,7 +1417,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui private static final String AUDIO_TYPE = "audio"; private static final String ALL_TYPES = "*/*"; private static final String GENERIC_TYPE = "application/octet-stream"; -@@ -324,6 +326,17 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -323,6 +325,17 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick mMimeTypes = convertToSupportedMimeTypes(mFileTypes); } @@ -1435,7 +1435,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui /** * Creates and starts an intent based on the passed fileTypes and capture value. * -@@ -408,7 +421,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -407,7 +420,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick List missingPermissions = new ArrayList<>(); String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE; boolean shouldUsePhotoPicker = shouldUsePhotoPicker(); @@ -1444,7 +1444,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui // The permission scenario for accessing media has evolved a bit over the years: // Early on, READ_EXTERNAL_STORAGE was required to access media, but that permission was // later deprecated. In its place (starting with Android T) READ_MEDIA_IMAGES and -@@ -461,7 +474,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -447,7 +460,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick // TODO(finnur): Remove once we figure out the cause of // crbug.com/950024. @@ -1453,7 +1453,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui if (permissions.length != requestPermissions.length) { throw new RuntimeException( String.format( -@@ -478,7 +491,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -464,7 +477,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick } } @@ -1462,7 +1462,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui if (permissions[i].equals(storagePermission) || permissions[i].equals( Manifest.permission.READ_MEDIA_IMAGES) -@@ -789,6 +802,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -775,6 +788,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick mimeTypes.add(mimeType); } } @@ -1470,7 +1470,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui return mimeTypes; } -@@ -1174,6 +1188,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -1160,6 +1174,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick return countAcceptTypesFor(superType) == mMimeTypes.size(); } diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index ab78fb9dc..7c8e9decf 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -18,8 +18,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../src/org/chromium/base/FeatureMap.java | 5 + .../base/ImmutableFlagWithDefault.java | 25 +++ .../base/cached_flags/ValuesReturned.java | 2 +- + base/feature.h | 93 +++++++++- base/feature_list.cc | 76 ++++++++ - base/feature_list.h | 98 +++++++++- + base/feature_list.h | 5 + build/android/gyp/java_cpp_features.py | 15 ++ chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + @@ -108,7 +109,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 + - 95 files changed, 885 insertions(+), 31 deletions(-) + 96 files changed, 885 insertions(+), 31 deletions(-) create mode 100644 base/android/java/src/org/chromium/base/ImmutableFlagWithDefault.java 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 @@ -146,7 +147,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 -@@ -190,6 +190,8 @@ generate_allowlist_from_histograms_file("memory_dump_provider_name_variants") { +@@ -189,6 +189,8 @@ generate_allowlist_from_histograms_file("memory_dump_provider_name_variants") { # 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") { @@ -155,7 +156,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1069,7 +1071,7 @@ component("base") { +@@ -1073,7 +1075,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -164,7 +165,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn ":check_version_internal", ":simdutf_shim", "//base/allocator:buildflags", -@@ -4959,6 +4961,7 @@ if (is_android) { +@@ -5056,6 +5058,7 @@ if (is_android) { "android/java/src/org/chromium/base/Flag.java", "android/java/src/org/chromium/base/MutableBooleanParamWithSafeDefault.java", "android/java/src/org/chromium/base/MutableFlagWithSafeDefault.java", @@ -244,10 +245,125 @@ diff --git a/base/android/java/src/org/chromium/base/cached_flags/ValuesReturned @GuardedBy("sStringValues") private static final Map sStringValues = new HashMap<>(); +diff --git a/base/feature.h b/base/feature.h +--- a/base/feature.h ++++ b/base/feature.h +@@ -182,8 +182,10 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { + + constexpr Feature(const char* name, + FeatureState default_state, +- internal::FeatureMacroHandshake) +- : name(name), default_state(default_state) { ++ internal::FeatureMacroHandshake, ++ bool cromite = false, bool is_new_flag = false) ++ : name(name), default_state(default_state), ++ is_cromite(cromite), is_new(is_new_flag) { + #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) + if (std::string_view(name).starts_with( + BUILDFLAG(BANNED_BASE_FEATURE_PREFIX))) { +@@ -210,6 +212,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { + // command line switch. + const FeatureState default_state; + ++ const bool is_cromite = false; ++ const bool is_new = false; ++ + private: + friend class FeatureList; + +@@ -237,4 +242,88 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { + + } // namespace base + ++namespace base { ++namespace internal { ++ ++// Perform base::Feature duplicates check and fills overriden states into a ++// map that is used at runtime to get an override if available. ++class BASE_EXPORT FeatureDefaultStateOverrider { ++ public: ++ using FeatureOverrideInfo = ++ std::pair, FeatureState>; ++ ++ FeatureDefaultStateOverrider( ++ const Feature& feature, FeatureState state); ++}; ++ ++} // namespace internal ++} // namespace base ++ ++#define CROMITE_FEATURE(feature, name, default_state) \ ++ constinit const base::Feature feature(name, default_state, base::internal::FeatureMacroHandshake::kSecret, true, true); \ ++ _Pragma("clang diagnostic push") \ ++ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ ++ static const ::base::internal::FeatureDefaultStateOverrider \ ++ g_feature_default_state_overrider_ ##feature {feature, default_state}; \ ++ _Pragma("clang diagnostic pop") \ ++ static_assert(true, "") /* for a semicolon requirement */ ++ ++#define SET_CROMITE_FEATURE_ENABLED(feature) \ ++ _Pragma("clang diagnostic push") \ ++ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ ++ static const ::base::internal::FeatureDefaultStateOverrider \ ++ g_feature_default_state_overrider_ ##feature {feature, base::FEATURE_ENABLED_BY_DEFAULT}; \ ++ _Pragma("clang diagnostic pop") \ ++ static_assert(true, "") /* for a semicolon requirement */ ++ ++#define SET_CROMITE_FEATURE_DISABLED(feature) \ ++ _Pragma("clang diagnostic push") \ ++ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ ++ static const ::base::internal::FeatureDefaultStateOverrider \ ++ g_feature_default_state_overrider_ ##feature {feature, base::FEATURE_DISABLED_BY_DEFAULT}; \ ++ _Pragma("clang diagnostic pop") \ ++ static_assert(true, "") /* for a semicolon requirement */ ++ ++#define SET_CROMITE_FEATURE_ENABLED_W_NAMESPACE(namespace_value, feature) \ ++ _Pragma("clang diagnostic push") \ ++ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ ++ static const ::base::internal::FeatureDefaultStateOverrider \ ++ g_feature_default_state_overrider_ ##feature {namespace_value::feature, base::FEATURE_ENABLED_BY_DEFAULT}; \ ++ _Pragma("clang diagnostic pop") \ ++ static_assert(true, "") /* for a semicolon requirement */ ++ ++#define SET_CROMITE_FEATURE_DISABLED_W_NAMESPACE(namespace_value, feature) \ ++ _Pragma("clang diagnostic push") \ ++ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ ++ static const ::base::internal::FeatureDefaultStateOverrider \ ++ g_feature_default_state_overrider_ ##feature {namespace_value::feature, base::FEATURE_DISABLED_BY_DEFAULT}; \ ++ _Pragma("clang diagnostic pop") \ ++ static_assert(true, "") /* for a semicolon requirement */ ++ ++#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_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_H_ diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -39,6 +39,31 @@ +@@ -41,6 +41,31 @@ namespace base { @@ -279,7 +395,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc namespace { // Pointer to the FeatureList instance singleton that was set via -@@ -501,6 +526,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { +@@ -533,6 +558,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -326,7 +442,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; -@@ -768,6 +833,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, +@@ -836,6 +901,17 @@ void FeatureList::RegisterFeatureAccess( void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -347,30 +463,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 -@@ -231,8 +231,10 @@ StringStorage(const char (&feature)[N]) -> StringStorage; - struct BASE_EXPORT LOGICALLY_CONST Feature { - constexpr Feature(const char* name, - FeatureState default_state, -- internal::FeatureMacroHandshake) -- : name(name), default_state(default_state) { -+ internal::FeatureMacroHandshake, -+ bool cromite = false, bool is_new_flag = false) -+ : name(name), default_state(default_state), -+ is_cromite(cromite), is_new(is_new_flag) { - #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) - if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == - 0) { -@@ -259,6 +261,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { - // command line switch. - const FeatureState default_state; - -+ const bool is_cromite = false; -+ const bool is_new = false; -+ - private: - friend class FeatureList; - -@@ -539,6 +544,11 @@ class BASE_EXPORT FeatureList { +@@ -290,6 +290,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -382,95 +475,6 @@ 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 -@@ -808,4 +818,88 @@ class BASE_EXPORT FeatureList { - - } // namespace base - -+namespace base { -+namespace internal { -+ -+// Perform base::Feature duplicates check and fills overriden states into a -+// map that is used at runtime to get an override if available. -+class BASE_EXPORT FeatureDefaultStateOverrider { -+ public: -+ using FeatureOverrideInfo = -+ std::pair, FeatureState>; -+ -+ FeatureDefaultStateOverrider( -+ const Feature& feature, FeatureState state); -+}; -+ -+} // namespace internal -+} // namespace base -+ -+#define CROMITE_FEATURE(feature, name, default_state) \ -+ constinit const base::Feature feature(name, default_state, base::internal::FeatureMacroHandshake::kSecret, true, true); \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ -+ static const ::base::internal::FeatureDefaultStateOverrider \ -+ g_feature_default_state_overrider_ ##feature {feature, default_state}; \ -+ _Pragma("clang diagnostic pop") \ -+ static_assert(true, "") /* for a semicolon requirement */ -+ -+#define SET_CROMITE_FEATURE_ENABLED(feature) \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ -+ static const ::base::internal::FeatureDefaultStateOverrider \ -+ g_feature_default_state_overrider_ ##feature {feature, base::FEATURE_ENABLED_BY_DEFAULT}; \ -+ _Pragma("clang diagnostic pop") \ -+ static_assert(true, "") /* for a semicolon requirement */ -+ -+#define SET_CROMITE_FEATURE_DISABLED(feature) \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ -+ static const ::base::internal::FeatureDefaultStateOverrider \ -+ g_feature_default_state_overrider_ ##feature {feature, base::FEATURE_DISABLED_BY_DEFAULT}; \ -+ _Pragma("clang diagnostic pop") \ -+ static_assert(true, "") /* for a semicolon requirement */ -+ -+#define SET_CROMITE_FEATURE_ENABLED_W_NAMESPACE(namespace_value, feature) \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ -+ static const ::base::internal::FeatureDefaultStateOverrider \ -+ g_feature_default_state_overrider_ ##feature {namespace_value::feature, base::FEATURE_ENABLED_BY_DEFAULT}; \ -+ _Pragma("clang diagnostic pop") \ -+ static_assert(true, "") /* for a semicolon requirement */ -+ -+#define SET_CROMITE_FEATURE_DISABLED_W_NAMESPACE(namespace_value, feature) \ -+ _Pragma("clang diagnostic push") \ -+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ -+ static const ::base::internal::FeatureDefaultStateOverrider \ -+ g_feature_default_state_overrider_ ##feature {namespace_value::feature, base::FEATURE_DISABLED_BY_DEFAULT}; \ -+ _Pragma("clang diagnostic pop") \ -+ static_assert(true, "") /* for a semicolon requirement */ -+ -+#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_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 --- a/build/android/gyp/java_cpp_features.py +++ b/build/android/gyp/java_cpp_features.py @@ -545,7 +549,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 -@@ -134,7 +134,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -142,7 +142,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } @Override @@ -557,7 +561,7 @@ 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 -@@ -13,6 +13,7 @@ import android.os.Bundle; +@@ -11,6 +11,7 @@ import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -565,7 +569,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.base.supplier.MonotonicObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; import org.chromium.build.annotations.NullMarked; -@@ -82,6 +83,7 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -81,6 +82,7 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl // TODO(crbug.com/469772349): Simplify to Supplier<@Nullable ModalDialogManagerSupplier> private final MonotonicObservableSupplier mModalDialogManagerSupplier; private final Supplier<@Nullable SettingsSearchCoordinator> mSearchCoordinatorSupplier; @@ -573,7 +577,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme public FragmentDependencyProvider( Activity activity, -@@ -91,7 +93,8 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -90,7 +92,8 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl OneshotSupplier snackbarManagerSupplier, OneshotSupplier bottomSheetControllerSupplier, MonotonicObservableSupplier modalDialogManagerSupplier, @@ -583,7 +587,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme mActivity = activity; mProfile = profile; mWindowAndroidSupplier = windowAndroidSupplier; -@@ -100,12 +103,17 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -99,12 +102,17 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl mBottomSheetControllerSupplier = bottomSheetControllerSupplier; mModalDialogManagerSupplier = modalDialogManagerSupplier; mSearchCoordinatorSupplier = searchCoordinatorSupplier; @@ -618,10 +622,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.supplier.ObservableSuppliers; +import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.OneshotSupplierImpl; - import org.chromium.base.supplier.SettableMonotonicObservableSupplier; import org.chromium.build.annotations.NullMarked; -@@ -59,12 +61,14 @@ import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; - import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.build.annotations.Nullable; +@@ -59,12 +61,14 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.glic.GlicHelper; import org.chromium.chrome.browser.init.ActivityLifecycleDispatcherImpl; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; +import org.chromium.chrome.browser.lifetime.ApplicationLifetime; @@ -635,9 +639,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; import org.chromium.chrome.browser.util.DefaultBrowserInfo; -@@ -131,6 +135,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity - // Key used to store activity start time in the Bundle to have it survive activity re-creation. - private static final String KEY_START_TIME = "start_time"; +@@ -136,6 +140,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity + + private static final String KEY_INITIAL_BREADCRUMB_PATH = "initial_breadcrumb_path"; + private static class RequestRestartDelegate implements ChromeBaseSettingsFragment.RequireRestartDelegate { + private OneshotSupplier mSnackbarManagerSupplier; @@ -676,7 +680,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"; -@@ -239,7 +277,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -275,7 +313,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mSnackbarManagerSupplier, mBottomSheetControllerSupplier, getModalDialogManagerSupplier(), @@ -711,7 +715,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 -@@ -405,6 +405,10 @@ using flags_ui::kOsLinux; +@@ -409,6 +409,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -722,9 +726,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4800,6 +4804,10 @@ const FeatureEntry::FeatureVariation kSigninPromoOnAvatarPillVariation[] = { - }; - #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +@@ -4627,6 +4631,10 @@ const FeatureEntry::FeatureVariation + kWalletApiPrivatePassesEnabledVariations[] = { + {"Debug", kWalletApiPrivatePassesUrl, nullptr}}; +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -733,7 +737,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. -@@ -4826,6 +4834,9 @@ const FeatureEntry::FeatureVariation kSigninPromoOnAvatarPillVariation[] = { +@@ -4653,6 +4661,9 @@ const FeatureEntry::FeatureVariation const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -746,7 +750,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc --- a/chrome/browser/browser_features.cc +++ b/chrome/browser/browser_features.cc -@@ -265,4 +265,5 @@ BASE_FEATURE(kReportPakFileIntegrity, +@@ -248,4 +248,5 @@ BASE_FEATURE(kAutoDeElevate, base::FEATURE_ENABLED_BY_DEFAULT); // show both in Chrome Tabs and Windows. BASE_FEATURE(kRemovalOfIWAsFromTabCapture, base::FEATURE_ENABLED_BY_DEFAULT); @@ -755,7 +759,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 -@@ -115,6 +115,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -113,6 +113,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -805,7 +809,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 -@@ -826,6 +826,7 @@ BASE_FEATURE(kYourSavedInfoSettingsPageAndroid, base::FEATURE_DISABLED_BY_DEFAUL +@@ -852,6 +852,7 @@ BASE_FEATURE(kYourSavedInfoSettingsPageAndroid, base::FEATURE_DISABLED_BY_DEFAUL // clang-format on @@ -816,7 +820,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 -@@ -381,6 +381,7 @@ inline constexpr base::FeatureParam +@@ -392,6 +392,7 @@ inline constexpr base::FeatureParam "snippet_as_subtitle", /*default_value=*/false); @@ -838,7 +842,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -1138,7 +1142,7 @@ public abstract class ChromeFeatureList { +@@ -1199,7 +1203,7 @@ public abstract class ChromeFeatureList { newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); // keep-sorted end @@ -847,7 +851,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( // keep-sorted start sAccountForSuppressedKeyboardInsets, -@@ -1304,6 +1308,13 @@ public abstract class ChromeFeatureList { +@@ -1378,6 +1382,13 @@ public abstract class ChromeFeatureList { // keep-sorted end ); @@ -1027,9 +1031,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 -@@ -534,4 +534,5 @@ BASE_FEATURE_PARAM(bool, - BASE_FEATURE(kUpdaterUI, base::FEATURE_DISABLED_BY_DEFAULT); - #endif +@@ -475,4 +475,5 @@ BASE_FEATURE_PARAM(bool, + "tab_groups_focusing_default_to_focused", + false); +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" } // namespace features @@ -1068,7 +1072,7 @@ 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 -@@ -2030,4 +2030,5 @@ BASE_FEATURE(kUnicornChromeActivityReporting, +@@ -1818,4 +1818,5 @@ BASE_FEATURE(kClassManagementEnabledMetricsProvider, BASE_FEATURE(kSmartRestartMetrics, base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -1219,9 +1223,9 @@ 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 -@@ -137,5 +137,6 @@ const base::FeatureParam - - BASE_FEATURE(kForceAllowStorageAccess, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -68,5 +68,6 @@ BASE_FEATURE(kTrackingProtection3pcd, base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kBlockV8OptimizerOnUnfamiliarSitesSetting, + base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/components_content_settings_core_common_features_cc.inc" } // namespace features @@ -1255,7 +1259,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 -@@ -200,4 +200,5 @@ BASE_FEATURE(kWebAuthnUsePasskeyFromAnotherDeviceInContextMenu, +@@ -216,4 +216,5 @@ BASE_FEATURE(kWebAuthnUsePasskeyFromAnotherDeviceInContextMenu, #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) @@ -1317,7 +1321,7 @@ diff --git a/components/variations/synthetic_trials_active_group_id_provider.h b diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flags_state.cc --- a/components/webui/flags/flags_state.cc +++ b/components/webui/flags/flags_state.cc -@@ -373,6 +373,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( +@@ -371,6 +371,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); @@ -1339,7 +1343,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag CHECK(entry_it != name_to_switch_map.end()); const SwitchEntry& entry = entry_it->second; -@@ -704,6 +719,27 @@ void FlagsState::GetFlagFeatureEntries( +@@ -701,6 +716,27 @@ void FlagsState::GetFlagFeatureEntries( data.Set("links", std::move(links)); } @@ -1367,7 +1371,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag switch (entry.type) { case FeatureEntry::SINGLE_VALUE: case FeatureEntry::SINGLE_DISABLE_VALUE: -@@ -831,6 +867,16 @@ void FlagsState::AddSwitchesToCommandLine( +@@ -828,6 +864,16 @@ void FlagsState::AddSwitchesToCommandLine( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); if (entry_it == name_to_switch_map.end()) { @@ -1384,7 +1388,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag NOTREACHED(); } -@@ -1102,6 +1148,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( +@@ -1074,6 +1120,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( bool FlagsState::IsSupportedFeature(const FlagsStorage* storage, const std::string& name, int platform_mask) const { @@ -1399,7 +1403,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag for (const auto& entry : feature_entries_) { DCHECK(entry.IsValid()); if (!(entry.supported_platforms & platform_mask)) { -@@ -1140,6 +1194,11 @@ void FlagsState::SetFlags( +@@ -1112,6 +1166,11 @@ void FlagsState::SetFlags( FindFeatureEntryByName(feature_internal_name); // Since this flag is currently enabled, we know for sure that we can find // its feature entry using its internal name. @@ -1683,7 +1687,7 @@ diff --git a/components/webui/flags/resources/flags_browser_proxy.ts b/component diff --git a/components/webui/version/version_handler_helper.cc b/components/webui/version/version_handler_helper.cc --- a/components/webui/version/version_handler_helper.cc +++ b/components/webui/version/version_handler_helper.cc -@@ -20,7 +20,7 @@ +@@ -21,7 +21,7 @@ namespace version_ui { namespace { @@ -1692,7 +1696,7 @@ diff --git a/components/webui/version/version_handler_helper.cc b/components/web std::string GetActiveGroupNameAsString( const base::FieldTrial::ActiveGroup& group) { static const unsigned char kNonBreakingHyphenUTF8[] = {0xE2, 0x80, 0x91, -@@ -56,7 +56,7 @@ base::ListValue GetVariationsList() { +@@ -84,7 +84,7 @@ base::ListValue GetVariationsList() { base::FieldTrialListIncludingLowAnonymity::GetActiveFieldTrialGroups( &active_groups); @@ -1704,7 +1708,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 -@@ -763,4 +763,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { +@@ -841,4 +841,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); } @@ -1713,7 +1717,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 -@@ -1494,4 +1494,5 @@ bool IsFluidResizeEnabled() { +@@ -1502,4 +1502,5 @@ bool IsFluidResizeEnabled() { } #endif @@ -1722,7 +1726,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 -@@ -440,6 +440,7 @@ CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); +@@ -441,6 +441,7 @@ CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); CONTENT_EXPORT bool IsFluidResizeEnabled(); #endif @@ -2068,7 +2072,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 -@@ -1850,5 +1850,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1901,5 +1901,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2078,7 +2082,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 -@@ -590,5 +590,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -608,5 +608,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2088,18 +2092,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 -@@ -777,4 +777,5 @@ BASE_FEATURE(kDrainSpdySessionSynchronouslyOnRemoteEndpointDisconnect, - - BASE_FEATURE(kLogicalClearHttpCache, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -841,4 +841,5 @@ BASE_FEATURE(kIgnoreQuicCryptoConfigMemoryPressureForDoh, + BASE_FEATURE(kCookieParseRejectEmptyNameAmbiguous, + base::FEATURE_ENABLED_BY_DEFAULT); +#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 -@@ -807,6 +807,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kLogicalClearHttpCache); - NET_EXPORT BASE_DECLARE_FEATURE( - kDrainSpdySessionSynchronouslyOnRemoteEndpointDisconnect); +@@ -865,6 +865,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kIgnoreQuicCryptoConfigMemoryPressureForDoh); + // serialization. + NET_EXPORT BASE_DECLARE_FEATURE(kCookieParseRejectEmptyNameAmbiguous); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2108,18 +2112,18 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -662,4 +662,5 @@ BASE_FEATURE_PARAM(int, - /*name=*/"max_global_buffer_size", - /*default_value=*/0); +@@ -649,4 +649,5 @@ BASE_FEATURE_PARAM(base::TimeDelta, + "initial_doh_probe_timeout", + base::Seconds(5)); +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -434,6 +434,7 @@ BASE_DECLARE_FEATURE_PARAM(int, kDurableMessagesGlobalBufferSize); +@@ -438,6 +438,7 @@ BASE_DECLARE_FEATURE(kDelayInitialDohProbeTimeout); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) - BASE_DECLARE_FEATURE(kBypassRequestForbiddenHeadersCheck); + BASE_DECLARE_FEATURE_PARAM(base::TimeDelta, kDelayInitialDohProbeTimeoutParam); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace network::features @@ -2128,7 +2132,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 -@@ -2773,4 +2773,5 @@ bool IsXrDevice() { +@@ -2801,4 +2801,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2137,7 +2141,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 -@@ -2018,6 +2018,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); +@@ -2053,6 +2053,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. @@ -2148,18 +2152,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 -@@ -456,4 +456,5 @@ BASE_FEATURE_PARAM(int, - "acceptable_latency_ms", - 50); +@@ -463,4 +463,5 @@ BASE_FEATURE_PARAM(int, + + BASE_FEATURE(kSplitViewLinkOpen, base::FEATURE_DISABLED_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 -@@ -294,6 +294,7 @@ BASE_DECLARE_FEATURE_PARAM(int, kCompensationExpectedLatencyMs); +@@ -304,6 +304,7 @@ BASE_DECLARE_FEATURE_PARAM(int, kCompensationAcceptableLatencyMs); COMPONENT_EXPORT(UI_BASE_FEATURES) - BASE_DECLARE_FEATURE_PARAM(int, kCompensationAcceptableLatencyMs); + BASE_DECLARE_FEATURE(kSplitViewLinkOpen); +#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 62e09ae1d..25148eb8d 100644 --- a/build/patches/Add-cromite-test-support.patch +++ b/build/patches/Add-cromite-test-support.patch @@ -73,7 +73,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/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 -@@ -146,6 +146,7 @@ import org.chromium.ui.base.SelectFileDialog; +@@ -145,6 +145,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; @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni import java.io.File; import java.nio.charset.StandardCharsets; -@@ -699,7 +700,10 @@ public class ProcessInitializationHandler { +@@ -696,7 +697,10 @@ public class ProcessInitializationHandler { tasks.add( () -> { @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -193,6 +193,11 @@ source_set("shell_integration") { +@@ -204,6 +204,11 @@ source_set("shell_integration") { # require many files from it. This makes linking more efficient. static_library("browser") { sources = [ @@ -179,7 +179,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc b #include "chrome/browser/chrome_browser_interface_binders_webui.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_content_browser_client_parts.h" -@@ -488,6 +489,15 @@ void ChromeContentBrowserClient:: +@@ -491,6 +492,15 @@ void ChromeContentBrowserClient:: render_frame_host); }, &render_frame_host)); @@ -423,7 +423,7 @@ diff --git a/chrome/browser/notifications/android/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc --- a/chrome/browser/ui/startup/bad_flags_prompt.cc +++ b/chrome/browser/ui/startup/bad_flags_prompt.cc -@@ -221,6 +221,7 @@ static const std::variant +@@ -223,6 +223,7 @@ static const std::variant #if BUILDFLAG(IS_ANDROID) &chrome::android::kCommandLineOnNonRooted, @@ -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 -@@ -666,6 +666,7 @@ mojom("mojo_bindings") { +@@ -668,6 +668,7 @@ mojom("mojo_bindings") { "actor.mojom", "chrome_render_frame.mojom", "google_accounts_private_api_extension.mojom", @@ -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" -@@ -662,6 +663,7 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -663,6 +664,7 @@ void ChromeContentRendererClient::RenderFrameCreated( TrustedVaultEncryptionKeysExtension::Create(render_frame); GoogleAccountsPrivateApiExtension::Create(render_frame); @@ -785,7 +785,7 @@ diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/json/json_writer.h" -@@ -47,6 +48,7 @@ +@@ -46,6 +47,7 @@ #include "content/public/browser/devtools_socket_factory.h" #include "content/public/common/content_client.h" #include "content/public/common/content_constants.h" @@ -793,7 +793,7 @@ diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser #include "content/public/common/content_switches.h" #include "content/public/common/url_constants.h" #include "net/base/io_buffer.h" -@@ -610,9 +612,12 @@ void DevToolsHttpHandler::OnJsonRequest( +@@ -616,9 +618,12 @@ void DevToolsHttpHandler::OnJsonRequest( if (command == "version") { base::DictValue version; @@ -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 -@@ -327,6 +327,8 @@ +@@ -331,6 +331,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 "base/android/scoped_service_binding_batch.h" #include "content/browser/accessibility/browser_accessibility_manager_android.h" -@@ -4997,7 +4999,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -5045,7 +5047,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 -@@ -5014,8 +5017,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -5062,8 +5065,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 ec92dc18c..58e3f8354 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -117,7 +117,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 -@@ -239,16 +239,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -248,16 +248,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid // Extra whose value is an array of ints that is supplied to // SyntheticTrialRegistry::RegisterExternalExperiments(). @@ -140,7 +140,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 -@@ -696,7 +696,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -727,7 +727,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION, ScreenOrientation.DEFAULT)); @@ -149,7 +149,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust mBreakPointDp = getActivityBreakPointFromIntent(intent); mInitialActivityHeight = getInitialActivityHeightFromIntent(intent); -@@ -709,8 +709,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -740,8 +740,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT); mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED; @@ -160,7 +160,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust @BackgroundInteractBehavior int backgroundInteractBehavior = IntentUtils.safeGetIntExtra( -@@ -1379,7 +1379,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1410,7 +1410,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() ? CustomTabProfileType.INCOGNITO @@ -246,8 +246,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting +import android.os.Build; import android.os.Bundle; import android.text.SpannableString; - import android.text.style.ClickableSpan; -@@ -86,6 +87,15 @@ import org.chromium.ui.text.SpanApplier; + import android.text.SpannableStringBuilder; +@@ -88,6 +89,15 @@ import org.chromium.ui.widget.ChromeBulletSpan; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -263,7 +263,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; -@@ -155,6 +165,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -163,6 +173,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment startTag, endTag, new ChromeClickableSpan(context, onClickCallback)); } @@ -273,7 +273,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)); -@@ -405,6 +418,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -420,6 +433,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -283,7 +283,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(); -@@ -425,6 +441,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -440,6 +456,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -315,7 +315,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -457,6 +498,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -472,6 +513,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -335,7 +335,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 -@@ -713,7 +713,9 @@ BASE_FEATURE(kMagicStackAndroid, base::FEATURE_ENABLED_BY_DEFAULT); +@@ -741,7 +741,9 @@ BASE_FEATURE(kLogoViewRefactor, base::FEATURE_DISABLED_BY_DEFAULT); // Enables an experimental feature which forces mayLaunchUrl to use a different // storage partition. This may reduce performance. This should not be enabled by // default. @@ -349,7 +349,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 -@@ -997,6 +997,8 @@ public abstract class ChromeFeatureList { +@@ -1053,6 +1053,8 @@ public abstract class ChromeFeatureList { MOST_VISITED_TILES_CUSTOMIZATION, /* defaultValue= */ true, /* defaultValueInTests= */ true); @@ -358,7 +358,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 sMoveToFrontInLaunchIntentDispatcher = -@@ -1257,6 +1259,7 @@ public abstract class ChromeFeatureList { +@@ -1330,6 +1332,7 @@ public abstract class ChromeFeatureList { sMaliciousApkDownloadCheck, sMostVisitedTilesCustomization, sMostVisitedTilesReselect, diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 267bf75d8..b4569fea4 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -17,18 +17,18 @@ 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 -@@ -125,6 +125,7 @@ found in the LICENSE file. +@@ -126,6 +126,7 @@ found in the LICENSE file. + - + 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 -@@ -395,6 +395,8 @@ import java.util.Set; +@@ -401,6 +401,8 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; @@ -37,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct /** * This is the main activity for ChromeMobile when not running in document mode. All the tabs are * accessible via a chrome specific tab switching UI. -@@ -4132,6 +4134,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -4160,6 +4162,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate; -@@ -2724,6 +2725,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2718,6 +2719,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 -@@ -478,6 +478,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -492,6 +492,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm 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 -@@ -4563,6 +4563,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4572,6 +4572,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d More tools diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index b2bc102e9..50d5dc556 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -26,7 +26,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -547,6 +548,15 @@ AutocompleteController::AutocompleteController( +@@ -549,6 +550,15 @@ AutocompleteController::AutocompleteController( steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION), config_(config) { @@ -45,7 +45,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc --- a/components/omnibox/browser/history_url_provider.cc +++ b/components/omnibox/browser/history_url_provider.cc -@@ -488,6 +488,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, +@@ -487,6 +487,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY) matches_.push_back(what_you_typed_match); @@ -87,9 +87,9 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/i18n/char_iterator.h" -@@ -639,6 +640,8 @@ GURL FixupURLInternal(const std::string& text, - - FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url); +@@ -635,6 +636,8 @@ GURL FixupURLInternal(const std::string& text, + desired_tld, &url); + } if (chrome_url && !parts.host.is_valid()) { + if (!base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering") || + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering").contains("chrome")) diff --git a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch index 13c95ef91..73955d63a 100644 --- a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch +++ b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch @@ -65,7 +65,7 @@ new file mode 100644 diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc --- a/net/socket/client_socket_pool_manager.cc +++ b/net/socket/client_socket_pool_manager.cc -@@ -21,6 +21,10 @@ +@@ -22,6 +22,10 @@ #include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_pool.h" #include "net/socket/connect_job.h" @@ -76,10 +76,10 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket #include "net/ssl/ssl_config.h" #include "url/gurl.h" #include "url/scheme_host_port.h" -@@ -162,6 +166,19 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test( +@@ -169,6 +173,19 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test( + // static size_t ClientSocketPoolManager::max_sockets_per_group( HttpNetworkSession::SocketPoolType pool_type) { - DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES); + + if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) { + int maxConnectionsPerHost = 0; @@ -93,7 +93,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket + // fallthrough for default value + } + - return g_max_sockets_per_group[pool_type]; + return g_max_sockets_per_group[std::to_underlying(pool_type)]; } -- diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index dbc74adb8..66759f3dd 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 -@@ -1215,6 +1215,7 @@ component("net") { +@@ -1219,6 +1219,7 @@ component("net") { ":net_deps", "//components/network_time/time_tracker", "//components/unexportable_keys", @@ -56,7 +56,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn 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 -@@ -115,6 +115,7 @@ +@@ -114,6 +114,7 @@ #include "net/log/net_log_event_type.h" #include "net/log/net_log_source.h" #include "net/log/net_log_source_type.h" @@ -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" -@@ -1506,6 +1507,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1505,6 +1506,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 e4fb56c8d..38e68c8ed 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -195,7 +195,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 -@@ -1796,6 +1796,12 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { +@@ -1793,6 +1793,12 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { return false; } @@ -208,7 +208,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1883,6 +1889,21 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { +@@ -1880,6 +1886,21 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 8324afa2c..aa5746360 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -81,6 +81,7 @@ void SetRuntimeFeatureDefaultsForPlatform( +@@ -82,6 +82,7 @@ void SetRuntimeFeatureDefaultsForPlatform( if (command_line.HasSwitch(switches::kDisableMediaSessionAPI)) { WebRuntimeFeatures::EnableMediaSession(false); } @@ -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 -@@ -1216,6 +1216,10 @@ +@@ -1242,6 +1242,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 7906f8aea..a4e437e8f 100644 --- a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +++ b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch @@ -14,7 +14,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 -@@ -669,7 +669,7 @@ config("compiler") { +@@ -681,7 +681,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 @@ -23,7 +23,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags += [ "-Wa,--crel,--allow-experimental-crel" ] } } -@@ -1861,7 +1861,7 @@ config("clang_revision") { +@@ -1886,7 +1886,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 ] -@@ -2236,7 +2236,9 @@ config("default_warnings") { +@@ -2283,7 +2283,9 @@ config("default_warnings") { # TODO(crbug.com/432275627): Fix and re-enable. "-Wno-uninitialized-const-pointer", ] @@ -43,7 +43,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", -@@ -2290,6 +2292,15 @@ config("default_warnings") { +@@ -2337,6 +2339,15 @@ config("default_warnings") { ldflags += [ "-Wno-version-check" ] } diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 866bfec8f..28c44ec6a 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -245,7 +245,7 @@ diff --git a/chrome/browser/ui/views/permissions/chip/chip_controller.cc b/chrom diff --git a/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc b/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc --- a/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc +++ b/chrome/browser/ui/views/permissions/exclusive_access_permission_prompt_view.cc -@@ -119,7 +119,7 @@ void ExclusiveAccessPermissionPromptView::RunButtonCallback(int button_id) { +@@ -118,7 +118,7 @@ void ExclusiveAccessPermissionPromptView::RunButtonCallback(int button_id) { request_type(), GetPermissionActionString(button), record_browser_always_active_value()); if (button == ButtonType::kAllowThisTime) { @@ -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(); -@@ -1401,6 +1406,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1404,6 +1409,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 -@@ -230,7 +230,7 @@ void GetOrigins(JNIEnv* env, +@@ -238,7 +238,7 @@ void GetOrigins(JNIEnv* env, seen_origins.push_back(origin); insertionFunc(env, static_cast(content_type), list, ConvertOriginToJavaString(env, origin), jembedder, @@ -307,7 +307,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -635,6 +635,11 @@ +@@ -629,6 +629,11 @@ URL truncated @@ -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; -@@ -282,10 +318,6 @@ const std::vector& GetTypesWithTemporaryGrants() { +@@ -267,10 +303,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::SENSORS, ContentSettingsType::HAND_TRACKING, ContentSettingsType::SMART_CARD_DATA, -@@ -302,10 +334,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { +@@ -287,10 +319,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, @@ -547,7 +547,7 @@ diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java -@@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked; +@@ -17,6 +17,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; @@ -555,7 +555,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per import java.util.ArrayList; import java.util.List; -@@ -67,6 +68,9 @@ public class PermissionDialogDelegate { +@@ -68,6 +69,9 @@ public class PermissionDialogDelegate { // Prompt(screen) variant we want to display on the dialog. private @EmbeddedPromptVariant int mEmbeddedPromptVariant; @@ -565,7 +565,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** * Defines a (potentially empty) list of ranges represented as pairs of , * which shall be used by the UI to format the specified ranges as bold text. -@@ -139,6 +143,15 @@ public class PermissionDialogDelegate { +@@ -145,6 +149,15 @@ public class PermissionDialogDelegate { PermissionDialogDelegateJni.get().acceptThisTime(mNativeDelegatePtr); } @@ -708,7 +708,7 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -138,6 +138,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { +@@ -136,6 +136,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { static_cast(permission_prompt_->GetEmbeddedPromptVariant())); } @@ -720,7 +720,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static std::unique_ptr PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -166,12 +171,22 @@ PermissionDialogDelegate::CreateForTesting( +@@ -164,12 +169,22 @@ PermissionDialogDelegate::CreateForTesting( void PermissionDialogDelegate::Accept(JNIEnv* env) { CHECK(permission_prompt_); @@ -744,7 +744,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ } void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { -@@ -181,6 +196,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { +@@ -179,6 +194,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { void PermissionDialogDelegate::Deny(JNIEnv* env) { CHECK(permission_prompt_); @@ -931,7 +931,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr diff --git a/components/permissions/contexts/geolocation_permission_context_android.h b/components/permissions/contexts/geolocation_permission_context_android.h --- a/components/permissions/contexts/geolocation_permission_context_android.h +++ b/components/permissions/contexts/geolocation_permission_context_android.h -@@ -94,6 +94,11 @@ class GeolocationPermissionContextAndroid +@@ -98,6 +98,11 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, const permissions::PermissionPromptDecision& decision) override; @@ -943,7 +943,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr content::PermissionResult UpdatePermissionStatusWithDeviceStatus( content::WebContents* web_contents, content::PermissionResult result, -@@ -139,6 +144,7 @@ class GeolocationPermissionContextAndroid +@@ -143,6 +148,7 @@ class GeolocationPermissionContextAndroid const GURL& embedding_origin, bool persist, const permissions::PermissionPromptDecision& decision, @@ -951,7 +951,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr LocationSettingsDialogOutcome prompt_outcome); void FinishNotifyPermissionSet( -@@ -148,6 +154,7 @@ class GeolocationPermissionContextAndroid +@@ -152,6 +158,7 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, const permissions::PermissionPromptDecision& decision, @@ -974,7 +974,7 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -306,6 +306,17 @@ PermissionContextBase::CreatePermissionRequest( +@@ -321,6 +321,17 @@ PermissionContextBase::CreatePermissionRequest( std::move(request_finished_callback), UsesAutomaticEmbargo()); } @@ -992,7 +992,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -@@ -651,7 +662,8 @@ void PermissionContextBase::DecidePermission( +@@ -666,7 +677,8 @@ void PermissionContextBase::DecidePermission( void PermissionContextBase::PermissionDecided( const permissions::PermissionPromptDecision& decision, @@ -1002,7 +1002,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm UserMadePermissionDecision(request_data.id, request_data.requesting_origin, request_data.embedding_origin, decision.overall_decision); -@@ -675,10 +687,10 @@ void PermissionContextBase::PermissionDecided( +@@ -690,10 +702,10 @@ void PermissionContextBase::PermissionDecided( // Check if `request` has `BrowserPermissionCallback`. The call back might be // missing if a permission prompt was preignored and we already notified an // origin about it. @@ -1015,7 +1015,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } content::BrowserContext* PermissionContextBase::browser_context() const { -@@ -761,6 +773,29 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -776,6 +788,29 @@ void PermissionContextBase::NotifyPermissionSet( BrowserPermissionCallback callback, bool persist, const permissions::PermissionPromptDecision& decision) { @@ -1045,7 +1045,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // Note that rfh may be null, see crbug.com/426909787. auto* rfh = content::RenderFrameHost::FromID( -@@ -776,9 +811,9 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -791,9 +826,9 @@ void PermissionContextBase::NotifyPermissionSet( if (persist) { // Clone new value, because we need it again for the callback. @@ -1057,7 +1057,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (decision.is_final) { -@@ -838,6 +873,17 @@ void PermissionContextBase::UpdateSetting( +@@ -853,6 +888,17 @@ void PermissionContextBase::UpdateSetting( const PermissionRequestData& request_data, PermissionSetting setting, bool is_one_time) { @@ -1075,7 +1075,7 @@ 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, -@@ -847,6 +893,8 @@ void PermissionContextBase::UpdateSetting( +@@ -862,6 +908,8 @@ void PermissionContextBase::UpdateSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1130,7 +1130,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi // Implementors can override this method to avoid using automatic embargo. virtual bool UsesAutomaticEmbargo() const; -@@ -298,7 +320,8 @@ class PermissionContextBase : public content_settings::Observer { +@@ -303,7 +325,8 @@ class PermissionContextBase : public content_settings::Observer { // This is the callback for PermissionRequest and is called once the user // allows/blocks/dismisses a permission prompt. void PermissionDecided(const permissions::PermissionPromptDecision& decision, @@ -1157,7 +1157,7 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc -@@ -47,6 +47,16 @@ PermissionRequest::PermissionRequest( +@@ -49,6 +49,16 @@ PermissionRequest::PermissionRequest( request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} @@ -1174,7 +1174,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { std::move(request_finished_callback_).Run(); } -@@ -485,7 +495,19 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -511,7 +521,19 @@ PermissionRequest::GetGeolocationPromptType() const { } void PermissionRequest::PermissionGranted(const PromptOptions& prompt_options, @@ -1195,7 +1195,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio std::move(permission_decided_callback_) .Run(PermissionPromptDecision{.overall_decision = is_one_time -@@ -496,7 +518,16 @@ void PermissionRequest::PermissionGranted(const PromptOptions& prompt_options, +@@ -522,7 +544,16 @@ void PermissionRequest::PermissionGranted(const PromptOptions& prompt_options, /*request_data=*/*data_); } @@ -1213,7 +1213,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio std::move(permission_decided_callback_) .Run(PermissionPromptDecision{.overall_decision = PermissionDecision::kDeny, -@@ -506,6 +537,14 @@ void PermissionRequest::PermissionDenied() { +@@ -532,6 +563,14 @@ void PermissionRequest::PermissionDenied() { } void PermissionRequest::Cancelled(bool is_final_decision) { @@ -1255,7 +1255,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -182,10 +192,10 @@ class PermissionRequest { +@@ -187,10 +197,10 @@ class PermissionRequest { // If |is_one_time| is true the permission will last until all tabs of // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. @@ -1268,7 +1268,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -249,6 +259,9 @@ class PermissionRequest { +@@ -254,6 +264,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1281,7 +1281,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 -@@ -221,12 +221,12 @@ void PermissionRequestManager::AddRequest( +@@ -212,12 +212,12 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1296,7 +1296,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p return; } -@@ -307,9 +307,9 @@ void PermissionRequestManager::AddRequest( +@@ -296,9 +296,9 @@ void PermissionRequestManager::AddRequest( .selected_accuracy = GeolocationAccuracy::kPrecise}) : std::monostate(); if (should_auto_approve_request == PermissionAction::GRANTED) { @@ -1308,7 +1308,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } return; } -@@ -650,7 +650,8 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) { +@@ -638,7 +638,8 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) { StorePermissionActionForUMA(request->requesting_origin(), request->request_type(), action); PermissionGrantedIncludingDuplicates(request.get(), prompt_options, @@ -1318,7 +1318,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) std::optional content_settings_type = -@@ -669,7 +670,7 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) { +@@ -657,7 +658,7 @@ void PermissionRequestManager::Accept(const PromptOptions& prompt_options) { } void PermissionRequestManager::AcceptThisTime( @@ -1327,7 +1327,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p CHECK_EQ(std::holds_alternative(prompt_options), requests_[0]->GetContentSettingsType() == ContentSettingsType::GEOLOCATION_WITH_OPTIONS) -@@ -688,7 +689,7 @@ void PermissionRequestManager::AcceptThisTime( +@@ -676,7 +677,7 @@ void PermissionRequestManager::AcceptThisTime( StorePermissionActionForUMA(request->requesting_origin(), request->request_type(), action); PermissionGrantedIncludingDuplicates(request.get(), prompt_options, @@ -1336,7 +1336,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(action); -@@ -700,6 +701,16 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) { +@@ -688,6 +689,16 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) { requests_[0]->GetContentSettingsType() == ContentSettingsType::GEOLOCATION_WITH_OPTIONS); @@ -1353,7 +1353,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -720,7 +731,7 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) { +@@ -708,7 +719,7 @@ void PermissionRequestManager::Deny(const PromptOptions& prompt_options) { for (const auto& request : requests_) { StorePermissionActionForUMA(request->requesting_origin(), request->request_type(), action); @@ -1362,7 +1362,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(action); -@@ -1464,32 +1475,33 @@ PermissionRequestManager::VisitDuplicateRequests( +@@ -1462,32 +1473,33 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, const PromptOptions& prompt_options, @@ -1406,7 +1406,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request); } -@@ -1787,7 +1799,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1785,7 +1797,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { } switch (auto_response_for_test_) { case ACCEPT_ONCE: @@ -1418,7 +1418,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 -@@ -187,8 +187,10 @@ class PermissionRequestManager +@@ -188,8 +188,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept(const PromptOptions& prompt_options) override; @@ -1430,7 +1430,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss(const PromptOptions& prompt_options) override; void Ignore(const PromptOptions& prompt_options) override; void FinalizeCurrentRequests() override; -@@ -449,9 +451,11 @@ class PermissionRequestManager +@@ -448,9 +450,11 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, const PromptOptions& prompt_options, 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 a751e9641..fd1f15762 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -36,7 +36,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 -@@ -203,6 +203,7 @@ found in the LICENSE file. +@@ -206,6 +206,7 @@ found in the LICENSE file. @@ -55,8 +55,8 @@ 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; -@@ -327,6 +328,9 @@ import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoU - import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; +@@ -333,6 +334,9 @@ import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType; + import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; import org.chromium.chrome.browser.ui.edge_to_edge.TransitiveTopInsetProvider; +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; @@ -65,7 +65,7 @@ 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; -@@ -344,6 +348,8 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; +@@ -350,6 +354,8 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; import org.chromium.chrome.browser.util.DefaultBrowserInfo; import org.chromium.chrome.browser.xr.scenecore.XrModule; import org.chromium.components.browser_ui.accessibility.AccessibilityFeatureMap; @@ -74,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.share.ShareParams; import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate; -@@ -4160,6 +4166,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -4188,6 +4194,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt CloseAllTabsDialog.show( this, getModalDialogManagerSupplier(), tabModelSelector, closeAllTabsRunnable); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -83,7 +83,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); -@@ -4295,6 +4303,41 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -4335,6 +4343,41 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus); } @@ -128,7 +128,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 -@@ -314,6 +314,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -328,6 +328,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // Bookmarks modelList.add(buildBookmarksItem()); @@ -143,10 +143,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Recent Tabs if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SUBMENUS_IN_APP_MENU) && shouldShowRecentTabsItem()) { -@@ -537,6 +545,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -551,6 +559,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildNewTabGroupItem()); modelList.add(buildCloseAllTabsItem()); - if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem()); + if (shouldShowSelectTabsItem()) modelList.add(buildSelectTabsItem()); + // Add bookmark all item + modelList.add(new MVCListAdapter.ListItem( + AppMenuHandler.AppMenuItemType.STANDARD, @@ -154,9 +154,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab + R.id.bookmark_all_tabs_menu_id, + R.string.menu_bookmark_all_tabs, + shouldShowIconBeforeItem() ? R.drawable.ic_folder_blue_24dp : 0))); - modelList.add(buildSelectTabsItem()); if (shouldShowQuickDeleteItem()) modelList.add(buildQuickDeleteItem()); modelList.add(buildSettingsItem()); + } diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc @@ -460,7 +460,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 -@@ -4694,6 +4694,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4703,6 +4703,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs @@ -470,20 +470,20 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Get image descriptions -@@ -4733,9 +4736,6 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4742,9 +4745,6 @@ To change this setting, BEGIN_LINKdelete the Chrome d Reopen closed group - - Bookmark all tabs - - - Unpin - + + + diff --git a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc --- a/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc +++ b/chrome/browser/ui/bookmarks/bookmark_ui_operations_helper.cc -@@ -113,6 +113,8 @@ ui::mojom::DragOperation BookmarkUIOperationsHelper::DropBookmarks( +@@ -114,6 +114,8 @@ ui::mojom::DragOperation BookmarkUIOperationsHelper::DropBookmarks( if (is_reorder) { base::UmaHistogramEnumeration("Bookmarks.ReorderDropTarget", target); switch (target_parent()->GetType()) { @@ -723,7 +723,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc -@@ -957,7 +957,7 @@ bool BookmarkModel::HasUserCreatedBookmarksOrFolders() const { +@@ -946,7 +946,7 @@ bool BookmarkModel::HasUserCreatedBookmarksOrFolders() const { (account_bookmark_bar_node_ && !account_bookmark_bar_node_->children().empty()) || (account_other_node_ && !account_other_node_->children().empty()) || @@ -732,7 +732,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar } bool BookmarkModel::IsBookmarked(const GURL& url) const { -@@ -1289,6 +1289,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { +@@ -1278,6 +1278,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { bookmark_bar_node_ = details->bb_node(); other_node_ = details->other_folder_node(); mobile_node_ = details->mobile_folder_node(); @@ -819,7 +819,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc --- a/components/bookmarks/browser/bookmark_storage.cc +++ b/components/bookmarks/browser/bookmark_storage.cc -@@ -57,6 +57,7 @@ base::DictValue EncodeModelToDict( +@@ -92,6 +92,7 @@ base::DictValue EncodeModelToDict( case BookmarkStorage::kSelectLocalOrSyncableNodes: return codec.Encode( model->bookmark_bar_node(), model->other_node(), model->mobile_node(), @@ -827,7 +827,7 @@ diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookm model->client()->EncodeLocalOrSyncableBookmarkSyncMetadata()); case BookmarkStorage::kSelectAccountNodes: // Either all permanent folders or none should exist. -@@ -73,6 +74,7 @@ base::DictValue EncodeModelToDict( +@@ -108,6 +109,7 @@ base::DictValue EncodeModelToDict( return codec.Encode(model->account_bookmark_bar_node(), model->account_other_node(), model->account_mobile_node(), @@ -862,7 +862,7 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc --- a/components/bookmarks/browser/model_loader.cc +++ b/components/bookmarks/browser/model_loader.cc -@@ -172,6 +172,9 @@ std::unique_ptr LoadBookmarks( +@@ -255,6 +255,9 @@ std::unique_ptr LoadBookmarks( std::unique_ptr account_mobile_folder_node = BookmarkPermanentNode::CreateMobileBookmarks(0, /*is_account_node=*/true); @@ -871,8 +871,8 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks + 0, /*is_account_node=*/true); const base::expected - json_string = ReadFile(/*encryptor=*/nullptr, account_file_path, -@@ -186,7 +189,8 @@ std::unique_ptr LoadBookmarks( + json_string = ReadFile( +@@ -273,7 +276,8 @@ std::unique_ptr LoadBookmarks( } else if (codec.Decode(*root_dict, /*already_assigned_ids=*/{}, account_bb_node.get(), account_other_folder_node.get(), @@ -882,7 +882,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks &sync_metadata_str)) { ids_assigned_to_account_nodes = codec.release_assigned_ids(); -@@ -248,7 +252,8 @@ std::unique_ptr LoadBookmarks( +@@ -360,7 +364,8 @@ std::unique_ptr LoadBookmarks( } else if (codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes), details->bb_node(), details->other_folder_node(), diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index 33724dc3c..41801e49f 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 -@@ -136,6 +136,7 @@ found in the LICENSE file. +@@ -138,6 +138,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 -@@ -4196,6 +4196,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -4225,6 +4225,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt 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 -@@ -2888,6 +2888,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2884,6 +2884,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return AppInstallMenuHandler.doOpenWebApk(this, 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 -@@ -1057,6 +1057,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -1076,6 +1076,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties return false; } @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -407,6 +407,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -412,6 +412,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat modelList.add(buildOpenInAppItem()); } @@ -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 -@@ -424,6 +424,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -438,6 +438,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildOpenInAppItem()); } @@ -114,8 +114,8 @@ 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 -@@ -346,6 +346,10 @@ CHAR_LIMIT guidelines: - Chrome Tips +@@ -355,6 +355,10 @@ CHAR_LIMIT guidelines: + Chrome finds + diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index 6012485f7..0a10f287f 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -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 -@@ -160,6 +160,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -161,6 +161,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.ProfileManagerUtils; -@@ -694,7 +695,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -699,7 +700,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -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 -@@ -30,6 +30,7 @@ import org.chromium.base.ContextUtils; +@@ -31,6 +31,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.MonotonicObservableSupplier; import org.chromium.base.supplier.ObservableSuppliers; import org.chromium.base.supplier.SettableMonotonicObservableSupplier; -@@ -105,13 +106,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -107,13 +108,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"; -@@ -198,6 +213,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -206,6 +221,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment if (shouldHideSandboxPref(privacySandboxBridge)) { getPreferenceScreen().removePreference(sandboxPreference); } @@ -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( -@@ -462,6 +492,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -477,6 +507,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) { -@@ -508,6 +539,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -523,6 +554,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; } -@@ -558,6 +596,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -573,6 +611,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -200,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 -@@ -6706,6 +6706,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6691,6 +6691,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-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index 31404b8cb..7f85f486d 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -165,7 +165,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 -@@ -845,7 +845,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -850,7 +850,10 @@ 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) { @@ -180,7 +180,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 -@@ -147,6 +147,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -138,6 +138,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; @@ -191,7 +191,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 -@@ -116,6 +116,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -118,6 +118,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.content_public.browser.LoadUrlParams; @@ -199,7 +199,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; -@@ -576,7 +577,10 @@ public class StripLayoutHelperManager +@@ -584,7 +585,10 @@ public class StripLayoutHelperManager mIsHeaderCustomizationSupported = ToolbarFeatures.isAppHeaderCustomizationSupported( /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); @@ -214,7 +214,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 -@@ -120,6 +120,14 @@ public class TabStripSceneLayer extends SceneOverlayLayer { +@@ -124,6 +124,14 @@ public class TabStripSceneLayer extends SceneOverlayLayer { if (mNativePtr == 0) return; final boolean visible = yOffset > -layoutHelper.getHeight(); @@ -251,7 +251,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 -@@ -893,7 +893,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -934,7 +934,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public int getControlContainerHeightResource() { @@ -265,7 +265,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 -@@ -131,6 +131,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; +@@ -135,6 +135,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; @@ -274,7 +274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; -@@ -2058,7 +2060,9 @@ public class RootUiCoordinator +@@ -2096,7 +2098,9 @@ public class RootUiCoordinator protected int getFindToolbarStub() { int stubId = R.id.find_toolbar_stub; @@ -288,7 +288,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn --- a/chrome/browser/preferences/BUILD.gn +++ b/chrome/browser/preferences/BUILD.gn -@@ -25,6 +25,7 @@ android_library("java") { +@@ -27,6 +27,7 @@ android_library("java") { "//components/cached_flags:java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/jni_zero:jni_zero_java", @@ -299,7 +299,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 -@@ -417,6 +417,7 @@ public final class ChromePreferenceKeys { +@@ -413,6 +413,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"; @@ -369,7 +369,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 -@@ -1061,7 +1061,7 @@ public class LocationBarCoordinator +@@ -1050,7 +1050,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -381,7 +381,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 -@@ -1592,6 +1592,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1635,6 +1635,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -484,7 +484,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; -@@ -174,6 +175,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -176,6 +177,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout @Initializer public void initWithToolbar(int toolbarLayoutId, int toolbarLayoutHeightResId) { try (TraceEvent te = TraceEvent.scoped("ToolbarControlContainer.initWithToolbar")) { @@ -499,7 +499,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; +@@ -67,6 +67,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; @@ -507,7 +507,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; -@@ -591,7 +592,9 @@ public abstract class ToolbarLayout extends FrameLayout +@@ -599,7 +600,9 @@ public abstract class ToolbarLayout extends FrameLayout * @see Toolbar#getTabStripHeight() */ public int getTabStripHeightFromResource() { 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 691b7213e..99143e132 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 @@ -37,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.base.CommandLine; import org.chromium.base.DeviceInfo; import org.chromium.base.IntentUtils; -@@ -2291,8 +2292,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -2309,8 +2310,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt ActivityRestoreState.NUM_ENTRIES); } @@ -60,7 +60,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; -@@ -24,6 +25,7 @@ import androidx.preference.Preference; +@@ -25,6 +26,7 @@ import androidx.preference.Preference; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; @@ -68,7 +68,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; -@@ -119,6 +121,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -121,6 +123,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private final SharedPreferencesManager mSharedPreferencesManager = ChromeSharedPreferences.getInstance(); @@ -77,7 +77,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"; private static final String PREF_ADVANCED_PROTECTION_INFO = "advanced_protection_info"; -@@ -403,7 +407,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -418,7 +422,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); @@ -90,7 +90,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)) { -@@ -463,6 +471,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -478,6 +486,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment getContext(), getProfile())); } @@ -128,7 +128,7 @@ diff --git a/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -2978,6 +2978,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3021,6 +3021,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 5b8bdefac..95074fe91 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,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java -@@ -103,6 +103,7 @@ import org.chromium.components.collaboration.messaging.PersistentNotificationTyp +@@ -102,6 +102,7 @@ import org.chromium.components.collaboration.messaging.PersistentNotificationTyp import org.chromium.components.data_sharing.DataSharingService; import org.chromium.components.data_sharing.GroupMember; import org.chromium.components.data_sharing.member_role.MemberRole; @@ -32,7 +32,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.components.tab_group_sync.EitherId.EitherGroupId; import org.chromium.components.tab_group_sync.LocalTabGroupId; import org.chromium.components.tab_group_sync.TabGroupSyncService; -@@ -123,6 +124,9 @@ import java.util.Objects; +@@ -122,6 +123,9 @@ import java.util.Objects; import java.util.Set; import java.util.function.Supplier; @@ -42,7 +42,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. -@@ -1026,9 +1030,15 @@ public class TabGridDialogMediator +@@ -1017,9 +1021,15 @@ public class TabGridDialogMediator UrlConstantResolver urlConstantResolver = UrlConstantResolverFactory.getForProfile(profile); @@ -70,7 +70,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.profiles.Profile; -@@ -428,10 +429,15 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -426,10 +427,15 @@ public class TabGroupUiMediator implements BackPressHandler { UrlConstantResolverFactory.getForProfile(currentTabProfile); Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); @@ -105,7 +105,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java -@@ -93,6 +93,9 @@ import java.util.List; +@@ -96,6 +96,9 @@ import java.util.List; import java.util.function.BiConsumer; import java.util.function.Supplier; @@ -115,7 +115,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. -@@ -246,9 +249,14 @@ public class TabGroupContextMenuCoordinator extends TabStripReorderingHelper Last hour @@ -267,7 +267,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 -@@ -126,6 +126,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -128,6 +128,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { pref_registration_flags); registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); @@ -279,7 +279,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 -@@ -1265,6 +1265,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = +@@ -868,6 +868,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 a67ee62d3..cf7d7ac63 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -71,7 +71,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ "//url" ] -@@ -263,6 +265,7 @@ source_set("unit_tests") { +@@ -264,6 +266,7 @@ source_set("unit_tests") { "//testing/gtest", "//third_party/search_engines_data:prepopulated_engines", "//third_party/search_engines_data:regional_settings", @@ -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 -@@ -209,14 +209,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -211,14 +211,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -180,7 +180,7 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -27,6 +27,8 @@ +@@ -29,6 +29,8 @@ #include "components/search_engines/template_url_data_util.h" #include "third_party/search_engines_data/resources/definitions/prepopulated_engines.h" @@ -189,8 +189,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon namespace TemplateURLPrepopulateData { // Helpers -------------------------------------------------------------------- -@@ -152,7 +154,7 @@ int GetDataVersion(PrefService* prefs) { - kCurrentDataVersion; +@@ -172,7 +174,7 @@ int GetDataVersion(PrefService* prefs) { + return kCurrentDataVersion; } -std::vector> GetPrepopulatedEngines( @@ -198,7 +198,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon PrefService& prefs, const std::vector& regional_prepopulated_engines) { -@@ -168,6 +170,17 @@ std::vector> GetPrepopulatedEngines( +@@ -188,6 +190,17 @@ std::vector> GetPrepopulatedEngines( &PrepopulatedEngineToTemplateURLData); } @@ -216,7 +216,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon std::unique_ptr GetPrepopulatedEngine( PrefService& prefs, const std::vector& regional_prepopulated_engines, -@@ -188,10 +201,14 @@ std::vector> GetLocalPrepopulatedEngines( +@@ -208,10 +221,14 @@ std::vector> GetLocalPrepopulatedEngines( return std::vector>(); } 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 a28d1e174..7ee0a43c4 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -55,7 +55,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 -@@ -285,6 +285,7 @@ chrome_java_sources = [ +@@ -295,6 +295,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", @@ -81,7 +81,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/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 -@@ -228,6 +228,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; +@@ -231,6 +231,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; import org.chromium.chrome.browser.quick_delete.QuickDeleteMetricsDelegate; @@ -89,7 +89,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; -@@ -2275,7 +2276,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -2293,7 +2294,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt } if (!hadCipherData) { hadCipherData = @@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -@@ -169,6 +169,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -168,6 +168,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment assert mCheckbox == preference; mParent.updateButtonState(); @@ -156,7 +156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C return true; } -@@ -250,7 +256,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -249,7 +255,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment private @TimePeriod int mLastSelectedTimePeriod; private boolean mShouldShowPostDeleteFeedback; @@ -165,7 +165,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C ObservableSuppliers.createMonotonic(); /** -@@ -357,7 +363,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -356,7 +362,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment } /** Called when browsing data is about to be cleared. */ @@ -174,7 +174,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C RecordUserAction.record("ClearBrowsingData_AdvancedTab"); } -@@ -443,6 +449,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -442,6 +448,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment BrowsingDataBridge.getForProfile(getProfile()) .setBrowsingDataDeletionPreference( ClearBrowsingDataFragment.getDataType(item.getOption()), @@ -182,7 +182,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C item.isSelected()); } -@@ -450,8 +457,16 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -449,8 +456,16 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment .setBrowsingDataDeletionTimePeriod(mLastSelectedTimePeriod); } @@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C String referrer = fragmentArgs.getString( ClearBrowsingDataFragment.CLEAR_BROWSING_DATA_REFERRER, null); -@@ -477,6 +492,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -476,6 +491,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment DialogOption.CLEAR_SITE_SETTINGS); } @@ -211,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C /** * Decides whether a given dialog option should be selected when the dialog is initialized. * -@@ -485,7 +504,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -484,7 +503,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment */ private boolean isOptionSelectedByDefault(@DialogOption int option) { return BrowsingDataBridge.getForProfile(getProfile()) @@ -220,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } /** -@@ -553,6 +572,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -552,6 +571,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment * options. */ private void onClearButtonClicked() { @@ -228,7 +228,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C if (shouldShowImportantSitesDialog()) { showImportantDialogThenClear(); return; -@@ -582,6 +602,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -581,6 +601,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment Button clearButton = (Button) assumeNonNull(getView()).findViewById(R.id.clear_button); boolean isEnabled = !getSelectedOptions().isEmpty(); clearButton.setEnabled(isEnabled); @@ -236,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } private int getSpinnerIndex( -@@ -659,7 +680,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -658,7 +679,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment .getBoolean(Pref.ALLOW_DELETING_BROWSER_HISTORY)) { enabled = false; browsingDataBridge.setBrowsingDataDeletionPreference( @@ -245,7 +245,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } // Disable tabs closure if the user is in multi-window mode. -@@ -689,8 +710,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -688,8 +709,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment mSigninManager.addSignInStateObserver(this); setHasOptionsMenu(true); @@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C @Override public MonotonicObservableSupplier getPageTitle() { return mPageTitle; -@@ -992,7 +1017,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -990,7 +1015,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment public void updateDynamicPreferences( Context context, SettingsIndexData indexData, Profile profile) { Bundle args = createFragmentArgs(context.getClass().getName()); @@ -372,7 +372,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 -@@ -108,6 +108,7 @@ +@@ -113,6 +113,7 @@ #include "components/enterprise/client_certificates/core/features.h" #include "components/enterprise/data_controls/core/browser/features.h" #include "components/error_page/common/error_page_switches.h" @@ -383,7 +383,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc --- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc +++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc -@@ -66,6 +66,15 @@ PrefService* GetPrefService(Profile* profile) { +@@ -65,6 +65,15 @@ PrefService* GetPrefService(Profile* profile) { return profile->GetOriginalProfile()->GetPrefs(); } @@ -399,7 +399,7 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chro void OnBrowsingDataModelBuilt(JNIEnv* env, const ScopedJavaGlobalRef& java_callback, std::unique_ptr model) { -@@ -218,7 +227,8 @@ static void JNI_BrowsingDataBridge_MarkOriginAsImportantForTesting( +@@ -217,7 +226,8 @@ static void JNI_BrowsingDataBridge_MarkOriginAsImportantForTesting( static bool JNI_BrowsingDataBridge_GetBrowsingDataDeletionPreference( JNIEnv* env, Profile* profile, @@ -409,7 +409,7 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chro DCHECK_GE(data_type, 0); DCHECK_LE(data_type, static_cast(browsing_data::BrowsingDataType::MAX_VALUE)); -@@ -230,7 +240,7 @@ static bool JNI_BrowsingDataBridge_GetBrowsingDataDeletionPreference( +@@ -229,7 +239,7 @@ static bool JNI_BrowsingDataBridge_GetBrowsingDataDeletionPreference( std::string pref; if (!browsing_data::GetDeletionPreferenceFromDataType( static_cast(data_type), @@ -418,7 +418,7 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chro return false; } -@@ -241,6 +251,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference( +@@ -240,6 +250,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference( JNIEnv* env, Profile* profile, int32_t data_type, @@ -426,7 +426,7 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chro bool value) { DCHECK_GE(data_type, 0); DCHECK_LE(data_type, -@@ -249,7 +260,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference( +@@ -248,7 +259,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference( std::string pref; if (!browsing_data::GetDeletionPreferenceFromDataType( static_cast(data_type), @@ -438,7 +438,7 @@ diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chro diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc -@@ -327,8 +327,25 @@ void ChromeBrowsingDataLifetimeManager::Shutdown() { +@@ -325,8 +325,25 @@ void ChromeBrowsingDataLifetimeManager::Shutdown() { void ChromeBrowsingDataLifetimeManager::ClearBrowsingDataForOnExitPolicy( bool keep_browser_alive) { @@ -466,7 +466,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager. if (!data_types.empty() && IsConditionSatisfiedForBrowsingDataRemoval(GetSyncTypesForPolicyPref( -@@ -437,6 +454,7 @@ void ChromeBrowsingDataLifetimeManager::StartScheduledBrowsingDataRemoval() { +@@ -435,6 +452,7 @@ void ChromeBrowsingDataLifetimeManager::StartScheduledBrowsingDataRemoval() { bool ChromeBrowsingDataLifetimeManager:: IsConditionSatisfiedForBrowsingDataRemoval( const syncer::UserSelectableTypeSet sync_types) { @@ -477,7 +477,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager. diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc -@@ -321,6 +321,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -317,6 +317,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( uint64_t origin_type_mask, base::OnceCallback callback) { CHECK(((remove_mask & @@ -485,7 +485,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()); -@@ -424,6 +425,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -420,6 +421,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kHistory), &history_task_tracker_); } @@ -495,7 +495,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. if (ClipboardRecentContent::GetInstance()) ClipboardRecentContent::GetInstance()->SuppressClipboardContent(); -@@ -531,6 +535,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -527,6 +531,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()) { @@ -507,7 +507,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. profile_->GetSSLHostStateDelegate()->Clear( filter_builder->MatchesAllOriginsAndDomains() ? base::RepeatingCallback() -@@ -559,9 +568,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -555,9 +564,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } device_event_log::Clear(delete_begin_, delete_end_); @@ -521,7 +521,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. content::BackgroundTracingManager::GetInstance().DeleteTracesInDateRange( delete_begin_, delete_end_); -@@ -1285,6 +1298,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -1276,6 +1289,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (should_clear_zero_suggest_and_session_token && template_url_service) template_url_service->ClearSessionToken(); @@ -533,7 +533,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 -@@ -588,6 +588,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -591,6 +591,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] = settings_api::PrefType::kNumber; @@ -593,7 +593,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 -@@ -1534,6 +1534,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, +@@ -1566,6 +1566,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, } } @@ -613,7 +613,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_ || -@@ -2229,9 +2242,9 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { +@@ -2307,9 +2320,9 @@ void ProfileManager::OnBrowserClosed(BrowserWindowInterface* browser) { // Do nothing if the closed window is not the last window of the same profile. bool has_other_window = false; ForEachCurrentBrowserWindowInterfaceOrderedByActivation( @@ -628,7 +628,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h --- a/chrome/browser/profiles/profile_manager.h +++ b/chrome/browser/profiles/profile_manager.h -@@ -242,6 +242,8 @@ class ProfileManager : public Profile::Delegate { +@@ -264,6 +264,8 @@ class ProfileManager : public Profile::Delegate { // profiles. std::vector GetLoadedProfiles() const; @@ -918,7 +918,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch showPrivacyGuideDialog_: Boolean, isPrivacySandboxRestricted_: { -@@ -121,6 +122,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -126,6 +127,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { declare private historyExpireDaysThresholdOptions_: object[]; declare private showClearBrowsingDataDialog_: boolean; @@ -926,7 +926,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch declare private showPrivacyGuideDialog_: boolean; declare private referersPolicyOptions_: object[]; declare private isPrivacySandboxRestricted_: boolean; -@@ -136,6 +138,8 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -142,6 +144,8 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { this.showClearBrowsingDataDialog_ = Router.getInstance().getCurrentRoute() === routes.CLEAR_BROWSER_DATA; @@ -935,7 +935,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch this.showPrivacyGuideDialog_ = Router.getInstance().getCurrentRoute() === routes.PRIVACY_GUIDE && this.isPrivacyGuideAvailable; -@@ -147,6 +151,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -153,6 +157,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { Router.getInstance().navigateTo(routes.CLEAR_BROWSER_DATA); } @@ -951,7 +951,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts -@@ -253,7 +253,7 @@ export class SettingsPrivacyPageIndexElement extends +@@ -252,7 +252,7 @@ export class SettingsPrivacyPageIndexElement extends } private isRouteHostedWithinPrivacyView_(route: Route): boolean { @@ -986,7 +986,7 @@ diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resour 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 -@@ -1517,6 +1517,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1560,6 +1560,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>. @@ -1013,7 +1013,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 -@@ -2303,6 +2303,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2305,6 +2305,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"clearedData", IDS_SETTINGS_CLEARED_DATA}, {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, @@ -1124,7 +1124,7 @@ diff --git a/components/browsing_data/core/browsing_data_policies_utils.h b/comp diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/browsing_data/core/browsing_data_utils.cc --- a/components/browsing_data/core/browsing_data_utils.cc +++ b/components/browsing_data/core/browsing_data_utils.cc -@@ -418,6 +418,37 @@ bool GetDeletionPreferenceFromDataType( +@@ -417,6 +417,37 @@ bool GetDeletionPreferenceFromDataType( BrowsingDataType data_type, ClearBrowsingDataTab clear_browsing_data_tab, std::string* out_pref) { @@ -1271,7 +1271,7 @@ diff --git a/components/favicon/core/favicon_database.h b/components/favicon/cor diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc --- a/components/search_engines/template_url_service.cc +++ b/components/search_engines/template_url_service.cc -@@ -920,6 +920,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween( +@@ -931,6 +931,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween( if (turl->date_created() >= created_after && (created_before.is_null() || turl->date_created() < created_before) && turl->safe_for_autoreplace() && turl->prepopulate_id() == 0 && @@ -1302,7 +1302,7 @@ diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/functional/concurrent_closures.h" -@@ -1505,6 +1506,7 @@ void StoragePartitionImpl::Initialize( +@@ -1510,6 +1511,7 @@ void StoragePartitionImpl::Initialize( .AppendASCII("Code Cache"); } DCHECK_GE(settings.size_in_bytes(), 0); diff --git a/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch b/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch index 4cf2b02e5..d7ab7342d 100644 --- a/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch +++ b/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch @@ -317,7 +317,7 @@ diff --git a/components/webauthn/features.h b/components/webauthn/features.h diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc --- a/device/fido/public/features.cc +++ b/device/fido/public/features.cc -@@ -124,6 +124,7 @@ BASE_FEATURE(kWebAuthnPublishPrelinkingInfo, +@@ -130,6 +130,7 @@ BASE_FEATURE(kWebAuthnPublishPrelinkingInfo, "WebAuthenticationPublishPrelinkingInfo", base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -325,10 +325,10 @@ diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc // Disabled by default. BASE_FEATURE(kWebAuthnHelloSignal, -@@ -177,6 +178,7 @@ BASE_FEATURE_PARAM(int, - BASE_FEATURE(kWebAuthnImmediateGetAutoselect, - "WebAuthenticationImmediateGetAutoselect", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -189,6 +190,7 @@ BASE_FEATURE_PARAM(int, + &kWebAuthnImmediateGet, + "timeout_ms", + kDefaultImmediateMediationTimeoutMs); +SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGetAutoselect); // Deprecation flag. Disabled by default in M142. Remove in or after M145. @@ -336,7 +336,7 @@ diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc diff --git a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc --- a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc -@@ -1129,6 +1129,11 @@ DOMException* AuthenticatorStatusToDOMException( +@@ -1157,6 +1157,11 @@ DOMException* AuthenticatorStatusToDOMException( const WebAuthnDOMExceptionDetailsPtr& dom_exception_details) { DCHECK_EQ(status != AuthenticatorStatus::ERROR_WITH_DOM_EXCEPTION_DETAILS, dom_exception_details.is_null()); 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 9ac4eaba8..ec2cb05f6 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 @@ -60,7 +60,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 -@@ -111,6 +111,7 @@ found in the LICENSE file. +@@ -112,6 +112,7 @@ found in the LICENSE file. @@ -129,17 +129,17 @@ 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 -@@ -488,6 +488,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -495,6 +495,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } if (mParams.isAnchor()) { ModelList linkGroup = new ModelList(); + if (ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled()) { + linkGroup.add(createListItem(Item.FOLLOW_LINK)); + } - if (FirstRunStatus.getFirstRunFlowComplete() + if (areMandatoryFlowsCompleted(getProfile()) && !isEmptyUrl(mParams.getUrl()) && UrlUtilities.isAcceptedScheme(mParams.getUrl())) { -@@ -1132,6 +1135,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -1141,6 +1144,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { title = mParams.getLinkText(); } tabItemDelegate.onReadLater(mParams.getUrl(), title); @@ -151,7 +151,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 -@@ -417,6 +417,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -388,6 +388,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { mTab.loadUrl(loadUrlParams); } @@ -169,7 +169,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 -@@ -447,6 +447,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -463,6 +463,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabClosureMethodRefactor, &kTabModelInitFixes, &kTabStorageSqlitePrototype, @@ -180,7 +180,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 -@@ -528,6 +528,8 @@ public abstract class ChromeFeatureList { +@@ -546,6 +546,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -189,7 +189,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_THEME_SYNC = "NewTabPageCustomizationThemeSync"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -1051,6 +1053,8 @@ public abstract class ChromeFeatureList { +@@ -1107,6 +1109,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -197,8 +197,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f + newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false); public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPersistAcrossReboots = - newCachedFlag(PERSIST_ACROSS_REBOOTS, false); -@@ -1325,6 +1329,7 @@ public abstract class ChromeFeatureList { + newCachedFlag(PERSIST_ACROSS_REBOOTS, true); +@@ -1399,6 +1403,7 @@ public abstract class ChromeFeatureList { sTopControlsRefactorV2, sTouchToSearchCallout, sUnparcelIntentFileDescriptors, @@ -209,7 +209,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 -@@ -1657,6 +1657,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1700,6 +1700,12 @@ Your Google account may have other forms of browsing history like searches and a Disable toolbar swipe up @@ -222,7 +222,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3320,6 +3326,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3369,6 +3375,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Open in new Chrome tab @@ -306,8 +306,8 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component import org.chromium.url.GURL; import java.lang.annotation.Retention; -@@ -175,6 +176,8 @@ public interface ContextMenuItemDelegate { - */ +@@ -148,6 +149,8 @@ public interface ContextMenuItemDelegate { + /** Returns the page url. */ GURL getPageUrl(); + void onOpenUrl(GURL url, Referrer referrer); @@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third LocalDOMWindow* window = GetDocument().domWindow(); if (!window) { return; -@@ -509,6 +521,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( +@@ -511,6 +523,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( frame_request.SetImpression(impression); } @@ -410,7 +410,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; -@@ -545,7 +566,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const { +@@ -547,7 +568,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const { return IsLink(); } @@ -418,8 +418,8 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third +void HTMLAnchorElementBase::HandleClick(MouseEvent& event, bool do_not_show_context_menu) { event.SetDefaultHandled(); - LocalDOMWindow* window = GetDocument().domWindow(); -@@ -603,13 +624,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { + // It's unclear whether synthesized middle-button "click" events should be +@@ -621,13 +642,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { return; } @@ -437,7 +437,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third // We distinguish single/double click with some modifiers. // See the comment of `EventHandler.delayed_navigation_task_handle_`. auto task_handle = PostDelayedCancellableTask( -@@ -619,7 +639,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { +@@ -637,7 +657,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { frame->GetEventHandler().SetDelayedNavigationTaskHandle( std::move(task_handle)); } else { @@ -483,7 +483,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" -@@ -65,6 +66,7 @@ +@@ -68,6 +69,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" @@ -491,7 +491,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" -@@ -782,6 +784,21 @@ void HTMLImageElement::DidFinishLayout() { +@@ -796,6 +798,21 @@ void HTMLImageElement::DidFinishLayout() { } } @@ -516,8 +516,8 @@ 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 -@@ -211,6 +211,8 @@ class CORE_EXPORT HTMLImageElement - void DidAddUserAgentShadowRoot(ShadowRoot&) override; +@@ -226,6 +226,8 @@ class CORE_EXPORT HTMLImageElement + void AdjustStyle(ComputedStyleBuilder&) override; + void DefaultEventHandler(Event&) override; @@ -549,17 +549,17 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t mouse_event->SetDefaultHandled(); } -@@ -440,7 +442,8 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, - bool ContextMenuController::ShowContextMenu(LocalFrame* frame, - const PhysicalOffset& point, - WebMenuSourceType source_type, -- const MouseEvent* mouse_event) { -+ const MouseEvent* mouse_event, -+ bool do_not_show_context_menu) { +@@ -443,7 +445,8 @@ bool ContextMenuController::ShowContextMenu( + LocalFrame* frame, + const PhysicalOffset& point, + ui::mojom::blink::MenuSourceType source_type, +- const MouseEvent* mouse_event) { ++ const MouseEvent* mouse_event, ++ bool do_not_show_context_menu) { // 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, -@@ -463,6 +466,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -466,6 +469,16 @@ bool ContextMenuController::ShowContextMenu( if (!result.InnerNodeOrImageMapImage()) return false; @@ -576,7 +576,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; -@@ -843,7 +856,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -848,7 +861,7 @@ bool ContextMenuController::ShowContextMenu( SetAutofillData(result.InnerNode(), data); @@ -597,10 +597,10 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/th void ShowContextMenuAtPoint(LocalFrame*, float x, float y, -@@ -127,7 +127,8 @@ class CORE_EXPORT ContextMenuController +@@ -129,7 +129,8 @@ class CORE_EXPORT ContextMenuController virtual bool ShowContextMenu(LocalFrame*, const PhysicalOffset&, - WebMenuSourceType, + ui::mojom::blink::MenuSourceType, - const MouseEvent* mouse_event); + const MouseEvent* mouse_event, + bool do_not_show_context_menu = false); diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index 5a4766965..d40855f80 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -26,7 +26,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 @@ +@@ -171,6 +171,7 @@ #include "components/sensitive_content/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/dom_storage/features.h" diff --git a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch index 0a6950849..a427c4f78 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 -@@ -1056,8 +1056,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -1102,8 +1102,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity return true; } else if (item.getItemId() == R.id.menu_id_general_help) { RecordUserAction.record("Settings.MobileHelpAndFeedback"); diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index f09dd1081..cd2f3ad44 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -342,6 +342,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( +@@ -345,6 +345,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( } } @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() { base::AutoLock locker(WebGLContextLimitLock()); DCHECK(webgl_context_limits_initialized_); -@@ -612,25 +619,6 @@ static String ExtractWebGLContextCreationError( +@@ -631,25 +638,6 @@ static String ExtractWebGLContextCreationError( const Platform::WebGLContextInfo& info) { StringBuilder builder; builder.Append("Could not create a WebGL context"); @@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(), builder); builder.Append('.'); -@@ -691,6 +679,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -710,6 +698,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( const CanvasContextCreationAttributesCore& attributes, Platform::WebGLContextType context_type, Platform::WebGLContextInfo* context_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 -@@ -2009,6 +2009,8 @@ class MODULES_EXPORT WebGLRenderingContextBase +@@ -1968,6 +1968,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 76580e4e4..6adc7b6f2 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -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" -@@ -1019,6 +1022,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1020,6 +1023,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 0c36c7277..3acb699af 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 -@@ -1628,6 +1628,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1670,6 +1670,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( -@@ -1641,6 +1642,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1683,6 +1684,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -108,7 +108,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse #include "content/browser/service_worker/service_worker_host.h" #include "content/browser/shared_storage/shared_storage_worklet_host.h" #include "content/browser/worker_host/dedicated_worker_host.h" -@@ -241,12 +242,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy { +@@ -250,12 +251,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy { const std::string& group, const std::string& type, base::DictValue body) { @@ -122,11 +122,11 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse +#endif } - const int render_process_id_; + const ChildProcessId render_process_id_; 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 -@@ -16697,12 +16697,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -16890,12 +16890,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 -@@ -492,14 +492,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -504,14 +504,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, @@ -340,7 +340,7 @@ diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/pu diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -1894,7 +1894,6 @@ mojom("mojom") { +@@ -1899,7 +1899,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -351,7 +351,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1247,6 +1247,7 @@ interface NetworkContext { +@@ -1252,6 +1252,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, -@@ -1254,6 +1255,7 @@ interface NetworkContext { +@@ -1259,6 +1260,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, -@@ -1264,6 +1266,7 @@ interface NetworkContext { +@@ -1269,6 +1271,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/debug/dump_without_crashing.h" #include "base/feature_list.h" #include "base/metrics/histogram_functions.h" -@@ -1378,6 +1379,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1383,6 +1384,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); -@@ -1385,6 +1387,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1390,6 +1392,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" -@@ -2889,9 +2890,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2879,9 +2880,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -436,7 +436,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b #include "net/storage_access_api/status.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "services/network/public/mojom/fetch_api.mojom-blink-forward.h" -@@ -677,7 +678,9 @@ class CORE_EXPORT LocalFrame final +@@ -674,7 +675,9 @@ class CORE_EXPORT LocalFrame final return client_hints_preferences_; } @@ -501,7 +501,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ const String& type = report->type(); if (!(type == ReportType::kCSPViolation || type == ReportType::kCSPHash || type == ReportType::kDeprecation || -@@ -268,6 +276,7 @@ void ReportingContext::SendToReportingAPI(Report* report, +@@ -269,6 +277,7 @@ void ReportingContext::SendToReportingAPI(Report* report, url, endpoint, body->featureId(), body->disposition(), body->message(), body->sourceFile(), line_number, column_number); } diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 04c0efd35..463bb2733 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -25,7 +25,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 -@@ -833,7 +833,6 @@ if (_is_default_toolchain) { +@@ -839,7 +839,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", @@ -66,7 +66,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 -@@ -352,12 +352,6 @@ void PrepareFactory( +@@ -351,12 +351,6 @@ void PrepareFactory( PrepareFactory(factory, pref_filename, policy_service, std::move(user_pref_store), std::move(extension_prefs), async, policy_connector); @@ -82,7 +82,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 -@@ -468,7 +468,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const { +@@ -466,7 +466,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const { } std::string ProfileAttributesEntry::GetSupervisedUserId() const { @@ -94,7 +94,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 -@@ -685,10 +685,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -689,10 +689,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -105,7 +105,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1604,6 +1600,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1618,6 +1614,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -116,7 +116,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 -@@ -1276,10 +1276,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1308,10 +1308,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kProfileName, profile_name); } @@ -127,7 +127,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile } void ProfileManager::RegisterTestingProfile(std::unique_ptr profile, -@@ -2077,9 +2073,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -2114,9 +2110,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); @@ -165,7 +165,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 -@@ -621,10 +621,6 @@ bool ManagementUIHandler::managed() const { +@@ -627,10 +627,6 @@ bool ManagementUIHandler::managed() const { void ManagementUIHandler::RegisterPrefChange( PrefChangeRegistrar& pref_registrar) { @@ -247,12 +247,12 @@ diff --git a/components/supervised_user/core/common/features.cc b/components/sup diff --git a/extensions/browser/api/management/management_api.cc b/extensions/browser/api/management/management_api.cc --- a/extensions/browser/api/management/management_api.cc +++ b/extensions/browser/api/management/management_api.cc -@@ -324,6 +324,7 @@ void AddExtensionInfo(const Extension* source_extension, - } +@@ -693,6 +693,7 @@ bool ManagementSetEnabledFunction::HasUnsupportedRequirements( - bool PlatformSupportsApprovalFlowForExtensions() { + bool ManagementSetEnabledFunction::IsSupervisedExtensionApprovalFlowRequired( + const Extension* target_extension) const { + if ((true)) return false; - #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_WIN) - return true; + SupervisedUserExtensionsDelegate* supervised_user_extensions_delegate = + ManagementAPI::GetFactoryInstance() + ->Get(browser_context()) -- diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index aac8fbde7..532035b9b 100644 --- a/build/patches/Allow-playing-audio-in-background.patch +++ b/build/patches/Allow-playing-audio-in-background.patch @@ -23,7 +23,7 @@ diff --git a/content/public/renderer/render_frame_media_playback_options.cc b/co diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -1342,6 +1342,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1348,6 +1348,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -36,7 +36,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( std::optional enabled_track_id) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3740,7 +3746,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3745,7 +3751,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { const bool preserve_audio = HasUnmutedAudio() || audio_source_provider_->IsAudioBeingCaptured(); // Audio only stream is allowed to play when in background. @@ -51,7 +51,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 -@@ -213,6 +213,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl +@@ -214,6 +214,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/patches/Always-allow-inspect-fallback.patch b/build/patches/Always-allow-inspect-fallback.patch index b27e3d0ce..809f29fc6 100644 --- a/build/patches/Always-allow-inspect-fallback.patch +++ b/build/patches/Always-allow-inspect-fallback.patch @@ -20,7 +20,7 @@ diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resour if (!HOST_CHROME_VERSION) { return false; } -@@ -597,7 +598,7 @@ function formatValue(data, property) { +@@ -600,7 +601,7 @@ function formatValue(data, property) { function addFavicon(row, data) { const favicon = document.createElement('img'); if (data['faviconUrl']) { 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 5469deb95..4778a0622 100644 --- a/build/patches/Always-open-browser-controls-in-new-tab.patch +++ b/build/patches/Always-open-browser-controls-in-new-tab.patch @@ -15,18 +15,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM 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; -@@ -46,6 +47,7 @@ import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.bookmarks.BookmarkModel; +@@ -43,6 +44,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; +import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper; import org.chromium.chrome.browser.tabmodel.TabModelSelector; - import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -@@ -351,6 +353,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { + import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +@@ -322,6 +324,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()); -@@ -371,6 +374,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -342,6 +345,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 89246e792..c28fd364d 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 @@ -68,7 +68,7 @@ diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/b diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java +++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java -@@ -109,6 +109,7 @@ public class TemplateUrl { +@@ -110,6 +110,7 @@ public class TemplateUrl { * prepopulated_engines.json. */ public String getNewTabURL() { @@ -79,7 +79,7 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/ diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -414,6 +414,7 @@ bool TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -426,6 +426,7 @@ bool TemplateUrlServiceAndroid::SetPlayAPISearchEngine( jimage_translate_source_language_param_key, const base::android::JavaRef& jimage_translate_target_language_param_key) { diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index c91082a4d..6905fe5dc 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -27,11 +27,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/WarmupManager.java | 2 +- .../chrome/browser/app/ChromeActivity.java | 23 ++++++++- .../compositor/CompositorViewHolder.java | 4 +- - .../bottombar/OverlayPanelContent.java | 2 +- + .../overlay_panel/OverlayPanelContent.java | 2 +- .../chromium/chrome/browser/tab/TabImpl.java | 2 +- .../tracing/settings/DeveloperSettings.java | 10 ++++ - .../bottombar/overlay_panel_content.cc | 2 +- .../android/compositor/tab_content_manager.cc | 6 ++- + .../overlay_panel/overlay_panel_content.cc | 2 +- .../browser/flags/cromite/sPixelPerfect.java | 33 +++++++++++++ .../settings/ChromeBaseSettingsFragment.java | 4 ++ .../Pixel-perfect-mode.grdp | 9 ++++ @@ -42,7 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../render_widget_host_input_event_router.cc | 5 +- .../input/render_widget_host_view_input.cc | 3 ++ components/input/render_widget_targeter.cc | 4 +- - .../thin_webview/internal/thin_webview.cc | 3 +- + .../thin_webview/internal/thin_webview.cc | 2 +- components/viz/service/input/input_manager.cc | 2 +- .../render_input_router_support_android.cc | 2 +- ...render_input_router_support_child_frame.cc | 2 +- @@ -107,7 +107,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 +- - 97 files changed, 531 insertions(+), 138 deletions(-) + 97 files changed, 530 insertions(+), 138 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 @@ -117,7 +117,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw_contents.cc --- a/android_webview/browser/aw_contents.cc +++ b/android_webview/browser/aw_contents.cc -@@ -1008,7 +1008,7 @@ void AwContents::OnSizeChanged(JNIEnv* env, int w, int h, int ow, int oh) { +@@ -1017,7 +1017,7 @@ void AwContents::OnSizeChanged(JNIEnv* env, int w, int h, int ow, int oh) { DCHECK_CURRENTLY_ON(BrowserThread::UI); gfx::Size size(w, h); web_contents_->GetNativeView()->OnPhysicalBackingSizeChanged(size); @@ -129,7 +129,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 -@@ -747,7 +747,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( +@@ -759,7 +759,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( return result; } @@ -174,8 +174,8 @@ 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 -@@ -1356,7 +1356,7 @@ void VizLayerContext::SetVisible(bool visible) { - service_->SetVisible(visible); +@@ -1372,7 +1372,7 @@ void VizLayerContext::SetTargetLocalSurfaceId( + service_->SetTargetLocalSurfaceId(target_local_surface_id); } -base::TimeTicks VizLayerContext::UpdateDisplayTreeFrom( @@ -186,8 +186,8 @@ diff --git a/cc/mojo_embedder/viz_layer_context.cc b/cc/mojo_embedder/viz_layer_ 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 -@@ -26,6 +26,7 @@ CommitState::CommitState(const CommitState& prev) - external_page_scale_factor(prev.external_page_scale_factor), +@@ -27,6 +27,7 @@ CommitState::CommitState(const CommitState& prev) + page_scale_factor_limits_set(prev.page_scale_factor_limits_set), 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), @@ -197,8 +197,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 -@@ -95,6 +95,7 @@ struct CC_EXPORT CommitState { - float external_page_scale_factor = 1.f; +@@ -96,6 +96,7 @@ struct CC_EXPORT CommitState { + bool page_scale_factor_limits_set = false; float max_page_scale_factor = 1.f; float min_page_scale_factor = 1.f; + float browser_control_scale_factor = 1.f; @@ -208,7 +208,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 -@@ -1429,7 +1429,7 @@ void LayerTreeHost::SetEventListenerProperties( +@@ -1466,7 +1466,7 @@ void LayerTreeHost::SetEventListenerProperties( SetNeedsCommit(); } @@ -217,20 +217,21 @@ 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) { -@@ -1540,9 +1540,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { +@@ -1577,10 +1577,12 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, float max_page_scale_factor) { - if (pending_commit_state()->page_scale_factor == page_scale_factor && + if (pending_commit_state()->page_scale_factor_limits_set && + pending_commit_state()->page_scale_factor == page_scale_factor && pending_commit_state()->min_page_scale_factor == min_page_scale_factor && + pending_commit_state()->browser_control_scale_factor == browser_control_scale_factor && - pending_commit_state()->max_page_scale_factor == max_page_scale_factor) + pending_commit_state()->max_page_scale_factor == max_page_scale_factor) { return; - DCHECK_GE(page_scale_factor, min_page_scale_factor); -@@ -1558,6 +1560,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, - + } +@@ -1605,6 +1607,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, + pending_commit_state()->page_scale_factor_limits_set = true; pending_commit_state()->page_scale_factor = page_scale_factor; pending_commit_state()->min_page_scale_factor = min_page_scale_factor; + pending_commit_state()->browser_control_scale_factor = browser_control_scale_factor; @@ -261,7 +262,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 -@@ -2695,7 +2695,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { +@@ -2748,7 +2748,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { return bounds; } @@ -270,7 +271,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, -@@ -2856,7 +2856,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +@@ -2911,7 +2911,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { return metadata; } @@ -282,15 +283,15 @@ 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 -@@ -163,6 +163,7 @@ LayerTreeImpl::LayerTreeImpl( +@@ -162,6 +162,7 @@ LayerTreeImpl::LayerTreeImpl( background_color_(SkColors::kTransparent), page_scale_factor_(page_scale_factor), - min_page_scale_factor_(0), + min_page_scale_factor_(1.f), + browser_control_scale_factor_(0), - max_page_scale_factor_(0), + max_page_scale_factor_(1.f), external_page_scale_factor_(1.f), device_scale_factor_(1.f), -@@ -450,7 +451,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( +@@ -452,7 +453,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( } } @@ -299,7 +300,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (!InnerViewportScrollNode()) return; -@@ -520,8 +521,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { +@@ -521,8 +522,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. @@ -315,31 +316,32 @@ 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 -@@ -843,6 +849,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { +@@ -862,6 +868,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { PushPageScaleFromMainThread(commit_state.page_scale_factor, commit_state.min_page_scale_factor, + commit_state.browser_control_scale_factor, - commit_state.max_page_scale_factor); + commit_state.max_page_scale_factor, + commit_state.page_scale_factor_limits_set); - SetBrowserControlsParams(commit_state.browser_controls_params); -@@ -966,6 +973,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { +@@ -986,6 +993,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(), + browser_control_scale_factor(), - max_page_scale_factor()); + max_page_scale_factor(), + page_scale_factor_limits_set_); target_tree->SetExternalPageScaleFactor(external_page_scale_factor_); - -@@ -1398,19 +1406,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { +@@ -1424,19 +1432,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor) { + float max_page_scale_factor, + bool limits_set) { - PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, + PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, browser_control_scale_factor, - max_page_scale_factor); + max_page_scale_factor, limits_set); } void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( @@ -349,44 +351,51 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc float max_page_scale_factor) { DCHECK(settings().trees_in_viz_in_viz_process); bool changed_page_scale = page_scale_factor_->SetCurrent(page_scale_factor); - changed_page_scale |= -- SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); -+ SetPageScaleFactorLimits(min_page_scale_factor, browser_control_scale_factor, max_page_scale_factor); +- changed_page_scale |= SetPageScaleFactorLimits(min_page_scale_factor, ++ changed_page_scale |= SetPageScaleFactorLimits(min_page_scale_factor, browser_control_scale_factor, + max_page_scale_factor, true); if (changed_page_scale) { - DidUpdatePageScale(); -@@ -1419,12 +1429,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( +@@ -1446,13 +1456,14 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor) { + float max_page_scale_factor, + bool limits_set) { DCHECK(page_scale_factor || IsActiveTree()); bool changed_page_scale = false; - changed_page_scale |= -- SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); -+ SetPageScaleFactorLimits(min_page_scale_factor, browser_control_scale_factor, max_page_scale_factor); + changed_page_scale |= SetPageScaleFactorLimits( +- min_page_scale_factor, max_page_scale_factor, limits_set); ++ min_page_scale_factor, browser_control_scale_factor, max_page_scale_factor, limits_set); if (page_scale_factor) { DCHECK(!IsActiveTree() || !host_impl_->pending_tree()); -@@ -1529,12 +1540,15 @@ void LayerTreeImpl::PushBrowserControls( +@@ -1557,6 +1568,7 @@ void LayerTreeImpl::PushBrowserControls( } bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor) { - if (min_page_scale_factor == min_page_scale_factor_ && + float max_page_scale_factor, + bool limits_set) { + DCHECK_GT(min_page_scale_factor, 0.f); +@@ -1564,12 +1576,14 @@ bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, + + if (page_scale_factor_limits_set_ == limits_set && + min_page_scale_factor == min_page_scale_factor_ && + browser_control_scale_factor == browser_control_scale_factor_ && - max_page_scale_factor == max_page_scale_factor_) + max_page_scale_factor == max_page_scale_factor_) { return false; + } + page_scale_factor_limits_set_ = limits_set; min_page_scale_factor_ = min_page_scale_factor; + browser_control_scale_factor_ = browser_control_scale_factor; max_page_scale_factor_ = max_page_scale_factor; return true; -@@ -2436,7 +2450,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { +@@ -2470,7 +2484,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { return scrollbars; } @@ -395,7 +404,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, -@@ -3047,7 +3061,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( +@@ -3107,7 +3121,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( return viewport_bound; } @@ -407,15 +416,15 @@ 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 -@@ -385,6 +385,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -387,6 +387,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleOnActiveTree(float active_page_scale); void PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor); + float max_page_scale_factor, + bool limits_set = true); const LayerSelection& selection() const { return selection_; } - float current_page_scale_factor() const { -@@ -392,7 +393,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -395,7 +396,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_; } @@ -424,7 +433,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(); -@@ -860,6 +861,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -856,6 +857,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleFactorAndLimitsForDisplayTree(float page_scale_factor, float min_page_scale_factor, @@ -432,20 +441,21 @@ 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_; } -@@ -884,8 +886,10 @@ class CC_EXPORT LayerTreeImpl { +@@ -880,9 +882,11 @@ class CC_EXPORT LayerTreeImpl { float ClampPageScaleFactorToLimits(float page_scale_factor) const; void PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor); + float max_page_scale_factor, + bool limits_set); bool SetPageScaleFactorLimits(float min_page_scale_factor, + float browser_control_scale_factor, - float max_page_scale_factor); + float max_page_scale_factor, + bool limits_set); void DidUpdatePageScale(); - void PushBrowserControls(const float* top_controls_shown_ratio, -@@ -927,6 +931,7 @@ class CC_EXPORT LayerTreeImpl { - // The minimum and maximum page scale factor. A value of 0 indicates that the - // limit is not enforced. +@@ -926,6 +930,7 @@ class CC_EXPORT LayerTreeImpl { + // set. + bool page_scale_factor_limits_set_ = false; float min_page_scale_factor_; + float browser_control_scale_factor_; float max_page_scale_factor_; @@ -454,7 +464,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 -@@ -1773,7 +1773,7 @@ void ScrollTree::clear() { +@@ -1822,7 +1822,7 @@ void ScrollTree::clear() { #endif } @@ -463,7 +473,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); -@@ -2326,7 +2326,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, +@@ -2375,7 +2375,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, return old_offset + scroll - new_offset; } @@ -509,7 +519,7 @@ 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.Callback; -@@ -556,7 +559,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -555,7 +558,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Ensure that mConfig is initialized before tablet mode changes. mConfig = getResources().getConfiguration(); @@ -539,7 +549,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 -@@ -1049,7 +1049,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -1055,7 +1055,7 @@ public class CompositorViewHolder extends FrameLayout int verticalViewportInsets = controlsInsets + keyboardInset; if (isAttachedToWindow(view)) { @@ -548,7 +558,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 -@@ -1071,7 +1071,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -1077,7 +1077,7 @@ public class CompositorViewHolder extends FrameLayout view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); webContents.setSize( view.getWidth() - horizontalViewportInsets, @@ -557,10 +567,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp requestRender(); } } -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 -@@ -619,7 +619,7 @@ public class OverlayPanelContent { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlay_panel/OverlayPanelContent.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlay_panel/OverlayPanelContent.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlay_panel/OverlayPanelContent.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlay_panel/OverlayPanelContent.java +@@ -638,7 +638,7 @@ public class OverlayPanelContent { OverlayPanelContentJni.get() .onPhysicalBackingSizeChanged( mNativeOverlayPanelContentPtr, webContents, mContentViewWidth, viewHeight); @@ -572,7 +582,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 -@@ -2429,7 +2429,7 @@ class TabImpl implements Tab { +@@ -2433,7 +2433,7 @@ class TabImpl implements Tab { View compositorView = assumeNonNull(getActivity()).getCompositorViewHolderSupplier().get(); assumeNonNull(compositorView); @@ -614,22 +624,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting } private static boolean shouldRemoveBetaStableHint() { -diff --git a/chrome/browser/android/bottombar/overlay_panel_content.cc b/chrome/browser/android/bottombar/overlay_panel_content.cc ---- a/chrome/browser/android/bottombar/overlay_panel_content.cc -+++ b/chrome/browser/android/bottombar/overlay_panel_content.cc -@@ -52,7 +52,7 @@ void OverlayPanelContent::OnPhysicalBackingSizeChanged( - int32_t height) { - gfx::Size size(width, height); - web_contents->GetNativeView()->OnPhysicalBackingSizeChanged(size); -- web_contents->GetNativeView()->OnSizeChanged(width, height); -+ web_contents->GetNativeView()->OnSizeChanged(width, height, width, height); - } - - void OverlayPanelContent::SetWebContents( diff --git a/chrome/browser/android/compositor/tab_content_manager.cc b/chrome/browser/android/compositor/tab_content_manager.cc --- a/chrome/browser/android/compositor/tab_content_manager.cc +++ b/chrome/browser/android/compositor/tab_content_manager.cc -@@ -28,6 +28,7 @@ +@@ -30,6 +30,7 @@ #include "chrome/browser/android/tab_android.h" #include "chrome/browser/thumbnail/cc/thumbnail.h" #include "components/viz/common/frame_sinks/copy_output_result.h" @@ -637,7 +635,7 @@ diff --git a/chrome/browser/android/compositor/tab_content_manager.cc b/chrome/b #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_view_host.h" -@@ -129,7 +130,10 @@ class TabContentManager::TabReadbackRequest : public RetryableTask { +@@ -131,7 +132,10 @@ class TabContentManager::TabReadbackRequest : public RetryableTask { std::move(result_callback).Run(content::CopyFromSurfaceResult()); return; } @@ -649,6 +647,18 @@ diff --git a/chrome/browser/android/compositor/tab_content_manager.cc b/chrome/b gfx::Size thumbnail_size( gfx::ScaleToCeiledSize(view_size_in_pixels, thumbnail_scale_)); rwhv->CopyFromSurface(source_rect, thumbnail_size, kTabReadbackTimeout, +diff --git a/chrome/browser/android/overlay_panel/overlay_panel_content.cc b/chrome/browser/android/overlay_panel/overlay_panel_content.cc +--- a/chrome/browser/android/overlay_panel/overlay_panel_content.cc ++++ b/chrome/browser/android/overlay_panel/overlay_panel_content.cc +@@ -52,7 +52,7 @@ void OverlayPanelContent::OnPhysicalBackingSizeChanged( + int32_t height) { + gfx::Size size(width, height); + web_contents->GetNativeView()->OnPhysicalBackingSizeChanged(size); +- web_contents->GetNativeView()->OnSizeChanged(width, height); ++ web_contents->GetNativeView()->OnSizeChanged(width, height, width, height); + } + + void OverlayPanelContent::SetWebContents( diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sPixelPerfect.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sPixelPerfect.java new file mode 100644 --- /dev/null @@ -754,7 +764,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 -@@ -619,7 +619,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { +@@ -618,7 +618,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { return client_->IsAutoscrollInProgress(); } @@ -767,8 +777,8 @@ diff --git a/components/input/render_widget_host_input_event_router.cc b/compone --- a/components/input/render_widget_host_input_event_router.cc +++ b/components/input/render_widget_host_input_event_router.cc @@ -16,6 +16,7 @@ - #include "base/metrics/histogram_macros.h" #include "base/strings/stringprintf.h" + #include "base/time/time.h" #include "base/trace_event/trace_event.h" +#include "content/public/common/content_features.h" #include "components/input/cursor_manager.h" @@ -783,7 +793,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); -@@ -1573,7 +1576,7 @@ bool IsPinchCurrentlyAllowedInTarget(RenderWidgetHostViewInput* target) { +@@ -1579,7 +1582,7 @@ bool IsPinchCurrentlyAllowedInTarget(RenderWidgetHostViewInput* target) { } // namespace @@ -815,7 +825,7 @@ diff --git a/components/input/render_widget_host_view_input.cc b/components/inpu diff --git a/components/input/render_widget_targeter.cc b/components/input/render_widget_targeter.cc --- a/components/input/render_widget_targeter.cc +++ b/components/input/render_widget_targeter.cc -@@ -68,7 +68,7 @@ RenderWidgetTargetResult::RenderWidgetTargetResult( +@@ -67,7 +67,7 @@ RenderWidgetTargetResult::RenderWidgetTargetResult( RenderWidgetTargetResult::~RenderWidgetTargetResult() = default; @@ -824,7 +834,7 @@ diff --git a/components/input/render_widget_targeter.cc b/components/input/rende base::WeakPtr root_view, const blink::WebInputEvent& event, const ui::LatencyInfo& latency) { -@@ -180,7 +180,7 @@ void RenderWidgetTargeter::FindTargetAndCallback( +@@ -179,7 +179,7 @@ void RenderWidgetTargeter::FindTargetAndCallback( ResolveTargetingRequest(std::move(request)); } @@ -836,16 +846,15 @@ diff --git a/components/input/render_widget_targeter.cc b/components/input/rende diff --git a/components/thin_webview/internal/thin_webview.cc b/components/thin_webview/internal/thin_webview.cc --- a/components/thin_webview/internal/thin_webview.cc +++ b/components/thin_webview/internal/thin_webview.cc -@@ -131,7 +131,8 @@ void ThinWebView::ResizeWebContents(const gfx::Size& size) { +@@ -119,7 +119,7 @@ void ThinWebView::ResizeWebContents(const gfx::Size& size) { + } - web_contents_->GetNativeView()->OnPhysicalBackingSizeChanged(viewport_size); - web_contents_->GetNativeView()->OnSizeChanged(viewport_size.width(), -- viewport_size.height()); -+ viewport_size.height(), -+ viewport_size.width(), viewport_size.height()); + web_contents_->GetNativeView()->OnPhysicalBackingSizeChanged(size); +- web_contents_->GetNativeView()->OnSizeChanged(size.width(), size.height()); ++ web_contents_->GetNativeView()->OnSizeChanged(size.width(), size.height(), size.height()); + } - // Position the WebContents layer to account for top/left insets. - // Content is drawn at (0,0) in its own layer space, so we move the layer. + } // namespace android diff --git a/components/viz/service/input/input_manager.cc b/components/viz/service/input/input_manager.cc --- a/components/viz/service/input/input_manager.cc +++ b/components/viz/service/input/input_manager.cc @@ -885,7 +894,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 -@@ -1957,7 +1957,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( +@@ -2009,7 +2009,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( return base::unexpected("Invalid page scale factors"); } layers.SetPageScaleFactorAndLimitsForDisplayTree( @@ -897,7 +906,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 -@@ -191,7 +191,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( +@@ -190,7 +190,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( web_contents_impl->MoveRangeSelectionExtent(gfx::ToRoundedPoint(extent)); } @@ -906,7 +915,7 @@ 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()); -@@ -327,7 +327,8 @@ bool SelectionPopupController::ShowSelectionMenu( +@@ -326,7 +326,8 @@ bool SelectionPopupController::ShowSelectionMenu( can_select_all, can_edit_richly, should_suggest, static_cast(params.source_type), render_frame_host->GetJavaRenderFrameHost(), @@ -962,7 +971,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc --- a/content/browser/renderer_host/delegated_frame_host.cc +++ b/content/browser/renderer_host/delegated_frame_host.cc -@@ -194,7 +194,7 @@ void DelegatedFrameHost::CopyFromCompositingSurfaceAsTexture( +@@ -192,7 +192,7 @@ void DelegatedFrameHost::CopyFromCompositingSurfaceAsTexture( base::TimeDelta(), std::move(callback)); } @@ -986,7 +995,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 -@@ -9559,7 +9559,7 @@ void RenderFrameHostImpl::ShowPopupMenu( +@@ -9661,7 +9661,7 @@ void RenderFrameHostImpl::ShowPopupMenu( #endif } @@ -998,7 +1007,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -1055,7 +1055,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1020,7 +1020,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { blink::VisualProperties visual_properties; visual_properties.screen_infos = GetScreenInfos(); auto& current_screen_info = visual_properties.screen_infos.mutable_current(); @@ -1020,7 +1029,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ // For testing, override the raster color profile. // Note: this needs to be done here and not earlier in the pipeline because // Mac uses the display color space to update an NSSurface and this setting -@@ -1160,6 +1173,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1125,6 +1138,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { visual_properties.compositing_scale_factor = properties_from_parent_local_root_.compositing_scale_factor; @@ -1034,7 +1043,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ #if BUILDFLAG(IS_MAC) // Only macOS cursor scaling affects CSS custom cursor images for now. visual_properties.cursor_accessibility_scale_factor = -@@ -1340,8 +1360,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( +@@ -1305,8 +1325,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( } } @@ -1047,7 +1056,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 -@@ -4031,7 +4053,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( +@@ -4026,7 +4048,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. @@ -1100,7 +1109,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()) { -@@ -1458,7 +1469,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { +@@ -1466,7 +1477,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { : viz::SurfaceId(); } @@ -1109,7 +1118,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) { -@@ -1882,7 +1893,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { +@@ -1890,7 +1901,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { return delegated_frame_host_->HasFallbackSurface(); } @@ -1121,7 +1130,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 -@@ -170,6 +170,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid +@@ -171,6 +171,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid gfx::Size GetRequestedRendererSizeDevicePx() override; gfx::Size GetVisibleViewportSize() override; gfx::Size GetVisibleViewportSizeDevicePx() override; @@ -1155,7 +1164,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/con diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h --- a/content/browser/renderer_host/render_widget_host_view_base.h +++ b/content/browser/renderer_host/render_widget_host_view_base.h -@@ -289,6 +289,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -290,6 +290,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // The size of the view's backing surface in non-DPI-adjusted pixels. virtual gfx::Size GetCompositorViewportPixelSize(); @@ -1167,7 +1176,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/cont diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc --- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc -@@ -443,6 +443,10 @@ void RenderWidgetHostViewChildFrame::RequestInputBackForDragAndDrop( +@@ -444,6 +444,10 @@ void RenderWidgetHostViewChildFrame::RequestInputBackForDragAndDrop( } #endif @@ -1181,7 +1190,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.c diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h --- a/content/browser/renderer_host/render_widget_host_view_child_frame.h +++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h -@@ -119,6 +119,7 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame +@@ -120,6 +120,7 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame RenderWidgetHostViewBase* GetRootView() override; uint32_t GetCaptureSequenceNumber() const override; gfx::Size GetCompositorViewportPixelSize() override; @@ -1221,7 +1230,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 -@@ -507,7 +507,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -510,7 +510,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise)); // CAUTION: Only add custom enabling logic here if it cannot // be covered by the other functions. @@ -1237,7 +1246,7 @@ 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 -@@ -532,7 +532,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -548,7 +548,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper boolean shouldSuggest, int sourceType, RenderFrameHost renderFrameHost, @@ -1247,7 +1256,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select mMenuModelBridge = menuModelBridge; RecordHistogram.recordEnumeratedHistogram( "Android.ShowSelectionMenuSourceType", sourceType, MenuSourceType.MAX_VALUE); -@@ -542,6 +543,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -558,6 +559,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper mXDip = xDip; mYDip = yDip; mSelectionRect.set(left, top, right, offsetBottom); @@ -1471,7 +1480,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 -@@ -1256,8 +1256,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( +@@ -1225,8 +1225,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( if (GetBrowserControls().PermittedState() == cc::BrowserControlsState::kBoth && !GetBrowserControls().ShrinkViewport()) { @@ -1493,7 +1502,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } GetPageScaleConstraintsSet().DidChangeInitialContainingBlockSize(icb_size); -@@ -1337,7 +1348,8 @@ void WebViewImpl::DidUpdateBrowserControls() { +@@ -1306,7 +1317,8 @@ void WebViewImpl::DidUpdateBrowserControls() { ResizeViewportAnchor::ResizeScope resize_scope(*resize_viewport_anchor_); visual_viewport.SetBrowserControlsAdjustment( @@ -1503,7 +1512,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -1401,7 +1413,7 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1370,7 +1382,7 @@ void WebViewImpl::ResizeWithBrowserControls( float bottom_controls_height, bool browser_controls_shrink_layout) { ResizeWithBrowserControls( @@ -1512,7 +1521,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(), -@@ -1411,6 +1423,8 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1380,6 +1392,8 @@ void WebViewImpl::ResizeWithBrowserControls( void WebViewImpl::ResizeWithBrowserControls( const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1521,7 +1530,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 -@@ -1419,6 +1433,11 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1388,6 +1402,11 @@ void WebViewImpl::ResizeWithBrowserControls( return; } @@ -1533,7 +1542,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) -@@ -2107,7 +2126,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { +@@ -2076,7 +2095,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { web_preferences_.prefers_reduced_motion); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1542,7 +1551,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_ = -@@ -2954,7 +2973,7 @@ void WebViewImpl::RefreshPageScaleFactor() { +@@ -2923,7 +2942,7 @@ void WebViewImpl::RefreshPageScaleFactor() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1551,7 +1560,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -3034,7 +3053,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( +@@ -3003,7 +3022,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( TextAutosizer::UpdatePageInfoInAllFrames(GetPage()->MainFrame()); } @@ -1560,7 +1569,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (should_auto_resize_ || !MainFrameImpl()) return; -@@ -3395,6 +3414,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { +@@ -3378,6 +3397,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().minimum_scale; } @@ -1571,7 +1580,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; } -@@ -3445,7 +3468,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { +@@ -3432,7 +3455,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1580,7 +1589,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -3996,7 +4019,7 @@ void WebViewImpl::PageScaleFactorChanged() { +@@ -3984,7 +4007,7 @@ void WebViewImpl::PageScaleFactorChanged() { DCHECK(viewport.IsActiveViewport()); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1609,7 +1618,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. -@@ -844,6 +847,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -846,6 +849,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // The upper bound on the size when auto-resizing. gfx::Size max_auto_size_; @@ -1621,7 +1630,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 -@@ -1879,8 +1879,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { +@@ -1883,8 +1883,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { } float LocalFrameView::InputEventsScaleFactor() const { @@ -1699,7 +1708,7 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_pa visible_size.Scale(1 / scale_); return gfx::RectF(ScrollPosition(), visible_size); -@@ -901,10 +933,13 @@ gfx::Point VisualViewport::ClampDocumentOffsetAtScale(const gfx::Point& offset, +@@ -902,10 +934,13 @@ gfx::Point VisualViewport::ClampDocumentOffsetAtScale(const gfx::Point& offset, return clamped; } @@ -1744,7 +1753,7 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.h b/third_par ChromeClient* GetChromeClient() const override; PhysicalRect ScrollIntoView( const PhysicalRect&, -@@ -385,12 +388,14 @@ class CORE_EXPORT VisualViewport : public GarbageCollected, +@@ -387,12 +390,14 @@ class CORE_EXPORT VisualViewport : public GarbageCollected, // the changed visible content area. The transient URL bar-caused change to // the visible content area is tracked in browser_controls_adjustment. gfx::Size size_; @@ -1762,7 +1771,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 -@@ -1885,6 +1885,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1877,6 +1877,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. @@ -1772,7 +1781,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 -@@ -1892,7 +1895,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1884,7 +1887,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 * @@ -1781,7 +1790,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); -@@ -1905,7 +1908,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1897,7 +1900,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( @@ -1790,7 +1799,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th /*is_pinch_gesture_active=*/false); } -@@ -1949,6 +1952,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1941,6 +1944,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( new_compositor_viewport_pixel_rect, device_scale_factor_for_testing_ / non_testing_device_scale_factor_); } @@ -1809,7 +1818,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ForMainFrame()) { if (size_ != new_size) { -@@ -1966,6 +1981,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1958,6 +1973,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( size_.value(), widget_base_->DIPsToCeiledBlinkSpace( widget_base_->VisibleViewportSize()), @@ -1818,7 +1827,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); return; } -@@ -1999,6 +2016,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1991,6 +2008,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( View()->ResizeWithBrowserControls( size_.value(), widget_base_->VisibleViewportSize(), @@ -1827,7 +1836,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); } -@@ -2383,6 +2402,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, +@@ -2375,6 +2394,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, View()->ZoomFactorForViewportLayout() * static_cast(View()->ZoomLevelToZoomFactor(zoom_level)) * static_cast(css_zoom_factor); @@ -1836,7 +1845,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()) { -@@ -3438,6 +3459,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { +@@ -3436,6 +3457,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { // be needed in setting the raster scale. SetPageScaleStateAndLimits(1.f, false /* is_pinch_gesture_active */, View()->MinimumPageScaleFactor(), @@ -1844,7 +1853,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th View()->MaximumPageScaleFactor()); } -@@ -4870,9 +4892,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( +@@ -4883,9 +4905,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1856,7 +1865,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()) { -@@ -4996,7 +5019,10 @@ void WebFrameWidgetImpl::OrientationChanged() { +@@ -5009,7 +5032,10 @@ void WebFrameWidgetImpl::OrientationChanged() { void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen( const display::ScreenInfos& previous_original_screen_infos) { display::ScreenInfo screen_info = widget_base_->GetScreenInfo(); @@ -1868,7 +1877,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 -@@ -5206,7 +5232,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { +@@ -5219,7 +5245,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { if (!device_scale_factor_for_testing_) { non_testing_device_scale_factor_ = @@ -1880,7 +1889,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 -@@ -662,6 +662,7 @@ class CORE_EXPORT WebFrameWidgetImpl +@@ -661,6 +661,7 @@ class CORE_EXPORT WebFrameWidgetImpl void SetPageScaleStateAndLimits(float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1891,7 +1900,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 -@@ -2577,7 +2577,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { +@@ -2578,7 +2578,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { dev_tools_agent_->PaintOverlays(context); } @@ -1900,7 +1909,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 -@@ -3068,7 +3068,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( +@@ -3070,7 +3070,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( std::move(context_menu_client), params); } @@ -1912,7 +1921,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 -@@ -1517,6 +1517,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, +@@ -1510,6 +1510,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image) { } bool HTMLCanvasElement::ShouldAccelerate() const { @@ -1923,7 +1932,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 -@@ -2149,7 +2149,7 @@ GestureEventWithHitTestResults EventHandler::HitTestResultForGestureEvent( +@@ -2115,7 +2115,7 @@ GestureEventWithHitTestResults EventHandler::HitTestResultForGestureEvent( hit_test_result); } @@ -1974,7 +1983,7 @@ diff --git a/third_party/blink/renderer/core/page/viewport_description.cc b/thir diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -@@ -462,16 +462,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -471,16 +471,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( } } @@ -1997,7 +2006,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 -@@ -6680,5 +6680,9 @@ +@@ -6813,5 +6813,9 @@ // crbug.com/435623334. name: "XSLTSpecialTrial", }, @@ -2145,7 +2154,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox gesture_event.SourceDevice()); if (elastic_overscroll_controller_) { -@@ -1412,8 +1430,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( +@@ -1420,8 +1438,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( } cc::TouchAction touch_action = cc::TouchAction::kAuto; @@ -2156,7 +2165,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox // TODO(crbug.com/355578906): This is just some rough math for now. The main // thread counterpart is AdjustPointerEvent. The buffer math on the main and // cc thread(s) need to match. -@@ -1528,7 +1546,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( +@@ -1536,7 +1554,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( touch_event.touches_length == 1) { DCHECK(touch_event.touches[0].state == WebTouchPoint::State::kStatePressed); cc::InputHandlerPointerResult pointer_result = HandlePointerDown( @@ -2165,7 +2174,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; -@@ -1591,7 +1609,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( +@@ -1599,7 +1617,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( touch_event.touch_start_or_first_touch_move); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerMove( @@ -2174,7 +2183,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; -@@ -1634,7 +1652,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( +@@ -1642,7 +1660,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( touch_event.touches_length); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerUp( @@ -2186,7 +2195,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_party/blink/renderer/platform/widget/widget_base.cc --- a/third_party/blink/renderer/platform/widget/widget_base.cc +++ b/third_party/blink/renderer/platform/widget/widget_base.cc -@@ -1687,7 +1687,9 @@ void WidgetBase::RequestAnimationAfterDelayTimerFired(TimerBase*) { +@@ -1667,7 +1667,9 @@ void WidgetBase::RequestAnimationAfterDelayTimerFired(TimerBase*) { client_->ScheduleAnimation(/*urgent=*/urgent_for_input); } @@ -2197,7 +2206,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p return client_->GetOriginalScreenInfos().current().device_scale_factor; } -@@ -1721,7 +1723,7 @@ void WidgetBase::UpdateSurfaceAndScreenInfo( +@@ -1701,7 +1703,7 @@ void WidgetBase::UpdateSurfaceAndScreenInfo( // Note carefully that the DSF specified in |new_screen_info| is not the // DSF used by the compositor during device emulation! LayerTreeHost()->SetViewportRectAndScale(compositor_viewport_pixel_rect, @@ -2206,7 +2215,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p local_surface_id_from_parent_); // The VisualDeviceViewportIntersectionRect derives from the LayerTreeView's // viewport size, which is set above. -@@ -1851,56 +1853,56 @@ void WidgetBase::CountDroppedPointerDownForEventTiming(unsigned count) { +@@ -1831,56 +1833,56 @@ void WidgetBase::CountDroppedPointerDownForEventTiming(unsigned count) { gfx::PointF WidgetBase::DIPsToBlinkSpace(const gfx::PointF& point) { // TODO(danakj): Should this use non-original scale factor so it changes under // emulation? @@ -2276,7 +2285,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p diff --git a/third_party/blink/renderer/platform/widget/widget_base.h b/third_party/blink/renderer/platform/widget/widget_base.h --- a/third_party/blink/renderer/platform/widget/widget_base.h +++ b/third_party/blink/renderer/platform/widget/widget_base.h -@@ -407,7 +407,7 @@ class PLATFORM_EXPORT WidgetBase : public mojom::blink::Widget, +@@ -405,7 +405,7 @@ class PLATFORM_EXPORT WidgetBase : public mojom::blink::Widget, void OnDevToolsSessionConnectionChanged(bool attached); // Helper to get the non-emulated device scale factor. @@ -2288,7 +2297,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 -@@ -189,7 +189,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { +@@ -161,7 +161,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { return frame_sink_id_; } @@ -2366,9 +2375,9 @@ diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc diff --git a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java b/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java --- a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java +++ b/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java -@@ -60,6 +60,12 @@ public class UiAndroidFeatureList { - UiAndroidFeatures.ANDROID_TOUCHPAD_OVERSCROLL_HISTORY_NAVIGATION, - /* defaultValue= */ true); +@@ -70,6 +70,12 @@ public class UiAndroidFeatureList { + newMutableFlagWithSafeDefault( + UiAndroidFeatures.SUPPORT_KEYBOARD, /* defaultValue= */ true); + public static final CachedFlag sPixelPerfect = + newCachedFlag( @@ -2409,7 +2418,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() { +@@ -144,6 +144,10 @@ float ViewAndroid::GetDipScale() { return ui::GetScaleFactorForNativeView(this); } @@ -2420,7 +2429,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc ScopedJavaLocalRef ViewAndroid::GetEventForwarder() { if (!event_forwarder_) { DCHECK(!RootPathHasEventForwarder(parent_)) -@@ -153,7 +157,7 @@ void ViewAndroid::AddChild(ViewAndroid* child) { +@@ -179,7 +183,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()) { @@ -2429,7 +2438,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc child->DispatchOnSizeChanged(); } -@@ -502,7 +506,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, +@@ -529,7 +533,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, env, delegate, direction_up, current_scroll_ratio); } @@ -2438,7 +2447,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()); -@@ -512,13 +516,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { +@@ -539,13 +543,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { return; } @@ -2456,7 +2465,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc if (bounds_device_px_.size() == size_device_px) { return; } -@@ -526,12 +532,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { +@@ -553,12 +559,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { bounds_device_px_.set_size(size_device_px); float scale = GetDipScale(); @@ -2475,7 +2484,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc } } -@@ -592,6 +601,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { +@@ -619,6 +628,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { return bounds_device_px_.size(); } @@ -2489,7 +2498,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc diff --git a/ui/android/view_android.h b/ui/android/view_android.h --- a/ui/android/view_android.h +++ b/ui/android/view_android.h -@@ -127,6 +127,8 @@ class UI_ANDROID_EXPORT ViewAndroid { +@@ -123,6 +123,8 @@ class UI_ANDROID_EXPORT ViewAndroid { // Virtual for testing. virtual float GetDipScale(); @@ -2498,7 +2507,7 @@ diff --git a/ui/android/view_android.h b/ui/android/view_android.h cc::slim::Layer* GetLayer() const; void SetLayer(scoped_refptr layer); -@@ -171,10 +173,11 @@ class UI_ANDROID_EXPORT ViewAndroid { +@@ -167,10 +169,11 @@ class UI_ANDROID_EXPORT ViewAndroid { gfx::Size GetPhysicalBackingSize() const; gfx::Size GetSizeDIPs() const; @@ -2511,7 +2520,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( -@@ -325,7 +328,7 @@ class UI_ANDROID_EXPORT ViewAndroid { +@@ -321,7 +324,7 @@ class UI_ANDROID_EXPORT ViewAndroid { // each leaf of subtree. static bool SubtreeHasEventForwarder(ViewAndroid* view); @@ -2520,7 +2529,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 -@@ -348,6 +351,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_; @@ -2579,7 +2588,7 @@ diff --git a/ui/display/screen_info.h b/ui/display/screen_info.h diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc --- a/ui/events/blink/blink_event_util.cc +++ b/ui/events/blink/blink_event_util.cc -@@ -161,7 +161,7 @@ WebPointerProperties::Button ToWebPointerButton(int android_button_state) { +@@ -165,7 +165,7 @@ WebPointerProperties::Button ToWebPointerButton(int android_button_state) { return WebPointerProperties::Button::kNoButton; } diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index fc7104815..dc8b42710 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -60,7 +60,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 -@@ -996,6 +996,9 @@ public final class ProductionSupportedFlagList { +@@ -998,6 +998,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."), @@ -122,7 +122,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 -@@ -7866,6 +7866,13 @@ static_library("browser") { +@@ -7326,6 +7326,13 @@ static_library("browser") { ] } @@ -139,7 +139,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/component_updater/registration.cc --- a/chrome/browser/component_updater/registration.cc +++ b/chrome/browser/component_updater/registration.cc -@@ -100,6 +100,11 @@ +@@ -103,6 +103,11 @@ #include "chrome/browser/component_updater/file_type_policies_component_installer.h" #endif @@ -151,7 +151,7 @@ diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/c namespace component_updater { namespace { -@@ -133,6 +138,11 @@ void DeleteOldComponents(const base::FilePath& user_data_dir) { +@@ -135,6 +140,11 @@ void DeleteOldComponents(const base::FilePath& user_data_dir) { void RegisterComponentsForUpdate() { auto* const cus = g_browser_process->component_updater(); @@ -220,7 +220,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn diff --git a/components/component_updater/installer_policies/BUILD.gn b/components/component_updater/installer_policies/BUILD.gn --- a/components/component_updater/installer_policies/BUILD.gn +++ b/components/component_updater/installer_policies/BUILD.gn -@@ -28,6 +28,13 @@ static_library("installer_policies_no_content_deps") { +@@ -30,6 +30,13 @@ static_library("installer_policies_no_content_deps") { "trust_token_key_commitments_component_installer_policy.h", ] @@ -433,7 +433,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ #include #include -@@ -25,6 +27,12 @@ +@@ -26,6 +28,12 @@ #include "ui/gfx/font_fallback_linux.h" #include "ui/gfx/font_render_params.h" @@ -446,7 +446,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ #if BUILDFLAG(ENABLE_PDF) #include "components/services/font/pdf_fontconfig_matching.h" // nogncheck #endif -@@ -100,6 +108,7 @@ void FontServiceApp::BindReceiver( +@@ -101,6 +109,7 @@ void FontServiceApp::BindReceiver( void FontServiceApp::MatchFamilyName(const std::string& family_name, mojom::TypefaceStylePtr requested_style, MatchFamilyNameCallback callback) { @@ -454,7 +454,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ TRACE_EVENT0("fonts", "FontServiceApp::MatchFamilyName"); SkFontConfigInterface::FontIdentity result_identity; -@@ -160,6 +169,7 @@ void FontServiceApp::MatchFamilyName(const std::string& family_name, +@@ -161,6 +170,7 @@ void FontServiceApp::MatchFamilyName(const std::string& family_name, std::move(callback).Run(std::move(identity), result_family_cppstring, std::move(style)); @@ -462,7 +462,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ } void FontServiceApp::OpenStream(uint32_t id_number, -@@ -174,12 +184,43 @@ void FontServiceApp::OpenStream(uint32_t id_number, +@@ -175,12 +185,43 @@ void FontServiceApp::OpenStream(uint32_t id_number, std::move(callback).Run(std::move(file)); } @@ -506,7 +506,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ gfx::FallbackFontData fallback_font; if (gfx::GetFallbackFontForChar(character, locale, &fallback_font)) { size_t index = FindOrAddPath(fallback_font.filepath); -@@ -194,6 +235,7 @@ void FontServiceApp::FallbackFontForCharacter( +@@ -195,6 +236,7 @@ void FontServiceApp::FallbackFontForCharacter( } else { std::move(callback).Run(nullptr, "", false, false); } @@ -514,7 +514,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ } void FontServiceApp::FontRenderStyleForStrike( -@@ -237,6 +279,9 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( +@@ -238,6 +280,9 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( TRACE_EVENT0("fonts", "FontServiceApp::MatchFontByPostscriptNameOrFullFontName"); @@ -524,7 +524,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ std::optional match_result = FontConfigLocalMatching::FindFontByPostscriptNameOrFullFontName(family); if (match_result) { -@@ -248,6 +293,7 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( +@@ -249,6 +294,7 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( return; } std::move(callback).Run(nullptr); @@ -670,7 +670,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 -@@ -2637,6 +2637,17 @@ source_set("browser") { +@@ -2648,6 +2648,17 @@ source_set("browser") { ] } @@ -688,7 +688,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" ] -@@ -2683,6 +2694,13 @@ source_set("browser") { +@@ -2694,6 +2705,13 @@ source_set("browser") { deps += [ "//components/services/font_data:lib" ] } @@ -765,7 +765,7 @@ diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc -@@ -142,6 +142,23 @@ +@@ -141,6 +141,23 @@ #include "content/common/android/sync_compositor_statics.h" #endif @@ -789,7 +789,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer using blink::Platform; using blink::WebAudioDevice; using blink::WebAudioLatencyHint; -@@ -192,6 +209,37 @@ viz::command_buffer_metrics::ContextType ToVizContextType( +@@ -191,6 +208,37 @@ viz::command_buffer_metrics::ContextType ToVizContextType( NOTREACHED(); } @@ -827,7 +827,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer } // namespace //------------------------------------------------------------------------------ -@@ -205,18 +253,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +@@ -204,18 +252,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) { @@ -854,7 +854,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer diff --git a/content/renderer/renderer_main.cc b/content/renderer/renderer_main.cc --- a/content/renderer/renderer_main.cc +++ b/content/renderer/renderer_main.cc -@@ -184,8 +184,6 @@ int RendererMain(MainFunctionParams parameters) { +@@ -183,8 +183,6 @@ int RendererMain(MainFunctionParams parameters) { // On Linux, Windows, and ChromeOS, the font manager is overridden or // specially handled in RendererBlinkPlatformImpl(). On other platforms, // initialise the default one on a thread pool, to avoid blocking on it later. @@ -905,7 +905,7 @@ new file mode 100644 diff --git a/skia/BUILD.gn b/skia/BUILD.gn --- a/skia/BUILD.gn +++ b/skia/BUILD.gn -@@ -444,6 +444,18 @@ component("skia") { +@@ -446,6 +446,18 @@ component("skia") { sources += skia_ports_fci_sources } @@ -3162,7 +3162,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_ndk.cpp b/third_party/ 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 -@@ -650,14 +650,27 @@ static const XML_Memory_Handling_Suite sk_XML_alloc = { +@@ -713,14 +713,27 @@ static const XML_Memory_Handling_Suite sk_XML_alloc = { */ static int parse_config_file(const char* filename, std::vector>& families, @@ -3196,7 +3196,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par return -1; } -@@ -689,8 +702,8 @@ static int parse_config_file(const char* filename, +@@ -752,8 +765,8 @@ static int parse_config_file(const char* filename, SkDebugf(SK_FONTMGR_ANDROID_PARSER_PREFIX "could not buffer enough to continue\n"); return -1; } @@ -3207,7 +3207,7 @@ 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); -@@ -702,6 +715,23 @@ static int parse_config_file(const char* filename, +@@ -765,6 +778,23 @@ static int parse_config_file(const char* filename, return -1; } } @@ -3231,7 +3231,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par return self.fVersion; } -@@ -764,8 +794,10 @@ static void append_fallback_font_families_for_locale( +@@ -827,8 +857,10 @@ static void append_fallback_font_families_for_locale( static void append_system_fallback_font_families( std::vector>& fallbackFonts, @@ -3243,7 +3243,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par parse_config_file(FALLBACK_FONTS_FILE, fallbackFonts, basePath, true); append_fallback_font_families_for_locale(fallbackFonts, LOCALE_FALLBACK_FONTS_SYSTEM_DIR, -@@ -774,8 +806,10 @@ static void append_system_fallback_font_families( +@@ -837,8 +869,10 @@ static void append_system_fallback_font_families( static void mixin_vendor_fallback_font_families( std::vector>& fallbackFonts, @@ -3255,7 +3255,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par std::vector> vendorFonts; parse_config_file(VENDOR_FONTS_FILE, vendorFonts, basePath, true); append_fallback_font_families_for_locale(vendorFonts, -@@ -807,7 +841,8 @@ static void mixin_vendor_fallback_font_families( +@@ -870,7 +904,8 @@ static void mixin_vendor_fallback_font_families( } void SkFontMgr_Android_Parser::GetSystemFontFamilies( @@ -3265,7 +3265,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par static constexpr char kFontFilePrefix[] = "/fonts/"; // Version 21 of the system font configuration does not need any fallback configuration files. -@@ -820,8 +855,8 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( +@@ -888,8 +923,8 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( // Append all the fallback fonts to system fonts std::vector> fallbackFonts; @@ -3276,7 +3276,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par fontFamilies.insert(fontFamilies.end(), std::make_move_iterator(fallbackFonts.begin()), std::make_move_iterator(fallbackFonts.end())); -@@ -830,15 +865,16 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( +@@ -898,15 +933,16 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( void SkFontMgr_Android_Parser::GetCustomFontFamilies( std::vector>& fontFamilies, const SkString& basePath, diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index 5379615f4..145058a05 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -282,7 +282,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 -@@ -1628,7 +1628,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1693,7 +1693,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mActivity, mStatusIndicatorCoordinator, isUrlBarFocusedSupplier, @@ -405,7 +405,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 -@@ -148,6 +148,8 @@ public interface TabWindowManager { +@@ -154,6 +154,8 @@ public interface TabWindowManager { /** Returns the total number of incognito tabs across all tab model selectors. */ int getIncognitoTabCount(); @@ -417,8 +417,8 @@ 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 -@@ -534,6 +534,16 @@ public class TabWindowManagerImpl implements TabWindowManager { - return tabGroupModelFilter.getTabsInGroup(tabGroupId); +@@ -551,6 +551,16 @@ public class TabWindowManagerImpl implements TabWindowManager { + return tabModelSelector.getModel(isIncognito).getTabsInGroup(tabGroupId); } + @Override @@ -476,7 +476,7 @@ diff --git a/chrome/browser/ui/messages/android/java/res/layout/floating_snackba diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java --- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java +++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java -@@ -145,6 +145,8 @@ public class Snackbar { +@@ -149,6 +149,8 @@ public class Snackbar { private @Nullable String mTemplateText; private @Nullable String mActionText; private @Nullable Object mActionData; @@ -485,7 +485,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro private int mBackgroundColor; private int mTextAppearanceResId; private boolean mDefaultLines = true; -@@ -251,6 +253,20 @@ public class Snackbar { +@@ -255,6 +257,20 @@ public class Snackbar { return this; } @@ -509,7 +509,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/SnackbarManager.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java --- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java +++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java -@@ -434,6 +434,12 @@ public class SnackbarManager +@@ -464,6 +464,12 @@ public class SnackbarManager new SnackbarView( mActivity, this, @@ -525,7 +525,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 -@@ -56,6 +56,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -57,6 +57,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { protected final ViewGroup mSnackbarView; protected final TemplatePreservingTextView mMessageView; private final TextView mActionButtonView; @@ -533,7 +533,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 ViewGroup mOriginalParent; -@@ -106,6 +107,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -110,6 +111,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { public SnackbarView( Activity activity, SnackbarManager manager, @@ -541,7 +541,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro Snackbar snackbar, ViewGroup parentView, @Nullable WindowAndroid windowAndroid, -@@ -165,6 +167,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -171,6 +173,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { (TemplatePreservingTextView) mContainerView.findViewById(R.id.snackbar_message); mActionButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_button); mActionButtonView.setOnClickListener(manager); @@ -550,7 +550,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro mProfileImageView = (ImageView) mContainerView.findViewById(R.id.snackbar_profile_image); // Add bottom margin to extend the snackbar view into the bottom window inset. This // margin has to be applied to the snackbar view itself to avoid weird visual clipping -@@ -415,6 +419,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -434,6 +438,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { mActionButtonView.setVisibility(View.VISIBLE); mActionButtonView.setContentDescription(snackbar.getActionText()); setViewText(mActionButtonView, snackbar.getActionText(), animate); @@ -603,7 +603,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 -@@ -4106,8 +4106,10 @@ void WebContentsImpl::Stop() { +@@ -4217,8 +4217,10 @@ void WebContentsImpl::Stop() { void WebContentsImpl::SetPageFrozen(bool frozen) { TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen); @@ -699,7 +699,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 -@@ -4620,6 +4620,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { +@@ -4626,6 +4626,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { } void Document::DispatchFreezeEvent() { @@ -710,7 +710,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 -@@ -3339,6 +3339,7 @@ void LocalFrame::DidFreeze() { +@@ -3325,6 +3325,7 @@ void LocalFrame::DidFreeze() { LoaderFreezeMode freeze_mode = GetLoaderFreezeMode(); GetDocument()->Fetcher()->SetDefersLoading(freeze_mode); Loader().SetDefersLoading(freeze_mode); @@ -718,7 +718,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } void LocalFrame::DidResume() { -@@ -3353,6 +3354,7 @@ void LocalFrame::DidResume() { +@@ -3339,6 +3340,7 @@ void LocalFrame::DidResume() { GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone); Loader().SetDefersLoading(LoaderFreezeMode::kNone); diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 4f161c570..7d05fa4fb 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -88,15 +88,15 @@ 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 -@@ -21,6 +21,7 @@ - #include "third_party/blink/public/common/features.h" +@@ -22,6 +22,7 @@ #include "third_party/blink/public/common/mediastream/media_devices.h" + #include "third_party/blink/public/mojom/permissions/permission_status.mojom-blink.h" #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" +#include "third_party/blink/public/common/features.h" #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" -@@ -1133,7 +1134,9 @@ double AudioContext::baseLatency() const { +@@ -1138,7 +1139,9 @@ double AudioContext::baseLatency() const { DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_); DCHECK(destination()); @@ -110,7 +110,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc -@@ -30,6 +30,7 @@ +@@ -28,6 +28,7 @@ #include "base/metrics/histogram_functions.h" #include "build/build_config.h" #include "media/base/audio_bus.h" @@ -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" -@@ -777,6 +778,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -775,6 +776,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ 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 -@@ -688,9 +688,8 @@ +@@ -719,9 +719,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index c57ff109f..71e9c8594 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -45,7 +45,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -1138,6 +1138,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { +@@ -1134,6 +1134,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { return should_block_request; } @@ -205,8 +205,8 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_imp + } + if (auto* scheduler = execution_context_->GetScheduler()) { - // Two features are registered here: - // - `kWebSocket`: a non-sticky feature that will disable BFCache for any + if (!RuntimeEnabledFeatures::DisconnectWebSocketOnBFCacheEnabled()) { + // Two features are registered here: diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b/third_party/blink/renderer/modules/websockets/websocket_common.cc --- a/third_party/blink/renderer/modules/websockets/websocket_common.cc +++ b/third_party/blink/renderer/modules/websockets/websocket_common.cc 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 c501400c9..3c68364cf 100644 --- a/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch +++ b/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch @@ -10,14 +10,14 @@ leakage of certain information in sandbox iframes License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../browser/renderer_host/render_frame_host_impl.cc | 12 +++++++++++- - .../Block-url-leakage-sandbox-iframe.inc | 8 ++++++++ - .../Block-url-leakage-sandbox-iframe.inc | 3 +++ - .../features_h/Block-url-leakage-sandbox-iframe.inc | 1 + - third_party/blink/renderer/core/frame/location.cc | 13 +++++++++++++ - .../blink/renderer/core/loader/document_loader.cc | 12 ++++++++++++ - .../blink/renderer/core/loader/document_loader.h | 2 +- - 7 files changed, 49 insertions(+), 2 deletions(-) + .../renderer_host/render_frame_host_impl.cc | 12 +++++++++++- + .../Block-url-leakage-sandbox-iframe.inc | 8 ++++++++ + .../Block-url-leakage-sandbox-iframe.inc | 3 +++ + .../Block-url-leakage-sandbox-iframe.inc | 1 + + third_party/blink/renderer/core/frame/location.cc | 15 ++++++++++++++- + .../blink/renderer/core/loader/document_loader.cc | 12 ++++++++++++ + .../blink/renderer/core/loader/document_loader.h | 2 +- + 7 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Block-url-leakage-sandbox-iframe.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Block-url-leakage-sandbox-iframe.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/Block-url-leakage-sandbox-iframe.inc @@ -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 -@@ -5374,7 +5374,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( +@@ -5422,7 +5422,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( } void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) { @@ -82,31 +82,36 @@ diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/bli #include "third_party/blink/renderer/bindings/core/v8/binding_security.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/core/dom/document.h" -@@ -127,8 +128,20 @@ DOMStringList* Location::ancestorOrigins() const { - auto* origins = MakeGarbageCollected(); - if (!IsAttached()) - return origins; +@@ -133,12 +134,24 @@ DOMStringList* Location::ancestorOrigins() { + } + return ancestor_origins_list_.Get(); + } +- + if (base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe) + && dom_window_->GetFrame()->GetSecurityContext()->IsSandboxed( + network::mojom::WebSandboxFlags::kOrigin)) { + // not allow any value for sandboxed frames ++ auto* origins = MakeGarbageCollected(); + return origins; + } - for (Frame* frame = dom_window_->GetFrame()->Tree().Parent(); frame; - frame = frame->Tree().Parent()) { -+ if (base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe) -+ && frame->GetSecurityContext()->IsSandboxed( -+ network::mojom::WebSandboxFlags::kOrigin)) { -+ // blocks at first sandbox frame -+ break; -+ } - origins->Append( - frame->GetSecurityContext()->GetSecurityOrigin()->ToString()); - } + if (!ancestor_origins_list_ || + !RuntimeEnabledFeatures::AncestorOriginsStoredOnDocumentEnabled()) { + ancestor_origins_list_ = MakeGarbageCollected(); + for (Frame* frame = dom_window_->GetFrame()->Tree().Parent(); frame; + frame = frame->Tree().Parent()) { ++ if (base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe) ++ && frame->GetSecurityContext()->IsSandboxed( ++ network::mojom::WebSandboxFlags::kOrigin)) { ++ // blocks at first sandbox frame ++ break; ++ } + ancestor_origins_list_->Append( + frame->GetSecurityContext()->GetSecurityOrigin()->ToString()); + } diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc -@@ -850,6 +850,11 @@ WebString DocumentLoader::HttpMethod() const { +@@ -851,6 +851,11 @@ WebString DocumentLoader::HttpMethod() const { } const AtomicString& DocumentLoader::GetReferrer() const { @@ -118,7 +123,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p return referrer_; } -@@ -2965,6 +2970,13 @@ void DocumentLoader::CommitNavigation() { +@@ -2984,6 +2989,13 @@ void DocumentLoader::CommitNavigation() { response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly)); } diff --git a/build/patches/Bookmarks-select-all-menu-entry.patch b/build/patches/Bookmarks-select-all-menu-entry.patch index 01cff0bf7..faf6d2998 100644 --- a/build/patches/Bookmarks-select-all-menu-entry.patch +++ b/build/patches/Bookmarks-select-all-menu-entry.patch @@ -80,7 +80,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows 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 -@@ -271,6 +271,9 @@ CHAR_LIMIT guidelines: +@@ -277,6 +277,9 @@ CHAR_LIMIT guidelines: Sites diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 91fb5a34e..6dd35ce99 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/omaha/OmahaBase.java | 7 +- .../browser/omaha/UpdateMenuItemHelper.java | 89 +++++- .../inline/BromiteInlineUpdateController.java | 285 ++++++++++++++++++ - chrome/browser/BUILD.gn | 6 + + chrome/browser/BUILD.gn | 10 + chrome/browser/endpoint_fetcher/BUILD.gn | 32 ++ chrome/browser/endpoint_fetcher/DEPS | 3 + chrome/browser/endpoint_fetcher/OWNERS | 1 + @@ -48,7 +48,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/manta/base_provider.cc | 4 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 40 files changed, 1154 insertions(+), 104 deletions(-) + 40 files changed, 1158 insertions(+), 104 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/CromiteUpdateStatusProvider.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/browser/endpoint_fetcher/BUILD.gn @@ -77,7 +77,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 -@@ -1979,6 +1979,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1980,6 +1980,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -90,7 +90,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 -@@ -906,6 +906,8 @@ chrome_java_sources = [ +@@ -921,6 +921,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", @@ -688,19 +688,23 @@ 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 -@@ -2504,6 +2504,12 @@ static_library("browser") { +@@ -4383,6 +4383,16 @@ static_library("browser") { + } } - if (is_android) { ++ # static_library("browser") ++ if (is_android) { + sources += [ + "endpoint_fetcher/endpoint_fetcher_android.cc", + ] + deps += [ + "//chrome/browser/endpoint_fetcher:jni_headers", + ] ++ } ++ + if (enable_screen_capture) { sources += [ - "accessibility/accessibility_prefs/android/accessibility_prefs_controller.cc", - "accessibility/accessibility_prefs/android/accessibility_prefs_controller.h", + "media/capture_access_handler_base.cc", diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn new file mode 100644 --- /dev/null @@ -1008,7 +1012,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 -@@ -402,6 +402,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -420,6 +420,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, @@ -1019,7 +1023,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 -@@ -486,6 +486,7 @@ public abstract class ChromeFeatureList { +@@ -504,6 +504,7 @@ public abstract class ChromeFeatureList { public static final String INCOGNITO_NTP_SMALL_ICON = "IncognitoNtpSmallIcon"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; public static final String INCOGNITO_THEME_OVERLAY_TESTING = "IncognitoThemeOverlayTesting"; @@ -1621,7 +1625,7 @@ diff --git a/chrome/browser/save_to_drive/drive_uploader.cc b/chrome/browser/sav 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 -@@ -2401,6 +2401,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2444,6 +2444,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 @@ -1634,7 +1638,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4486,7 +4492,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4489,7 +4495,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1646,7 +1650,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4497,6 +4506,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4500,6 +4509,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1680,7 +1684,7 @@ diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/br diff --git a/components/commerce/core/account_checker.cc b/components/commerce/core/account_checker.cc --- a/components/commerce/core/account_checker.cc +++ b/components/commerce/core/account_checker.cc -@@ -327,7 +327,7 @@ std::unique_ptr AccountChecker::CreateEndpointFetcher( +@@ -326,7 +326,7 @@ std::unique_ptr AccountChecker::CreateEndpointFetcher( .SetPostData(post_data); MaybeUseAlternateShoppingServer(request_params); return std::make_unique( @@ -1704,7 +1708,7 @@ diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy.c diff --git a/components/contextual_search/internal/composebox_query_controller.cc b/components/contextual_search/internal/composebox_query_controller.cc --- a/components/contextual_search/internal/composebox_query_controller.cc +++ b/components/contextual_search/internal/composebox_query_controller.cc -@@ -1148,7 +1148,7 @@ ComposeboxQueryController::CreateEndpointFetcher( +@@ -1209,7 +1209,7 @@ ComposeboxQueryController::CreateEndpointFetcher( .SetTimeout(timeout) .SetUploadProgressCallback(std::move(upload_progress_callback)) .SetUrl(fetch_url) diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index aba89027c..0cad9f7fb 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -65,7 +65,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 -@@ -318,6 +318,7 @@ if (_is_default_toolchain) { +@@ -317,6 +317,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", @@ -76,7 +76,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 -@@ -432,6 +432,7 @@ chrome_java_resources = [ +@@ -438,6 +438,7 @@ chrome_java_resources = [ "java/res/layout/account_management_account_row.xml", "java/res/layout/app_history_filter.xml", "java/res/layout/auto_pip_permission_dialog.xml", @@ -84,7 +84,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", -@@ -638,6 +639,7 @@ chrome_java_resources = [ +@@ -650,6 +651,7 @@ chrome_java_resources = [ "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", "java/res/xml/appearance_preferences.xml", @@ -95,7 +95,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 -@@ -977,6 +977,8 @@ chrome_java_sources = [ +@@ -992,6 +992,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", @@ -251,9 +251,9 @@ new file mode 100644 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 -@@ -113,6 +113,11 @@ found in the LICENSE file. +@@ -119,6 +119,11 @@ found in the LICENSE file. android:key="toolbar_shortcut" - android:order="21" + android:order="22" android:title="@string/toolbar_shortcut"/> + @@ -527,7 +527,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -184,6 +184,8 @@ +@@ -187,6 +187,8 @@ #include "ui/message_center/message_center.h" #endif @@ -536,7 +536,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" #include "chrome/browser/flags/android/chrome_feature_list.h" -@@ -1375,6 +1377,34 @@ BrowserProcessImpl::component_updater() { +@@ -1414,6 +1416,34 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -574,7 +574,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -220,6 +220,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -224,6 +224,7 @@ class BrowserProcessImpl : public BrowserProcess, activity_reporter::ActivityReporter* activity_reporter() override; component_updater::ComponentUpdateService* component_updater() override; @@ -582,7 +582,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc #if BUILDFLAG(IS_CHROMEOS) MediaFileSystemRegistry* media_file_system_registry() override; #endif -@@ -439,6 +440,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -449,6 +450,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -593,7 +593,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -439,6 +439,9 @@ StartupProfileInfo CreateInitialProfile( +@@ -449,6 +449,9 @@ StartupProfileInfo CreateInitialProfile( // missing code in the above test. CHECK(profile_info.profile) << "Cannot get default profile."; @@ -720,8 +720,8 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -239,6 +239,20 @@ CHAR_LIMIT guidelines: - Try searching the help center +@@ -245,6 +245,20 @@ CHAR_LIMIT guidelines: + Delete + @@ -744,7 +744,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -2778,6 +2778,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2410,6 +2410,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -1602,7 +1602,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f web_contents_helper_(web_contents_helper) {} ContentSubresourceFilterThrottleManager:: -@@ -659,6 +663,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -658,6 +662,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } @@ -1635,7 +1635,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc --- a/components/subresource_filter/content/browser/ruleset_service.cc +++ b/components/subresource_filter/content/browser/ruleset_service.cc -@@ -50,12 +50,7 @@ namespace { +@@ -49,12 +49,7 @@ namespace { void RecordIndexAndWriteRulesetResult( std::string_view uma_tag, RulesetService::IndexAndWriteRulesetResult result) { @@ -1649,7 +1649,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ } // Implements operations on a `sentinel file`, which is used as a safeguard to -@@ -237,11 +232,13 @@ RulesetService::RulesetService( +@@ -236,11 +231,13 @@ RulesetService::RulesetService( RulesetService::~RulesetService() = default; void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( @@ -1664,7 +1664,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ // Trying to store a ruleset with the same version for a second time would // not only be futile, but would fail on Windows due to "File System // Tunneling" as long as the previously stored copy of the rules is still -@@ -251,13 +248,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( +@@ -250,13 +247,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( if (most_recently_indexed_version.IsCurrentFormatVersion() && most_recently_indexed_version.content_version == unindexed_ruleset_info.content_version) { @@ -1681,7 +1681,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ return; } -@@ -277,6 +277,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -276,6 +276,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( const RulesetConfig& config, const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info) { @@ -1705,7 +1705,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); -@@ -284,6 +301,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -283,6 +300,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( unindexed_ruleset_info); if (!unindexed_ruleset_stream_generator.ruleset_stream()) { @@ -1713,7 +1713,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedOpeningUnindexedRuleset); -@@ -298,6 +316,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -297,6 +315,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( indexed_ruleset_base_dir, indexed_version); if (!base::CreateDirectory(indexed_ruleset_version_dir)) { @@ -1721,7 +1721,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingVersionDir); return IndexedRulesetVersion(config.filter_tag); -@@ -305,13 +324,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -304,13 +323,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( SentinelFile sentinel_file(indexed_ruleset_version_dir); if (sentinel_file.IsPresent()) { @@ -1737,7 +1737,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingSentinelFile); -@@ -326,6 +343,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -325,6 +342,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( RulesetIndexer indexer; if (!(*g_index_ruleset_func)(config, &unindexed_ruleset_stream_generator, &indexer)) { @@ -1745,7 +1745,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedParsingUnindexedRuleset); -@@ -346,9 +364,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -345,9 +363,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( unindexed_ruleset_info.license_path, indexer.data()); RecordIndexAndWriteRulesetResult(config.uma_tag, result); if (result != IndexAndWriteRulesetResult::kSuccess) { @@ -1758,7 +1758,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ CHECK(indexed_version.IsValid()); return indexed_version; } -@@ -472,6 +493,7 @@ void RulesetService::IndexAndStoreRuleset( +@@ -471,6 +492,7 @@ void RulesetService::IndexAndStoreRuleset( void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback, const IndexedRulesetVersion& version) { CHECK(!result_callback.is_null()); diff --git a/build/patches/Bubble-Locking-on-UI-DevTools.patch b/build/patches/Bubble-Locking-on-UI-DevTools.patch index b3eb0be2a..af3a2be37 100644 --- a/build/patches/Bubble-Locking-on-UI-DevTools.patch +++ b/build/patches/Bubble-Locking-on-UI-DevTools.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/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/ui/views/toolbar/reload_button.cc --- a/chrome/browser/ui/views/toolbar/reload_button.cc +++ b/chrome/browser/ui/views/toolbar/reload_button.cc -@@ -284,6 +284,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) { +@@ -291,6 +291,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) { command = IDC_RELOAD; } @@ -33,7 +33,7 @@ diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/u diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h --- a/ui/views/widget/widget.h +++ b/ui/views/widget/widget.h -@@ -1481,6 +1481,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1474,6 +1474,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // initialized. void SaveWindowPlacementIfNeeded(); @@ -53,7 +53,7 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h protected: // Creates the RootView to be used within this Widget. Subclasses may override // to create custom RootViews that do specialized event processing. -@@ -1521,13 +1534,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1516,13 +1529,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, void set_widget_closed() { widget_closed_ = true; } private: @@ -65,9 +65,9 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h - }; - class PaintAsActiveLockImpl; + class ScopedCallStackLock; - friend class ButtonTest; -@@ -1538,11 +1544,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1534,11 +1540,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, friend class ui_devtools::BubbleLocking; friend void DisableActivationChangeHandlingForTests(); diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index fbf43dca6..197b89756 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -23,12 +23,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../extensions/cws_info_service_factory.cc | 3 +- .../extensions/extension_management.cc | 1 + .../extension_safety_check_utils.cc | 3 +- - .../browser/extensions/extension_service.cc | 4 +- + .../browser/extensions/extension_service.cc | 5 +- .../chrome_extension_downloader_factory.cc | 1 - - .../extensions/updater/extension_updater.cc | 40 +++++++----- + .../extensions/updater/extension_updater.cc | 26 ++++++-- .../extensions/updater/extension_updater.h | 4 ++ .../extensions/webstore_install_helper.cc | 2 +- - .../browser/extensions/webstore_installer.cc | 2 +- .../resources/extensions/manager.html.ts | 1 + .../browser/resources/extensions/manager.ts | 5 ++ .../browser/resources/extensions/service.ts | 5 ++ @@ -38,7 +37,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../resources/webstore_app/manifest.json | 7 +-- .../ui/webui/extensions/extensions_ui.cc | 7 +++ .../chrome_update_query_params_delegate.cc | 13 ++-- - .../extensions/api/developer_private.idl | 2 + + .../extensions/api/developer_private.webidl | 2 + .../update_client/update_query_params.cc | 5 +- .../about_flags_cc/Webstore-protection.inc | 19 ++++++ .../browser/api/management/management_api.cc | 62 +++++++++++++------ @@ -46,10 +45,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/updater/extension_downloader.h | 1 - .../browser/updater/manifest_fetch_data.cc | 8 +-- .../browser/updater/safe_manifest_parser.cc | 1 + + extensions/browser/webstore_installer.cc | 2 +- extensions/common/extension_features.cc | 7 +++ extensions/common/extension_features.h | 10 +++ .../definitions/developer_private.d.ts | 2 + - 36 files changed, 253 insertions(+), 107 deletions(-) + 36 files changed, 250 insertions(+), 97 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp @@ -181,7 +181,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/profile_info_genera diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc -@@ -254,6 +254,8 @@ Profile* GetProfileInIncognito(Profile* profile) { +@@ -253,6 +253,8 @@ Profile* GetProfileInIncognito(Profile* profile) { // there was previously stored data, or an empty string otherwise. The Set will // overwrite any previous login. std::string GetWebstoreLogin(Profile* profile) { @@ -190,7 +190,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api if (profile->GetPrefs()->HasPrefPath(kWebstoreLogin)) { return profile->GetPrefs()->GetString(kWebstoreLogin); } -@@ -261,11 +263,15 @@ std::string GetWebstoreLogin(Profile* profile) { +@@ -260,11 +262,15 @@ std::string GetWebstoreLogin(Profile* profile) { } void SetWebstoreLogin(Profile* profile, const std::string& login) { @@ -206,9 +206,9 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api switch (status) { case kCanRequest: return api::webstore_private::ExtensionInstallStatus::kCanRequest; -@@ -1317,7 +1323,8 @@ ExtensionFunction::ResponseAction +@@ -1321,7 +1327,8 @@ ExtensionFunction::ResponseAction WebstorePrivateIsInIncognitoModeFunction::Run() { - Profile* profile = Profile::FromBrowserContext(browser_context()); + Profile* profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); return RespondNow(ArgumentList(IsInIncognitoMode::Results::Create( - profile != profile->GetOriginalProfile()))); + base::FeatureList::IsEnabled(extensions_features::kEnableExtensionManagementToChromeStore) @@ -216,7 +216,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api } WebstorePrivateIsPendingCustodianApprovalFunction:: -@@ -1414,11 +1421,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { +@@ -1418,11 +1425,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { request.mutable_referrer_chain_options()->set_recent_navigations_to_collect( recent_navigations_to_collect); @@ -235,7 +235,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api diff --git a/chrome/browser/extensions/chrome_extension_system.cc b/chrome/browser/extensions/chrome_extension_system.cc --- a/chrome/browser/extensions/chrome_extension_system.cc +++ b/chrome/browser/extensions/chrome_extension_system.cc -@@ -99,6 +99,7 @@ UninstallPingSender::FilterResult ShouldSendUninstallPing( +@@ -100,6 +100,7 @@ UninstallPingSender::FilterResult ShouldSendUninstallPing( Profile* profile, const Extension* extension, UninstallReason reason) { @@ -259,7 +259,7 @@ diff --git a/chrome/browser/extensions/cws_info_service_factory.cc b/chrome/brow diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc -@@ -435,6 +435,7 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy( +@@ -436,6 +436,7 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy( bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy( const Extension* extension) { @@ -270,7 +270,7 @@ diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/ diff --git a/chrome/browser/extensions/extension_safety_check_utils.cc b/chrome/browser/extensions/extension_safety_check_utils.cc --- a/chrome/browser/extensions/extension_safety_check_utils.cc +++ b/chrome/browser/extensions/extension_safety_check_utils.cc -@@ -243,8 +243,7 @@ developer::SafetyCheckWarningReason GetSafetyCheckWarningReasonHelper( +@@ -244,8 +244,7 @@ developer::SafetyCheckWarningReason GetSafetyCheckWarningReasonHelper( developer::SafetyCheckWarningReason acknowledged_reason = GetPrefAcknowledgeSafetyCheckWarningReason(extension, ExtensionPrefs::Get(profile)); @@ -283,16 +283,17 @@ diff --git a/chrome/browser/extensions/extension_safety_check_utils.cc b/chrome/ diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc -@@ -249,8 +249,6 @@ ExtensionService::ExtensionService( +@@ -250,9 +250,6 @@ ExtensionService::ExtensionService( UpgradeDetector::GetInstance()->AddObserver(this); #endif -- cws_info_service_observation_.Observe(CWSInfoService::Get(profile_)); +- cws_info_service_observation_.Observe( +- CWSInfoServiceFactory::GetForProfile(profile_)); - ExtensionManagementFactory::GetForBrowserContext(profile_)->AddObserver(this); if (auto* extension_install_policy_service = -@@ -773,7 +771,7 @@ void ExtensionService::OnExtensionManagementSettingsChanged() { +@@ -775,7 +772,7 @@ void ExtensionService::OnExtensionManagementSettingsChanged() { // unpublished extensions should not be enabled. This update allows // unpublished extensions to be disabled sooner rather than waiting till the // next regularly scheduled fetch. @@ -300,7 +301,7 @@ diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/ext + if (((false)) && profile_->GetPrefs()->GetInteger( pref_names::kExtensionUnpublishedAvailability) != kAllowUnpublishedExtensions) { - CWSInfoService::Get(profile_)->CheckAndMaybeFetchInfo(); + CWSInfoServiceFactory::GetForProfile(profile_)->CheckAndMaybeFetchInfo(); diff --git a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc --- a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc +++ b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc @@ -323,7 +324,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro #include "extensions/common/extension_set.h" #include "extensions/common/extension_updater_uma.h" #include "extensions/common/extension_urls.h" -@@ -229,6 +230,10 @@ void ExtensionUpdater::Start() { +@@ -230,6 +231,10 @@ void ExtensionUpdater::Start() { DCHECK(!weak_ptr_factory_.HasWeakPtrs()); DCHECK(registry_); alive_ = true; @@ -334,26 +335,16 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro // Check soon, and set up the first delayed check. if (!g_skip_scheduled_checks_for_tests) { CheckSoon(); -@@ -380,7 +385,8 @@ void ExtensionUpdater::AddToDownloader( - const Extension& extension = **extension_iter; - const ExtensionId& extension_id = extension.id(); - if (!Manifest::IsAutoUpdateableLocation(extension.location())) { -- VLOG(2) << "Extension " << extension_id << " is not auto updateable"; -+ LOG(INFO) << "Extension " << extension_id << " is not auto updateable: " -+ << "location=" << extension.location(); - continue; - } - // An extension might be overwritten by policy, and have its update url -@@ -395,7 +401,7 @@ void ExtensionUpdater::AddToDownloader( - continue; - } - -- if (CanUseUpdateService(extension_id)) { -+ if ((false) && CanUseUpdateService(extension_id)) { - update_check_params->update_info[extension_id] = - GetExtensionUpdateData(extension_id); - } else if (AddExtensionToDownloader(extension, request_id, -@@ -434,6 +440,12 @@ bool ExtensionUpdater::AddExtensionToDownloader( +@@ -411,6 +416,8 @@ void ExtensionUpdater::EraseUnupdatableIds(std::set& ids) const { + } + // Remove extensions that aren't in an autoupdatable location. + if (!Manifest::IsAutoUpdateableLocation(extension->location())) { ++ LOG(INFO) << "Extension " << extension.id() << " is not auto updateable: " ++ << "location=" << extension.location(); + return true; + } + } else { +@@ -427,6 +434,12 @@ void ExtensionUpdater::EraseUnupdatableIds(std::set& ids) const { } void ExtensionUpdater::CheckNow(CheckParams params) { @@ -363,69 +354,37 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro + LOG(INFO) << "Extensions autoupdate is disabled."; + return; + } - CHECK(enabled_); - if (params.ids.empty()) { - // Checking all extensions. Cancel pending DoCheckSoon() call if there's -@@ -451,7 +463,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { + std::unique_ptr keep_alive = + ScopedProfileKeepAlive::TryAcquire( + profile_, ProfileKeepAliveOrigin::kExtensionUpdater); +@@ -440,7 +453,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { + CHECK(pending_extension_manager_); int request_id = next_request_id_++; - - VLOG(2) << "Starting update check " << request_id; + LOG(INFO) << "Starting extensions update check id: " << request_id; - if (params.ids.empty()) { - NotifyStarted(); - } -@@ -528,7 +540,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { - << " will be reinstalled with ExtensionDownloader."; - } - } else if (!Manifest::IsAutoUpdateableLocation(info->install_source())) { -- VLOG(2) << "Extension " << pending_id << " is not auto updateable"; -+ LOG(INFO) << "Extension " << pending_id << " is not auto updateable"; - continue; - } - // We have to mark high-priority extensions (such as policy-forced -@@ -538,7 +550,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { - // See https://crbug.com/41425994 and https://crbug.com/41460304. - const bool is_high_priority_extension_pending = - pending_extension_manager->HasHighPriorityPendingExtension(); -- if (CanUseUpdateService(pending_id)) { -+ if ((false) && CanUseUpdateService(pending_id)) { - update_check_params.update_info[pending_id] = - GetExtensionUpdateData(pending_id); - update_check_params.update_info[pending_id].is_corrupt_reinstall = -@@ -562,6 +574,8 @@ void ExtensionUpdater::CheckNow(CheckParams params) { - LOG(WARNING) << "Corrupt extension with id " << pending_id - << " will be reinstalled with ExtensionDownloader."; - } -+ LOG(INFO) << "Extension " << pending_id << " is auto updateable " -+ << "from " << info->update_url(); - } else { - InstallStageTrackerFactory::GetForBrowserContext(profile_) - ->ReportFailure( -@@ -575,13 +589,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) { - AddToDownloader(®istry_->disabled_extensions(), pending_ids, request_id, - params.fetch_priority, &update_check_params); - ExtensionSet remotely_disabled_extensions; -- for (auto extension : registry_->blocklisted_extensions()) { -- if (blocklist_prefs::HasOmahaBlocklistState( -- extension->id(), BitMapBlocklistState::BLOCKLISTED_MALWARE, -- extension_prefs_)) { -- remotely_disabled_extensions.Insert(extension); -- } -- } - AddToDownloader(&remotely_disabled_extensions, pending_ids, request_id, - params.fetch_priority, &update_check_params); - } else { -@@ -589,7 +596,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { - const Extension* extension = - registry_->GetExtensionById(id, ExtensionRegistry::EVERYTHING); - if (extension) { -- if (CanUseUpdateService(id)) { -+ if ((false) && CanUseUpdateService(id)) { - update_check_params.update_info[id] = GetExtensionUpdateData(id); - } else if (AddExtensionToDownloader(*extension, request_id, - params.fetch_priority)) { -@@ -736,7 +743,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( + + EnsureDownloaderCreated(); + +@@ -513,7 +526,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { + + // Note: If an extension is both installed and pending, but can't use + // update_service, pending_info takes priority. +- if (CanUseUpdateService(extension, pending_info)) { ++ if ((false) && CanUseUpdateService(extension, pending_info)) { + update_check_params.update_info[id] = GetExtensionUpdateData(id); + update_check_params.update_info[id].is_corrupt_reinstall = + is_corrupt_reinstall; +@@ -525,6 +538,8 @@ void ExtensionUpdater::CheckNow(CheckParams params) { + InstallStageTrackerFactory::GetForBrowserContext(profile_) + ->ReportInstallationStage(id, + InstallStageTracker::Stage::DOWNLOADING); ++ LOG(INFO) << "Extension " << id << " is auto updateable " ++ << "from " << pending_info->update_url(); + } else if (pending_info) { + InstallStageTrackerFactory::GetForBrowserContext(profile_)->ReportFailure( + id, InstallStageTracker::FailureReason::DOWNLOADER_ADD_FAILED); +@@ -676,7 +691,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( InstallStageTracker::Stage::INSTALLING); UpdatePingData(file.extension_id, ping); @@ -434,7 +393,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro FetchedCRXFile fetched(file, file_ownership_passed, request_ids, std::move(callback)); -@@ -747,6 +754,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( +@@ -687,6 +702,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( bool ExtensionUpdater::GetPingDataForExtension(const ExtensionId& id, DownloadPingData* ping_data) { @@ -442,7 +401,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro DCHECK(alive_); ping_data->rollcall_days = CalculatePingDaysForExtension(extension_prefs_->LastPingDay(id)); -@@ -865,7 +873,7 @@ bool ExtensionUpdater::CanUseUpdateService( +@@ -798,7 +814,7 @@ bool ExtensionUpdater::CanUseUpdateService( void ExtensionUpdater::InstallCRXFile(FetchedCRXFile crx_file) { std::set request_ids; @@ -451,7 +410,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro << crx_file.info.path.value(); // The delegate is now responsible for cleaning up the temp file at -@@ -1075,7 +1083,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { +@@ -1008,7 +1024,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { if (!request.in_progress_ids.empty() || request.awaiting_update_service) { return; // This request is not done yet. } @@ -463,7 +422,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro diff --git a/chrome/browser/extensions/updater/extension_updater.h b/chrome/browser/extensions/updater/extension_updater.h --- a/chrome/browser/extensions/updater/extension_updater.h +++ b/chrome/browser/extensions/updater/extension_updater.h -@@ -92,6 +92,8 @@ class ExtensionUpdater : public KeyedService, +@@ -91,6 +91,8 @@ class ExtensionUpdater : public KeyedService, // right away. bool install_immediately = false; @@ -493,18 +452,6 @@ diff --git a/chrome/browser/extensions/webstore_install_helper.cc b/chrome/brows icon_decode_complete_ = true; } else { // No existing |icon_fetcher_| to avoid unbalanced AddRef(). -diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc ---- a/chrome/browser/extensions/webstore_installer.cc -+++ b/chrome/browser/extensions/webstore_installer.cc -@@ -589,7 +589,7 @@ void WebstoreInstaller::StartDownload( - render_frame_host->CreateDownloadUrlParameters(download_url_, - traffic_annotation); - params->set_file_path(file); -- if (controller.GetVisibleEntry()) { -+ if ((false) && controller.GetVisibleEntry()) { - content::Referrer referrer = content::Referrer::SanitizeForRequest( - download_url_, - content::Referrer(controller.GetVisibleEntry()->GetURL(), diff --git a/chrome/browser/resources/extensions/manager.html.ts b/chrome/browser/resources/extensions/manager.html.ts --- a/chrome/browser/resources/extensions/manager.html.ts +++ b/chrome/browser/resources/extensions/manager.html.ts @@ -578,7 +525,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.css b/chrome/browser/re diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browser/resources/extensions/toolbar.html.ts --- a/chrome/browser/resources/extensions/toolbar.html.ts +++ b/chrome/browser/resources/extensions/toolbar.html.ts -@@ -32,6 +32,13 @@ export function getHtml(this: ToolbarElement) { +@@ -33,6 +33,13 @@ export function getHtml(this: ToolbarElement) { @@ -591,7 +538,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browse + ${this.showPackDialog_ ? html` - AddBoolean(kInDevModeKey, in_dev_mode); @@ -724,25 +671,25 @@ diff --git a/chrome/browser/update_client/chrome_update_query_params_delegate.cc } // static -diff --git a/chrome/common/extensions/api/developer_private.idl b/chrome/common/extensions/api/developer_private.idl ---- a/chrome/common/extensions/api/developer_private.idl -+++ b/chrome/common/extensions/api/developer_private.idl -@@ -269,6 +269,7 @@ namespace developerPrivate { - boolean isIncognitoAvailable; - boolean isChildAccount; - boolean isMv2DeprecationNoticeDismissed; -+ boolean isExtensionAutoupdateEnabled; - }; - - dictionary GetExtensionsInfoOptions { -@@ -292,6 +293,7 @@ namespace developerPrivate { - dictionary ProfileConfigurationUpdate { - boolean? inDeveloperMode; - boolean? isMv2DeprecationNoticeDismissed; -+ boolean? isExtensionAutoupdateEnabled; - }; - - dictionary ExtensionCommandUpdate { +diff --git a/chrome/common/extensions/api/developer_private.webidl b/chrome/common/extensions/api/developer_private.webidl +--- a/chrome/common/extensions/api/developer_private.webidl ++++ b/chrome/common/extensions/api/developer_private.webidl +@@ -264,6 +264,7 @@ dictionary ProfileInfo { + required boolean isIncognitoAvailable; + required boolean isChildAccount; + required boolean isMv2DeprecationNoticeDismissed; ++ boolean isExtensionAutoupdateEnabled; + }; + + dictionary GetExtensionsInfoOptions { +@@ -287,6 +288,7 @@ dictionary ExtensionConfigurationUpdate { + dictionary ProfileConfigurationUpdate { + boolean inDeveloperMode; + boolean isMv2DeprecationNoticeDismissed; ++ boolean? isExtensionAutoupdateEnabled; + }; + + dictionary ExtensionCommandUpdate { diff --git a/components/update_client/update_query_params.cc b/components/update_client/update_query_params.cc --- a/components/update_client/update_query_params.cc +++ b/components/update_client/update_query_params.cc @@ -849,7 +796,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br for (ExtensionSet::const_iterator iter = extensions.begin(); iter != extensions.end(); ++iter) { const Extension& extension = **iter; -@@ -323,10 +352,9 @@ ExtensionFunction::ResponseAction ManagementGetFunction::Run() { +@@ -314,10 +343,9 @@ ExtensionFunction::ResponseAction ManagementGetFunction::Run() { std::optional params = management::Get::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); @@ -861,7 +808,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!target_extension) { return RespondNow(Error(keys::kNoExtensionError, params->id)); } -@@ -347,8 +375,7 @@ ManagementGetPermissionWarningsByIdFunction::Run() { +@@ -338,8 +366,7 @@ ManagementGetPermissionWarningsByIdFunction::Run() { EXTENSION_FUNCTION_VALIDATE(params); const Extension* extension = @@ -871,7 +818,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!extension) { return RespondNow(Error(keys::kNoExtensionError, params->id)); } -@@ -419,8 +446,7 @@ ExtensionFunction::ResponseAction ManagementLaunchAppFunction::Run() { +@@ -410,8 +437,7 @@ ExtensionFunction::ResponseAction ManagementLaunchAppFunction::Run() { } const Extension* extension = @@ -881,7 +828,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!extension) { return RespondNow(Error(keys::kNoExtensionError, params->id)); } -@@ -562,8 +588,8 @@ void ManagementSetEnabledFunction::CheckPermissionsIncrease() { +@@ -552,8 +578,8 @@ void ManagementSetEnabledFunction::CheckPermissionsIncrease() { // Extension could have been uninstalled externally while previous check was // happening. const Extension* extension = @@ -892,7 +839,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!extension) { FinishEnable(Error(keys::kNoExtensionError)); return; -@@ -606,8 +632,8 @@ void ManagementSetEnabledFunction::CheckManifestV2Deprecation() { +@@ -596,8 +622,8 @@ void ManagementSetEnabledFunction::CheckManifestV2Deprecation() { // Extension can be uninstalled externally while the previous check was // happening async. const Extension* extension = @@ -903,7 +850,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!extension) { FinishEnable(Error(keys::kNoExtensionError)); return; -@@ -751,8 +777,8 @@ void ManagementSetEnabledFunction::OnSupervisedExtensionApprovalDone( +@@ -741,8 +767,8 @@ void ManagementSetEnabledFunction::OnSupervisedExtensionApprovalDone( } const Extension* ManagementSetEnabledFunction::GetExtension() { @@ -914,7 +861,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br } ManagementUninstallFunctionBase::ManagementUninstallFunctionBase() = default; -@@ -777,8 +803,7 @@ ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall( +@@ -767,8 +793,7 @@ ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall( ->GetDelegate(); target_extension_id_ = target_extension_id; const Extension* target_extension = @@ -924,7 +871,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br ExtensionRegistry::EVERYTHING); if (!target_extension || !ShouldExposeViaManagementAPI(*target_extension)) { return RespondNow(Error(keys::kNoExtensionError, target_extension_id_)); -@@ -843,8 +868,7 @@ void ManagementUninstallFunctionBase::UninstallExtension() { +@@ -833,8 +858,7 @@ void ManagementUninstallFunctionBase::UninstallExtension() { // The extension can be uninstalled in another window while the UI was // showing. Do nothing in that case. const Extension* target_extension = @@ -934,7 +881,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br ExtensionRegistry::EVERYTHING); std::string error; bool success = false; -@@ -928,8 +952,7 @@ ExtensionFunction::ResponseAction ManagementCreateAppShortcutFunction::Run() { +@@ -918,8 +942,7 @@ ExtensionFunction::ResponseAction ManagementCreateAppShortcutFunction::Run() { management::CreateAppShortcut::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); const Extension* extension = @@ -944,7 +891,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br if (!extension) { return RespondNow(Error( ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id))); -@@ -983,8 +1006,7 @@ ExtensionFunction::ResponseAction ManagementSetLaunchTypeFunction::Run() { +@@ -973,8 +996,7 @@ ExtensionFunction::ResponseAction ManagementSetLaunchTypeFunction::Run() { management::SetLaunchType::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); const Extension* extension = @@ -1183,7 +1130,7 @@ diff --git a/extensions/browser/updater/manifest_fetch_data.cc b/extensions/brow diff --git a/extensions/browser/updater/safe_manifest_parser.cc b/extensions/browser/updater/safe_manifest_parser.cc --- a/extensions/browser/updater/safe_manifest_parser.cc +++ b/extensions/browser/updater/safe_manifest_parser.cc -@@ -203,6 +203,7 @@ void ParseXmlDone(ParseUpdateManifestCallback callback, +@@ -202,6 +202,7 @@ void ParseXmlDone(ParseUpdateManifestCallback callback, std::move(callback).Run(/*results=*/nullptr, std::move(error)); }); @@ -1191,12 +1138,24 @@ diff --git a/extensions/browser/updater/safe_manifest_parser.cc b/extensions/bro auto results = std::make_unique(); // Parse the first if it's present. +diff --git a/extensions/browser/webstore_installer.cc b/extensions/browser/webstore_installer.cc +--- a/extensions/browser/webstore_installer.cc ++++ b/extensions/browser/webstore_installer.cc +@@ -604,7 +604,7 @@ void WebstoreInstaller::StartDownload(const ExtensionId& extension_id, + render_frame_host->CreateDownloadUrlParameters(download_url_, + traffic_annotation); + params->set_file_path(file); +- if (controller.GetVisibleEntry()) { ++ if (((false)) && controller.GetVisibleEntry()) { + content::Referrer referrer = content::Referrer::SanitizeForRequest( + download_url_, + content::Referrer(controller.GetVisibleEntry()->GetURL(), 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 -@@ -218,4 +218,11 @@ BASE_FEATURE(kSearchEngineUnconditionalDialog, - BASE_FEATURE(kWebRequestPersistFilteredEventsViaEventRouter, - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -220,4 +220,11 @@ BASE_FEATURE(kWebRequestPersistFilteredEventsViaEventRouter, + + BASE_FEATURE(kOptimizeWebRequestProxy, base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kEnableExtensionAutoupdate, + "EnableExtensionAutoupdate", @@ -1209,9 +1168,9 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h -@@ -323,6 +323,16 @@ BASE_DECLARE_FEATURE(kWebRequestSecurityInfo); - // in WebRequestEventRouter. - BASE_DECLARE_FEATURE(kWebRequestPersistFilteredEventsViaEventRouter); +@@ -320,6 +320,16 @@ BASE_DECLARE_FEATURE(kWebRequestPersistFilteredEventsViaEventRouter); + // optimizations like preconnect. + BASE_DECLARE_FEATURE(kOptimizeWebRequestProxy); +// Activates the auto update of extensions. +// the only data provided by default is the list of extensions. diff --git a/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch b/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch index 6ed81bb57..5fef63e52 100644 --- a/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch +++ b/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/preflight_cache.cc --- a/services/network/cors/preflight_cache.cc +++ b/services/network/cors/preflight_cache.cc -@@ -197,6 +197,10 @@ void PreflightCache::MayPurgeForTesting(size_t max_entries, size_t purge_unit) { +@@ -198,6 +198,10 @@ void PreflightCache::MayPurgeForTesting(size_t max_entries, size_t purge_unit) { MayPurge(max_entries, purge_unit); } @@ -29,7 +29,7 @@ diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/pr diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/preflight_cache.h --- a/services/network/cors/preflight_cache.h +++ b/services/network/cors/preflight_cache.h -@@ -75,6 +75,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final { +@@ -76,6 +76,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final { // `max_entries` for testing. void MayPurgeForTesting(size_t max_entries, size_t purge_unit); @@ -41,7 +41,7 @@ diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/pre diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc --- a/services/network/cors/preflight_controller.cc +++ b/services/network/cors/preflight_controller.cc -@@ -631,6 +631,10 @@ void PreflightController::ClearCorsPreflightCache( +@@ -644,6 +644,10 @@ void PreflightController::ClearCorsPreflightCache( cache_.ClearCache(std::move(url_filter)); } @@ -79,7 +79,7 @@ diff --git a/services/network/cors/preflight_result.cc b/services/network/cors/p 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 -@@ -1379,6 +1379,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time, +@@ -1431,6 +1431,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time, base::Time end_time, mojom::ClearDataFilterPtr filter, ClearHttpCacheCallback callback) { diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index 3fc3abd0c..f6e5f897d 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -22,8 +22,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../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 ++++++-- - 16 files changed, 63 insertions(+), 16 deletions(-) + .../platform/runtime_enabled_features.json5 | 5 +++++ + 16 files changed, 62 insertions(+), 14 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 @@ -43,7 +43,7 @@ diff --git a/android_webview/support_library/java/src/org/chromium/support_lib_g diff --git a/components/client_hints/browser/client_hints.cc b/components/client_hints/browser/client_hints.cc --- a/components/client_hints/browser/client_hints.cc +++ b/components/client_hints/browser/client_hints.cc -@@ -35,7 +35,7 @@ ParseInitializeClientHintsStorage() { +@@ -36,7 +36,7 @@ ParseInitializeClientHintsStorage() { auto results = base::flat_map>(); @@ -52,7 +52,7 @@ diff --git a/components/client_hints/browser/client_hints.cc b/components/client std::string raw_client_hint_json = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kInitializeClientHintsStorage); -@@ -200,7 +200,8 @@ void ClientHints::PersistClientHints( +@@ -201,7 +201,8 @@ void ClientHints::PersistClientHints( // TODO(tbansal): crbug.com/735518. Disable updates to client hints settings // when cookies are disabled for |primary_origin|. content_settings::ContentSettingConstraints constraints; @@ -156,7 +156,7 @@ new file mode 100644 diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc -@@ -119,6 +119,7 @@ const size_t kMaxRestarts = 32; +@@ -120,6 +120,7 @@ const size_t kMaxRestarts = 32; // Returns true when Early Hints are allowed on the given protocol. bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) { @@ -236,14 +236,14 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_part diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc --- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc +++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc -@@ -114,6 +114,7 @@ const String& NavigatorUAData::platform() const { +@@ -113,6 +113,7 @@ const String& NavigatorUAData::platform() const { } bool AllowedToCollectHighEntropyValues(ExecutionContext* execution_context) { + if ((true)) return false; - // To determine whether a document is allowed to use the get high-entropy + // To determine whether a document is allowed to get high-entropy // client hints returned by navigator.userAgentData.getHighEntropyValues(), - // check the following: + // we need to check the "ch-ua-high-entropy-values" policy: diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third_party/blink/renderer/core/frame/navigator_ua_data.idl --- a/third_party/blink/renderer/core/frame/navigator_ua_data.idl +++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl @@ -271,7 +271,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi // For subresource requests, sending the hint in the fetch request based on // the permissions policy. if (!policy.IsFeatureEnabledForOrigin( -@@ -731,7 +733,7 @@ void FrameFetchContext::AddClientHintsIfNecessary( +@@ -725,7 +727,7 @@ void FrameFetchContext::AddClientHintsIfNecessary( } // Only send User Agent hints if the info is available @@ -283,7 +283,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -647,6 +647,11 @@ +@@ -678,6 +678,11 @@ name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, @@ -295,14 +295,4 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 { name: "AriaRowColIndexText", status: "stable", -@@ -1085,8 +1090,7 @@ - // Allows top-level sites to restrict collection of high-entropy UA client - // hints (from 3Ps, or itself) via the getHighEntropyValues API. - // crbug.com/385161047 -- name: "ClientHintUAHighEntropyValuesPermissionPolicy", -- status: "stable", -+ name: "ClientHintUAHighEntropyValuesPermissionPolicy", // disabled by default - }, - { - // Enables clipboardchange event API for listening for changes to the -- diff --git a/build/patches/Close-Sessions-On-Ip-Change.patch b/build/patches/Close-Sessions-On-Ip-Change.patch index b94e6a0fe..689395baa 100644 --- a/build/patches/Close-Sessions-On-Ip-Change.patch +++ b/build/patches/Close-Sessions-On-Ip-Change.patch @@ -88,7 +88,7 @@ new file mode 100644 diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -294,7 +294,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -300,7 +300,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT); // NetworkChangeNotifier::AreNetworkHandlesSupported). #if BUILDFLAG(IS_ANDROID) inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default = diff --git a/build/patches/Compress-libchrome-to-free-up-some-space.patch b/build/patches/Compress-libchrome-to-free-up-some-space.patch index a074f8de4..b3cd3476d 100644 --- a/build/patches/Compress-libchrome-to-free-up-some-space.patch +++ b/build/patches/Compress-libchrome-to-free-up-some-space.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni -@@ -600,6 +600,7 @@ template("chrome_common_apk_or_module_tmpl") { +@@ -597,6 +597,7 @@ template("chrome_common_apk_or_module_tmpl") { [ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ] loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ] library_always_compress += [ "libchrome_crashpad_handler.so" ] diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index d561534a5..ed910c6d6 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -275,7 +275,7 @@ 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, -@@ -157,6 +158,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -153,6 +154,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS_LOOPBACK_NETWORK = r.SITE_SETTINGS.createChild('loopbackNetwork'); } @@ -307,7 +307,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 -@@ -345,5 +345,6 @@ +@@ -352,5 +352,6 @@ label="$i18n{siteSettingsLoopbackNetwork}"> @@ -317,7 +317,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts --- a/chrome/browser/resources/settings/site_settings/site_details.ts +++ b/chrome/browser/resources/settings/site_settings/site_details.ts -@@ -73,8 +73,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { +@@ -74,8 +74,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { return 'site-details'; } @@ -651,7 +651,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_util. 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 -@@ -1680,6 +1680,7 @@ static_library("ui") { +@@ -1723,6 +1723,7 @@ static_library("ui") { "//components/commerce/core/webui", "//components/contextual_search:public", "//components/endpoint_fetcher", @@ -659,7 +659,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "//components/enterprise/common:files_scan_data", "//components/feedback/proto", "//components/headless/console_message_logger", -@@ -4879,6 +4880,7 @@ static_library("ui") { +@@ -4943,6 +4944,7 @@ static_library("ui") { "//components/payments/core:currency_formatter", "//components/power_bookmarks/core", "//components/prefs", @@ -815,7 +815,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h --- a/chrome/browser/ui/views/page_info/page_info_view_factory.h +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h -@@ -95,6 +95,11 @@ class PageInfoViewFactory { +@@ -96,6 +96,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); @@ -1138,17 +1138,17 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/buildflag.h" -@@ -82,6 +83,9 @@ - #include "components/dom_distiller/core/dom_distiller_features.h" - #include "components/google/core/common/google_util.h" - #include "components/history/core/common/pref_names.h" +@@ -80,6 +81,9 @@ + #include "components/autofill/core/common/autofill_prefs.h" + #include "components/commerce/core/commerce_constants.h" + #include "components/content_settings/core/common/features.h" +#include "components/content_settings/core/browser/content_settings_registry.h" +#include "components/content_settings/core/browser/website_settings_info.h" +#include "components/content_settings/core/browser/website_settings_registry.h" - #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" -@@ -4271,6 +4275,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, + #include "components/device_reauth/device_authenticator.h" + #include "components/dom_distiller/core/dom_distiller_features.h" + #include "components/google/core/common/google_util.h" +@@ -4325,6 +4329,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1208,7 +1208,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -46,6 +46,8 @@ +@@ -49,6 +49,8 @@ #include "chrome/grit/generated_resources.h" #include "components/content_settings/core/browser/content_settings_provider.h" #include "components/content_settings/core/browser/host_content_settings_map.h" @@ -1217,8 +1217,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_types.h" -@@ -260,13 +262,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL, nullptr}, +@@ -263,13 +265,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< + {ContentSettingsType::DEPRECATED_SUB_APP_INSTALLATION_PROMPTS, nullptr}, }); -static_assert( @@ -1238,7 +1238,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b struct SiteSettingSourceStringMapping { SiteSettingSource source; -@@ -528,6 +530,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -531,6 +533,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1252,7 +1252,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -541,11 +550,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { +@@ -544,11 +553,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { return entry.type; } } @@ -1278,7 +1278,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -560,7 +582,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -563,7 +585,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : std::string_view(); } } @@ -1286,7 +1286,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; } -@@ -669,6 +690,13 @@ std::vector GetVisiblePermissionCategories( +@@ -672,6 +693,13 @@ std::vector GetVisiblePermissionCategories( } } @@ -2450,7 +2450,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c boolean isOneTime = isOneTime(type); if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS && !isOneTime) { return createTwoActionLocationSwitchPreference(); -@@ -1348,7 +1363,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1351,7 +1366,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment value = ContentSetting.BLOCK; } @@ -2466,7 +2466,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setUpPreferenceCommon(preference, value); preference.setOnPreferenceChangeListener(this); -@@ -1398,10 +1420,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1401,10 +1423,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment oneTimePreference.setBackgroundColor(mHighlightColor); } } else { @@ -2485,7 +2485,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } -@@ -1707,7 +1733,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1710,7 +1736,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { permission = (Boolean) newValue ? getEnabledValue(type) : ContentSetting.BLOCK; } else { @@ -2735,7 +2735,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 -@@ -327,7 +327,7 @@ public class WebsitePreferenceBridge { +@@ -328,7 +328,7 @@ public class WebsitePreferenceBridge { return DeviceFeatureMap.isEnabled( DeviceFeatureList.SENSORS_ALLOW_ASK_BLOCK_PERMISSION_MODEL); default: @@ -2744,7 +2744,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -343,7 +343,6 @@ public class WebsitePreferenceBridge { +@@ -344,7 +344,6 @@ public class WebsitePreferenceBridge { public static boolean isCategoryEnabled( BrowserContextHandle browserContextHandle, @ContentSettingsType.EnumType int contentSettingsType) { @@ -2880,7 +2880,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -228,11 +228,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -230,11 +230,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -3129,7 +3129,7 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -73,6 +73,11 @@ struct RuleMetaData { +@@ -74,6 +74,11 @@ struct RuleMetaData { mojo_base.mojom.Value rule_options; }; @@ -3141,7 +3141,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co // This mirrors the C++ type in content_settings.h. struct ContentSettingPatternSource { ContentSettingsPattern primary_pattern; -@@ -86,5 +91,6 @@ struct ContentSettingPatternSource { +@@ -87,5 +92,6 @@ struct ContentSettingPatternSource { // This mirrors the C++ type in content_settings.h. // TODO(crbug.com/40282541): This should be removed. struct RendererContentSettingRules { @@ -3151,7 +3151,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -115,12 +115,22 @@ bool StructTraitsmetadata) && data.ReadSource(&out->source); } @@ -3178,7 +3178,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h --- a/components/content_settings/core/common/content_settings_mojom_traits.h +++ b/components/content_settings/core/common/content_settings_mojom_traits.h -@@ -181,10 +181,34 @@ struct StructTraits< +@@ -186,10 +186,34 @@ struct StructTraits< ContentSettingPatternSource* out); }; diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index e504fba58..1fc07554e 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/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 -@@ -663,7 +663,7 @@ chrome_java_resources = [ +@@ -675,7 +675,7 @@ chrome_java_resources = [ "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", @@ -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 -@@ -196,7 +196,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -204,7 +204,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 sandboxPreference = findPreference(PREF_PRIVACY_SANDBOX); // Overwrite the click listener to pass a correct referrer to the fragment. -@@ -283,7 +283,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -291,7 +291,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment ChromeSwitchPreference passwordLeakTogglePref = (ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION); diff --git a/build/patches/Cromite-Branding.patch b/build/patches/Cromite-Branding.patch index 159e705c1..c1ba70379 100644 --- a/build/patches/Cromite-Branding.patch +++ b/build/patches/Cromite-Branding.patch @@ -123,7 +123,7 @@ diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -206,7 +206,7 @@ by a child template that "extends" this file. +@@ -198,7 +198,7 @@ by a child template that "extends" this file. CreateProfilePrefStoreManager( +@@ -292,10 +293,7 @@ std::unique_ptr CreateProfilePrefStoreManager( const base::FilePath& profile_path) { std::string seed; CHECK(ui::ResourceBundle::HasSharedInstance()); @@ -13511,7 +13511,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 -@@ -2466,7 +2466,7 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2509,7 +2509,7 @@ Your Google account may have other forms of browsing history like searches and a About Chrome @@ -13520,7 +13520,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Application version -@@ -6039,7 +6039,7 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6030,7 +6030,7 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -13576,7 +13576,7 @@ diff --git a/chrome/install_static/chromium_install_modes.h b/chrome/install_sta diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -1003,7 +1003,7 @@ +@@ -997,7 +997,7 @@ @@ -18484,7 +18484,7 @@ i?Ib$(ofrX17!1R|`h|N%TnD<%35@j2bgPM^i2nno*_EOI diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -1117,6 +1117,7 @@ bool AutocompleteController::ShouldRunProvider( +@@ -1156,6 +1156,7 @@ bool AutocompleteController::ShouldRunProvider( #if BUILDFLAG(IS_ANDROID) if (omnibox::IsAndroidHub(input_.current_page_classification())) { @@ -19235,9 +19235,9 @@ diff --git a/components/webui/version/resources/about_version.ts b/components/we chrome.send('requestVersionInfo'); - const includeVariationsCmd = location.search.includes('show-variations-cmd'); + const includeVariationsCmd = true; - sendWithPromise('requestVariationInfo', includeVariationsCmd) + sendWithPromise<{variationsList: string[], variationsCmd: string}>( + 'requestVariationInfo', includeVariationsCmd) .then(handleVariationInfo); - sendWithPromise('requestPathInfo').then(handlePathInfo); diff --git a/components/webui/version/resources/about_version_mobile.css b/components/webui/version/resources/about_version_mobile.css --- a/components/webui/version/resources/about_version_mobile.css +++ b/components/webui/version/resources/about_version_mobile.css @@ -19258,7 +19258,7 @@ diff --git a/components/webui/version/resources/about_version_mobile.css b/compo 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 -@@ -549,19 +549,22 @@ void ResolveInvalidConfigurations() { +@@ -552,19 +552,22 @@ void ResolveInvalidConfigurations() { base::FeatureList::IsEnabled( features::kPrivacySandboxAdsAPIsM1Override)) && !base::FeatureList::IsEnabled(blink::features::kFencedFrames)) { @@ -19285,7 +19285,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "Fenced frames must be enabled in order to enable local " "unpartitioned " << "data access. Use --" << switches::kEnableFeatures << "=" -@@ -569,12 +572,14 @@ void ResolveInvalidConfigurations() { +@@ -572,12 +575,14 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableFeatureFromString( "FencedFramesLocalUnpartitionedDataAccess", false); } @@ -19301,7 +19301,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "Topics cannot be enabled in this configuration. Use --" << switches::kEnableFeatures << "=" << network::features::kBrowsingTopics.name << " in addition."; -@@ -582,30 +587,23 @@ void ResolveInvalidConfigurations() { +@@ -585,30 +590,23 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableTopicsDocumentAPI(false); WebRuntimeFeatures::EnableTopicsImgAPI(false); } else { @@ -19338,7 +19338,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "AttributionReporting cannot be enabled in this " "configuration. Use --" << switches::kEnableFeatures << "=" -@@ -613,23 +611,25 @@ void ResolveInvalidConfigurations() { +@@ -616,23 +614,25 @@ void ResolveInvalidConfigurations() { << " in addition."; WebRuntimeFeatures::EnableAttributionReporting(false); } diff --git a/build/patches/Customize-selection-popup.patch b/build/patches/Customize-selection-popup.patch index 8371bcbfa..2e9e4a49f 100644 --- a/build/patches/Customize-selection-popup.patch +++ b/build/patches/Customize-selection-popup.patch @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionMod 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 -@@ -936,10 +936,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -944,10 +944,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt @TabLaunchType int type, @TabCreationState int creationState, boolean markedForSelection) { @@ -163,7 +163,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/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 -@@ -433,8 +433,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -404,8 +404,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { public void onOpenImageInNewTab(GURL url, @Nullable Referrer referrer) { LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); loadUrlParams.setReferrer(referrer); @@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.base.DeviceInfo; import org.chromium.base.TraceEvent; import org.chromium.base.lifetime.Destroyable; -@@ -1060,11 +1061,16 @@ public class RootUiCoordinator +@@ -1083,11 +1084,16 @@ public class RootUiCoordinator TrackerFactory.getTrackerForProfile(tab.getProfile()) .notifyEvent(EventConstants.WEB_SEARCH_PERFORMED); @@ -376,7 +376,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select .setIsEnabled(true) @@ -412,7 +412,7 @@ public class SelectActionMenuHelper { new SelectionMenuItem.Builder(android.R.string.paste_as_plain_text) - .setId(R.id.select_action_menu_paste_as_plain_text) + .setId(android.R.id.pasteAsPlainText) .setGroupId(R.id.select_action_menu_default_items) - .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS) + .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS()) @@ -395,7 +395,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select 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 -@@ -1133,7 +1133,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -1149,7 +1149,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper private boolean handleAssistMenuItemClick(int order) { // Primary assist action is always the first action in the list so offset by 1. diff --git a/build/patches/Disable-Accessibility-service-by-default.patch b/build/patches/Disable-Accessibility-service-by-default.patch index 9bddba31c..788901261 100644 --- a/build/patches/Disable-Accessibility-service-by-default.patch +++ b/build/patches/Disable-Accessibility-service-by-default.patch @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java -@@ -1325,6 +1325,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa +@@ -1380,6 +1380,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa structure.setChildCount(0); return; } diff --git a/build/patches/Disable-Android-Tab-Declutter.patch b/build/patches/Disable-Android-Tab-Declutter.patch index 2cac7e7c6..c84cedfb5 100644 --- a/build/patches/Disable-Android-Tab-Declutter.patch +++ b/build/patches/Disable-Android-Tab-Declutter.patch @@ -14,10 +14,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -98,7 +98,8 @@ found in the LICENSE file. +@@ -104,7 +104,8 @@ found in the LICENSE file. android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings" android:key="tabs" - android:order="18" + android:order="19" - android:title="@string/tabs_settings_title"/> + android:title="@string/tabs_settings_title" + app:isPreferenceVisible="false"/> diff --git a/build/patches/Disable-CSS-blink-feature-support.patch b/build/patches/Disable-CSS-blink-feature-support.patch index 3efc2ddb5..3bfc02269 100644 --- a/build/patches/Disable-CSS-blink-feature-support.patch +++ b/build/patches/Disable-CSS-blink-feature-support.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc --- a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc +++ b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc -@@ -298,7 +298,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) { +@@ -302,7 +302,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) { feature_name.Value().Utf8()) && guard.Release()) { stream.ConsumeWhitespace(); diff --git a/build/patches/Disable-CSSDynamicRangeLimit.patch b/build/patches/Disable-CSSDynamicRangeLimit.patch index b5881f69b..d168f3a4a 100644 --- a/build/patches/Disable-CSSDynamicRangeLimit.patch +++ b/build/patches/Disable-CSSDynamicRangeLimit.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -1507,7 +1507,7 @@ +@@ -1578,7 +1578,7 @@ }, { name: "CSSDynamicRangeLimit", diff --git a/build/patches/Disable-Compose-feature.patch b/build/patches/Disable-Compose-feature.patch index 4354337d7..7a01685ae 100644 --- a/build/patches/Disable-Compose-feature.patch +++ b/build/patches/Disable-Compose-feature.patch @@ -21,7 +21,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui #include "chrome/browser/glic/public/glic_enabling.h" #include "chrome/browser/glic/public/glic_keyed_service.h" #include "chrome/browser/history_embeddings/history_embeddings_utils.h" -@@ -369,7 +369,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -367,7 +367,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) base::FeatureList::IsEnabled(permissions::features::kKeyboardLockPrompt)); #if BUILDFLAG(ENABLE_COMPOSE) diff --git a/build/patches/Disable-Compression-Dictionary-Transport.patch b/build/patches/Disable-Compression-Dictionary-Transport.patch index 0a26f3c54..5ad17a224 100644 --- a/build/patches/Disable-Compression-Dictionary-Transport.patch +++ b/build/patches/Disable-Compression-Dictionary-Transport.patch @@ -12,7 +12,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 -@@ -1527,8 +1527,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( +@@ -1569,8 +1569,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( registry->RegisterBooleanPref(prefs::kSandboxExternalProtocolBlocked, true); registry->RegisterBooleanPref(prefs::kSSLErrorOverrideAllowed, true); registry->RegisterListPref(prefs::kSSLErrorOverrideAllowedForOrigins); diff --git a/build/patches/Disable-FedCm.patch b/build/patches/Disable-FedCm.patch index 300daf8bb..1e03f951e 100644 --- a/build/patches/Disable-FedCm.patch +++ b/build/patches/Disable-FedCm.patch @@ -47,7 +47,7 @@ new file mode 100644 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 -@@ -2462,7 +2462,7 @@ +@@ -2544,7 +2544,7 @@ { name: "FedCm", public: true, diff --git a/build/patches/Disable-GSA-by-default.patch b/build/patches/Disable-GSA-by-default.patch index 0e5a6be53..5f30f37ff 100644 --- a/build/patches/Disable-GSA-by-default.patch +++ b/build/patches/Disable-GSA-by-default.patch @@ -28,7 +28,7 @@ diff --git a/base/android/java/src/org/chromium/base/PackageUtils.java b/base/an diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java -@@ -51,7 +51,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity; +@@ -52,7 +52,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity; import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler; import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler.RequestMetadata; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.pdf.PdfUtils; import org.chromium.chrome.browser.profiles.Profile; -@@ -310,9 +309,6 @@ public class IntentHandler { +@@ -321,9 +320,6 @@ public class IntentHandler { public static final String EXTRA_TIPS_NOTIFICATION_FEATURE_TYPE = "org.chromium.chrome.browser.tips_notification_feature_type"; @@ -46,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j /** Action to launch the Chrome Item Picker UI, e.g.: tabs. */ public static final String EXTRA_OPEN_CHROME_ITEM_PICKER = "org.chromium.chrome.browser.actions.open_chrome_item_picker"; -@@ -573,8 +569,6 @@ public class IntentHandler { +@@ -584,8 +580,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (PACKAGE_WHATSAPP.equals(packageName)) { return ExternalAppId.WHATSAPP; @@ -232,7 +232,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java --- a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java +++ b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java -@@ -351,7 +351,7 @@ public class PdfCoordinator implements PdfActionsDelegate { +@@ -396,7 +396,7 @@ public class PdfCoordinator implements PdfActionsDelegate, PdfToolbarActionsDele } @Nullable String requestAssistContent(String filename, boolean isWorkProfile) { diff --git a/build/patches/Disable-GetInstalledRelatedApps-API.patch b/build/patches/Disable-GetInstalledRelatedApps-API.patch index 6bbcba425..ef232722e 100644 --- a/build/patches/Disable-GetInstalledRelatedApps-API.patch +++ b/build/patches/Disable-GetInstalledRelatedApps-API.patch @@ -58,7 +58,7 @@ new file mode 100644 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 -@@ -3266,9 +3266,8 @@ +@@ -3386,9 +3386,8 @@ status: "stable", }, { diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index bb83d85ad..c816c52e8 100644 --- a/build/patches/Disable-PrivacyGuide.patch +++ b/build/patches/Disable-PrivacyGuide.patch @@ -23,7 +23,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi 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 -@@ -2158,7 +2158,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2107,7 +2107,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref(webauthn::pref_names::kAllowWithBrokenCerts, false); @@ -35,7 +35,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc -@@ -342,8 +342,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -344,8 +344,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // BUILDFLAG(IS_CHROMEOS) bool show_privacy_guide = diff --git a/build/patches/Disable-Read-Aloud-by-default.patch b/build/patches/Disable-Read-Aloud-by-default.patch index 724590a22..e01686b82 100644 --- a/build/patches/Disable-Read-Aloud-by-default.patch +++ b/build/patches/Disable-Read-Aloud-by-default.patch @@ -11,7 +11,7 @@ Subject: Disable Read Aloud by default 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 -@@ -1505,7 +1505,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1444,7 +1444,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(policy::policy_prefs::kBackForwardCacheEnabled, true); diff --git a/build/patches/Disable-Real-Box.patch b/build/patches/Disable-Real-Box.patch index 1e1ce7008..f06f92bfd 100644 --- a/build/patches/Disable-Real-Box.patch +++ b/build/patches/Disable-Real-Box.patch @@ -4,16 +4,16 @@ Subject: Disable Real Box Real-box is search box in ntp --- - chrome/browser/prefs/browser_prefs.cc | 2 +- - .../browser/resources/new_tab_page/app.html | 19 +------------------ - .../searchbox/searchbox_handler.cc | 1 + - components/search/ntp_features.cc | 4 ++-- - 4 files changed, 5 insertions(+), 21 deletions(-) + chrome/browser/prefs/browser_prefs.cc | 2 +- + chrome/browser/resources/new_tab_page/app.html | 18 +----------------- + .../searchbox/searchbox_handler.cc | 2 ++ + components/search/ntp_features.cc | 4 ++-- + 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -2130,7 +2130,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2079,7 +2079,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref( prefs::kLensRegionSearchEnabled, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); @@ -25,7 +25,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html --- a/chrome/browser/resources/new_tab_page/app.html +++ b/chrome/browser/resources/new_tab_page/app.html -@@ -43,24 +43,7 @@ import {nothing} from '//resources/lit/v3_0/lit.rollup.js'; +@@ -43,23 +43,7 @@ import {SubmitButtonIconType} from '//resources/cr_components/composebox/compose
@@ -37,11 +37,10 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res - @open-voice-search="${this.onOpenVoiceSearch_}" ?shown="${this.realboxShown_}" - ?had-secondary-side="${this.realboxHadSecondarySide}" - @had-secondary-side-changed="${this.onRealboxHadSecondarySideChanged_}" -- @context-menu-entrypoint-click="${this.onContextMenuEntrypointClick_}" - ?can-show-secondary-side="${this.realboxCanShowSecondarySide}" - ?compose-button-enabled="${this.composeButtonEnabled}" - ?composebox-enabled="${this.composeboxEnabled}" -- searchbox-layout-mode="${this.realboxLayoutMode_}" +- searchbox-layout-mode="${this.ntpRealboxNextEnabled_ ? 'Compact' : ''}" - ?ntp-realbox-next-enabled="${this.ntpRealboxNextEnabled_}" - ?cycling-placeholders="${this.searchboxCyclingPlaceholders_}" - context-menu-glif-animation-state="${this.contextMenuGlifAnimationState_}" @@ -54,14 +53,15 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res diff --git a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc --- a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc +++ b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc -@@ -307,6 +307,7 @@ void SearchboxHandler::SetupWebUIDataSource(content::WebUIDataSource* source, - bool enable_voice_search, - bool enable_lens_search, - bool session_allows_drag_and_drop) { -+ enable_lens_search = false; +@@ -321,6 +321,8 @@ base::DictValue SearchboxHandler::GetWebUIDataSourceDict(Profile* profile) { + base::DictValue SearchboxHandler::GetWebUIDataSourceDict( + Profile* profile, + WebUIDataSourceOptions options) { ++ options.enable_lens_search = false; ++ options.enable_voice_search = false; + base::DictValue dict; + // The WebUI Omnibox code will override this to `true` to adjust various - // color and layout options. - source->AddBoolean("isTopChromeSearchbox", false); diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc --- a/components/search/ntp_features.cc +++ b/components/search/ntp_features.cc diff --git a/build/patches/Disable-Sticky-User-Activation-Across-Same-Origin-Navigation.patch b/build/patches/Disable-Sticky-User-Activation-Across-Same-Origin-Navigation.patch index 3d09ad175..ca9ec9d48 100644 --- a/build/patches/Disable-Sticky-User-Activation-Across-Same-Origin-Navigation.patch +++ b/build/patches/Disable-Sticky-User-Activation-Across-Same-Origin-Navigation.patch @@ -14,7 +14,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -5384,8 +5384,8 @@ +@@ -5510,8 +5510,8 @@ { // Preserves the sticky user activation state after a page navigates to // another same-origin page. https://crbug.com/433729626 diff --git a/build/patches/Disable-TLS-resumption.patch b/build/patches/Disable-TLS-resumption.patch index 36f472bd8..832338fe6 100644 --- a/build/patches/Disable-TLS-resumption.patch +++ b/build/patches/Disable-TLS-resumption.patch @@ -90,7 +90,7 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc --- a/net/quic/quic_session_pool.cc +++ b/net/quic/quic_session_pool.cc -@@ -380,6 +380,38 @@ base::TimeDelta GetAdditionalDelayForMainJob() { +@@ -384,6 +384,38 @@ base::TimeDelta GetAdditionalDelayForMainJob() { } // namespace @@ -129,7 +129,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {} QuicSessionRequest::~QuicSessionRequest() { -@@ -2429,8 +2461,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { +@@ -2484,8 +2516,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { cert_verifier_, transport_security_state_, sct_auditing_delegate_, std::move(hostnames_to_allow_unknown_roots), key.network_anonymization_key), diff --git a/build/patches/Disable-UA-full-version.patch b/build/patches/Disable-UA-full-version.patch index 89fa33f93..10da66457 100644 --- a/build/patches/Disable-UA-full-version.patch +++ b/build/patches/Disable-UA-full-version.patch @@ -23,7 +23,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ #include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/core/v8/v8_ua_data_values.h" -@@ -17,6 +20,20 @@ +@@ -16,6 +19,20 @@ namespace blink { @@ -44,16 +44,16 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ NavigatorUAData::NavigatorUAData(ExecutionContext* context) : ExecutionContextClient(context) { NavigatorUABrandVersion* dict = NavigatorUABrandVersion::Create(); -@@ -53,7 +70,7 @@ void NavigatorUAData::SetFullVersionList( +@@ -52,7 +69,7 @@ void NavigatorUAData::SetFullVersionList( const UserAgentBrandList& full_version_list) { for (const auto& brand_version : full_version_list) { - AddBrandFullVersion(String::FromUTF8(brand_version.brand), -- String::FromUTF8(brand_version.version)); -+ GetReducedVersionNumber(brand_version.version)); + AddBrandFullVersion(String::FromUtf8(brand_version.brand), +- String::FromUtf8(brand_version.version)); ++ GetReducedVersionNumber(brand_version.version)); } } -@@ -75,7 +92,7 @@ void NavigatorUAData::SetModel(const String& model) { +@@ -74,7 +91,7 @@ void NavigatorUAData::SetModel(const String& model) { } void NavigatorUAData::SetUAFullVersion(const String& ua_full_version) { diff --git a/build/patches/Disable-Viewport-Segments.patch b/build/patches/Disable-Viewport-Segments.patch index fc9b9c277..5fc689e45 100644 --- a/build/patches/Disable-Viewport-Segments.patch +++ b/build/patches/Disable-Viewport-Segments.patch @@ -21,7 +21,7 @@ new file mode 100644 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 -@@ -6054,8 +6054,7 @@ +@@ -6174,8 +6174,7 @@ status: "stable", }, { diff --git a/build/patches/Disable-WebGPU.patch b/build/patches/Disable-WebGPU.patch index dd15bf78c..dc85b079f 100644 --- a/build/patches/Disable-WebGPU.patch +++ b/build/patches/Disable-WebGPU.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -528,6 +528,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -531,6 +531,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( WebRuntimeFeatures::EnableRemotePlayback(false); @@ -24,7 +24,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -205,7 +205,7 @@ BASE_FEATURE(kEnableDrDc, +@@ -215,7 +215,7 @@ BASE_FEATURE(kEnableDrDc, // enabled by default on supported platforms. #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || \ BUILDFLAG(IS_ANDROID) || BUILDFLAG(USE_WEBGPU_ON_VULKAN_VIA_GL_INTEROP) diff --git a/build/patches/Disable-all-promo-dialogs.patch b/build/patches/Disable-all-promo-dialogs.patch index 08be67928..8ea8b176f 100644 --- a/build/patches/Disable-all-promo-dialogs.patch +++ b/build/patches/Disable-all-promo-dialogs.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/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 -@@ -2065,6 +2065,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -2185,6 +2185,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } private boolean maybeShowPromo(Profile profile) { @@ -26,7 +26,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -191,7 +191,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -193,7 +193,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled, false); diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index fc39397a0..2b2a416b9 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1371,6 +1371,7 @@ network::mojom::AttributionSupport +@@ -1380,6 +1380,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, bool client_os_disabled) { @@ -61,7 +61,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv // WebView only supports OS-level attribution and not web-attribution. switch (state) { case AttributionReportingOsApiState::kDisabled: -@@ -1389,6 +1390,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -1398,6 +1399,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -79,10 +79,10 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.ja private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW; - private int mAttributionBehavior = AttributionBehavior.APP_SOURCE_AND_WEB_TRIGGER; + private int mAttributionBehavior = AttributionBehavior.DISABLED; + private boolean mIgnoreDuplicateNavEnabled; + private int mIgnoreDuplicateNavThresholdMs = -1; - @SpeculativeLoadingAllowedFlags - private int mSpeculativeLoadingAllowedFlags = -@@ -1820,7 +1820,7 @@ public class AwSettings { +@@ -1868,7 +1868,7 @@ public class AwSettings { public void setAttributionBehavior(@AttributionBehavior int behavior) { synchronized (mAwSettingsLock) { if (mAttributionBehavior != behavior) { @@ -115,7 +115,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro @@ -30,7 +30,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -1149,7 +1149,7 @@ void ToolbarView::Update(WebContents* tab) { +@@ -1153,7 +1153,7 @@ void ToolbarView::Update(WebContents* tab) { if (ReloadControl* reload_control = GetReloadButton(); reload_control) { reload_control->SetDevToolsStatus( diff --git a/build/patches/Enable-network-isolation-features.patch b/build/patches/Enable-network-isolation-features.patch index b5257dd01..58f1e6533 100644 --- a/build/patches/Enable-network-isolation-features.patch +++ b/build/patches/Enable-network-isolation-features.patch @@ -21,7 +21,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -459,8 +459,8 @@ bool GetHttpCacheBackendResetParam(PrefService* local_state) { +@@ -458,8 +458,8 @@ bool GetHttpCacheBackendResetParam(PrefService* local_state) { experiment_parts.push_back(kDiskCacheExperimentNameNone); // SplitCacheByIncludeCredentials experiment: experiment_parts.push_back(credentials_field_trial diff --git a/build/patches/Enable-platform-aac-audio-and-h264-video.patch b/build/patches/Enable-platform-aac-audio-and-h264-video.patch index 447fbb9a3..ef30a18df 100644 --- a/build/patches/Enable-platform-aac-audio-and-h264-video.patch +++ b/build/patches/Enable-platform-aac-audio-and-h264-video.patch @@ -62,15 +62,15 @@ diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid. diff --git a/media/base/android/media_codec_util.cc b/media/base/android/media_codec_util.cc --- a/media/base/android/media_codec_util.cc +++ b/media/base/android/media_codec_util.cc -@@ -15,6 +15,7 @@ - #include "base/logging.h" +@@ -16,6 +16,7 @@ + #include "base/numerics/safe_conversions.h" #include "base/strings/string_util.h" #include "base/system/sys_info.h" +#include "media/media_buildflags.h" #include "media/base/android/media_codec_bridge.h" #include "media/base/video_codecs.h" #include "third_party/re2/src/re2/re2.h" -@@ -102,6 +103,9 @@ std::string MediaCodecUtil::CodecToAndroidMimeType(AudioCodec codec) { +@@ -127,6 +128,9 @@ std::string MediaCodecUtil::CodecToAndroidMimeType(AudioCodec codec) { // static std::string MediaCodecUtil::CodecToAndroidMimeType(AudioCodec codec, SampleFormat sample_format) { @@ -98,7 +98,7 @@ diff --git a/media/base/win/mf_helpers.cc b/media/base/win/mf_helpers.cc diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc --- a/media/filters/ffmpeg_audio_decoder.cc +++ b/media/filters/ffmpeg_audio_decoder.cc -@@ -96,6 +96,16 @@ void FFmpegAudioDecoder::Initialize(const AudioDecoderConfig& config, +@@ -127,6 +127,16 @@ void FFmpegAudioDecoder::Initialize(const AudioDecoderConfig& config, return; } @@ -118,7 +118,7 @@ diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_ diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc -@@ -727,6 +727,7 @@ void FFmpegDemuxerStream::InitBitstreamConverter() { +@@ -728,6 +728,7 @@ void FFmpegDemuxerStream::InitBitstreamConverter() { // FFmpeg doesn't understand xHE-AAC profiles yet, which can't be put in // ADTS anyways, so skip bitstream conversion when the profile is // unknown. @@ -221,8 +221,8 @@ diff --git a/media/gpu/windows/supported_profile_helpers.cc b/media/gpu/windows/ diff --git a/media/media_options.gni b/media/media_options.gni --- a/media/media_options.gni +++ b/media/media_options.gni -@@ -64,6 +64,14 @@ declare_args() { - media_use_libvpx = false +@@ -65,6 +65,14 @@ declare_args() { + media_use_symphonia = false } + # Enables AAC audio decoder using only MediaCodecAudioDecoder in Android diff --git a/build/patches/Enable-share-intent.patch b/build/patches/Enable-share-intent.patch index b85599440..222189b6a 100644 --- a/build/patches/Enable-share-intent.patch +++ b/build/patches/Enable-share-intent.patch @@ -35,7 +35,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -596,6 +596,7 @@ chrome_java_resources = [ +@@ -606,6 +606,7 @@ chrome_java_resources = [ "java/res/layout/shopping_accessory_view_layout.xml", "java/res/layout/status_indicator_container.xml", "java/res/layout/suggestions_tile_view_condensed.xml", @@ -46,10 +46,10 @@ 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 -@@ -1072,6 +1072,7 @@ chrome_java_sources = [ +@@ -1087,6 +1087,7 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/signin/SigninBridge.java", "java/src/org/chromium/chrome/browser/signin/SigninCheckerProvider.java", "java/src/org/chromium/chrome/browser/signin/SigninFirstRunFragment.java", - "java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java", + "java/src/org/chromium/chrome/browser/sharing/shared_intent/SharedIntentShareActivity.java", "java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java", "java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java", @@ -57,7 +57,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -279,12 +279,6 @@ by a child template that "extends" this file. +@@ -271,12 +271,6 @@ by a child template that "extends" this file. @@ -70,7 +70,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -363,6 +357,10 @@ by a child template that "extends" this file. +@@ -355,6 +349,10 @@ by a child template that "extends" this file. @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -399,6 +397,24 @@ by a child template that "extends" this file. +@@ -391,6 +389,24 @@ by a child template that "extends" this file. @@ -202,7 +202,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java -@@ -204,6 +204,9 @@ public class IntentHandler { +@@ -215,6 +215,9 @@ public class IntentHandler { private static final String EXTRA_TAB_LAUNCH_TYPE = "org.chromium.chrome.browser.tab_launch_type"; @@ -212,8 +212,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j /** A hash code for the URL to verify intent data hasn't been modified. */ public static final String EXTRA_DATA_HASH_CODE = "org.chromium.chrome.browser.data_hash"; -@@ -1541,6 +1544,17 @@ public class IntentHandler { - return IntentUtils.safeGetIntExtra(intent, EXTRA_DEST_TAB_ID, Tab.INVALID_TAB_ID); +@@ -1636,6 +1639,17 @@ public class IntentHandler { + return (tabContext instanceof Activity) ? (Activity) tabContext : null; } + public static void setForceIncognitoMode(Intent intent) { @@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j /** * Creates an Intent that will launch a ChromeTabbedActivity on the new tab page. The Intent * will be trusted and therefore able to launch Incognito tabs. -@@ -1751,7 +1765,7 @@ public class IntentHandler { +@@ -1857,7 +1871,7 @@ public class IntentHandler { String headers = getExtraHeadersFromIntent(intent); headers = maybeAddAdditionalContentHeaders(intent, url, headers); @@ -290,7 +290,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/Chrome 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 -@@ -110,6 +110,7 @@ import org.chromium.chrome.browser.tabmodel.TabPersistentStoreImpl; +@@ -109,6 +109,7 @@ import org.chromium.chrome.browser.tabmodel.TabPersistentStoreImpl; import org.chromium.chrome.browser.ui.cars.DrivingRestrictionsManager; import org.chromium.chrome.browser.ui.hats.SurveyClientFactory; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityPreferencesManager; @@ -298,7 +298,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni import org.chromium.chrome.browser.usb.UsbNotificationManager; import org.chromium.chrome.browser.util.AfterStartupTaskUtils; import org.chromium.chrome.browser.webapps.ChromeWebApkHost; -@@ -705,6 +706,7 @@ public class ProcessInitializationHandler { +@@ -702,6 +703,7 @@ public class ProcessInitializationHandler { tasks.add(WebApkUninstallTracker::runDeferredTasks); @@ -473,19 +473,19 @@ 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 -@@ -418,6 +418,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -435,6 +435,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kRelatedSearchesAllLanguage, &kRelatedSearchesSwitch, &kReloadTabUiResourcesIfChanged, + &kSharedIntentUI, &kRemoveTabFocusOnShowingAndSelect, &kRightEdgeGoesForwardGestureNav, - &kRobustWindowManagement, + &kRobustWindowManagementExperimental, 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 -@@ -585,6 +585,7 @@ public abstract class ChromeFeatureList { - public static final String RECENTLY_CLOSED_TABS_AND_WINDOWS = "RecentlyClosedTabsAndWindows"; +@@ -602,6 +602,7 @@ public abstract class ChromeFeatureList { + public static final String READALOUD_PLAYBACK = "ReadAloudPlayback"; public static final String RECORD_INCOGNITO_NTP_TIME_TO_FIRST_NAVIGATION_METRIC = "RecordIncognitoNtpTimeToFirstNavigationMetric"; + public static final String SHARED_INTENT_UI = "SharedIntentUI"; @@ -495,7 +495,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 -@@ -6610,6 +6610,19 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6595,6 +6595,19 @@ To change this setting, BEGIN_LINKdelete the Chrome d Make sure a phone app is enabled on this device diff --git a/build/patches/Enable-snackbar-swipe.patch b/build/patches/Enable-snackbar-swipe.patch index 35b314f6d..73eed35b2 100644 --- a/build/patches/Enable-snackbar-swipe.patch +++ b/build/patches/Enable-snackbar-swipe.patch @@ -30,7 +30,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; import android.widget.FrameLayout; -@@ -35,6 +38,8 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarSwipeHandler.Del +@@ -36,6 +39,8 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarSwipeHandler.Del import org.chromium.chrome.ui.messages.R; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.gesture.SwipeGestureListener; @@ -39,7 +39,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro import org.chromium.components.browser_ui.widget.text.TemplatePreservingTextView; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.insets.InsetObserver; -@@ -47,7 +52,7 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -48,7 +53,7 @@ import org.chromium.ui.interpolators.Interpolators; // TODO (jianli): Change this class and its methods back to package protected after the offline // indicator experiment is done. @NullMarked @@ -48,7 +48,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro private static final int MAX_LINES = 5; private static final int DEFAULT_LINES = 2; -@@ -92,6 +97,16 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -96,6 +101,16 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { } }; @@ -65,7 +65,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro /** * Creates an instance of the {@link SnackbarView}. * -@@ -145,21 +160,15 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -151,21 +166,15 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { adjustViewPosition(); } }); @@ -94,7 +94,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro mSnackbarView = mContainerView.findViewById(R.id.snackbar); mAnimationDuration = mContainerView.getResources().getInteger(android.R.integer.config_mediumAnimTime); -@@ -292,6 +301,60 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { +@@ -311,6 +320,60 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { return mContainerView.isShown(); } diff --git a/build/patches/Enables-deactivation-of-the-js-debugger-statement.patch b/build/patches/Enables-deactivation-of-the-js-debugger-statement.patch index 88dca2341..5fba68f1e 100644 --- a/build/patches/Enables-deactivation-of-the-js-debugger-statement.patch +++ b/build/patches/Enables-deactivation-of-the-js-debugger-statement.patch @@ -7,7 +7,7 @@ deactivating the debugger javascript statement License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../src/front_end/core/sdk/DebuggerModel.ts | 9 ++++++++ + .../src/front_end/core/sdk/DebuggerModel.ts | 8 +++++++ .../src/front_end/core/sdk/sdk-meta.ts | 23 +++++++++++++++++++ .../generated/InspectorBackendCommands.ts | 4 ++++ .../front_end/generated/protocol-mapping.d.ts | 4 ++++ @@ -23,41 +23,40 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html v8/src/inspector/v8-debugger-agent-impl.cc | 8 +++++++ v8/src/inspector/v8-debugger-agent-impl.h | 1 + v8/src/runtime/runtime-debug.cc | 17 ++++++++++++-- - 16 files changed, 101 insertions(+), 5 deletions(-) + 16 files changed, 100 insertions(+), 5 deletions(-) diff --git a/third_party/devtools-frontend/src/front_end/core/sdk/DebuggerModel.ts b/third_party/devtools-frontend/src/front_end/core/sdk/DebuggerModel.ts --- a/third_party/devtools-frontend/src/front_end/core/sdk/DebuggerModel.ts +++ b/third_party/devtools-frontend/src/front_end/core/sdk/DebuggerModel.ts -@@ -185,6 +185,9 @@ export class DebuggerModel extends SDKModel { - Common.Settings.Settings.instance() - .moduleSetting('disable-async-stack-traces') - .addChangeListener(this.asyncStackTracesStateChanged, this); -+ Common.Settings.Settings.instance() -+ .moduleSetting('disableDebuggerStatement') -+ .addChangeListener(this.DebuggerStatementChanged, this); - Common.Settings.Settings.instance() - .moduleSetting('breakpoints-active') - .addChangeListener(this.breakpointsActiveChanged, this); -@@ -198,6 +201,7 @@ export class DebuggerModel extends SDKModel { - Common.Settings.Settings.instance() - .moduleSetting('js-source-maps-enabled') +@@ -179,6 +179,7 @@ export class DebuggerModel extends SDKModel { + settings.moduleSetting('pause-on-uncaught-exception').addChangeListener(this.pauseOnExceptionStateChanged, this); + settings.moduleSetting('disable-async-stack-traces').addChangeListener(this.asyncStackTracesStateChanged, this); + settings.moduleSetting('breakpoints-active').addChangeListener(this.breakpointsActiveChanged, this); ++ settings.moduleSetting('disableDebuggerStatement').addChangeListener(this.debuggerStatementChanged, this); + + if (!target.suspended()) { + void this.enableDebugger(); +@@ -187,6 +188,7 @@ export class DebuggerModel extends SDKModel { + this.#sourceMapManager.setEnabled(settings.moduleSetting('js-source-maps-enabled').get()); + settings.moduleSetting('js-source-maps-enabled') .addChangeListener(event => this.#sourceMapManager.setEnabled((event.data as boolean))); -+ this.DebuggerStatementChanged(); ++ this.debuggerStatementChanged(); const resourceTreeModel = (target.model(ResourceTreeModel) as ResourceTreeModel); if (resourceTreeModel) { -@@ -389,6 +393,11 @@ export class DebuggerModel extends SDKModel { +@@ -379,6 +381,12 @@ export class DebuggerModel extends SDKModel { return this.agent.invoke_setAsyncCallStackDepth({maxDepth}); } -+ private DebuggerStatementChanged(): Promise { -+ const enabled = !Common.Settings.Settings.instance().moduleSetting('disableDebuggerStatement').get(); ++ private debuggerStatementChanged(): Promise { ++ const settings = this.target().targetManager().settings; ++ const enabled = !settings.moduleSetting('disableDebuggerStatement').get(); + return this.agent.invoke_setDebuggerStatementEnabled({enabled}); + } + private breakpointsActiveChanged(): void { - void this.agent.invoke_setBreakpointsActive( - {active: Common.Settings.Settings.instance().moduleSetting('breakpoints-active').get()}); + const settings = this.target().targetManager().settings; + void this.agent.invoke_setBreakpointsActive({active: settings.moduleSetting('breakpoints-active').get()}); diff --git a/third_party/devtools-frontend/src/front_end/core/sdk/sdk-meta.ts b/third_party/devtools-frontend/src/front_end/core/sdk/sdk-meta.ts --- a/third_party/devtools-frontend/src/front_end/core/sdk/sdk-meta.ts +++ b/third_party/devtools-frontend/src/front_end/core/sdk/sdk-meta.ts @@ -101,7 +100,7 @@ diff --git a/third_party/devtools-frontend/src/front_end/core/sdk/sdk-meta.ts b/ diff --git a/third_party/devtools-frontend/src/front_end/generated/InspectorBackendCommands.ts b/third_party/devtools-frontend/src/front_end/generated/InspectorBackendCommands.ts --- a/third_party/devtools-frontend/src/front_end/generated/InspectorBackendCommands.ts +++ b/third_party/devtools-frontend/src/front_end/generated/InspectorBackendCommands.ts -@@ -1548,6 +1548,10 @@ inspectorBackend.registerCommand("Debugger.resume", [{"name": "terminateOnResume +@@ -1531,6 +1531,10 @@ inspectorBackend.registerCommand("Debugger.resume", [{"name": "terminateOnResume inspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false, "description": "Id of the script to search in.", "typeRef": "Runtime.ScriptId"}, {"name": "query", "type": "string", "optional": false, "description": "String to search for.", "typeRef": null}, {"name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive.", "typeRef": null}, {"name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex.", "typeRef": null}], ["result"], "Searches for given string in script content."); inspectorBackend.registerCommand("Debugger.setAsyncCallStackDepth", [{"name": "maxDepth", "type": "number", "optional": false, "description": "Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async call stacks (default).", "typeRef": null}], [], "Enables or disables async call stacks tracking."); inspectorBackend.registerCommand("Debugger.setBlackboxExecutionContexts", [{"name": "uniqueIds", "type": "array", "optional": false, "description": "Array of execution context unique ids for the debugger to ignore.", "typeRef": "string"}], [], "Replace previous blackbox execution contexts with passed ones. Forces backend to skip stepping/pausing in scripts in these execution contexts. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful."); @@ -115,7 +114,7 @@ diff --git a/third_party/devtools-frontend/src/front_end/generated/InspectorBack diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol-mapping.d.ts b/third_party/devtools-frontend/src/front_end/generated/protocol-mapping.d.ts --- a/third_party/devtools-frontend/src/front_end/generated/protocol-mapping.d.ts +++ b/third_party/devtools-frontend/src/front_end/generated/protocol-mapping.d.ts -@@ -5511,6 +5511,10 @@ export namespace ProtocolMapping { +@@ -5523,6 +5523,10 @@ export namespace ProtocolMapping { paramsType: [Protocol.Debugger.SetBlackboxExecutionContextsRequest]; returnType: void; }; @@ -129,7 +128,7 @@ diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol-mapp diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol-proxy-api.d.ts b/third_party/devtools-frontend/src/front_end/generated/protocol-proxy-api.d.ts --- a/third_party/devtools-frontend/src/front_end/generated/protocol-proxy-api.d.ts +++ b/third_party/devtools-frontend/src/front_end/generated/protocol-proxy-api.d.ts -@@ -4957,6 +4957,8 @@ declare namespace ProtocolProxyApi { +@@ -4987,6 +4987,8 @@ declare namespace ProtocolProxyApi { */ invoke_setBlackboxExecutionContexts(params: Protocol.Debugger.SetBlackboxExecutionContextsRequest): Promise; @@ -141,7 +140,7 @@ diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol-prox diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol.ts b/third_party/devtools-frontend/src/front_end/generated/protocol.ts --- a/third_party/devtools-frontend/src/front_end/generated/protocol.ts +++ b/third_party/devtools-frontend/src/front_end/generated/protocol.ts -@@ -21087,6 +21087,10 @@ export namespace Debugger { +@@ -20945,6 +20945,10 @@ export namespace Debugger { uniqueIds: string[]; } @@ -155,7 +154,7 @@ diff --git a/third_party/devtools-frontend/src/front_end/generated/protocol.ts b diff --git a/third_party/devtools-frontend/src/third_party/blink/public/devtools_protocol/browser_protocol.json b/third_party/devtools-frontend/src/third_party/blink/public/devtools_protocol/browser_protocol.json --- a/third_party/devtools-frontend/src/third_party/blink/public/devtools_protocol/browser_protocol.json +++ b/third_party/devtools-frontend/src/third_party/blink/public/devtools_protocol/browser_protocol.json -@@ -31997,8 +31997,17 @@ +@@ -31482,8 +31482,17 @@ "$ref": "WasmDisassemblyChunk" } ] @@ -175,7 +174,7 @@ diff --git a/third_party/devtools-frontend/src/third_party/blink/public/devtools "name": "nextWasmDisassemblyChunk", "description": "Disassemble the next chunk of lines for the module corresponding to the\nstream. If disassembly is complete, this API will invalidate the streamId\nand return an empty chunk. Any subsequent calls for the now invalid stream\nwill return errors.", "experimental": true, -@@ -35188,4 +35197,4 @@ +@@ -34673,4 +34682,4 @@ ] } ] @@ -199,7 +198,7 @@ diff --git a/v8/include/js_protocol.pdl b/v8/include/js_protocol.pdl diff --git a/v8/src/common/message-template.h b/v8/src/common/message-template.h --- a/v8/src/common/message-template.h +++ b/v8/src/common/message-template.h -@@ -778,6 +778,7 @@ namespace internal { +@@ -784,6 +784,7 @@ namespace internal { /* AggregateError */ \ T(AllPromisesRejected, "All promises were rejected") \ T(CannotDeepFreezeObject, "Cannot DeepFreeze object of type %") \ @@ -210,7 +209,7 @@ diff --git a/v8/src/common/message-template.h b/v8/src/common/message-template.h diff --git a/v8/src/debug/debug-interface.cc b/v8/src/debug/debug-interface.cc --- a/v8/src/debug/debug-interface.cc +++ b/v8/src/debug/debug-interface.cc -@@ -1090,6 +1090,11 @@ void SetAsyncEventDelegate(Isolate* v8_isolate, AsyncEventDelegate* delegate) { +@@ -1101,6 +1101,11 @@ void SetAsyncEventDelegate(Isolate* v8_isolate, AsyncEventDelegate* delegate) { reinterpret_cast(v8_isolate)->set_async_event_delegate(delegate); } @@ -260,7 +259,7 @@ diff --git a/v8/src/debug/debug.h b/v8/src/debug/debug.h diff --git a/v8/src/execution/messages.cc b/v8/src/execution/messages.cc --- a/v8/src/execution/messages.cc +++ b/v8/src/execution/messages.cc -@@ -488,6 +488,7 @@ MaybeHandle MessageFormatter::TryFormat( +@@ -495,6 +495,7 @@ MaybeHandle MessageFormatter::TryFormat( MessageTemplate::kUndefinedOrNullToObject, MessageTemplate::kUnexpectedStrictReserved, MessageTemplate::kUnexpectedTokenIdentifier, @@ -271,7 +270,7 @@ diff --git a/v8/src/execution/messages.cc b/v8/src/execution/messages.cc diff --git a/v8/src/inspector/v8-debugger-agent-impl.cc b/v8/src/inspector/v8-debugger-agent-impl.cc --- a/v8/src/inspector/v8-debugger-agent-impl.cc +++ b/v8/src/inspector/v8-debugger-agent-impl.cc -@@ -1697,6 +1697,14 @@ Response V8DebuggerAgentImpl::setAsyncCallStackDepth(int depth) { +@@ -1703,6 +1703,14 @@ Response V8DebuggerAgentImpl::setAsyncCallStackDepth(int depth) { return Response::Success(); } diff --git a/build/patches/Enables-keyword-based-site-search-on-Android-devices.patch b/build/patches/Enables-keyword-based-site-search-on-Android-devices.patch index 32bc496cc..f36fce91a 100644 --- a/build/patches/Enables-keyword-based-site-search-on-Android-devices.patch +++ b/build/patches/Enables-keyword-based-site-search-on-Android-devices.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java b/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java --- a/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java +++ b/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java -@@ -125,7 +125,7 @@ public class OmniboxFeatures { +@@ -128,7 +128,7 @@ public class OmniboxFeatures { newFlag(OmniboxFeatureList.POST_DELAYED_TASK_FOCUS_TAB, FeatureState.ENABLED_IN_PROD); public static final CachedFlag sOmniboxSiteSearch = diff --git a/build/patches/Experimental-user-scripts-support.patch b/build/patches/Experimental-user-scripts-support.patch index ef37a2847..eefae6136 100644 --- a/build/patches/Experimental-user-scripts-support.patch +++ b/build/patches/Experimental-user-scripts-support.patch @@ -242,7 +242,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn ":chrome_base_module_resources", ":ui_locale_string_resources", "//chrome/android/webapk/libs/common:splash_resources", -@@ -724,6 +728,7 @@ if (_is_default_toolchain) { +@@ -729,6 +733,7 @@ if (_is_default_toolchain) { "//components/ukm/android:java", "//components/url_formatter/android:url_formatter_java", "//components/user_prefs/android:java", @@ -250,7 +250,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/variations:variations_java", "//components/variations/android:variations_java", "//components/viz/service:service_java", -@@ -1755,6 +1760,7 @@ if (_is_default_toolchain) { +@@ -1769,6 +1774,7 @@ if (_is_default_toolchain) { java_group("chrome_public_non_pak_assets") { deps = [ "//chrome/android/webapk/libs/runtime_library:runtime_library_assets", @@ -261,7 +261,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -147,6 +147,11 @@ found in the LICENSE file. +@@ -153,6 +153,11 @@ found in the LICENSE file. android:key="useragent_settings" android:order="20" android:title="@string/prefs_useragent_settings"/> @@ -276,7 +276,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -81,6 +81,7 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -82,6 +82,7 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.MimeTypeUtils; import org.chromium.ui.widget.Toast; import org.chromium.url.GURL; @@ -284,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo import java.io.File; import java.util.Locale; -@@ -466,6 +467,12 @@ public class DownloadUtils { +@@ -460,6 +461,12 @@ public class DownloadUtils { * @param req The {@link DownloadOpenRequest} with all open-file parameters. */ private static boolean doOpenFile(DownloadOpenRequest req) { @@ -300,18 +300,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo 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 -@@ -155,6 +155,8 @@ import java.util.Date; +@@ -154,6 +154,8 @@ import java.util.Date; import java.util.List; import java.util.Locale; +import org.chromium.chrome.browser.user_scripts.UserScriptsUtils; + /** - * Handles the initialization dependences of the browser process. This is meant to handle the + * Handles the initialization dependencies of the browser process. This is meant to handle the * initialization that is not tied to any particular Activity, and the logic that should only be -@@ -642,6 +644,8 @@ public class ProcessInitializationHandler { +@@ -639,6 +641,8 @@ public class ProcessInitializationHandler { - DefaultBrowserInfo.initBrowserFetcher(); + StorageSystem.recordStorageType(); + UserScriptsUtils.Initialize(); + @@ -338,7 +338,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3582,6 +3582,13 @@ static_library("browser") { +@@ -3384,6 +3384,13 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -351,11 +351,11 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn + } } else { #!is_android - sources += [ + deps += [ 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 -@@ -193,6 +193,7 @@ +@@ -198,6 +198,7 @@ #include "components/ui_devtools/switches.h" #include "components/variations/variations_switches.h" #include "components/version_info/channel.h" @@ -366,7 +366,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -267,6 +267,7 @@ +@@ -271,6 +271,7 @@ #include "components/ntp_tiles/popular_sites_impl.h" #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/webapps/browser/android/install_prompt_prefs.h" @@ -374,7 +374,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/actor/ui/actor_ui_state_manager_prefs.h" #include "chrome/browser/desktop_to_mobile_promos/promos_utils.h" // nogncheck crbug.com/1125897 -@@ -1857,6 +1858,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1799,6 +1800,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); NtpCustomBackgroundService::RegisterProfilePrefs(registry); @@ -387,7 +387,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn --- a/chrome/browser/profiles/BUILD.gn +++ b/chrome/browser/profiles/BUILD.gn -@@ -96,6 +96,9 @@ source_set("profile") { +@@ -99,6 +99,9 @@ source_set("profile") { "//content/public/browser", "//extensions/buildflags", ] @@ -400,7 +400,7 @@ diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -602,6 +602,11 @@ +@@ -608,6 +608,11 @@ #include "chrome/browser/net/nss_service_factory.h" #endif @@ -412,7 +412,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) { main_parts->AddParts(std::make_unique()); } -@@ -1474,6 +1479,10 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1486,6 +1491,10 @@ void ChromeBrowserMainExtraPartsProfiles:: #endif WebDataServiceFactory::GetInstance(); webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance(); @@ -437,7 +437,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile #if BUILDFLAG(ENABLE_SESSION_SERVICE) #include "chrome/browser/sessions/app_session_service_factory.h" #include "chrome/browser/sessions/session_service_factory.h" -@@ -1580,6 +1584,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile, +@@ -1612,6 +1616,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile, // initializing the supervised flag if necessary). ChildAccountServiceFactory::GetForProfile(profile)->Init(); ListFamilyMembersServiceFactory::GetForProfile(profile)->Init(); @@ -525,7 +525,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" -@@ -457,7 +460,9 @@ void RegisterChromeWebUIConfigs() { +@@ -461,7 +464,9 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig( std::make_unique()); #endif @@ -539,7 +539,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni -@@ -157,6 +157,7 @@ template("chrome_extra_paks") { +@@ -158,6 +158,7 @@ template("chrome_extra_paks") { "$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak", "$root_gen_dir/third_party/blink/public/strings/permission_element_generated_strings.pak", "$root_gen_dir/ui/resources/ui_lottie_resources.pak", @@ -547,7 +547,7 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni "$root_gen_dir/ui/webui/resources/webui_resources.pak", ] -@@ -185,6 +186,7 @@ template("chrome_extra_paks") { +@@ -187,6 +188,7 @@ template("chrome_extra_paks") { "//third_party/blink/public/strings:permission_element_generated_strings", "//ui/resources:ui_lottie_resources_grd", "//ui/webui/resources", @@ -585,7 +585,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -268,6 +268,11 @@ +@@ -269,6 +269,11 @@ #include "chrome/renderer/media/chrome_key_systems.h" #endif @@ -597,8 +597,8 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer using autofill::AutofillAgent; using autofill::PasswordAutofillAgent; using autofill::PasswordGenerationAgent; -@@ -437,6 +442,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { - WebString::FromASCII(extensions::kExtensionScheme)); +@@ -438,6 +443,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { + WebString::FromAscii(extensions::kExtensionScheme)); #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) +#if BUILDFLAG(IS_ANDROID) @@ -612,7 +612,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #if BUILDFLAG(ENABLE_SPELLCHECK) if (!spellcheck_) InitSpellCheck(); -@@ -635,6 +648,15 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -636,6 +649,15 @@ void ChromeContentRendererClient::RenderFrameCreated( render_frame, std::make_unique()); #endif @@ -628,7 +628,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #if BUILDFLAG(ENABLE_PAINT_PREVIEW) new paint_preview::PaintPreviewRecorderImpl(render_frame); #endif -@@ -1396,6 +1418,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( +@@ -1398,6 +1420,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( render_frame); // |render_frame| might be dead by now. #endif @@ -646,7 +646,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentEnd( -@@ -1405,6 +1438,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( +@@ -1407,6 +1440,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( render_frame); // |render_frame| might be dead by now. #endif @@ -664,7 +664,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentIdle( -@@ -1414,6 +1458,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( +@@ -1416,6 +1460,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( render_frame); // |render_frame| might be dead by now. #endif @@ -11491,7 +11491,7 @@ new file mode 100644 diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -1281,6 +1281,12 @@ +@@ -1293,6 +1293,12 @@ "META": {"sizes": {"includes": [10]}}, "includes": [7495], }, diff --git a/build/patches/Eyeo-Adblock-for-Cromite.patch b/build/patches/Eyeo-Adblock-for-Cromite.patch index 6eeb29bec..818bd4da9 100644 --- a/build/patches/Eyeo-Adblock-for-Cromite.patch +++ b/build/patches/Eyeo-Adblock-for-Cromite.patch @@ -160,10 +160,10 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j -@@ -92,11 +83,6 @@ Use of this source code is governed by the GPLv3 that can be found in the compon +@@ -98,11 +89,6 @@ Use of this source code is governed by the GPLv3 that can be found in the compon + android:order="17" /> - @@ -183,7 +183,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j + android:title="@string/adblock_settings_title" /> GetOriginalProfile(); adblock::EnsureBackgroundServicesStarted(original_profile); adblock::RegisterAdblockWebContentObserver< @@ -1902,10 +1902,10 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com "autofillPrivate": { "channel": "trunk", "extension_types": ["extension", "platform_app"], -@@ -421,13 +414,6 @@ - // "desktop_android" is not supported. - "platforms": ["chromeos", "linux", "mac", "win"] - }, +@@ -543,13 +536,6 @@ + ] + } + ], - "eyeoFilteringPrivate": { - "channel": "stable", - "extension_types": ["extension", "platform_app"], @@ -1913,9 +1913,9 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com - "664F11343A17783FC7F6DC994BBC8AAF6823739C" // eyeo test extension - ] - }, - "favicon": { + "lockWindowFullscreenPrivate": { "channel": "stable", - "extension_types": ["extension"] + "component_extensions_auto_granted": false, diff --git a/chrome/common/extensions/api/adblock_private.idl b/chrome/common/extensions/api/adblock_private.idl --- a/chrome/common/extensions/api/adblock_private.idl +++ b/chrome/common/extensions/api/adblock_private.idl @@ -13012,7 +13012,7 @@ diff --git a/components/security_interstitials/core/browser/resources/interstiti diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc --- a/content/browser/websockets/websocket_connector_impl.cc +++ b/content/browser/websockets/websocket_connector_impl.cc -@@ -91,14 +91,14 @@ void WebSocketConnectorImpl::Connect( +@@ -93,15 +93,15 @@ void WebSocketConnectorImpl::Connect( const uint32_t options = GetContentClient()->browser()->GetWebSocketOptions(frame); @@ -13024,7 +13024,8 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br base::BindOnce(ConnectCalledByContentBrowserClient, requested_protocols, storage_access_api_status, isolation_info_, frame_id_, origin_, client_security_state_->Clone(), options, - std::move(throttling_profile_id)), + std::move(throttling_profile_id), + network_restrictions_id_), - url, isolation_info_.site_for_cookies(), user_agent, + url, origin_, isolation_info_.site_for_cookies(), user_agent, std::move(handshake_client)); @@ -13033,7 +13034,7 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc -@@ -1157,7 +1157,7 @@ void ContentBrowserClient::WillCreateURLLoaderFactory( +@@ -1134,7 +1134,7 @@ void ContentBrowserClient::WillCreateURLLoaderFactory( DCHECK(browser_context); } @@ -13042,7 +13043,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b return false; } -@@ -1166,9 +1166,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { +@@ -1143,9 +1143,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { } void ContentBrowserClient::CreateWebSocket( @@ -13057,7 +13058,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -2163,7 +2163,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2101,7 +2101,7 @@ class CONTENT_EXPORT ContentBrowserClient { scoped_refptr navigation_response_task_runner); // Returns true when the embedder wants to intercept a websocket connection. @@ -13066,7 +13067,7 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br // Returns the WebSocket creation options. virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame); -@@ -2185,9 +2185,11 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2123,9 +2123,11 @@ class CONTENT_EXPORT ContentBrowserClient { // Always called on the UI thread and only when the Network Service is // enabled. virtual void CreateWebSocket( @@ -13186,7 +13187,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa 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 -@@ -3010,13 +3010,7 @@ void HTMLElement::setSpellcheck(bool enable) { +@@ -3031,13 +3031,7 @@ void HTMLElement::setSpellcheck(bool enable) { } void HTMLElement::click() { diff --git a/build/patches/Fix-chromium-build-bugs.patch b/build/patches/Fix-chromium-build-bugs.patch index 11cc2346e..195921dc4 100644 --- a/build/patches/Fix-chromium-build-bugs.patch +++ b/build/patches/Fix-chromium-build-bugs.patch @@ -43,18 +43,18 @@ diff --git a/chrome/browser/navigation_predictor/navigation_predictor_metrics_do 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 -@@ -325,6 +325,7 @@ static_library("safe_browsing") { +@@ -326,6 +326,7 @@ static_library("safe_browsing") { "//components/version_info", "//content/public/browser", "//services/preferences/public/mojom", + "//third_party/flatbuffers:flatbuffers", ] - allow_circular_includes_from += [ "//chrome/browser/ui/safety_hub" ] + public_deps += [ "//chrome/browser/security_events" ] diff --git a/components/component_updater/installer_policies/BUILD.gn b/components/component_updater/installer_policies/BUILD.gn --- a/components/component_updater/installer_policies/BUILD.gn +++ b/components/component_updater/installer_policies/BUILD.gn -@@ -47,6 +47,7 @@ static_library("installer_policies_no_content_deps") { +@@ -49,6 +49,7 @@ static_library("installer_policies_no_content_deps") { "//components/update_client", "//mojo/public/cpp/base:protobuf_support", "//services/network/public/cpp", @@ -90,7 +90,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 -@@ -804,11 +804,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; +@@ -803,11 +803,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; ScopedMLConfigForTesting::ScopedMLConfigForTesting() : original_config_(std::make_unique(GetMLConfig())) { @@ -107,10 +107,10 @@ diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omni diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc -@@ -57,19 +57,9 @@ void PhishingImageEmbedder::BeginImageEmbedding( +@@ -56,19 +56,9 @@ void PhishingImageEmbedder::BeginImageEmbedding( + void PhishingImageEmbedder::OnPlaybackDone(bool can_extract_visual_features, std::unique_ptr bitmap) { - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - if (bitmap) { - bitmap_ = std::move(bitmap); - @@ -127,13 +127,13 @@ diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phish + // (UAZO) removed due error: + // no member named 'ApplyVisualTfLiteModelImageEmbedding' in 'safe_browsing::Scorer' + RunFailureCallback(); - #else - RunFailureCallback(); - #endif + } + + void PhishingImageEmbedder::CancelPendingImageEmbedding() { diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc --- a/content/browser/browser_interface_binders.cc +++ b/content/browser/browser_interface_binders.cc -@@ -371,6 +371,7 @@ void BindDateTimeChooserForFrame( +@@ -372,6 +372,7 @@ void BindDateTimeChooserForFrame( void BindTextSuggestionHostForFrame( RenderFrameHost* host, mojo::PendingReceiver receiver) { @@ -144,7 +144,7 @@ diff --git a/content/browser/browser_interface_binders.cc b/content/browser/brow diff --git a/services/webnn/dml/graph_impl_dml.cc b/services/webnn/dml/graph_impl_dml.cc --- a/services/webnn/dml/graph_impl_dml.cc +++ b/services/webnn/dml/graph_impl_dml.cc -@@ -242,6 +242,7 @@ base::expected CreateUnexpectedError( +@@ -241,6 +241,7 @@ base::expected CreateUnexpectedError( // Calculate the total byte length of buffers and the D3D12_RANGE for each // buffer, all with the required alignment. diff --git a/build/patches/Fonts-fingerprinting-mitigation.patch b/build/patches/Fonts-fingerprinting-mitigation.patch index fc0ecd137..b9533544f 100644 --- a/build/patches/Fonts-fingerprinting-mitigation.patch +++ b/build/patches/Fonts-fingerprinting-mitigation.patch @@ -120,7 +120,7 @@ diff --git a/skia/ext/skia_utils_win.h b/skia/ext/skia_utils_win.h 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 -@@ -449,6 +449,9 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( +@@ -456,6 +456,9 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kFencedFrames); @@ -447,7 +447,7 @@ diff --git a/third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc b namespace blink { AtomicString ToAtomicString(const SkString& str) { - return AtomicString::FromUTF8(base::as_string_view(str)); + return AtomicString::FromUtf8(base::as_string_view(str)); } +sk_sp ReturnIfAllowed(sk_sp typeface, const std::string& name, bool check_fonts) { diff --git a/build/patches/Guard-for-user-agent-reduction.patch b/build/patches/Guard-for-user-agent-reduction.patch index a4d29f8fc..fe723ba1b 100644 --- a/build/patches/Guard-for-user-agent-reduction.patch +++ b/build/patches/Guard-for-user-agent-reduction.patch @@ -33,7 +33,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd 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 -@@ -4518,15 +4518,15 @@ +@@ -4627,15 +4627,15 @@ // If enabled, the platform version in User-Agent Data will be removed. // This feature is limited to Linux only. { diff --git a/build/patches/Hardening-against-incognito-mode-detection.patch b/build/patches/Hardening-against-incognito-mode-detection.patch index a6c91d540..6330cd150 100644 --- a/build/patches/Hardening-against-incognito-mode-detection.patch +++ b/build/patches/Hardening-against-incognito-mode-detection.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/storage/browser/quota/quota_manager_impl.cc b/storage/browser/quota/quota_manager_impl.cc --- a/storage/browser/quota/quota_manager_impl.cc +++ b/storage/browser/quota/quota_manager_impl.cc -@@ -1755,7 +1755,7 @@ int64_t QuotaManagerImpl::GetQuotaForStorageKey( +@@ -1709,7 +1709,7 @@ int64_t QuotaManagerImpl::GetQuotaForStorageKey( return kNoLimit; } @@ -20,7 +20,7 @@ diff --git a/storage/browser/quota/quota_manager_impl.cc b/storage/browser/quota storage_key.origin().GetURL())) { return settings.session_only_per_storage_key_quota; } -@@ -2416,8 +2416,8 @@ void QuotaManagerImpl::SimulateStoragePressure(const url::Origin& origin_url) { +@@ -2357,8 +2357,8 @@ void QuotaManagerImpl::SimulateStoragePressure(const url::Origin& origin_url) { void QuotaManagerImpl::IsSimulateStoragePressureAvailable( IsSimulateStoragePressureAvailableCallback callback) { // We assume this is only the case in incognito. If it changes, update this. diff --git a/build/patches/History-number-of-days-privacy-setting.patch b/build/patches/History-number-of-days-privacy-setting.patch index bf3a2c52f..bef6bc429 100644 --- a/build/patches/History-number-of-days-privacy-setting.patch +++ b/build/patches/History-number-of-days-privacy-setting.patch @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -69,6 +69,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +@@ -70,6 +70,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; @@ -65,7 +65,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.components.browser_ui.settings.search.SettingsIndexData; import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; import org.chromium.components.browser_ui.site_settings.SingleCategorySettings; -@@ -103,6 +104,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -105,6 +106,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -75,7 +75,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 -@@ -168,6 +172,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -176,6 +180,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private ChromeSwitchPreference allowCustomTabIntentsPref; private ChromeSwitchPreference openExternalLinksPref; @@ -84,7 +84,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)); -@@ -305,6 +311,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -313,6 +319,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK); syncAndServicesLink.setSummary(buildFooterString()); @@ -125,8 +125,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference thirdPartyCookies = findPreference(PREF_THIRD_PARTY_COOKIES); if (thirdPartyCookies != null) { thirdPartyCookies -@@ -660,6 +700,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment - || ((System.currentTimeMillis() - updateTimeMs) < TimeUnit.DAYS.toMillis(90)); +@@ -701,6 +741,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment + builder.append(text, new ChromeBulletSpan(context), 0); } + class TimeFrequencySpinnerOption { @@ -158,15 +158,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -44,6 +44,7 @@ - #include "components/content_settings/core/common/pref_names.h" +@@ -45,6 +45,7 @@ + #include "components/contextual_tasks/public/prefs.h" #include "components/dom_distiller/core/pref_names.h" #include "components/drive/drive_pref_names.h" +#include "components/history/core/common/pref_names.h" #include "components/embedder_support/pref_names.h" #include "components/language/core/browser/pref_names.h" #include "components/live_caption/pref_names.h" -@@ -268,6 +269,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -271,6 +272,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kSplitViewDragAndDropEnabled] = settings_api::PrefType::kBoolean; @@ -191,7 +191,7 @@ diff --git a/chrome/browser/history/history_service_factory.cc b/chrome/browser/ 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 -@@ -378,6 +378,7 @@ std::unique_ptr Profile::CreateProfile(const base::FilePath& path, +@@ -383,6 +383,7 @@ std::unique_ptr Profile::CreateProfile(const base::FilePath& path, void ProfileImpl::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false); @@ -202,7 +202,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p 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 -@@ -58,6 +58,15 @@ +@@ -55,6 +55,15 @@ sub-label="$i18n{siteSettingsSublabel}" on-click="onSiteSettingsLinkRowClick_" role-description="$i18n{subpageArrowRoleDescription}"> @@ -253,7 +253,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch showClearBrowsingDataDialog_: Boolean, showPrivacyGuideDialog_: Boolean, -@@ -90,6 +108,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -95,6 +113,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { }; } @@ -264,7 +264,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1344,6 +1344,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1387,6 +1387,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history @@ -286,7 +286,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2337,6 +2337,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2339,6 +2339,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE}, {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD}, {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC}, @@ -425,7 +425,7 @@ new file mode 100644 diff --git a/components/history/core/browser/browsing_history_service.cc b/components/history/core/browser/browsing_history_service.cc --- a/components/history/core/browser/browsing_history_service.cc +++ b/components/history/core/browser/browsing_history_service.cc -@@ -805,7 +805,7 @@ void BrowsingHistoryService::QueryComplete( +@@ -804,7 +804,7 @@ void BrowsingHistoryService::QueryComplete( // Exhausted the local results; continue querying to get remote results. // Start querying at the point where local history ends. base::Time expiry_treshold = @@ -562,7 +562,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his #include "components/history/core/browser/download_row.h" #include "components/history/core/browser/features.h" #include "components/history/core/browser/history_backend.h" -@@ -509,6 +512,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( +@@ -511,6 +514,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( return task_id; } @@ -596,7 +596,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his void HistoryService::ScheduleDBTaskForUI( base::OnceCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -1434,6 +1464,9 @@ void HistoryService::Cleanup() { +@@ -1436,6 +1466,9 @@ void HistoryService::Cleanup() { return; } diff --git a/build/patches/Immediately-destroy-shared-workers-when-closing-the-page.patch b/build/patches/Immediately-destroy-shared-workers-when-closing-the-page.patch index cbe3a2be7..e325a4372 100644 --- a/build/patches/Immediately-destroy-shared-workers-when-closing-the-page.patch +++ b/build/patches/Immediately-destroy-shared-workers-when-closing-the-page.patch @@ -24,7 +24,7 @@ diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. -@@ -1095,16 +1095,6 @@ void SharedWorkerHost::OnClientStateChanged() { +@@ -1107,16 +1107,6 @@ void SharedWorkerHost::OnClientStateChanged() { worker_->Resume(); is_frozen_ = false; } else if (!is_frozen_ && !has_active_client) { @@ -41,7 +41,7 @@ diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser worker_->Freeze(); is_frozen_ = true; } -@@ -1159,17 +1149,6 @@ void SharedWorkerHost::OnClientConnectionLost() { +@@ -1171,17 +1161,6 @@ void SharedWorkerHost::OnClientConnectionLost() { // the freeze state to freeze the worker if no active clients remain. OnClientStateChanged(); } diff --git a/build/patches/Improve-the-browser-sandbox.patch b/build/patches/Improve-the-browser-sandbox.patch index e7cac5b26..9d608df38 100644 --- a/build/patches/Improve-the-browser-sandbox.patch +++ b/build/patches/Improve-the-browser-sandbox.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/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 -@@ -361,7 +361,7 @@ namespace features { +@@ -358,7 +358,7 @@ namespace features { // this feature is disabled any failed launches in the current browser session // will still result in sandbox being disabled for the lifetime of the running // browser. 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 6967dbd6c..df0c8044d 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 -@@ -173,7 +173,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( +@@ -172,7 +172,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( size_t OmniboxFieldTrial::GetProviderMaxMatches( AutocompleteProvider::Type provider) { diff --git a/build/patches/Internal-firewall.patch b/build/patches/Internal-firewall.patch index 8bc166a8d..7d19ee267 100644 --- a/build/patches/Internal-firewall.patch +++ b/build/patches/Internal-firewall.patch @@ -60,7 +60,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2418,6 +2418,7 @@ static_library("browser") { +@@ -2268,6 +2268,7 @@ static_library("browser") { "//third_party/ungoogled:switches", "//services/device/public/mojom", "//services/device/public/mojom:usb", @@ -71,7 +71,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -240,6 +240,7 @@ +@@ -246,6 +246,7 @@ #include "sandbox/policy/features.h" #include "sandbox/policy/switches.h" #include "services/device/public/cpp/device_features.h" @@ -82,7 +82,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/browser/download/android/download_controller.cc --- a/chrome/browser/download/android/download_controller.cc +++ b/chrome/browser/download/android/download_controller.cc -@@ -193,6 +193,36 @@ void LogAppVerificationPromptToPrefs(download::DownloadItem* item) { +@@ -194,6 +194,36 @@ void LogAppVerificationPromptToPrefs(download::DownloadItem* item) { update->Append(base::TimeToValue(base::Time::Now())); } @@ -119,7 +119,7 @@ diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/bro } // namespace static void JNI_DownloadController_CancelDownload( -@@ -228,7 +258,7 @@ static void JNI_DownloadController_DownloadUrl( +@@ -229,7 +259,7 @@ static void JNI_DownloadController_DownloadUrl( std::unique_ptr dl_params = content::DownloadRequestUtils::CreateDownloadForWebContentsMainFrame( web_contents, GURL(url), @@ -301,7 +301,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1217,6 +1217,7 @@ component("net") { +@@ -1221,6 +1221,7 @@ component("net") { "//components/unexportable_keys", "//components/network_session_configurator/common", "//net/http:transport_security_state_generated_files", @@ -336,7 +336,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } URLRequestHttpJob::~URLRequestHttpJob() { -@@ -734,6 +737,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { +@@ -735,6 +738,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { void URLRequestHttpJob::StartTransactionInternal() { DCHECK(!override_response_headers_); @@ -1669,7 +1669,7 @@ new file mode 100644 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 -@@ -107,6 +107,7 @@ +@@ -108,6 +108,7 @@ #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_builder.h" @@ -1677,7 +1677,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont #include "services/network/brokered_client_socket_factory.h" #include "services/network/connection_change_observer.h" #include "services/network/cookie_manager.h" -@@ -1869,6 +1870,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { +@@ -1939,6 +1940,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { void NetworkContext::CreateUDPSocket( mojo::PendingReceiver receiver, mojo::PendingRemote listener) { @@ -1687,8 +1687,8 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener)); } -@@ -1882,6 +1886,17 @@ void NetworkContext::CreateRestrictedUDPSocket( - bool allow_multicast, +@@ -1953,6 +1957,17 @@ void NetworkContext::CreateRestrictedUDPSocket( + bool allow_source_specific_multicast, CreateRestrictedUDPSocketCallback callback) { // SimpleHostResolver is transitively owned by |this|. + if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { @@ -1705,7 +1705,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateRestrictedUDPSocket( addr, mode, traffic_annotation, std::move(params), std::move(receiver), std::move(listener), SimpleHostResolver::Create(this), allow_multicast, -@@ -1894,6 +1909,17 @@ void NetworkContext::CreateTCPServerSocket( +@@ -1965,6 +1980,17 @@ void NetworkContext::CreateTCPServerSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPServerSocketCallback callback) { @@ -1723,7 +1723,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPServerSocket( local_addr, std::move(options), static_cast(traffic_annotation), -@@ -1908,6 +1934,21 @@ void NetworkContext::CreateTCPConnectedSocket( +@@ -1979,6 +2005,21 @@ void NetworkContext::CreateTCPConnectedSocket( mojo::PendingReceiver receiver, mojo::PendingRemote observer, CreateTCPConnectedSocketCallback callback) { @@ -1745,7 +1745,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPConnectedSocket( local_addr, remote_addr_list, std::move(tcp_connected_socket_options), static_cast(traffic_annotation), -@@ -1919,6 +1960,20 @@ void NetworkContext::CreateTCPBoundSocket( +@@ -1990,6 +2031,20 @@ void NetworkContext::CreateTCPBoundSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPBoundSocketCallback callback) { @@ -1766,10 +1766,10 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPBoundSocket( local_addr, static_cast(traffic_annotation), -@@ -1985,6 +2040,24 @@ void NetworkContext::CreateWebSocket( - mojo::PendingRemote auth_handler, +@@ -2057,6 +2112,24 @@ void NetworkContext::CreateWebSocket( mojo::PendingRemote header_client, - const std::optional& throttling_profile_id) { + const std::optional& throttling_profile_id, + const std::optional& network_restrictions_id) { + if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { + auto firewall_service = std::make_unique(nullptr); + if (!firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { @@ -2089,7 +2089,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loa diff --git a/tools/traffic_annotation/scripts/auditor/auditor.py b/tools/traffic_annotation/scripts/auditor/auditor.py --- a/tools/traffic_annotation/scripts/auditor/auditor.py +++ b/tools/traffic_annotation/scripts/auditor/auditor.py -@@ -869,6 +869,7 @@ class ArchivedAnnotation: +@@ -873,6 +873,7 @@ class ArchivedAnnotation: # the XML. This is used to serialize/deserialize the XML. FIELDS = [ "id", "added_in_milestone", "type", "second_id", "reserved", diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 9926aebbd..c97c5f719 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -291,7 +291,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -4344,12 +4344,17 @@ UrlInfo NavigationRequest::GetUrlInfo() { +@@ -4412,11 +4412,16 @@ UrlInfo NavigationRequest::GetUrlInfo() { // Compute the WebExposedIsolationInfo that will be bundled into UrlInfo. auto web_exposed_isolation_info = ComputeWebExposedIsolationInfo(); @@ -303,17 +303,16 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows url_info_init.WithOACHeaderRequest(oac_header_request) .WithCOOPSiteIsolation(ShouldRequestSiteIsolationForCOOP()) .WithWebExposedIsolationInfo(web_exposed_isolation_info) - .WithCrossOriginIsolationKey(cross_origin_isolation_key) - .WithIsPdf(is_pdf_); + .WithIsPdf(is_pdf_) + .WithTopOrigin(top_origin); - // Navigations with SiteInstances which have fixed storage partition (e.g. - // tags) should always stay in the current StoragePartition. + // Compute the CrossOriginIsolationKey for the navigation. + std::optional diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3630,6 +3630,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3656,6 +3656,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( if (IsJitDisabled()) { AppendToCommaSeparatedSwitch( command_line, blink::switches::kJavaScriptFlags, "--jitless"); diff --git a/build/patches/Keep-ComputePressure-disabled.patch b/build/patches/Keep-ComputePressure-disabled.patch index 33d6d5212..a1d53fe82 100644 --- a/build/patches/Keep-ComputePressure-disabled.patch +++ b/build/patches/Keep-ComputePressure-disabled.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -1261,11 +1261,9 @@ +@@ -1288,11 +1288,9 @@ status: "stable", }, { diff --git a/build/patches/Keep-Manta-Service-Disabled.patch b/build/patches/Keep-Manta-Service-Disabled.patch index 3b85f1627..2cc9207c1 100644 --- a/build/patches/Keep-Manta-Service-Disabled.patch +++ b/build/patches/Keep-Manta-Service-Disabled.patch @@ -10,7 +10,7 @@ Subject: Keep Manta Service Disabled diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1058,7 +1058,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1082,7 +1082,6 @@ void ChromeBrowserMainExtraPartsProfiles:: #if !BUILDFLAG(IS_ANDROID) ManagedConfigurationAPIFactory::GetInstance(); #endif diff --git a/build/patches/Keep-disabled-CpuPerformance.patch b/build/patches/Keep-disabled-CpuPerformance.patch index c875ed595..2f441404b 100644 --- a/build/patches/Keep-disabled-CpuPerformance.patch +++ b/build/patches/Keep-disabled-CpuPerformance.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -1348,12 +1348,7 @@ +@@ -1409,12 +1409,7 @@ // CPU Performance API, work in progress. // https://chromestatus.com/feature/5189864286978048 // https://github.com/explainers-by-googlers/cpu-performance diff --git a/build/patches/Keep-disabled-FetchLaterAPI.patch b/build/patches/Keep-disabled-FetchLaterAPI.patch index 0d6cead7b..258abe3a6 100644 --- a/build/patches/Keep-disabled-FetchLaterAPI.patch +++ b/build/patches/Keep-disabled-FetchLaterAPI.patch @@ -22,9 +22,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/loader/keep_alive_url_loader.cc --- a/content/browser/loader/keep_alive_url_loader.cc +++ b/content/browser/loader/keep_alive_url_loader.cc -@@ -48,6 +48,36 @@ - #include "third_party/abseil-cpp/absl/container/flat_hash_map.h" +@@ -51,6 +51,36 @@ #include "third_party/blink/public/common/features.h" + #include "url/origin.h" +namespace { + constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = @@ -59,7 +59,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l namespace features { // See third_party/blink/renderer/core/fetch/retry_options.idl for details of -@@ -435,7 +465,6 @@ KeepAliveURLLoader::KeepAliveURLLoader( +@@ -438,7 +468,6 @@ KeepAliveURLLoader::KeepAliveURLLoader( forwarding_client_( std::make_unique(this, std::move(forwarding_client))), @@ -67,7 +67,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l network_loader_factory_(std::move(network_loader_factory)), stored_url_load_(std::make_unique()), policy_container_host_(std::move(policy_container_host)), -@@ -512,7 +541,7 @@ void KeepAliveURLLoader::StartInternal(bool is_retry) { +@@ -515,7 +544,7 @@ void KeepAliveURLLoader::StartInternal(bool is_retry) { url_loader_ = blink::ThrottlingURLLoader::CreateLoaderAndStart( network_loader_factory_, throttles_getter_.Run(), request_id_, options_, &resource_request_, forwarding_client_.get(), @@ -79,7 +79,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l diff --git a/content/browser/loader/keep_alive_url_loader.h b/content/browser/loader/keep_alive_url_loader.h --- a/content/browser/loader/keep_alive_url_loader.h +++ b/content/browser/loader/keep_alive_url_loader.h -@@ -431,9 +431,6 @@ class CONTENT_EXPORT KeepAliveURLLoader +@@ -427,9 +427,6 @@ class CONTENT_EXPORT KeepAliveURLLoader // disconnected from the remote of URLLoader in the renderer. base::OneShotTimer disconnected_loader_timer_; @@ -119,7 +119,7 @@ diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_part void ResponseResolver::RejectBecauseFailed( std::optional devtools_request_id, std::optional issue_id, -@@ -1312,10 +1319,20 @@ void FetchManager::Loader::Failed( +@@ -1309,10 +1316,20 @@ void FetchManager::Loader::Failed( if (response_resolver_) { ScriptState::Scope scope(GetScriptState()); if (dom_exception) { @@ -202,7 +202,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.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 -@@ -2565,8 +2565,8 @@ +@@ -2647,8 +2647,8 @@ { // The Blink runtime-enabled feature name for the API's IDL. // https://chromestatus.com/feature/4654499737632768 diff --git a/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch b/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch index 394b8f93e..b5764e3c7 100644 --- a/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch +++ b/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc -@@ -231,11 +231,6 @@ void AwContentRendererClient:: +@@ -230,11 +230,6 @@ void AwContentRendererClient:: autofill::features::kAutofillPolicyControlledFeatureManualText)) { blink::WebRuntimeFeatures::EnableManualText(true); } diff --git a/build/patches/Keep-empty-tabs-between-sessions.patch b/build/patches/Keep-empty-tabs-between-sessions.patch index d622a6166..c81693f3d 100644 --- a/build/patches/Keep-empty-tabs-between-sessions.patch +++ b/build/patches/Keep-empty-tabs-between-sessions.patch @@ -13,7 +13,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/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java -@@ -1304,7 +1304,7 @@ public class MultiWindowUtils implements ActivityStateListener { +@@ -1305,7 +1305,7 @@ public class MultiWindowUtils implements ActivityStateListener { int totalCount = 0; for (TabModel model : models) { for (Tab tab : model) { @@ -25,7 +25,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/Mul diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreImpl.java -@@ -1932,13 +1932,6 @@ public class TabPersistentStoreImpl implements TabPersistentStore { +@@ -1939,13 +1939,6 @@ public class TabPersistentStoreImpl implements TabPersistentStore { continue; } diff --git a/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch b/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch index 85388aa90..15e6ad032 100644 --- a/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch +++ b/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/incognito/Incog diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -5856,10 +5856,10 @@ +@@ -5584,10 +5584,10 @@ "expiry_milestone": -1 }, { diff --git a/build/patches/Keyboard-protection-flag.patch b/build/patches/Keyboard-protection-flag.patch index 64eefc520..5f776ef2b 100644 --- a/build/patches/Keyboard-protection-flag.patch +++ b/build/patches/Keyboard-protection-flag.patch @@ -23,7 +23,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 -@@ -991,6 +991,11 @@ public final class ProductionSupportedFlagList { +@@ -993,6 +993,11 @@ public final class ProductionSupportedFlagList { + " also enable the same behaviour as this flag. Additionally, developer" + " preferences via the AndroidX API or manifest metadata supersedes this" + " flag."), @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/core/events/keyboard_event.h b/third_par 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 -@@ -140,6 +140,14 @@ bool ShouldUseCursorEventHook() { +@@ -145,6 +145,14 @@ bool ShouldUseCursorEventHook() { // Allows system keyboard event capture via the keyboard lock API. BASE_FEATURE(kSystemKeyboardLock, base::FEATURE_ENABLED_BY_DEFAULT); diff --git a/build/patches/Lock-Profile-Cookie-Database.patch b/build/patches/Lock-Profile-Cookie-Database.patch index 74260cdd9..9674fd1d0 100644 --- a/build/patches/Lock-Profile-Cookie-Database.patch +++ b/build/patches/Lock-Profile-Cookie-Database.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -1390,6 +1390,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( +@@ -1414,6 +1414,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( network_context_params->file_paths->cookie_database_name = base::FilePath(chrome::kCookieFilename); @@ -56,7 +56,7 @@ new file mode 100644 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 -@@ -3269,7 +3269,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const { +@@ -3346,7 +3346,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const { #if BUILDFLAG(IS_WIN) const bool enable_exclusive_access = @@ -68,7 +68,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont 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 -@@ -369,6 +369,14 @@ struct NetworkContextParams { +@@ -370,6 +370,14 @@ struct NetworkContextParams { // If true, cookies will be stored encrypted. bool enable_encrypted_cookies = true; diff --git a/build/patches/Log-dangling-attributes-in-some-html-elements.patch b/build/patches/Log-dangling-attributes-in-some-html-elements.patch index 752691059..5323811e9 100644 --- a/build/patches/Log-dangling-attributes-in-some-html-elements.patch +++ b/build/patches/Log-dangling-attributes-in-some-html-elements.patch @@ -42,7 +42,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 -@@ -5074,6 +5074,14 @@ void Document::ProcessBaseElement() { +@@ -5080,6 +5080,14 @@ void Document::ProcessBaseElement() { KURL base_element_url; if (href) { StringView stripped_href = StripLeadingAndTrailingHtmlSpaces(*href); @@ -57,7 +57,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink if (!stripped_href.empty()) base_element_url = KURL(FallbackBaseURL(), stripped_href); } -@@ -5091,6 +5099,14 @@ void Document::ProcessBaseElement() { +@@ -5097,6 +5105,14 @@ void Document::ProcessBaseElement() { !GetExecutionContext()->GetSecurityOrigin()->CanRequest( base_element_url)) { UseCounter::Count(*this, WebFeature::kBaseWithCrossOriginHref); @@ -72,7 +72,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink } } -@@ -5123,6 +5139,8 @@ void Document::ProcessBaseElement() { +@@ -5129,6 +5145,8 @@ void Document::ProcessBaseElement() { UseCounter::Count(*this, WebFeature::kBaseWithOpenBracketInTarget); } base_target_ = *target; @@ -84,7 +84,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc -@@ -4084,8 +4084,26 @@ void Element::StripScriptingAttributes( +@@ -4117,8 +4117,26 @@ void Element::StripScriptingAttributes( attribute_vector.Shrink(destination); } @@ -115,7 +115,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/ diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h --- a/third_party/blink/renderer/core/dom/element.h +++ b/third_party/blink/renderer/core/dom/element.h -@@ -812,7 +812,8 @@ class CORE_EXPORT Element : public ContainerNode { +@@ -817,7 +817,8 @@ class CORE_EXPORT Element : public ContainerNode { virtual bool HasLegalLinkAttribute(const QualifiedName&) const; // Only called by the parser immediately after element construction. @@ -137,7 +137,7 @@ diff --git a/third_party/blink/renderer/core/editing/serializers/markup_formatte #include "third_party/blink/renderer/core/dom/comment.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/document_fragment.h" -@@ -208,6 +210,16 @@ void MarkupFormatter::AppendEndMarkup(StringBuilder& result, +@@ -245,6 +247,16 @@ void MarkupFormatter::AppendEndMarkup(StringBuilder& result, void MarkupFormatter::AppendAttributeValue(StringBuilder& result, const String& attribute, bool document_is_html) { @@ -185,7 +185,7 @@ diff --git a/third_party/blink/renderer/core/html/html_base_element.cc b/third_p diff --git a/third_party/blink/renderer/core/html/html_base_element.h b/third_party/blink/renderer/core/html/html_base_element.h --- a/third_party/blink/renderer/core/html/html_base_element.h +++ b/third_party/blink/renderer/core/html/html_base_element.h -@@ -37,6 +37,8 @@ class CORE_EXPORT HTMLBaseElement final : public HTMLElement { +@@ -41,6 +41,8 @@ class CORE_EXPORT HTMLBaseElement final : public HTMLElement { String href() const; void setHref(const AtomicString&); @@ -250,7 +250,7 @@ diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third diff --git a/third_party/blink/renderer/core/html/html_iframe_element.h b/third_party/blink/renderer/core/html/html_iframe_element.h --- a/third_party/blink/renderer/core/html/html_iframe_element.h +++ b/third_party/blink/renderer/core/html/html_iframe_element.h -@@ -68,6 +68,8 @@ class CORE_EXPORT HTMLIFrameElement : public HTMLFrameElementBase, +@@ -72,6 +72,8 @@ class CORE_EXPORT HTMLIFrameElement : public HTMLFrameElementBase, String srcdoc() const; void setSrcdoc(const V8UnionStringOrTrustedHTML*, ExceptionState&); @@ -270,7 +270,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_load_request.cc b/thir #include "third_party/blink/renderer/core/fileapi/public_url_manager.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/html/forms/html_form_element.h" -@@ -149,6 +150,14 @@ void FrameLoadRequest::ResolveBlobURLIfNeeded() { +@@ -148,6 +149,14 @@ void FrameLoadRequest::ResolveBlobURLIfNeeded() { const AtomicString& FrameLoadRequest::CleanNavigationTarget( const AtomicString& target) const { if (ContainsNewLineAndLessThan(target)) { @@ -333,7 +333,7 @@ diff --git a/third_party/blink/renderer/core/page/frame_tree.cc b/third_party/bl 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 -@@ -3540,6 +3540,12 @@ +@@ -3658,6 +3658,12 @@ name: "MacDisableCtrlHomeEnd", status: "stable", }, diff --git a/build/patches/Logcat-crash-reports-UI.patch b/build/patches/Logcat-crash-reports-UI.patch index 199960048..671efb3f8 100644 --- a/build/patches/Logcat-crash-reports-UI.patch +++ b/build/patches/Logcat-crash-reports-UI.patch @@ -154,7 +154,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -667,6 +667,7 @@ static_library("ui") { +@@ -680,6 +680,7 @@ static_library("ui") { "//third_party/re2", "//third_party/webrtc_overrides:webrtc_component", "//third_party/zlib", diff --git a/build/patches/Modify-default-preferences.patch b/build/patches/Modify-default-preferences.patch index 900cedb3d..390dc3300 100644 --- a/build/patches/Modify-default-preferences.patch +++ b/build/patches/Modify-default-preferences.patch @@ -33,7 +33,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 -@@ -85,6 +85,7 @@ +@@ -89,6 +89,7 @@ #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_switches.h" #include "components/autofill/core/common/autofill_util.h" @@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/background/extensions/background_mode_manager.cc b/chrome/browser/background/extensions/background_mode_manager.cc --- a/chrome/browser/background/extensions/background_mode_manager.cc +++ b/chrome/browser/background/extensions/background_mode_manager.cc -@@ -347,7 +347,7 @@ BackgroundModeManager::~BackgroundModeManager() { +@@ -348,7 +348,7 @@ BackgroundModeManager::~BackgroundModeManager() { // static void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) { @@ -56,7 +56,7 @@ diff --git a/chrome/browser/background/extensions/background_mode_manager.cc b/c 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 -@@ -1499,7 +1499,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( +@@ -1541,7 +1541,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( void ChromeContentBrowserClient::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false); @@ -68,7 +68,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch 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 -@@ -1364,7 +1364,7 @@ void RegisterProfilePrefsForMigration( +@@ -1271,7 +1271,7 @@ void RegisterProfilePrefsForMigration( registry->RegisterTimePref(kMerchantTrustPageInfoLastOpenTime, base::Time()); // Deprecated 12/2025. @@ -116,7 +116,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -132,7 +132,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -134,7 +134,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); registry->RegisterBooleanPref( @@ -125,7 +125,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup); -@@ -213,7 +213,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -215,7 +215,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { #endif registry->RegisterBooleanPref( @@ -321,7 +321,7 @@ diff --git a/components/security_interstitials/core/features.cc b/components/sec diff --git a/components/signin/internal/identity_manager/primary_account_manager.cc b/components/signin/internal/identity_manager/primary_account_manager.cc --- a/components/signin/internal/identity_manager/primary_account_manager.cc +++ b/components/signin/internal/identity_manager/primary_account_manager.cc -@@ -388,7 +388,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -363,7 +363,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { prefs::kGoogleServicesSyncingUsernameMigratedToSignedIn, std::string()); registry->RegisterIntegerPref(prefs::kGoogleServicesSyncingUserMigrationType, /*SyncToSigninMigrationType::kUnknown=*/0); diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index e6853c38f..0dfd0e1e0 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -89,7 +89,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/ui/android/toolbar/BUILD.gn | 1 + .../toolbar/LocationBarFocusScrimHandler.java | 5 + .../toolbar/ToolbarLongPressMenuHandler.java | 8 - - .../bottom/BottomControlsContentDelegate.java | 12 +- + .../bottom/BottomControlsContentDelegate.java | 11 +- .../bottom/BottomControlsCoordinator.java | 11 +- .../bottom/BottomControlsMediator.java | 33 +++- .../bottom/BottomControlsProperties.java | 6 +- @@ -108,16 +108,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ .../renderer/core/frame/viewport_data.cc | 1 + - 95 files changed, 1087 insertions(+), 103 deletions(-) + 95 files changed, 1086 insertions(+), 103 deletions(-) create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc +++ b/cc/base/features.cc -@@ -27,6 +27,14 @@ BASE_FEATURE(kComputeRasterTranslateForExternalScale, - // submitting a frame. - BASE_FEATURE(kSynchronizedScrolling, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -23,6 +23,14 @@ std::atomic s_is_eligible_for_throttle_main_frame_to_60hz = false; + BASE_FEATURE(kComputeRasterTranslateForExternalScale, + base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kMoveTopToolbarToBottom, + "MoveTopToolbarToBottom", @@ -133,10 +133,10 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc diff --git a/cc/base/features.h b/cc/base/features.h --- a/cc/base/features.h +++ b/cc/base/features.h -@@ -16,6 +16,8 @@ namespace features { +@@ -15,6 +15,8 @@ + namespace features { CC_BASE_EXPORT BASE_DECLARE_FEATURE(kComputeRasterTranslateForExternalScale); - CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kMoveTopToolbarToBottom); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kDisableToolbarSwipeUp); @@ -177,7 +177,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 -@@ -2753,7 +2753,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +@@ -2806,7 +2806,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { browser_controls_offset_manager_->TopControlsShownRatio(); metadata.top_controls_visible_height.emplace(visible_height); @@ -186,7 +186,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc const viz::OffsetTag& top_controls_offset_tag = browser_controls_offset_manager_->TopControlsOffsetTag(); const viz::OffsetTag& content_offset_tag = -@@ -2791,7 +2791,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +@@ -2844,7 +2844,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { #endif } @@ -195,7 +195,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc if (browser_controls_offset_manager_->BottomControlsHeight() > 0) { const viz::OffsetTag& bottom_controls_offset_tag = browser_controls_offset_manager_->BottomControlsOffsetTag(); -@@ -5408,6 +5408,7 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -5464,6 +5464,7 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { return false; } @@ -206,7 +206,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java -@@ -26,6 +26,7 @@ import org.chromium.base.supplier.NonNullObservableSupplier; +@@ -27,6 +27,7 @@ import org.chromium.base.supplier.NonNullObservableSupplier; import org.chromium.base.supplier.ObservableSuppliers; import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.SettableMonotonicObservableSupplier; @@ -214,7 +214,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.base.supplier.SettableNonNullObservableSupplier; import org.chromium.base.supplier.SettableNullableObservableSupplier; import org.chromium.build.annotations.Initializer; -@@ -61,6 +62,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; +@@ -63,6 +64,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; @@ -222,7 +222,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.util.List; import java.util.function.Supplier; -@@ -199,7 +201,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T +@@ -201,7 +203,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T @Initializer public void initializeWithNative( BottomControlsCoordinator.BottomControlsVisibilityController visibilityController, @@ -232,7 +232,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser SettableMonotonicObservableSupplier tabStripTokenSupplier = ObservableSuppliers.createMonotonic(); -@@ -296,7 +299,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T +@@ -298,7 +301,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T sharedImageTilesConfigBuilder, mThemeColorProvider, onSnapshotTokenChange, @@ -329,7 +329,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } @Override -@@ -363,6 +398,8 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -361,6 +396,8 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TabGroupUiProperties.WIDTH_PX_CALLBACK, mWidthPxSupplier::set); resetTabStrip(); @@ -338,7 +338,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mHandleBackPressChangedSupplier = handleBackPressChangedSupplier; if (mTabGridDialogControllerSupplier != null) { mTabGridDialogControllerSupplier.onAvailable( -@@ -396,6 +433,18 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -394,6 +431,18 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TINT, mThemeColorProvider.getTint()); } @@ -357,7 +357,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser private void setupToolbarButtons() { View.OnClickListener showGroupDialogOnClickListener = view -> { -@@ -582,6 +631,7 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -572,6 +621,7 @@ public class TabGroupUiMediator implements BackPressHandler { @SuppressWarnings("NullAway") public void destroy() { @@ -731,9 +731,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.compositor.CompositorViewHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.hub.FadeHubLayoutAnimationFactory; - import org.chromium.chrome.browser.hub.FullButtonData; import org.chromium.chrome.browser.hub.HubContainerView; -@@ -146,6 +147,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase + import org.chromium.chrome.browser.hub.HubLayoutAnimationListener; +@@ -149,6 +150,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase private @Nullable PaneHubController mPaneHubController; private @Nullable Long mWaitForTabStateInitializedStartTimeMs; private final NonNullObservableSupplier mXrSpaceModeObservableSupplier; @@ -741,7 +741,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * @param context The activity context. -@@ -469,6 +471,13 @@ public abstract class TabSwitcherPaneBase extends PaneBase +@@ -476,6 +478,13 @@ public abstract class TabSwitcherPaneBase extends PaneBase Log.d(TAG, "Geometry not ready using fallback animation."); useFallbackAnimation = true; } @@ -766,7 +766,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; -@@ -754,6 +755,9 @@ public class FeedSurfaceCoordinator +@@ -672,6 +673,9 @@ public class FeedSurfaceCoordinator ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMarginStart(margin); layoutParams.setMarginEnd(margin); @@ -803,13 +803,13 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -1114,7 +1114,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt - mBackPressManager, +@@ -1123,7 +1123,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt getSnackbarManager(), /* glicClickHandler= */ () -> -- ((TabbedRootUiCoordinator) mRootUiCoordinator).toggleGlic()); -+ ((TabbedRootUiCoordinator) mRootUiCoordinator).toggleGlic(), -+ /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager()); + ((TabbedRootUiCoordinator) mRootUiCoordinator) +- .toggleGlic(false)); ++ .toggleGlic(), ++ /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager(false)); mLayoutStateProviderSupplier.set(mLayoutManager); } } @@ -925,7 +925,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 -@@ -286,6 +286,10 @@ public class CompositorViewHolder extends FrameLayout +@@ -289,6 +289,10 @@ public class CompositorViewHolder extends FrameLayout @Override public void setCurrentTouchEventOffsets(float left, float top) { EventForwarder forwarder = getEventForwarder(); @@ -936,7 +936,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp if (forwarder != null) { forwarder.setCurrentTouchOffsetX(left); forwarder.setCurrentTouchOffsetY(top); -@@ -1037,6 +1041,9 @@ public class CompositorViewHolder extends FrameLayout +@@ -1043,6 +1047,9 @@ public class CompositorViewHolder extends FrameLayout mApplicationBottomInsetSupplier != null ? mApplicationBottomInsetSupplier.getInsets().webContentsHeightInset : 0; @@ -1087,7 +1087,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 -@@ -352,7 +352,7 @@ public class ScrollDelegate { +@@ -351,7 +351,7 @@ public class ScrollDelegate { boolean useUnadjustedScrollOffset = isRtl != isLeft; float scrollOffset = mScrollOffset; @@ -1099,7 +1099,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 -@@ -127,6 +127,9 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -129,6 +129,9 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -1109,7 +1109,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -309,12 +312,17 @@ public class StripLayoutHelperManager +@@ -317,12 +320,17 @@ public class StripLayoutHelperManager // Drag-Drop private @Nullable TabStripDragHandler mTabStripDragHandler; @@ -1127,7 +1127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mGlicButton != null && mGlicButton.onDown(x, y, buttons)) { return; } -@@ -346,6 +354,7 @@ public class StripLayoutHelperManager +@@ -354,6 +362,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1135,7 +1135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mGlicButton != null) { mGlicButton.drag(x, y); } -@@ -360,6 +369,7 @@ public class StripLayoutHelperManager +@@ -368,6 +377,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1143,7 +1143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mGlicButton != null && mGlicButton.click(x, y, buttons)) { mGlicButton.handleClick(time, buttons, modifiers); -@@ -377,6 +387,7 @@ public class StripLayoutHelperManager +@@ -385,6 +395,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1151,7 +1151,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), velocityX); } -@@ -415,6 +426,7 @@ public class StripLayoutHelperManager +@@ -423,6 +434,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1159,7 +1159,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onHoverMove(x, y); } -@@ -537,7 +549,8 @@ public class StripLayoutHelperManager +@@ -545,7 +557,8 @@ public class StripLayoutHelperManager @Nullable NonNullObservableSupplier xrSpaceModeObservableSupplier, BackPressManager backPressManager, SnackbarManager snackbarManager, @@ -1169,7 +1169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mContext = context; Resources res = context.getResources(); mManagerHost = managerHost; -@@ -695,6 +708,8 @@ public class StripLayoutHelperManager +@@ -702,6 +715,8 @@ public class StripLayoutHelperManager shareDelegateSupplier, TabGroupListBottomSheetCoordinator::new, snackbarManager); @@ -1178,7 +1178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -1042,6 +1057,7 @@ public class StripLayoutHelperManager +@@ -1059,6 +1074,7 @@ public class StripLayoutHelperManager RectF viewport, RectF visibleViewport, ResourceManager resourceManager) { assert mTabStripTreeProvider != null; mResourceManager = resourceManager; @@ -1186,7 +1186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over // When refactor is enabled, the mSceneLayerYOffset / mSceneLayerVisibleHeight wil be // calculated externally, so we can skip the adjustment here. -@@ -1085,6 +1101,10 @@ public class StripLayoutHelperManager +@@ -1103,6 +1119,10 @@ public class StripLayoutHelperManager getStripTransitionScrimColor(), mStripTransitionScrimOpacity); } @@ -1197,7 +1197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, assertNonNull(mLayerTitleCacheSupplier.get()), -@@ -1098,7 +1118,9 @@ public class StripLayoutHelperManager +@@ -1116,7 +1136,9 @@ public class StripLayoutHelperManager mStripTransitionScrimOpacity, getActiveStripLayoutHelper().getLeftPaddingToDraw(), getActiveStripLayoutHelper().getRightPaddingToDraw(), @@ -1208,7 +1208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over } private float getVisibleHeightDp(float topControlOffsetDp) { -@@ -1199,11 +1221,21 @@ public class StripLayoutHelperManager +@@ -1221,11 +1243,21 @@ public class StripLayoutHelperManager mRightPadding, mTopPadding); @@ -1232,7 +1232,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over // Avoid handling motion events when invisible strip state persists after a size change. if (mEventFilter != null && getStripVisibilityStateSupplier().get() == StripVisibilityState.VISIBLE) { -@@ -1240,7 +1272,8 @@ public class StripLayoutHelperManager +@@ -1262,7 +1294,8 @@ public class StripLayoutHelperManager // TODO(crbug/331490430): Revisit how we position the scrollable strip. mTopPadding = Math.max(0, mHeight - mScrollableStripHeight); @@ -1269,7 +1269,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java -@@ -34,6 +34,9 @@ import org.chromium.chrome.browser.tab.TabUtils; +@@ -35,6 +35,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; @@ -1279,7 +1279,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 -@@ -115,10 +118,23 @@ public class TabStripSceneLayer extends SceneOverlayLayer { +@@ -119,10 +122,23 @@ public class TabStripSceneLayer extends SceneOverlayLayer { float scrimOpacity, float leftPaddingDp, float rightPaddingDp, @@ -1383,7 +1383,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java -@@ -19,6 +19,9 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; +@@ -18,6 +18,9 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.components.messages.MessageContainer; import org.chromium.ui.base.ViewUtils; @@ -1393,10 +1393,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag /** * Coordinator of {@link MessageContainer}, which can adjust margins of the message container and * control the visibility of browser control when message is being shown. -@@ -63,7 +66,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider +@@ -62,7 +65,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider } - CoordinatorLayout.LayoutParams params = - (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams(); + ViewGroup.MarginLayoutParams params = + (ViewGroup.MarginLayoutParams) mContainer.getLayoutParams(); - params.topMargin = getContainerTopOffset(); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + params.gravity = Gravity.START | Gravity.BOTTOM; @@ -1407,7 +1407,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag mContainer.setLayoutParams(params); } -@@ -172,7 +180,10 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider +@@ -171,7 +179,10 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider */ private int getContainerTopOffset() { assert mContainer != null; @@ -1434,15 +1434,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -132,6 +132,7 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -109,6 +109,7 @@ import org.chromium.ui.base.ActivityResultTracker; + import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; - import org.chromium.url.GURL; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import androidx.annotation.NonNull; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; -@@ -847,11 +848,16 @@ public class NewTabPage +@@ -761,11 +762,16 @@ public class NewTabPage final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1461,7 +1461,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -867,9 +873,7 @@ public class NewTabPage +@@ -781,9 +787,7 @@ public class NewTabPage * strip. */ private int getToolbarExtraYOffset() { @@ -1471,21 +1471,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. + return 0; } - /** + /** Returns the instance of {@link NewTabPageCoordinator}. */ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -15,6 +15,9 @@ import android.text.Editable; +@@ -6,6 +6,9 @@ package org.chromium.chrome.browser.ntp; + + import android.content.Context; import android.util.AttributeSet; - import android.view.DragEvent; - import android.view.ViewStub; +import android.view.ViewGroup.LayoutParams; +import android.widget.FrameLayout; +import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; -@@ -215,7 +218,12 @@ public class NewTabPageLayout extends LinearLayout { +@@ -59,7 +62,12 @@ public class NewTabPageLayout extends LinearLayout { Log.i(TAG, "NewTabPageLayout.onFinishInflate before insertSiteSectionView"); initializeSiteSectionView(); @@ -1628,7 +1628,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -215,6 +215,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -220,6 +220,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } @@ -1692,7 +1692,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -242,6 +242,9 @@ import org.chromium.url.GURL; +@@ -252,6 +252,9 @@ import org.chromium.url.GURL; import java.util.List; import java.util.function.Supplier; @@ -1702,7 +1702,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar /** * Contains logic for managing the toolbar visual component. This class manages the interactions * with the rest of the application to ensure the toolbar is always visually up to date. -@@ -892,6 +895,17 @@ public class ToolbarManager +@@ -910,6 +913,17 @@ public class ToolbarManager /* matchTrustedCdnUrl= */ mIsCustomTab); mControlContainer = controlContainer; mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); @@ -1720,7 +1720,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBookmarkModelSupplier = bookmarkModelSupplier; mBookmarkModelSupplier.addSyncObserverAndPostIfNonNull(mBookmarkModelSupplierObserver); -@@ -1599,6 +1613,7 @@ public class ToolbarManager +@@ -1637,6 +1651,7 @@ public class ToolbarManager // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1728,7 +1728,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } else if (mLayoutChangeListener == null) { mLayoutChangeListener = (view, -@@ -1612,6 +1627,7 @@ public class ToolbarManager +@@ -1650,6 +1665,7 @@ public class ToolbarManager oldBottom) -> { if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1736,7 +1736,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener( mLayoutChangeListener); mLayoutChangeListener = null; -@@ -2228,9 +2244,21 @@ public class ToolbarManager +@@ -2310,6 +2326,17 @@ public class ToolbarManager return ((LocationBarCoordinator) mLocationBar).getUrlBarViewRectProvider(); } @@ -1753,31 +1753,37 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar + /** Enable the bottom controls. */ public void enableBottomControls() { -- View root = ((ViewStub) mActivity.findViewById(R.id.bottom_controls_stub)).inflate(); -+ mBottomRoot = ((ViewStub) mActivity.findViewById(R.id.bottom_controls_stub)).inflate(); + enableTabGroupUiControls(); +@@ -2319,8 +2346,9 @@ public class ToolbarManager + } + + private void enableTabGroupUiControls() { +- View tabGroupUiContainer = ++ mBottomRoot = + ((ViewStub) mActivity.findViewById(R.id.tab_group_ui_container_stub)).inflate(); + MoveBottomBarOverTopBar(); assert mTabGroupUiOneshotSupplier == null; assert mUndoBarThrottle != null; assert mLayoutManager != null; -@@ -2248,7 +2276,7 @@ public class ToolbarManager +@@ -2338,7 +2366,7 @@ public class ToolbarManager mActivityTabProvider, mTabModelSelector, mActivity, -- root.findViewById(R.id.bottom_container_slot), +- tabGroupUiContainer.findViewById(R.id.bottom_container_slot), + mBottomRoot.findViewById(R.id.bottom_container_slot), mBrowserControlsSizer, mScrimManager, mOmniboxFocusStateSupplier, -@@ -2275,7 +2303,7 @@ public class ToolbarManager +@@ -2365,7 +2393,7 @@ public class ToolbarManager mControlsVisibilityDelegate, mFullscreenManager, mEdgeToEdgeControllerSupplier, -- (ScrollingBottomViewResourceFrameLayout) root, +- (ScrollingBottomViewResourceFrameLayout) tabGroupUiContainer, + (ScrollingBottomViewResourceFrameLayout) mBottomRoot, - bottomControlsContentDelegateSupplier, + LayerType.TABSTRIP_TOOLBAR, + tabGroupUiBottomControlsContentDelegateSupplier, mTabObscuringHandler, - mOverlayPanelVisibilitySupplier, -@@ -2283,7 +2311,8 @@ public class ToolbarManager +@@ -2374,7 +2402,8 @@ public class ToolbarManager /* readAloudRestoringSupplier= */ () -> { final var readAloud = mReadAloudControllerSupplier.get(); return readAloud != null && readAloud.isRestoringPlayer(); @@ -1785,7 +1791,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar + }, + mTopUiThemeColorProvider, mActivityTabProvider.asObservable()); if (mInitializedWithNative) { - bottomControlsCoordinator.initializeWithNative(); + tabGroupUiBottomControlsCoordinator.initializeWithNative(); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContainer.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContainer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContainer.java @@ -1893,7 +1899,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/TabStripSceneLayer_jni.h" -@@ -160,8 +161,10 @@ void TabStripSceneLayer::SetContentTree(JNIEnv* env, +@@ -166,8 +167,10 @@ void TabStripSceneLayer::SetContentTree(JNIEnv* env, content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1906,7 +1912,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -216,7 +219,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -222,7 +225,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, float right_padding, float top_padding) { gfx::RectF content(0, y_offset, width, height); @@ -1920,7 +1926,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer background_layer_->SetBounds(gfx::Size(width, height)); background_layer_->SetBackgroundColor(SkColor4f::FromColor(background_color)); -@@ -225,7 +233,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -231,7 +239,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. @@ -1932,7 +1938,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java -@@ -275,7 +275,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser +@@ -283,7 +283,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser /** * @return {@link BrowserControlsStateProvider} instance in the current Activity. */ @@ -2048,7 +2054,7 @@ 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" -@@ -385,6 +386,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -403,6 +404,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNewTabPageCustomizationForMvt, &kNewTabPageCustomizationThemeSync, &kNewTabPageCustomizationV2, @@ -2060,7 +2066,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 -@@ -524,6 +524,10 @@ public abstract class ChromeFeatureList { +@@ -542,6 +542,10 @@ public abstract class ChromeFeatureList { public static final String MVC_UPDATE_VIEW_WHEN_MODEL_CHANGED = "MvcUpdateViewWhenModelChanged"; public static final String NAV_BAR_COLOR_ANIMATION = "NavBarColorAnimation"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT = "NewTabPageCustomizationForMvt"; @@ -2071,7 +2077,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_THEME_SYNC = "NewTabPageCustomizationThemeSync"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -1043,6 +1047,10 @@ public abstract class ChromeFeatureList { +@@ -1099,6 +1103,10 @@ public abstract class ChromeFeatureList { public static final CachedFlag sNtpSimplification = newCachedFlag(NTP_SIMPLIFICATION, /* defaultValue= */ true); public static final CachedFlag sPCctMinimumHeight = newCachedFlag(PCCT_MINIMUM_HEIGHT, true); @@ -2081,8 +2087,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f + newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPersistAcrossReboots = - newCachedFlag(PERSIST_ACROSS_REBOOTS, false); -@@ -1283,6 +1291,8 @@ public abstract class ChromeFeatureList { + newCachedFlag(PERSIST_ACROSS_REBOOTS, true); +@@ -1356,6 +1364,8 @@ public abstract class ChromeFeatureList { sNtpMvcRefactor, sNtpSimplification, sPCctMinimumHeight, @@ -2102,7 +2108,7 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/ "android/java/src/org/chromium/chrome/browser/hub/ApplyButtonData.java", "android/java/src/org/chromium/chrome/browser/hub/EmptyHubBottomToolbarDelegate.java", "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactory.java", -@@ -103,6 +104,10 @@ android_library("java") { +@@ -107,6 +108,10 @@ android_library("java") { "//ui/edge_to_edge:java", "//url:url_java", ] @@ -2157,7 +2163,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br import android.widget.FrameLayout.LayoutParams; import androidx.annotation.ColorInt; -@@ -22,6 +23,7 @@ import org.chromium.base.supplier.SettableNonNullObservableSupplier; +@@ -23,6 +24,7 @@ import org.chromium.build.annotations.EnsuresNonNull; import org.chromium.build.annotations.MonotonicNonNull; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -2165,7 +2171,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.tab.Tab; -@@ -148,7 +150,10 @@ public class HubManagerImpl implements HubManager, HubController { +@@ -171,7 +173,10 @@ public class HubManagerImpl implements HubManager, HubController { LayoutParams params = (LayoutParams) mHubContainerView.getLayoutParams(); assert params != null : "HubContainerView should always have layout params."; mStatusIndicatorHeight = height; @@ -2177,7 +2183,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br mHubContainerView.setLayoutParams(params); } -@@ -158,7 +163,10 @@ public class HubManagerImpl implements HubManager, HubController { +@@ -181,7 +186,10 @@ public class HubManagerImpl implements HubManager, HubController { LayoutParams params = (LayoutParams) mHubContainerView.getLayoutParams(); assert params != null : "HubContainerView should always have layout params."; mAppHeaderHeight = height; @@ -2189,14 +2195,15 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br mHubContainerView.setLayoutParams(params); } -@@ -306,6 +314,8 @@ public class HubManagerImpl implements HubManager, HubController { - } - mSnackbarOverrideToken = - mSnackbarManager.pushParentViewToOverrideStack( -- mHubCoordinator.getSnackbarContainer()); -+ ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled() +@@ -342,7 +350,9 @@ public class HubManagerImpl implements HubManager, HubController { + mHasSnackbarOverride = true; + mSnackbarManager.pushParentViewOverride( + ParentOverrideSlot.HUB, +- mHubCoordinator.getSnackbarContainer(), ++ ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled() + ? (ViewGroup)getPaneHostView() -+ : mHubCoordinator.getSnackbarContainer()); ++ : mHubCoordinator.getSnackbarContainer(), + hasBottomToolbar ? mSnackbarMarginSupplier : null); } } diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java @@ -2300,9 +2307,9 @@ 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 -@@ -2176,7 +2176,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, - - #if BUILDFLAG(IS_ANDROID) +@@ -2128,7 +2128,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, + prefs::kAppRatingPromptShown, false, + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, - false); + true); @@ -2447,7 +2454,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 -@@ -120,6 +120,7 @@ public class EdgeToEdgeUtils { +@@ -110,6 +110,7 @@ public class EdgeToEdgeUtils { * being attached to the window. */ public static boolean isEdgeToEdgeBottomChinEnabled(Activity activity) { @@ -2455,7 +2462,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()) { -@@ -385,6 +386,7 @@ public class EdgeToEdgeUtils { +@@ -366,6 +367,7 @@ public class EdgeToEdgeUtils { */ @Deprecated static boolean hasTappableNavigationBar(Window window) { @@ -2502,7 +2509,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -290,6 +290,7 @@ public class LocationBarCoordinator +@@ -282,6 +282,7 @@ public class LocationBarCoordinator ? ControlsPosition.TOP : mBrowserControlsStateProvider.getControlsPosition(), mDeferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, @@ -2668,7 +2675,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java -@@ -83,6 +83,8 @@ import org.chromium.ui.modelutil.PropertyModelAnimatorFactory; +@@ -87,6 +87,8 @@ import org.chromium.ui.modelutil.PropertyModelAnimatorFactory; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2677,7 +2684,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.List; import java.util.function.Supplier; -@@ -1539,7 +1541,9 @@ class AutocompleteMediator +@@ -1633,7 +1635,9 @@ class AutocompleteMediator public void onSuggestionDropdownScroll() { if (mAutocompleteInput == null) return; mAutocompleteInput.setSuggestionsListScrolled(); @@ -2691,7 +2698,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/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 -@@ -292,8 +292,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -300,8 +300,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { final Resources resources = context.getResources(); mBaseBottomPadding = resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_bottom); @@ -2706,7 +2713,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow this.setPaddingRelative(0, mBaseTopPadding, 0, mBaseBottomPadding); // Disable the scrollbar since it causes the hover events happening near the -@@ -504,6 +508,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -513,6 +517,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { mToolbarOnTop = !(ChromeFeatureList.sAndroidBottomToolbarV2ReverseOrderSuggestionsList.getValue() && toolbarPosition == ControlsPosition.BOTTOM); @@ -2754,10 +2761,10 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.omnibox.R; import org.chromium.chrome.browser.omnibox.styles.OmniboxDrawableState; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; -@@ -107,6 +108,12 @@ public final class BaseSuggestionViewBinder +@@ -106,6 +107,12 @@ public final class BaseSuggestionViewBinder updateColorScheme(model, view); - } else if (DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED == propertyKey - || DropdownCommonProperties.BG_TOP_CORNER_ROUNDED == propertyKey) { + } else if (SuggestionCommonProperties.BG_BOTTOM_CORNER_ROUNDED == propertyKey + || SuggestionCommonProperties.BG_TOP_CORNER_ROUNDED == propertyKey) { + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + view.setRoundingEdges( + model.get(DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED), @@ -2765,12 +2772,12 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + return; + } view.setRoundingEdges( - model.get(DropdownCommonProperties.BG_TOP_CORNER_ROUNDED), - model.get(DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED)); + model.get(SuggestionCommonProperties.BG_TOP_CORNER_ROUNDED), + model.get(SuggestionCommonProperties.BG_BOTTOM_CORNER_ROUNDED)); 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 -@@ -1624,6 +1624,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1667,6 +1667,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2786,8 +2793,8 @@ 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 -@@ -219,6 +219,7 @@ android_library("core_java") { - "//content/public/android:content_java", +@@ -225,6 +225,7 @@ android_library("core_java") { + "//google_apis/gaia/android:java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_annotation_annotation_experimental_java", + "//third_party/androidx:androidx_coordinatorlayout_coordinatorlayout_java", @@ -2837,21 +2844,20 @@ 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/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 -@@ -4,6 +4,13 @@ - - package org.chromium.chrome.browser.toolbar.bottom; +@@ -7,6 +7,12 @@ package org.chromium.chrome.browser.toolbar.bottom; + import androidx.annotation.ColorInt; + import androidx.annotation.Nullable; +import android.app.Activity; + +import org.chromium.base.supplier.NullableObservableSupplier; +import org.chromium.chrome.browser.theme.TopUiThemeColorProvider; -+import org.chromium.chrome.browser.tab.CurrentTabObserver; +import org.chromium.chrome.browser.tab.Tab; + import org.chromium.base.Callback; import org.chromium.build.annotations.NullMarked; - import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; -@@ -27,10 +34,13 @@ public interface BottomControlsContentDelegate extends BackPressHandler { + import org.chromium.chrome.browser.browser_controls.BottomControlsStacker.LayerScrollBehavior; +@@ -24,10 +30,13 @@ public interface BottomControlsContentDelegate extends BackPressHandler { * * @param visibilityController Bottom controls visibility controller. * @param onModelTokenChange Callback to notify when a new capture is needed. @@ -2869,7 +2875,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 -@@ -35,6 +35,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -36,6 +36,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; @@ -2878,7 +2884,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import java.util.HashSet; import java.util.Set; -@@ -92,6 +94,8 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -94,6 +96,8 @@ public class BottomControlsCoordinator implements BackPressHandler { * @param constraintsSupplier Used to access current constraints of the browser controls. * @param readAloudRestoringSupplier Supplier that returns true if Read Aloud is currently * restoring its player, e.g. after theme change. @@ -2887,7 +2893,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow */ @SuppressLint("CutPasteId") // Not actually cut and paste since it's View vs ViewGroup. public BottomControlsCoordinator( -@@ -107,7 +111,9 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -110,7 +114,9 @@ public class BottomControlsCoordinator implements BackPressHandler { TabObscuringHandler tabObscuringHandler, NonNullObservableSupplier overlayPanelVisibilitySupplier, NullableObservableSupplier<@BrowserControlsState Integer> constraintsSupplier, @@ -2898,7 +2904,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mRootFrameLayout = root; root.setConstraintsSupplier(constraintsSupplier); PropertyModel model = new PropertyModel(BottomControlsProperties.ALL_KEYS); -@@ -171,7 +177,8 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -176,7 +182,8 @@ public class BottomControlsCoordinator implements BackPressHandler { mMediator.setBottomControlsVisible(isVisible); } }, @@ -2911,7 +2917,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/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 -@@ -27,6 +27,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate; +@@ -30,6 +30,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; @@ -2919,7 +2925,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import java.util.function.Supplier; -@@ -156,6 +157,12 @@ class BottomControlsMediator +@@ -170,6 +171,12 @@ class BottomControlsMediator void setBottomControlsVisible(boolean visible) { boolean visibilityChanged = mIsBottomControlsVisible != visible; @@ -2932,7 +2938,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mIsBottomControlsVisible = visible; updateCompositedViewVisibility(); updateAndroidViewVisibility(); -@@ -185,6 +192,20 @@ class BottomControlsMediator +@@ -199,6 +206,20 @@ class BottomControlsMediator mTabObscuringHandler.removeObserver(this); } @@ -2953,7 +2959,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow @Override public void onBottomControlsHeightChanged( int bottomControlsHeight, int bottomControlsMinHeight) { -@@ -274,11 +295,13 @@ class BottomControlsMediator +@@ -288,11 +309,13 @@ class BottomControlsMediator && !mIsInSwipeLayout && getBrowserControls().getBottomControlOffset() == 0; if (visible) { @@ -3066,7 +3072,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/settings/AddressBarPreference.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/settings/AddressBarPreference.java -@@ -82,6 +82,7 @@ public class AddressBarPreference extends ContainedRadioButtonGroupPreference +@@ -99,6 +99,7 @@ public class AddressBarPreference extends ContainedRadioButtonGroupPreference * configurable for experimental purposes but defaults to top. */ public static boolean isToolbarConfiguredToShowOnTop() { @@ -3077,7 +3083,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java -@@ -80,6 +80,10 @@ import java.lang.annotation.RetentionPolicy; +@@ -82,6 +82,10 @@ import java.lang.annotation.RetentionPolicy; import java.util.function.BooleanSupplier; import java.util.function.Supplier; @@ -3088,7 +3094,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 -@@ -180,6 +184,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -182,6 +186,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout Resources res = getContext().getResources(); setMinimumHeight((int) res.getDimension(toolbarLayoutHeightResId)); } @@ -3103,7 +3109,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/TopToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java -@@ -1049,6 +1049,6 @@ public class TopToolbarCoordinator implements Toolbar, TopControlLayer { +@@ -1074,6 +1074,6 @@ public class TopToolbarCoordinator implements Toolbar, TopControlLayer { hairlineAdjustment = -mControlContainer.getToolbarHairlineHeight(); } diff --git a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch index aaf0b5b78..913e4621a 100644 --- a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch +++ b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch @@ -37,7 +37,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 -@@ -84,6 +84,13 @@ import org.chromium.ui.text.SpanApplier; +@@ -86,6 +86,13 @@ import org.chromium.ui.widget.ChromeBulletSpan; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -51,7 +51,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 -@@ -103,6 +110,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -105,6 +112,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; private static final String PREF_JAVASCRIPT_OPTIMIZER = "javascript_optimizer"; @VisibleForTesting static final String PREF_DO_NOT_TRACK = "do_not_track"; @@ -67,8 +67,8 @@ 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"; private static final String PREF_ADVANCED_PROTECTION_INFO = "advanced_protection_info"; - -@@ -211,6 +228,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment + private static final int SECURE_CONNECTIONS_MESSAGE_ID = +@@ -219,6 +236,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment (ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION); passwordLeakTogglePref.setOnPreferenceChangeListener(this); @@ -85,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting ChromeSwitchPreference canMakePaymentPref = (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT); canMakePaymentPref.setOnPreferenceChangeListener(this); -@@ -386,6 +413,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -401,6 +428,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_PASSWORD_LEAK_DETECTION.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.PASSWORD_LEAK_DETECTION_ENABLED, (boolean) newValue); @@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -398,6 +428,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -413,6 +443,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment /** Updates the preferences. */ public void updatePreferences() { @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -461,6 +461,10 @@ For more settings that use data to improve your Chrome experience, go to diff --git a/build/patches/Multi-Screen-Window-Placement-API-fix.patch b/build/patches/Multi-Screen-Window-Placement-API-fix.patch index 70e0aefaf..b2c66b733 100644 --- a/build/patches/Multi-Screen-Window-Placement-API-fix.patch +++ b/build/patches/Multi-Screen-Window-Placement-API-fix.patch @@ -7,29 +7,17 @@ granted by user License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../permissions/permission_service_impl.cc | 1 - .../renderer_host/render_frame_host_impl.cc | 3 +- .../core/frame/cached_permission_status.cc | 6 ++-- .../core/frame/cached_permission_status.h | 1 + .../blink/renderer/core/frame/screen.cc | 35 +++++++++++++++++-- .../blink/renderer/core/frame/screen.h | 17 ++++++++- - 6 files changed, 55 insertions(+), 8 deletions(-) + 5 files changed, 55 insertions(+), 7 deletions(-) -diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc ---- a/content/browser/permissions/permission_service_impl.cc -+++ b/content/browser/permissions/permission_service_impl.cc -@@ -442,7 +442,6 @@ void PermissionServiceImpl::AddPermissionObserver( - ReceivedBadMessage(); - return; - } -- - PermissionResult current_result = GetPermissionResult(permission); - context_->CreateSubscription( - permission, origin_, current_result, PermissionResult(last_known_status), 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 -@@ -19587,7 +19587,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() { +@@ -19982,7 +19982,8 @@ RenderFrameHostImpl::GetCachedPermissionStatuses() { {PermissionName::WEB_APP_INSTALLATION, PermissionType::WEB_APP_INSTALLATION}, #endif @@ -42,7 +30,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.cc b/third_party/blink/renderer/core/frame/cached_permission_status.cc --- a/third_party/blink/renderer/core/frame/cached_permission_status.cc +++ b/third_party/blink/renderer/core/frame/cached_permission_status.cc -@@ -37,9 +37,9 @@ CachedPermissionStatus::CachedPermissionStatus(ExecutionContext* context) +@@ -38,9 +38,9 @@ CachedPermissionStatus::CachedPermissionStatus(ExecutionContext* context) permission_service_(context), permission_observer_receivers_(this, context) { CHECK(context); @@ -58,7 +46,7 @@ diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.cc b diff --git a/third_party/blink/renderer/core/frame/cached_permission_status.h b/third_party/blink/renderer/core/frame/cached_permission_status.h --- a/third_party/blink/renderer/core/frame/cached_permission_status.h +++ b/third_party/blink/renderer/core/frame/cached_permission_status.h -@@ -72,6 +72,7 @@ class CORE_EXPORT CachedPermissionStatus final +@@ -73,6 +73,7 @@ class CORE_EXPORT CachedPermissionStatus final private: friend class HTMLCapabilityElementBase; diff --git a/build/patches/Multiple-fingerprinting-mitigations.patch b/build/patches/Multiple-fingerprinting-mitigations.patch index afd72a13c..a68a2df78 100644 --- a/build/patches/Multiple-fingerprinting-mitigations.patch +++ b/build/patches/Multiple-fingerprinting-mitigations.patch @@ -55,7 +55,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 -@@ -2399,6 +2399,7 @@ static_library("browser") { +@@ -2249,6 +2249,7 @@ static_library("browser") { "//services/device/public/cpp/bluetooth", "//services/device/public/cpp/geolocation", "//services/device/public/cpp/usb", @@ -66,8 +66,8 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -267,6 +267,8 @@ - #include "ui/ui_features.h" +@@ -272,6 +272,8 @@ + #include "ui/native_theme/features/native_theme_features.h" #include "url/url_features.h" +#include "third_party/ungoogled/ungoogled_switches.h" @@ -78,7 +78,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -316,6 +316,7 @@ source_set("browser") { +@@ -317,6 +317,7 @@ source_set("browser") { "//third_party/re2", "//third_party/snappy", "//third_party/sqlite", @@ -97,7 +97,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #if BUILDFLAG(IS_ANDROID) #include "base/android/child_process_binding_types.h" #include "content/browser/font_unique_name_lookup/font_unique_name_lookup_service.h" -@@ -3701,6 +3702,8 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3727,6 +3728,8 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kDisableBestEffortTasks, switches::kDisableBreakpad, switches::kDisableFileSystem, @@ -120,7 +120,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn 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 -@@ -50,6 +50,8 @@ +@@ -51,6 +51,8 @@ #include "ui/native_theme/features/native_theme_features.h" #include "ui/native_theme/native_theme.h" @@ -129,7 +129,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. #if BUILDFLAG(IS_ANDROID) #include "base/android/android_info.h" #endif -@@ -494,6 +496,10 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { +@@ -497,6 +499,10 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { // as a last resort. void SetCustomizedRuntimeFeaturesFromCombinedArgs( const base::CommandLine& command_line) { @@ -180,7 +180,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -@@ -1042,6 +1043,16 @@ Document::Document(const DocumentInit& initializer, +@@ -1046,6 +1047,16 @@ Document::Document(const DocumentInit& initializer, data_(MakeGarbageCollected(GetExecutionContext())) { TRACE_EVENT("blink", "Document::Document", perfetto::Flow::FromPointer(this)); DCHECK(agent_); @@ -197,7 +197,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink if (base::FeatureList::IsEnabled(features::kDelayAsyncScriptExecution) && features::kDelayAsyncScriptExecutionDelayByDefaultParam.Get()) { script_runner_delayer_->Activate(); -@@ -2749,6 +2760,14 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() { +@@ -2754,6 +2765,14 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() { #endif } @@ -215,7 +215,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h --- a/third_party/blink/renderer/core/dom/document.h +++ b/third_party/blink/renderer/core/dom/document.h -@@ -572,6 +572,10 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -573,6 +573,10 @@ class CORE_EXPORT Document : public ContainerNode, has_xml_declaration_ = has_xml_declaration ? 1 : 0; } @@ -226,7 +226,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/ V8VisibilityState visibilityState() const; String visibilityStateAsString() const; bool IsPageVisible() const; -@@ -2842,6 +2846,9 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -2862,6 +2866,9 @@ class CORE_EXPORT Document : public ContainerNode, base::ElapsedTimer start_time_; @@ -260,7 +260,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creat diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc --- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc +++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc -@@ -90,6 +90,24 @@ TextMetrics::TextMetrics(const Font* font, +@@ -91,6 +91,24 @@ TextMetrics::TextMetrics(const Font* font, Update(font, direction, baseline, align, text, text_painter); } @@ -377,9 +377,9 @@ diff --git a/third_party/blink/renderer/core/svg/svg_text_content_element.cc b/t diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -@@ -98,6 +98,10 @@ - #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +@@ -104,6 +104,10 @@ #include "ui/gfx/geometry/skia_conversions.h" + #include "ui/gfx/geometry/vector2d_f.h" +#include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" @@ -388,7 +388,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c // Including "base/time/time.h" triggers a bug in IWYU. // https://github.com/include-what-you-use/include-what-you-use/issues/1122 // IWYU pragma: no_include "base/numerics/clamped_math.h" -@@ -523,6 +527,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -532,6 +536,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds(); DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh))); } @@ -399,7 +399,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c } return image_data; -@@ -1165,9 +1173,23 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { +@@ -1174,9 +1182,23 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { TextDirection direction = ToTextDirection(state.GetDirection(), host, computed_style); @@ -427,7 +427,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -1756,7 +1756,9 @@ component("platform") { +@@ -1760,7 +1760,9 @@ component("platform") { "//third_party/blink/renderer:non_test_config", ] @@ -438,13 +438,13 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re allow_circular_includes_from = [ "//third_party/blink/renderer/platform/blob", -@@ -1840,6 +1842,7 @@ component("platform") { +@@ -1844,6 +1846,7 @@ component("platform") { "//third_party/blink/public/strings", "//third_party/blink/renderer/platform/wtf", "//third_party/ced", + "//third_party/ungoogled:switches", "//third_party/emoji-segmenter", - "//third_party/harfbuzz-ng", + "//third_party/harfbuzz", "//third_party/highway:libhwy", diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc @@ -669,7 +669,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h --- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h +++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h -@@ -37,6 +37,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image { +@@ -36,6 +36,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image { StaticBitmapImage(ImageOrientation orientation) : orientation_(orientation) {} @@ -681,7 +681,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h 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 -@@ -3863,6 +3863,12 @@ +@@ -3980,6 +3980,12 @@ status: {"Mac": "test", "default": "stable"}, base_feature: "none", }, diff --git a/build/patches/Never-fetch-popular-sites.patch b/build/patches/Never-fetch-popular-sites.patch index de6ce312c..85bae99c2 100644 --- a/build/patches/Never-fetch-popular-sites.patch +++ b/build/patches/Never-fetch-popular-sites.patch @@ -10,15 +10,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/popular_sites_impl.cc --- a/components/ntp_tiles/popular_sites_impl.cc +++ b/components/ntp_tiles/popular_sites_impl.cc -@@ -64,7 +64,6 @@ const char kPopularSitesDefaultDirectory[] = "chrome/ntp/"; +@@ -66,7 +66,6 @@ const char kPopularSitesDefaultDirectory[] = "chrome/ntp/"; const char kPopularSitesDefaultCountryCode[] = "DEFAULT"; - const char kPopularSitesDefaultVersion[] = "5"; + const char kPopularSitesDefaultVersion[] = "7"; const int kSitesExplorationStartVersion = 6; -const int kPopularSitesRedownloadIntervalHours = 24; #if BUILDFLAG(IS_IOS) const char kIOSDefaultPopularSitesLocaleUS[] = "https://www.gstatic.com/chrome/ntp/ios/" -@@ -350,7 +349,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download, +@@ -361,7 +360,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download, DCHECK(!callback_); callback_ = std::move(callback); @@ -32,7 +32,7 @@ diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/p prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref)); const base::TimeDelta time_since_last_download = base::Time::Now() - last_download_time; -@@ -367,7 +371,7 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download, +@@ -378,7 +382,7 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download, (time_since_last_download > redownload_interval) || url_changed) { FetchPopularSites(); return true; diff --git a/build/patches/OpenSearch-miscellaneous.patch b/build/patches/OpenSearch-miscellaneous.patch index 9e213c73f..3e2075b71 100644 --- a/build/patches/OpenSearch-miscellaneous.patch +++ b/build/patches/OpenSearch-miscellaneous.patch @@ -41,10 +41,10 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro #include +#include "base/logging.h" - #include "base/metrics/histogram_macros.h" #include "chrome/browser/favicon/favicon_utils.h" #include "chrome/browser/profiles/profile.h" -@@ -49,6 +50,7 @@ void SearchEngineTabHelper::BindOpenSearchDescriptionDocumentHandler( + #include "chrome/browser/search_engines/template_url_fetcher_factory.h" +@@ -48,6 +49,7 @@ void SearchEngineTabHelper::BindOpenSearchDescriptionDocumentHandler( receiver) { // Bind only for outermost main frames. if (rfh->GetParentOrOuterDocument()) { @@ -52,7 +52,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return; } -@@ -79,6 +81,7 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( +@@ -78,6 +80,7 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( // Don't autogenerate keywords for pages that are the result of form // submissions. if (IsFormSubmit(entry)) { @@ -60,7 +60,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return std::u16string(); } -@@ -88,6 +91,7 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( +@@ -87,6 +90,7 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( if (!url.is_valid()) { url = entry->GetURL(); if (!url.is_valid()) { @@ -68,7 +68,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return std::u16string(); } } -@@ -97,10 +101,10 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( +@@ -96,10 +100,10 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( // b) have a path. // // If we relax the path constraint, we need to be sure to sanitize the path @@ -82,7 +82,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return std::u16string(); } -@@ -129,14 +133,15 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -128,14 +132,15 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( // http://b/issue?id=863583. For that reason, this doesn't check and allow // urls referring to osdd urls with same schemes. if (!osdd_url.is_valid() || !osdd_url.SchemeIsHTTPOrHTTPS()) { @@ -100,7 +100,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return; } -@@ -150,6 +155,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -149,6 +154,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( --index; } if (!entry || IsFormSubmit(entry)) { @@ -108,7 +108,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return; } -@@ -160,11 +166,18 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -159,11 +165,18 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( return; } @@ -127,7 +127,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro // Download the OpenSearch description document. If this is successful, a // new keyword will be created when done. #if BUILDFLAG(IS_ANDROID) -@@ -173,6 +186,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -172,6 +185,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( } #endif TemplateURLFetcherFactory::GetForProfile(profile)->ScheduleDownload( @@ -135,7 +135,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro keyword, osdd_url, entry->GetFavicon().url, frame->GetLastCommittedOrigin(), url_loader_factory.get(), frame->GetRoutingID(), -@@ -217,12 +231,19 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( +@@ -216,12 +230,19 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( return; } @@ -157,7 +157,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro TemplateURLService* url_service = TemplateURLServiceFactory::GetForProfile(profile); if (!url_service) { -@@ -234,7 +255,6 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( +@@ -233,7 +254,6 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( return; } @@ -173,10 +173,10 @@ diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/c #include "base/command_line.h" #include "base/functional/bind.h" +#include "base/logging.h" - #include "base/metrics/histogram_macros.h" #include "base/no_destructor.h" #include "base/strings/string_number_conversions.h" -@@ -274,6 +275,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { + #include "base/strings/string_util.h" +@@ -273,6 +274,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL(); if (!osdd_url.is_empty()) { @@ -221,7 +221,7 @@ diff --git a/components/search_engines/template_url_fetcher.cc b/components/sear TemplateURLService* model = fetcher_->template_url_service_; DCHECK(model); // TemplateURLFetcher::ScheduleDownload verifies this. -@@ -230,7 +234,9 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() { +@@ -231,7 +235,9 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() { // omnibox until they are activated. data.is_active = TemplateURLData::ActiveStatus::kUnspecified; @@ -232,7 +232,7 @@ diff --git a/components/search_engines/template_url_fetcher.cc b/components/sear fetcher_->RequestCompleted(this); // WARNING: RequestCompleted deletes us. -@@ -245,6 +251,7 @@ TemplateURLFetcher::~TemplateURLFetcher() { +@@ -246,6 +252,7 @@ TemplateURLFetcher::~TemplateURLFetcher() { } void TemplateURLFetcher::ScheduleDownload( @@ -240,7 +240,7 @@ diff --git a/components/search_engines/template_url_fetcher.cc b/components/sear const std::u16string& keyword, const GURL& osdd_url, const GURL& favicon_url, -@@ -262,21 +269,35 @@ void TemplateURLFetcher::ScheduleDownload( +@@ -263,21 +270,35 @@ void TemplateURLFetcher::ScheduleDownload( return; } @@ -309,7 +309,7 @@ diff --git a/components/search_engines/template_url_parser.cc b/components/searc 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 -@@ -385,7 +385,10 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -409,7 +409,10 @@ class TemplateURLService final : public WebDataServiceConsumer, void UpdateProviderFavicons(const GURL& potential_search_url, const GURL& favicon_url); @@ -321,7 +321,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc // regardless of |url| if the default search provider is managed by policy or // controlled by an extension. bool CanMakeDefault(const TemplateURL* url) const; -@@ -783,9 +786,6 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -823,9 +826,6 @@ class TemplateURLService final : public WebDataServiceConsumer, // SetKeywordSearchTermsForURL is invoked. void UpdateKeywordSearchTermsForURL(const URLVisitedDetails& details); diff --git a/build/patches/Override-Navigator-Language.patch b/build/patches/Override-Navigator-Language.patch index 3ce6b3111..e94d22a33 100644 --- a/build/patches/Override-Navigator-Language.patch +++ b/build/patches/Override-Navigator-Language.patch @@ -69,7 +69,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #include "components/metrics/single_sample_metrics.h" #include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h" #include "components/services/storage/public/cpp/buckets/bucket_id.h" -@@ -3612,8 +3613,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3638,8 +3639,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( PropagateBrowserCommandLineToRenderer(browser_command_line, command_line); // Pass on the browser locale. diff --git a/build/patches/Override-the-MV2-deprecation.patch b/build/patches/Override-the-MV2-deprecation.patch index ec8cf34e7..826789bec 100644 --- a/build/patches/Override-the-MV2-deprecation.patch +++ b/build/patches/Override-the-MV2-deprecation.patch @@ -25,7 +25,7 @@ diff --git a/chrome/browser/extensions/manifest_v2_experiment_manager.cc b/chrom diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc --- a/extensions/common/extension.cc +++ b/extensions/common/extension.cc -@@ -63,7 +63,7 @@ constexpr int kPEMOutputColumns = 64; +@@ -66,7 +66,7 @@ constexpr int kPEMOutputColumns = 64; static_assert(kMaximumSupportedManifestVersion >= kMinimumSupportedManifestVersion, "The modern manifest version must be supported."); diff --git a/build/patches/Partition-Blink-memory-cache.patch b/build/patches/Partition-Blink-memory-cache.patch index b72d9d8fd..db349a010 100644 --- a/build/patches/Partition-Blink-memory-cache.patch +++ b/build/patches/Partition-Blink-memory-cache.patch @@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc b/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc -@@ -426,7 +426,8 @@ static unsigned AvoidDownloadIfHigherDensityResourceIsInCache( +@@ -425,7 +425,8 @@ static unsigned AvoidDownloadIfHigherDensityResourceIsInCache( auto* resource = MemoryCache::Get()->ResourceForURL( url, document->Fetcher()->GetCacheIdentifier(url, @@ -53,7 +53,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.c diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc -@@ -179,7 +179,7 @@ Resource* CachedResource(LocalFrame* frame, +@@ -182,7 +182,7 @@ Resource* CachedResource(LocalFrame* frame, if (!cached_resource) { cached_resource = MemoryCache::Get()->ResourceForURL( url, document->Fetcher()->GetCacheIdentifier( @@ -261,7 +261,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h 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 -@@ -5472,8 +5472,7 @@ +@@ -5594,8 +5594,7 @@ status: "stable", }, { diff --git a/build/patches/Partition-HSTS-cache-by-NAK.patch b/build/patches/Partition-HSTS-cache-by-NAK.patch index cb6741b9a..f35a3557d 100644 --- a/build/patches/Partition-HSTS-cache-by-NAK.patch +++ b/build/patches/Partition-HSTS-cache-by-NAK.patch @@ -267,7 +267,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // PreloadResult is the result of resolving a specific name in the preloaded // data. struct PreloadResult { -@@ -190,7 +213,7 @@ bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { +@@ -177,7 +200,7 @@ bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { // Ensure that |search_hostname| is a valid hostname before // processing. @@ -276,7 +276,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -249,18 +272,19 @@ TransportSecurityState::TransportSecurityState( +@@ -236,18 +259,19 @@ TransportSecurityState::TransportSecurityState( // Both HSTS and HPKP cause fatal SSL errors, so return true if a // host has either. @@ -299,7 +299,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ dict.Set("should_upgrade_to_ssl", sts_state.ShouldUpgradeToSSL()); dict.Set("host_found_in_hsts_bypass_list", hsts_host_bypass_list_.find(host) != hsts_host_bypass_list_.end()); -@@ -268,12 +292,13 @@ base::DictValue TransportSecurityState::NetLogUpgradeToSSLParam( +@@ -255,12 +279,13 @@ base::DictValue TransportSecurityState::NetLogUpgradeToSSLParam( } SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( @@ -314,7 +314,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // Only top level navigations should be upgraded when // kHstsTopLevelNavigationsOnly is enabled. -@@ -284,7 +309,7 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( +@@ -271,7 +296,7 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( STSState sts_state; // Check the dynamic list first (removing the entry if expired). @@ -323,7 +323,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // [*.]localhost hosts now ignore Strict-Transport-Security response // headers, but an entry may have been stored before this restriction // was introduced (crbug.com/41251622). -@@ -309,29 +334,31 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( +@@ -296,29 +321,31 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( } bool TransportSecurityState::ShouldUpgradeToSSL( @@ -361,7 +361,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } ct::CTRequirementsStatus TransportSecurityState::CheckCTRequirements( -@@ -385,12 +412,13 @@ void TransportSecurityState::UpdatePinList( +@@ -378,12 +405,13 @@ void TransportSecurityState::UpdatePinList( } void TransportSecurityState::AddHSTSInternal( @@ -376,7 +376,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -414,13 +442,14 @@ void TransportSecurityState::AddHSTSInternal( +@@ -407,13 +435,14 @@ void TransportSecurityState::AddHSTSInternal( DirtyNotify(); } @@ -393,7 +393,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -468,10 +497,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( +@@ -461,10 +490,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( return PKPStatus::VIOLATED; } @@ -406,7 +406,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -548,7 +577,8 @@ void TransportSecurityState::DirtyNotify() { +@@ -541,7 +570,8 @@ void TransportSecurityState::DirtyNotify() { delegate_->StateIsDirty(this); } @@ -416,7 +416,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ std::string_view value) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); -@@ -567,23 +597,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host, +@@ -560,23 +590,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host, upgrade_mode = STSState::MODE_FORCE_HTTPS; } @@ -447,7 +447,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } size_t TransportSecurityState::num_sts_entries() const { -@@ -608,9 +640,10 @@ TransportSecurityState::PKPStatus +@@ -601,9 +633,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPinsImpl( std::string_view host, bool is_issued_by_known_root, @@ -460,17 +460,17 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // HasPublicKeyPins should have returned true in order for this method to have // been called. -@@ -651,7 +684,7 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, - PreloadResult result; - if (host_pins_.has_value()) { - // Ensure that |host| is a valid hostname before processing. -- if (CanonicalizeHost(host).empty()) { -+ if (CanonicalizeHostWithoutNak(host).empty()) { - return false; - } - // Normalize any trailing '.' used for DNS suffix searches. -@@ -716,21 +749,21 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, - return false; +@@ -642,7 +675,7 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, + } + + // Ensure that |host| is a valid hostname before processing. +- if (CanonicalizeHost(host).empty()) { ++ if (CanonicalizeHostWithoutNak(host).empty()) { + return false; + } + // Normalize any trailing '.' used for DNS suffix searches. +@@ -725,21 +758,21 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, + } } -bool TransportSecurityState::GetSTSState(std::string_view host, @@ -497,7 +497,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -767,11 +800,11 @@ bool TransportSecurityState::GetDynamicSTSState(std::string_view host, +@@ -776,11 +809,11 @@ bool TransportSecurityState::GetDynamicSTSState(std::string_view host, return false; } @@ -653,7 +653,7 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc --- a/net/quic/quic_chromium_client_session.cc +++ b/net/quic/quic_chromium_client_session.cc -@@ -1549,7 +1549,7 @@ bool QuicChromiumClientSession::CanPool( +@@ -1563,7 +1563,7 @@ bool QuicChromiumClientSession::CanPool( return SpdySession::CanPool(transport_security_state_, ssl_info, *ssl_config_service_, session_key_.host(), @@ -706,7 +706,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc TransportSecurityState::PKPStatus::VIOLATED) { return false; } -@@ -980,7 +981,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const { +@@ -1007,7 +1008,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const { return true; // This is not a secure session, so all domains are okay. return CanPool(transport_security_state_, ssl_info, *ssl_config_service_, @@ -716,7 +716,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc } void SpdySession::EnqueueStreamWrite( -@@ -3124,7 +3126,8 @@ void SpdySession::OnAltSvc( +@@ -3173,7 +3175,8 @@ void SpdySession::OnAltSvc( return; } if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_, @@ -729,7 +729,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h -@@ -318,7 +318,8 @@ class NET_EXPORT SpdySession +@@ -325,7 +325,8 @@ class NET_EXPORT SpdySession const SSLInfo& ssl_info, const SSLConfigService& ssl_config_service, std::string_view old_hostname, @@ -742,7 +742,7 @@ diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc -@@ -405,20 +405,6 @@ std::unique_ptr URLRequestContextBuilder::Build() { +@@ -406,20 +406,6 @@ std::unique_ptr URLRequestContextBuilder::Build() { context->set_transport_security_state( std::make_unique(hsts_policy_bypass_list_)); @@ -774,7 +774,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque url.GetHost(), /*is_top_level_nav=*/ request->isolation_info().IsOutermostMainFrameRequest(), -@@ -1233,7 +1234,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { +@@ -1234,7 +1235,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { std::optional value; if ((value = headers->EnumerateHeader(nullptr, "Strict-Transport-Security"))) { @@ -783,7 +783,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } } -@@ -1313,7 +1314,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { +@@ -1314,7 +1315,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { TransportSecurityState* state = context->transport_security_state(); NotifySSLCertificateError( result, transaction_->GetResponseInfo()->ssl_info, @@ -795,7 +795,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque 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 -@@ -2120,6 +2120,7 @@ void NetworkContext::CreateHostResolver( +@@ -2195,6 +2195,7 @@ void NetworkContext::CreateHostResolver( void NetworkContext::VerifyCertInternal( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -803,7 +803,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& ocsp_result, const std::string& sct_list, CTVerificationMode ct_verification_mode, -@@ -2131,6 +2132,7 @@ void NetworkContext::VerifyCertInternal( +@@ -2206,6 +2207,7 @@ void NetworkContext::VerifyCertInternal( pending_cert_verify->result = std::make_unique(); pending_cert_verify->certificate = certificate; pending_cert_verify->host_port = host_port; @@ -811,7 +811,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont net::CertVerifier* cert_verifier = g_cert_verifier_for_testing ? g_cert_verifier_for_testing : url_request_context_->cert_verifier(); -@@ -2161,20 +2163,22 @@ void NetworkContext::VerifyCertInternal( +@@ -2236,20 +2238,22 @@ void NetworkContext::VerifyCertInternal( void NetworkContext::VerifyCert( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -836,7 +836,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont CTVerificationMode::kSignedExchange, std::move(callback)); } -@@ -2215,17 +2219,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( +@@ -2290,17 +2294,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( std::move(callback).Run(); } @@ -859,7 +859,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont bool is_top_level_nav, IsHSTSActiveForHostCallback callback) { net::TransportSecurityState* security_state = -@@ -2237,10 +2243,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, +@@ -2312,10 +2318,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, } std::move(callback).Run( @@ -872,7 +872,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont GetHSTSStateCallback callback) { base::DictValue result; -@@ -2278,10 +2284,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -2353,10 +2359,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, net::TransportSecurityState::STSState dynamic_sts_state; net::TransportSecurityState::PKPState dynamic_pkp_state; bool found_sts_dynamic = transport_security_state->GetDynamicSTSState( @@ -885,7 +885,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont if (found_sts_dynamic) { result.Set("dynamic_upgrade_mode", static_cast(dynamic_sts_state.upgrade_mode)); -@@ -2319,6 +2325,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -2394,6 +2400,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, } void NetworkContext::DeleteDynamicDataForHost( @@ -893,7 +893,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& host, DeleteDynamicDataForHostCallback callback) { net::TransportSecurityState* transport_security_state = -@@ -2329,7 +2336,7 @@ void NetworkContext::DeleteDynamicDataForHost( +@@ -2404,7 +2411,7 @@ void NetworkContext::DeleteDynamicDataForHost( } std::move(callback).Run( @@ -902,7 +902,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont } void NetworkContext::EnableStaticKeyPinningForTesting( -@@ -2388,7 +2395,7 @@ void NetworkContext::PreconnectSockets( +@@ -2463,7 +2470,7 @@ void NetworkContext::PreconnectSockets( DCHECK(!require_network_anonymization_key_ || !network_anonymization_key.IsEmpty()); @@ -911,7 +911,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // |PreconnectSockets| may receive arguments from the renderer, which is not // guaranteed to validate them. -@@ -3239,7 +3246,9 @@ void NetworkContext::OnConnectionError() { +@@ -3316,7 +3323,9 @@ void NetworkContext::OnConnectionError() { } } @@ -922,7 +922,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // TODO(lilyhoughton) This needs to be gotten rid of once explicit // construction with a URLRequestContext is no longer supported. -@@ -3265,6 +3274,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { +@@ -3342,6 +3351,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { // top-level navigation so we need to disallow HSTS upgrades for every // preconnect. if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL( @@ -930,7 +930,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont original_url.GetHost(), /*is_top_level_nav=*/false)) { RecordHSTSPreconnectUpgradeReason( HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin); -@@ -3326,7 +3336,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) { +@@ -3403,7 +3413,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) { url_request_context_->transport_security_state()->CheckPublicKeyPins( pending_cert_verify->host_port.host(), pending_cert_verify->result->is_issued_by_known_root, @@ -943,7 +943,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont 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 -@@ -417,12 +417,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -429,12 +429,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingReceiver receiver) override; void VerifyCert(const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -958,7 +958,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& ocsp_result, const std::string& sct_list, VerifyCertCallback callback) override; -@@ -431,16 +433,18 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -443,16 +445,18 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const std::string& hostname, const scoped_refptr& tls_certificate, Verify2QwacCertBindingCallback callback) override; @@ -980,7 +980,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& host, DeleteDynamicDataForHostCallback callback) override; void SetCorsOriginAccessListsForOrigin( -@@ -801,7 +805,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -826,7 +830,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingRemote cookie_observer, net::FirstPartySetMetadata first_party_set_metadata); @@ -990,7 +990,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte #if BUILDFLAG(IS_P2P_ENABLED) void DestroySocketManager(P2PSocketManager* socket_manager); -@@ -813,6 +818,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -838,6 +843,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void VerifyCertInternal( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -998,7 +998,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& ocsp_result, const std::string& sct_list, CTVerificationMode ct_verification_mode, -@@ -992,6 +998,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -1027,6 +1033,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext VerifyCertCallback callback; scoped_refptr certificate; net::HostPortPair host_port; @@ -1009,7 +1009,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte 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 -@@ -1575,6 +1575,7 @@ interface NetworkContext { +@@ -1583,6 +1583,7 @@ interface NetworkContext { // Checks the given certificate against the CertVerifier and CTVerifier. VerifyCert(X509Certificate certificate, HostPortPair host_port, @@ -1017,7 +1017,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw string ocsp_response, string sct_list) => (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed); -@@ -1583,6 +1584,7 @@ interface NetworkContext { +@@ -1591,6 +1592,7 @@ interface NetworkContext { // This implementation is specific for use by Signed Exchange. VerifyCertForSignedExchange(X509Certificate certificate, HostPortPair host_port, @@ -1025,7 +1025,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw string ocsp_response, string sct_list) => (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed); -@@ -1596,18 +1598,18 @@ interface NetworkContext { +@@ -1604,18 +1606,18 @@ interface NetworkContext { // Adds explicitly-specified data as if it was processed from an // HSTS header. Used by tests and implementation of chrome://net-internals. @@ -1047,7 +1047,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw // Sets allowed and blocked origins respectively for the URLLoaderFactory // consumers to access beyond the same-origin policy. The list is managed per -@@ -1626,7 +1628,7 @@ interface NetworkContext { +@@ -1634,7 +1636,7 @@ interface NetworkContext { // Deletes any dynamic data stored for |host| from the transport // security state. Returns true iff an entry was deleted. // See net::TransportSecurityState::DeleteDynamicDataForHost for more detail. diff --git a/build/patches/Partition-blobs-by-top-frame-URL.patch b/build/patches/Partition-blobs-by-top-frame-URL.patch index 2db0cfb80..4c653f7fc 100644 --- a/build/patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/patches/Partition-blobs-by-top-frame-URL.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.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 -@@ -13328,6 +13328,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( +@@ -13502,6 +13502,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( } bool RenderFrameHostImpl::IsFullCookieAccessAllowed() { 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 f8160e464..dc817ef49 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -10,37 +10,37 @@ samesite=none first-party cookies are sent in third-party contexts. License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../browser/chrome_content_browser_client.cc | 2 +- - .../extensions/api/cookies/cookies_helpers.cc | 4 ++ - .../net/profile_network_context_service.cc | 12 +++--- + .../extensions/api/cookies/cookies_helpers.cc | 4 +++ + .../net/profile_network_context_service.cc | 12 +++---- .../privacy_sandbox_settings_delegate.cc | 1 + - ...storage_access_grant_permission_context.cc | 13 +++++++ - .../strings/android/site_settings.grdp | 4 +- - .../core/browser/cookie_settings.cc | 6 +-- - .../core/common/cookie_settings_base.cc | 39 +------------------ - ...ioning-all-cookies-by-top-frame-domain.inc | 4 ++ + ...storage_access_grant_permission_context.cc | 13 ++++++++ + .../strings/android/site_settings.grdp | 4 +-- + .../core/browser/cookie_settings.cc | 6 ++-- + .../core/common/cookie_settings_base.cc | 33 +------------------ + ...ioning-all-cookies-by-top-frame-domain.inc | 4 +++ ...ioning-all-cookies-by-top-frame-domain.inc | 1 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + - ...ioning-all-cookies-by-top-frame-domain.inc | 15 +++++++ + ...ioning-all-cookies-by-top-frame-domain.inc | 15 +++++++++ ...ioning-all-cookies-by-top-frame-domain.inc | 1 + net/cookies/canonical_cookie.cc | 5 --- net/cookies/cookie_deletion_info.cc | 3 +- net/cookies/cookie_monster.cc | 1 + net/cookies/cookie_util.cc | 1 + - net/cookies/cookie_util.h | 4 +- - net/cookies/parsed_cookie.h | 6 ++- - .../sqlite/sqlite_persistent_cookie_store.cc | 8 ++++ + net/cookies/cookie_util.h | 4 +-- + net/cookies/parsed_cookie.h | 6 +++- + .../sqlite/sqlite_persistent_cookie_store.cc | 8 +++++ net/url_request/url_request.cc | 3 +- net/url_request/url_request_http_job.cc | 1 + - services/network/cookie_settings.cc | 6 +-- + services/network/cookie_settings.cc | 6 ++-- services/network/cors/cors_url_loader.cc | 1 + - services/network/restricted_cookie_manager.cc | 6 +++ + services/network/restricted_cookie_manager.cc | 6 ++++ services/network/url_loader.cc | 1 + .../modules/cookie_store/cookie_init.idl | 2 +- .../modules/cookie_store/cookie_store.cc | 3 ++ .../cookie_store_delete_options.idl | 2 +- ui/webui/webui_allowlist.cc | 1 + url/url_features.cc | 1 + - 31 files changed, 90 insertions(+), 68 deletions(-) + 31 files changed, 90 insertions(+), 62 deletions(-) create mode 100644 cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/components/permissions/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc @@ -50,7 +50,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 -@@ -3746,7 +3746,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( +@@ -3727,7 +3727,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); if (!cookie_settings) { @@ -62,7 +62,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chrome/browser/extensions/api/cookies/cookies_helpers.cc --- a/chrome/browser/extensions/api/cookies/cookies_helpers.cc +++ b/chrome/browser/extensions/api/cookies/cookies_helpers.cc -@@ -366,6 +366,10 @@ ToNetCookiePartitionKey( +@@ -371,6 +371,10 @@ ToNetCookiePartitionKey( bool CookieMatchesPartitionKeyCollection( const net::CookiePartitionKeyCollection& cookie_partition_key_collection, const net::CanonicalCookie& cookie) { @@ -76,7 +76,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 -@@ -1105,16 +1105,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( +@@ -1129,16 +1129,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. @@ -84,7 +84,7 @@ diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/brow - content::kChromeUIScheme); + // out->secure_origin_cookies_allowed_schemes.push_back( + // content::kChromeUIScheme); - #if BUILDFLAG(ENABLE_EXTENSIONS) + #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) // TODO(chlily): To be consistent with the content_settings version of // CookieSettings, we should probably also add kExtensionScheme to the list of // matching_scheme_cookies_allowed_schemes. @@ -187,7 +187,7 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/components/content_settings/core/common/cookie_settings_base.cc --- a/components/content_settings/core/common/cookie_settings_base.cc +++ b/components/content_settings/core/common/cookie_settings_base.cc -@@ -596,48 +596,11 @@ CookieSettingsBase::DecideAccess(const GURL& url, +@@ -575,42 +575,11 @@ CookieSettingsBase::DecideAccess(const GURL& url, ThirdPartyCookieAllowMechanism::kAllowByGlobalSetting}; } @@ -213,12 +213,6 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c - ThirdPartyCookieAllowMechanism::kAllowBySandboxValue}; - } - -- if (IsAllowedBy3pcdHeuristicsGrantsSettings(url, first_party_url, -- overrides)) { -- return AllowAllCookies{ -- ThirdPartyCookieAllowMechanism::kAllowBy3PCDHeuristics}; -- } -- - // Enterprise Policies: - if (is_explicit_setting && setting_info.source == SettingSource::kPolicy) { - return AllowAllCookies{ThirdPartyCookieAllowMechanism:: @@ -236,7 +230,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c if (is_explicit_setting) { return AllowAllCookies{ -@@ -673,7 +636,7 @@ CookieSettingsBase::GetCookieSettingInternal( +@@ -646,7 +615,7 @@ CookieSettingsBase::GetCookieSettingInternal( } return CookieSettingWithMetadata{/*cookie_setting=*/CONTENT_SETTING_ALLOW, /*allow_partitioned_cookies=*/true, @@ -295,7 +289,7 @@ new file mode 100644 diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc -@@ -1114,11 +1114,6 @@ CanonicalCookie::IsCanonicalForFromStorage() const { +@@ -1077,11 +1077,6 @@ CanonicalCookie::IsCanonicalForFromStorage() const { return Fail(CanonicalizationFailure::kEmptyNameWithHiddenPrefix); } @@ -323,7 +317,7 @@ diff --git a/net/cookies/cookie_deletion_info.cc b/net/cookies/cookie_deletion_i diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc -@@ -2269,6 +2269,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( +@@ -2258,6 +2258,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( if (cookie_partition_it == partitioned_cookies_.end()) return num_deleted; @@ -389,7 +383,7 @@ diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc --- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc -@@ -796,6 +796,14 @@ bool SQLitePersistentCookieStore::Backend::DoInitializeDatabase() { +@@ -830,6 +830,14 @@ bool SQLitePersistentCookieStore::Backend::DoInitializeDatabase() { if (!restore_old_session_cookies_) DeleteSessionCookiesOnStartup(); @@ -407,7 +401,7 @@ diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sq diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc -@@ -1408,8 +1408,7 @@ StorageAccessStatusCache URLRequest::CalculateStorageAccessStatus() const { +@@ -1413,8 +1413,7 @@ StorageAccessStatusCache URLRequest::CalculateStorageAccessStatus() const { // `deferred_redirect_info_` that has to be used when calculating new storage // access status. std::optional storage_access_status = @@ -420,7 +414,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -1653,6 +1653,7 @@ bool URLRequestHttpJob::NeedsRetryWithStorageAccess() { +@@ -1654,6 +1654,7 @@ bool URLRequestHttpJob::NeedsRetryWithStorageAccess() { auto determine_storage_access_retry_outcome = [&]() -> cookie_util::ActivateStorageAccessRetryOutcome { using enum cookie_util::ActivateStorageAccessRetryOutcome; @@ -441,7 +435,7 @@ diff --git a/services/network/cookie_settings.cc b/services/network/cookie_setti } bool IsValidType(ContentSettingsType type) { -@@ -124,8 +123,7 @@ bool IsOriginOpaqueHttpOrHttps( +@@ -122,8 +121,7 @@ bool IsOriginOpaqueHttpOrHttps( // static bool CookieSettings::IsCookieAllowed(const net::CanonicalCookie& cookie, const CookieSettingWithMetadata& setting) { @@ -454,7 +448,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 -@@ -882,6 +882,7 @@ void CorsURLLoader::StartRequest() { +@@ -917,6 +917,7 @@ void CorsURLLoader::StartRequest() { } if (request_.credentials_mode == mojom::CredentialsMode::kInclude && @@ -465,7 +459,7 @@ diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/co diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc --- a/services/network/restricted_cookie_manager.cc +++ b/services/network/restricted_cookie_manager.cc -@@ -988,6 +988,12 @@ void RestrictedCookieManager::SetCookieFromString( +@@ -987,6 +987,12 @@ void RestrictedCookieManager::SetCookieFromString( shared_memory_region = GetAndPrepareSharedMemoryRegion(url); } @@ -481,7 +475,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 -@@ -2640,6 +2640,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { +@@ -2638,6 +2638,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { auto determine_storage_access_load_outcome = [&]() -> net::cookie_util::ActivateStorageAccessLoadOutcome { @@ -503,7 +497,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 -@@ -395,6 +395,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, +@@ -407,6 +407,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, CookieInit* set_options = CookieInit::Create(); set_options->setName(name); set_options->setValue(value); @@ -511,15 +505,15 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/t return set(script_state, set_options, exception_state); } -@@ -418,6 +419,7 @@ ScriptPromise CookieStore::Delete( - set_options->setName(name); - set_options->setValue(name.empty() ? "deleted" : ""); +@@ -431,6 +432,7 @@ ScriptPromise CookieStore::Delete( + set_options->setName(stripped_name); + set_options->setValue(stripped_name.empty() ? "deleted" : ""); set_options->setExpires(0); + set_options->setPartitioned(true); return DoWrite(script_state, set_options, exception_state); } -@@ -433,6 +435,7 @@ ScriptPromise CookieStore::Delete( +@@ -447,6 +449,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/Permit-PGO-for-debug-builds.patch b/build/patches/Permit-PGO-for-debug-builds.patch index c8b66c636..d779ca703 100644 --- a/build/patches/Permit-PGO-for-debug-builds.patch +++ b/build/patches/Permit-PGO-for-debug-builds.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/build/config/compiler/pgo/pgo.gni b/build/config/compiler/pgo/pgo.gni --- a/build/config/compiler/pgo/pgo.gni +++ b/build/config/compiler/pgo/pgo.gni -@@ -55,5 +55,5 @@ declare_args() { +@@ -52,5 +52,5 @@ declare_args() { # TODO(crbug.com/409738601): Remove assert once clang no # longer crashes with PGO enabled for a debug build. diff --git a/build/patches/Private-network-access-content-settings.patch b/build/patches/Private-network-access-content-settings.patch index 2df01292d..9dc50ffcb 100644 --- a/build/patches/Private-network-access-content-settings.patch +++ b/build/patches/Private-network-access-content-settings.patch @@ -25,7 +25,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 -@@ -4222,6 +4222,31 @@ bool ShouldPromptOnMultipleMatchingCertificates(const Profile* profile) { +@@ -4208,6 +4208,31 @@ bool ShouldPromptOnMultipleMatchingCertificates(const Profile* profile) { return false; } @@ -57,7 +57,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch } // namespace base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( -@@ -7850,12 +7875,17 @@ content::ContentBrowserClient::LocalNetworkAccessRequestPolicyOverride +@@ -7870,12 +7895,17 @@ content::ContentBrowserClient::LocalNetworkAccessRequestPolicyOverride ChromeContentBrowserClient::ShouldOverrideLocalNetworkAccessRequestPolicy( content::BrowserContext* browser_context, const url::Origin& origin) { @@ -275,7 +275,7 @@ new file mode 100644 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 -@@ -236,7 +236,7 @@ BASE_FEATURE_PARAM(bool, +@@ -241,7 +241,7 @@ BASE_FEATURE_PARAM(bool, kLocalNetworkAccessChecksWarn, &kLocalNetworkAccessChecks, /*name=*/"LocalNetworkAccessChecksWarn", diff --git a/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch b/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch index 8f10d59a5..2e09b755e 100644 --- a/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch +++ b/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch @@ -13,7 +13,7 @@ the Windows platform diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/browser/webauth/authenticator_common_impl.cc --- a/content/browser/webauth/authenticator_common_impl.cc +++ b/content/browser/webauth/authenticator_common_impl.cc -@@ -2016,6 +2016,7 @@ void AuthenticatorCommonImpl::GetClientCapabilities( +@@ -2010,6 +2010,7 @@ void AuthenticatorCommonImpl::GetClientCapabilities( MakeCapability(client_capabilities::kConditionalCreate, true)); IsHybridTransportSupported( @@ -21,7 +21,7 @@ diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/brow base::BindOnce(&MakeCapability, client_capabilities::kHybridTransport) .Then(barrier_callback)); -@@ -2043,11 +2044,25 @@ void AuthenticatorCommonImpl::GetClientCapabilities( +@@ -2037,11 +2038,25 @@ void AuthenticatorCommonImpl::GetClientCapabilities( } void AuthenticatorCommonImpl::IsHybridTransportSupported( @@ -47,7 +47,7 @@ diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/brow device::BluetoothAdapterFactory::Get()->GetAdapter( base::BindOnce([](scoped_refptr adapter) { -@@ -2093,6 +2108,13 @@ void AuthenticatorCommonImpl::ContinueIsUvpaaAfterOverrideCheck( +@@ -2087,6 +2102,13 @@ void AuthenticatorCommonImpl::ContinueIsUvpaaAfterOverrideCheck( IsUserVerifyingPlatformAuthenticatorAvailableCallback callback, bool is_get_client_capabilities_call, std::optional is_uvpaa_override) { diff --git a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch index f7675de42..80d15b717 100644 --- a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch +++ b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch @@ -45,7 +45,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -260,6 +260,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -274,6 +274,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kAsyncNotificationManagerForDownload, &kAutomotiveBackButtonBarStreamline, &kAuxiliarySearchDonation, @@ -56,7 +56,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -368,6 +368,7 @@ public abstract class ChromeFeatureList { +@@ -384,6 +384,7 @@ public abstract class ChromeFeatureList { public static final String CLANK_STARTUP_LATENCY_INJECTION = "ClankStartupLatencyInjection"; public static final String CLANK_WHATS_NEW = "ClankWhatsNew"; public static final String CLEAR_INTENT_WHEN_RECREATED = "ClearIntentWhenRecreated"; diff --git a/build/patches/Re-introduce-override_build_timestamp.patch b/build/patches/Re-introduce-override_build_timestamp.patch index 42a8ed166..891d7bf6e 100644 --- a/build/patches/Re-introduce-override_build_timestamp.patch +++ b/build/patches/Re-introduce-override_build_timestamp.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -4509,8 +4509,12 @@ if (current_toolchain == default_toolchain) { +@@ -4579,8 +4579,12 @@ if (current_toolchain == default_toolchain) { outputs = [ _build_date_header_internal ] args = [ rebase_path(_build_date_header_internal, root_build_dir), diff --git a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch index 4dde112ae..3227778ed 100644 --- a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch +++ b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch @@ -24,19 +24,19 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h diff --git a/net/dns/dns_http_attempt.cc b/net/dns/dns_http_attempt.cc --- a/net/dns/dns_http_attempt.cc +++ b/net/dns/dns_http_attempt.cc -@@ -160,7 +160,7 @@ DnsHTTPAttempt::DnsHTTPAttempt(base::WeakPtr resolve_context, +@@ -169,7 +169,7 @@ DnsHTTPAttempt::DnsHTTPAttempt(base::WeakPtr resolve_context, // avoid deadlock and enable the use of preconfigured IP addresses. request_->SetSecureDnsPolicy(SecureDnsPolicy::kBootstrap); request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE | - LOAD_BYPASS_PROXY); + LOAD_MINIMAL_HEADERS | LOAD_BYPASS_PROXY); request_->set_disallow_credentials(); - request_->set_isolation_info(isolation_info); + request_->set_isolation_info(GetDohIsolationInfo()); } diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -536,6 +536,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -537,6 +537,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( // fields in the referrer. GURL referrer(request_->referrer()); @@ -44,7 +44,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque // Our consumer should have made sure that this is a safe referrer (e.g. via // URLRequestJob::ComputeReferrerForPolicy). if (referrer.is_valid()) { -@@ -543,11 +544,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -544,11 +545,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer, referer_value); } @@ -59,7 +59,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque AddExtraHeaders(); -@@ -802,10 +806,10 @@ void URLRequestHttpJob::StartTransactionInternal() { +@@ -803,10 +807,10 @@ void URLRequestHttpJob::StartTransactionInternal() { void URLRequestHttpJob::AddExtraHeaders() { request_info_.extra_headers.SetAcceptEncodingIfMissing( request()->url(), request()->accepted_stream_types(), 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 c72136a3e..5d00bef9c 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -663,6 +663,8 @@ chrome_java_resources = [ +@@ -675,6 +675,8 @@ chrome_java_resources = [ "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", "java/res/xml/privacy_preferences.xml", @@ -56,7 +56,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -996,6 +996,8 @@ chrome_java_sources = [ +@@ -1011,6 +1011,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/CctHandler.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandbox3pcdRollbackMessageController.java", @@ -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 -@@ -43,6 +43,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -44,6 +44,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.PrivacyGuideFragment; import org.chromium.chrome.browser.privacy_guide.PrivacyGuideInteractions; -@@ -121,6 +122,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -123,6 +124,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"; -@@ -556,6 +558,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -571,6 +573,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -397,7 +397,7 @@ new file mode 100644 diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -272,6 +272,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -275,6 +275,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kExpireDaysThreshold] = settings_api::PrefType::kNumber; @@ -444,7 +444,7 @@ diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/render 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 -@@ -67,6 +67,16 @@ +@@ -64,6 +64,16 @@ menu-options="[[historyExpireDaysThresholdOptions_]]"> @@ -482,15 +482,15 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch isPrivacySandboxRestrictedNoticeEnabled_: { type: Boolean, value: () => -@@ -111,6 +122,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -116,6 +127,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { declare private historyExpireDaysThresholdOptions_: object[]; declare private showClearBrowsingDataDialog_: boolean; declare private showPrivacyGuideDialog_: boolean; + declare private referersPolicyOptions_: object[]; declare private isPrivacySandboxRestricted_: boolean; declare private isPrivacySandboxRestrictedNoticeEnabled_: boolean; - declare private dbdDeletionConfirmationToastLabel_: string; -@@ -141,6 +153,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + declare private isAdPrivacyAvailable_: boolean; +@@ -147,6 +159,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { Router.getInstance().navigateTo(routes.COOKIES); } @@ -506,7 +506,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1192,6 +1192,30 @@ For more settings that use data to improve your Chrome experience, go to @@ -564,7 +564,7 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre 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 -@@ -2342,6 +2342,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2344,6 +2344,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION}, {"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION}, {"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION}, @@ -578,7 +578,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide 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 -@@ -1495,6 +1495,9 @@ inline constexpr char kEnableDoNotTrack[] = "enable_do_not_track"; +@@ -1105,6 +1105,9 @@ inline constexpr char kEnableDoNotTrack[] = "enable_do_not_track"; inline constexpr char kEnableEncryptedMedia[] = "webkit.webprefs.encrypted_media_enabled"; @@ -641,7 +641,7 @@ diff --git a/components/download/content/internal/context_menu_download.cc b/com diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -399,6 +399,15 @@ void AddAdditionalRequestHeaders( +@@ -403,6 +403,15 @@ void AddAdditionalRequestHeaders( blink::mojom::Referrer(GURL(), network::mojom::ReferrerPolicy::kNever); } @@ -655,12 +655,12 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows + } + // Next, set the HTTP Origin if needed. - if (NeedsHTTPOrigin(headers, method)) { - url::Origin origin_header_value = initiator_origin.value_or(url::Origin()); + std::optional existing_origin = + headers->GetHeader(net::HttpRequestHeaders::kOrigin); diff --git a/services/network/public/cpp/resource_request.h b/services/network/public/cpp/resource_request.h --- a/services/network/public/cpp/resource_request.h +++ b/services/network/public/cpp/resource_request.h -@@ -211,7 +211,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { +@@ -215,7 +215,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { std::vector navigation_redirect_chain; GURL referrer; diff --git a/build/patches/Remove-auth-header-upon-cross-origin-redirect.patch b/build/patches/Remove-auth-header-upon-cross-origin-redirect.patch index 94d26986b..343152f05 100644 --- a/build/patches/Remove-auth-header-upon-cross-origin-redirect.patch +++ b/build/patches/Remove-auth-header-upon-cross-origin-redirect.patch @@ -11,7 +11,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc -@@ -535,6 +535,9 @@ bool ResourceLoader::WillFollowRedirect( +@@ -536,6 +536,9 @@ bool ResourceLoader::WillFollowRedirect( new_url)) { fetcher_->GetUseCounter().CountUse( mojom::WebFeature::kAuthorizationCrossOrigin); diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index 6e3af58b4..6df66a16d 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -46,13 +46,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../notification_telemetry_service.cc | 1 + chrome/browser/ui/BUILD.gn | 3 - chrome/browser/ui/android/omnibox/BUILD.gn | 4 - - .../FullscreenSigninMediator.java | 4 +- .../browser/ui/webui/chrome_web_ui_configs.cc | 1 - chrome/browser/webauthn/android/BUILD.gn | 1 - .../CableAuthenticatorModuleProvider.java | 35 +- chrome/browser/webid/BUILD.gn | 3 - - .../DigitalCredentialsCreationDelegate.java | 121 +-- - ...igitalCredentialsPresentationDelegate.java | 87 +- + .../DigitalCredentialsCreationDelegate.java | 172 +--- + ...igitalCredentialsPresentationDelegate.java | 147 +-- chrome/test/android/BUILD.gn | 2 - .../ExternalNavigationHandler.java | 8 - components/externalauth/android/BUILD.gn | 3 - @@ -95,7 +94,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../webauthn/Fido2CredentialRequest.java | 113 +-- .../webauthn/GmsCoreGetCredentialsHelper.java | 79 +- .../components/webauthn/GmsCoreUtils.java | 76 +- - .../webauthn/IdentityCredentialsHelper.java | 143 +-- + .../webauthn/IdentityCredentialsHelper.java | 144 +-- .../webauthn/WebauthnModeProvider.java | 15 - .../cred_man/CredManMetricsHelper.java | 17 +- .../push_messaging/push_messaging_manager.cc | 2 +- @@ -111,7 +110,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../gms/ChromiumPlayServicesAvailability.java | 17 +- third_party/androidx/customizations.gni | 14 +- third_party/cardboard/BUILD.gn | 4 - - 87 files changed, 133 insertions(+), 2779 deletions(-) + 86 files changed, 134 insertions(+), 2886 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 @@ -139,7 +138,7 @@ diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest. diff --git a/build/config/android/config.gni b/build/config/android/config.gni --- a/build/config/android/config.gni +++ b/build/config/android/config.gni -@@ -197,9 +197,7 @@ if (is_android) { +@@ -201,9 +201,7 @@ if (is_android) { # google_play_services_package contains the path where individual client # targets (e.g. google_play_services_base_java) are located. @@ -153,7 +152,7 @@ diff --git a/build/config/android/config.gni b/build/config/android/config.gni diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -303,14 +303,6 @@ if (_is_default_toolchain) { +@@ -302,14 +302,6 @@ if (_is_default_toolchain) { ":system_ai_service_proto_java", ":usage_stats_proto_java", ":xr_java", @@ -168,7 +167,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:content_uri_utils_java", "//base:flagged_apis_java", "//base:process_launcher_java", -@@ -767,12 +759,9 @@ if (_is_default_toolchain) { +@@ -772,12 +764,9 @@ if (_is_default_toolchain) { "//services/shape_detection/public/mojom:mojom_java", "//skia/public/mojom:mojom_java", "//third_party/android_deps:chromium_play_services_availability_java", @@ -181,7 +180,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_media:android_media_java", "//third_party/android_swipe_refresh:android_swipe_refresh_java", -@@ -1966,7 +1955,6 @@ if (_is_default_toolchain) { +@@ -1980,7 +1969,6 @@ if (_is_default_toolchain) { ] deps = [ ":chrome_java", @@ -189,7 +188,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//build/android:build_java", -@@ -2073,7 +2061,6 @@ if (_is_default_toolchain) { +@@ -2089,7 +2077,6 @@ if (_is_default_toolchain) { "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java", "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", @@ -197,7 +196,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java", -@@ -2101,14 +2088,10 @@ if (_is_default_toolchain) { +@@ -2117,14 +2104,10 @@ if (_is_default_toolchain) { "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", "java/src/org/chromium/chrome/browser/provider/PageContentProvider.java", @@ -212,7 +211,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//chrome/browser/autofill/android:third_party_provider_java", "//chrome/browser/download/android:file_provider_java", -@@ -2127,7 +2110,6 @@ if (_is_default_toolchain) { +@@ -2143,7 +2126,6 @@ if (_is_default_toolchain) { "//components/module_installer/android:module_installer_java", "//components/policy/android:policy_java", "//components/variations/android:variations_java", @@ -223,7 +222,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 -@@ -1023,10 +1023,6 @@ chrome_java_sources = [ +@@ -1037,10 +1037,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/segmentation_platform/SignalAccumulator.java", "java/src/org/chromium/chrome/browser/segmentation_platform/TabGroupingActionProvider.java", "java/src/org/chromium/chrome/browser/selection/ChromeSelectionDropdownMenuDelegate.java", @@ -237,7 +236,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -154,19 +154,14 @@ by a child template that "extends" this file. +@@ -146,19 +146,14 @@ by a child template that "extends" this file. @@ -257,7 +256,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -843,16 +838,6 @@ by a child template that "extends" this file. +@@ -817,16 +812,6 @@ by a child template that "extends" this file. @@ -274,7 +273,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro @@ -293,7 +292,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -1393,12 +1366,6 @@ by a child template that "extends" this file. +@@ -1367,12 +1340,6 @@ by a child template that "extends" this file. {% endif %} @@ -515,7 +514,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p "//base:base_java", "//base:resetters_java", "//base:tasks_java", -@@ -324,8 +321,6 @@ robolectric_binary("password_manager_junit_tests") { +@@ -323,8 +320,6 @@ robolectric_binary("password_manager_junit_tests") { ":test_support_java", ":unified_password_manager_proto_java", ":utils_java", @@ -718,7 +717,7 @@ diff --git a/chrome/browser/safe_browsing/notification_telemetry/notification_te 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 -@@ -128,8 +128,6 @@ static_library("ui") { +@@ -126,8 +126,6 @@ static_library("ui") { "webui/flags/flags_ui.h", "webui/flags/flags_ui_handler.cc", "webui/flags/flags_ui_handler.h", @@ -727,7 +726,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "webui/history_clusters/history_clusters_internals_ui_config.cc", "webui/history_clusters/history_clusters_internals_ui_config.h", "webui/interstitials/interstitial_ui.cc", -@@ -498,7 +496,6 @@ static_library("ui") { +@@ -510,7 +508,6 @@ static_library("ui") { "//components/feedback/content", "//components/feedback/redaction_tool", "//components/find_in_page", @@ -738,16 +737,16 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn -@@ -186,8 +186,6 @@ android_library("java") { +@@ -191,8 +191,6 @@ android_library("java") { deps = [ ":java_resources", - "$google_play_services_package:google_play_services_location_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", + "//base:supplier_java", "//base/version_info/android:version_constants_java", - "//build/android:build_java", -@@ -540,8 +538,6 @@ robolectric_library("junit") { +@@ -554,8 +552,6 @@ robolectric_library("junit") { deps = [ ":java", ":java_resources", @@ -756,26 +755,10 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fullscreen_signin/FullscreenSigninMediator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fullscreen_signin/FullscreenSigninMediator.java ---- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fullscreen_signin/FullscreenSigninMediator.java -+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fullscreen_signin/FullscreenSigninMediator.java -@@ -279,11 +279,9 @@ public class FullscreenSigninMediator - AccountUtils.getAccountsIfFulfilledOrEmpty(mAccountManagerFacade.getAccounts()), - this::onChildAccountStatusReady); - -- boolean isMetricsReportingDisabledByPolicy = false; -+ boolean isMetricsReportingDisabledByPolicy = true; - Log.i(TAG, "#onInitialLoadCompleted() hasPolicies:" + hasPolicies); - if (hasPolicies) { -- isMetricsReportingDisabledByPolicy = -- !mPrivacyPreferencesManager.isUsageAndCrashReportingPermittedByPolicy(); - mModel.set( - FullscreenSigninProperties.SHOW_ENTERPRISE_MANAGEMENT_NOTICE, - mDelegate.shouldDisplayManagementNoticeOnManagedDevices()); diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -260,7 +260,6 @@ void RegisterChromeWebUIConfigs() { +@@ -262,7 +262,6 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); @@ -876,7 +859,7 @@ diff --git a/chrome/browser/webid/BUILD.gn b/chrome/browser/webid/BUILD.gn diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java --- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java +++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java -@@ -18,10 +18,6 @@ import androidx.credentials.exceptions.CreateCredentialException; +@@ -19,10 +19,6 @@ import androidx.credentials.exceptions.CreateCredentialInterruptedException; import androidx.credentials.exceptions.CreateCredentialUnknownException; import androidx.credentials.provider.PendingIntentHandler; @@ -887,7 +870,7 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w import org.json.JSONException; import org.json.JSONObject; -@@ -46,122 +42,7 @@ public class DigitalCredentialsCreationDelegate { +@@ -52,173 +48,7 @@ public class DigitalCredentialsCreationDelegate { @OptIn(markerClass = androidx.credentials.ExperimentalDigitalCredentialApi.class) public Promise create( WindowAndroid windowAndroid, String origin, String request) { @@ -917,7 +900,20 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - } - Log.d(TAG, "Received a response"); - Intent providerData = -- IntentUtils.safeGetParcelable(data, BUNDLE_KEY_PROVIDER_DATA); +- data == null +- ? null +- : IntentUtils.safeGetParcelable( +- data, BUNDLE_KEY_PROVIDER_DATA); +- +- if (code != Activity.RESULT_OK) { +- androidx.credentials.exceptions.CreateCredentialException exception = +- providerData != null +- ? PendingIntentHandler +- .retrieveCreateCredentialException(providerData) +- : null; +- handleCreateCredentialException(code, exception, result); +- return; +- } - - if (providerData == null) { - Log.d(TAG, "Response doesn't contain providerData"); @@ -931,13 +927,15 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - PendingIntentHandler.retrieveCreateCredentialResponse( - TYPE_DIGITAL_CREDENTIAL, providerData); - if (response == null) { -- CreateCredentialException exception = +- androidx.credentials.exceptions.CreateCredentialException exception = - PendingIntentHandler.retrieveCreateCredentialException( - providerData); -- result.reject( -- exception == null -- ? new CreateCredentialUnknownException("empty response") -- : exception); +- if (exception != null) { +- handleCreateCredentialException(code, exception, result); +- } else { +- result.reject( +- new CreateCredentialUnknownException("empty response")); +- } - return; - } - String responseJson = @@ -991,19 +989,55 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - (resultCode, intent) -> { - if (resultCode != Activity.RESULT_OK - && result.isPending()) { -- result.reject( -- new Exception("Cancelled or Crashed")); +- androidx.credentials.exceptions +- .CreateCredentialException +- exception = +- intent != null +- ? PendingIntentHandler +- .retrieveCreateCredentialException( +- intent) +- : null; +- handleCreateCredentialException( +- resultCode, exception, result); - } - }, - null); - if (requestCode == WindowAndroid.START_INTENT_FAILURE) { - Log.e(TAG, "Sending an intent for sender failed"); -- result.reject(new Exception("Failed to start intent")); +- result.reject( +- new CreateCredentialUnknownException( +- "Failed to start intent")); - } - }) - .addOnFailureListener( - e -> { -- result.reject(new CreateCredentialUnknownException("unknown error")); +- if (!result.isPending()) { +- return; +- } +- if (e +- instanceof +- com.google.android.gms.identitycredentials +- .CreateCredentialException) { +- String exceptionType = +- ((com.google.android.gms.identitycredentials +- .CreateCredentialException) +- e) +- .getType(); +- if (TYPE_USER_CANCELED.equals(exceptionType)) { +- result.reject( +- new CreateCredentialCancellationException( +- e.getMessage())); +- } else if (TYPE_INTERRUPTED.equals(exceptionType)) { +- result.reject( +- new CreateCredentialInterruptedException( +- e.getMessage())); +- } else { +- result.reject( +- new CreateCredentialUnknownException(e.getMessage())); +- } +- } else { +- result.reject(e); +- } - }); - - return result; @@ -1014,12 +1048,11 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java --- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java +++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java -@@ -18,12 +18,6 @@ import androidx.credentials.Credential; - import androidx.credentials.GetDigitalCredentialOption; +@@ -21,11 +21,6 @@ import androidx.credentials.exceptions.GetCredentialUnknownException; + import androidx.credentials.exceptions.NoCredentialException; import androidx.credentials.provider.PendingIntentHandler; -import com.google.android.gms.identitycredentials.CredentialOption; --import com.google.android.gms.identitycredentials.GetCredentialException; -import com.google.android.gms.identitycredentials.GetCredentialRequest; -import com.google.android.gms.identitycredentials.IdentityCredentialClient; -import com.google.android.gms.identitycredentials.IdentityCredentialManager; @@ -1027,7 +1060,7 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w import org.json.JSONException; import org.json.JSONObject; -@@ -54,85 +48,7 @@ public class DigitalCredentialsPresentationDelegate { +@@ -63,141 +58,7 @@ public class DigitalCredentialsPresentationDelegate { Activity window = windowAndroid.getActivity().get(); if (window == null) return Promise.rejected(); @@ -1044,32 +1077,41 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - - ResultReceiver resultReceiver = - new ResultReceiver(new Handler(Looper.getMainLooper())) { -- // android.credentials.GetCredentialException requires API level 34 -- @SuppressWarnings("NewApi") - @Override - protected void onReceiveResult(int code, Bundle data) { +- if (!result.isPending()) { +- return; +- } - Log.d(TAG, "Received a response"); - try { -- var credential = extractDigitalCredentialFromResponseBundle(code, data); +- Intent providerData = +- data == null +- ? null +- : IntentUtils.safeGetParcelable( +- data, BUNDLE_KEY_PROVIDER_DATA); +- if (code != Activity.RESULT_OK) { +- androidx.credentials.exceptions.GetCredentialException exception = +- providerData != null +- ? PendingIntentHandler +- .retrieveGetCredentialException( +- providerData) +- : null; +- handleGetCredentialException(code, exception, result); +- return; +- } +- var credential = extractDigitalCredentialFromIntent(providerData); - if (credential == null) { - result.reject( -- new Exception("Response does not contain a credential")); +- new GetCredentialUnknownException( +- "Response does not contain a credential")); - } else { - result.fulfill(credential); - } +- } catch (androidx.credentials.exceptions.GetCredentialException e) { +- handleGetCredentialException(code, e, result); - } catch (Exception e) { - Log.e(TAG, e.toString()); -- -- if (e instanceof GetCredentialException -- && Build.VERSION.SDK_INT -- >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { -- String exceptionType = ((GetCredentialException) e).getType(); -- result.reject( -- new android.credentials.GetCredentialException( -- exceptionType, e.getMessage())); -- } else { -- result.reject(e); -- } +- result.reject(new GetCredentialUnknownException(e.getMessage())); - } - } - }; @@ -1090,6 +1132,13 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - resultReceiver)) - .addOnSuccessListener( - response -> { +- if (response.getPendingIntent() == null) { +- Log.d(TAG, "Response doesn't contain pendingIntent"); +- result.reject( +- new GetCredentialUnknownException( +- "Response doesn't contain pendingIntent")); +- return; +- } - Log.d(TAG, "Sending an intent for sender"); - Log.d(TAG, request); - int requestCode = @@ -1098,14 +1147,54 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w - (resultCode, intent) -> { - if (resultCode != Activity.RESULT_OK - && result.isPending()) { -- result.reject( -- new Exception("Cancelled or Crashed")); +- androidx.credentials.exceptions +- .GetCredentialException +- exception = +- intent != null +- ? PendingIntentHandler +- .retrieveGetCredentialException( +- intent) +- : null; +- handleGetCredentialException( +- resultCode, exception, result); - } - }, - null); - if (requestCode == WindowAndroid.START_INTENT_FAILURE) { - Log.e(TAG, "Sending an intent for sender failed"); -- result.reject(new Exception("Failed to start intent")); +- result.reject( +- new GetCredentialUnknownException( +- "Failed to start intent")); +- } +- }) +- .addOnFailureListener( +- e -> { +- if (!result.isPending()) { +- return; +- } +- if (e +- instanceof +- com.google.android.gms.identitycredentials +- .GetCredentialException) { +- String exceptionType = +- ((com.google.android.gms.identitycredentials +- .GetCredentialException) +- e) +- .getType(); +- if (TYPE_USER_CANCELED.equals(exceptionType)) { +- result.reject( +- new GetCredentialCancellationException(e.getMessage())); +- } else if (TYPE_NO_CREDENTIAL.equals(exceptionType)) { +- result.reject(new NoCredentialException(e.getMessage())); +- } else if (TYPE_INTERRUPTED.equals(exceptionType)) { +- result.reject( +- new GetCredentialInterruptedException(e.getMessage())); +- } else { +- result.reject( +- new GetCredentialUnknownException(e.getMessage())); +- } +- } else { +- result.reject(e); - } - }); - @@ -1114,18 +1203,23 @@ diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/w } /** -@@ -146,6 +62,7 @@ public class DigitalCredentialsPresentationDelegate { +@@ -210,9 +71,9 @@ public class DigitalCredentialsPresentationDelegate { + * @throws JSONException If JSON parsing fails. + */ @VisibleForTesting - public static @Nullable DigitalCredential extractDigitalCredentialFromResponseBundle( - int code, Bundle bundle) throws JSONException { +- public static @Nullable DigitalCredential extractDigitalCredentialFromIntent( +- @Nullable Intent intent) +- throws androidx.credentials.exceptions.GetCredentialException, JSONException { ++ public static @Nullable DigitalCredential extractDigitalCredentialFromResponseBundle( ++ @Nullable Intent intent) throws JSONException { + if ((true)) throw new JSONException("not reached"); - Intent intent = IntentUtils.safeGetParcelable(bundle, BUNDLE_KEY_PROVIDER_DATA); if (intent == null) { return null; + } diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn --- a/chrome/test/android/BUILD.gn +++ b/chrome/test/android/BUILD.gn -@@ -396,8 +396,6 @@ android_library("chrome_java_integration_test_support") { +@@ -397,8 +397,6 @@ android_library("chrome_java_integration_test_support") { deps = [ ":chrome_java_test_support_common", @@ -1137,7 +1231,7 @@ diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn 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 -@@ -2945,14 +2945,6 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { +@@ -2946,14 +2946,6 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { * @return Whether the given intent is going to open an Instant App. */ private static boolean isIntentToInstantApp(Intent intent) { @@ -1369,7 +1463,7 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java -@@ -30,8 +30,6 @@ public class InstanceIDBridge { +@@ -31,8 +31,6 @@ public class InstanceIDBridge { * Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be * initialized on a background thread. */ @@ -1378,7 +1472,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com private static boolean sBlockOnAsyncTasksForTesting; -@@ -76,7 +74,7 @@ public class InstanceIDBridge { +@@ -78,7 +76,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected String doBackgroundWork() { @@ -1387,7 +1481,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com } @Override -@@ -92,7 +90,7 @@ public class InstanceIDBridge { +@@ -94,7 +92,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Long doBackgroundWork() { @@ -1396,7 +1490,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com } @Override -@@ -115,21 +113,7 @@ public class InstanceIDBridge { +@@ -119,21 +117,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected String doBackgroundWork() { @@ -1418,7 +1512,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com } @Override -@@ -146,22 +130,7 @@ public class InstanceIDBridge { +@@ -152,22 +136,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Boolean doBackgroundWork() { @@ -1442,7 +1536,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com } @Override -@@ -178,12 +147,7 @@ public class InstanceIDBridge { +@@ -184,12 +153,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Boolean doBackgroundWork() { @@ -1456,7 +1550,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com } @Override -@@ -214,24 +178,12 @@ public class InstanceIDBridge { +@@ -220,24 +184,12 @@ public class InstanceIDBridge { protected abstract void sendResultToNative(Result result); public void execute() { @@ -1547,8 +1641,8 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo - import org.jni_zero.CalledByNative; import org.jni_zero.JNINamespace; - import org.jni_zero.NativeMethods; -@@ -46,23 +43,7 @@ public class BrowserMediaRouter implements MediaRouteManager { + import org.jni_zero.JniType; +@@ -47,23 +44,7 @@ public class BrowserMediaRouter implements MediaRouteManager { new MediaRouteProvider.Factory() { @Override public void addProviders(MediaRouteManager manager) { @@ -3035,7 +3129,7 @@ diff --git a/components/module_installer/android/BUILD.gn b/components/module_in "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/jni_zero:jni_zero_java", ] -@@ -47,11 +45,9 @@ robolectric_binary("module_installer_junit_tests") { +@@ -48,11 +46,9 @@ robolectric_binary("module_installer_junit_tests") { ] deps = [ ":module_installer_java", @@ -3070,7 +3164,7 @@ diff --git a/components/omnibox/common/android/java/src/org/chromium/components/ import org.chromium.base.BaseSwitches; import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; -@@ -203,12 +201,6 @@ public class OmniboxFeatures { +@@ -212,12 +210,6 @@ public class OmniboxFeatures { "geolocation_request_min_update_interval_millis", (int) (9 * DateUtils.MINUTE_IN_MILLIS)); @@ -3145,7 +3239,7 @@ diff --git a/components/one_time_tokens/android/backend/sms/BUILD.gn b/component "//base:base_java", "//build/android:build_java", "//components/one_time_tokens/android/backend/common:java", -@@ -72,7 +71,6 @@ robolectric_binary("one_time_tokens_junit_tests") { +@@ -73,7 +72,6 @@ robolectric_binary("one_time_tokens_junit_tests") { deps = [ ":java", ":sms_otp_fetching_interface_java", @@ -3153,7 +3247,7 @@ diff --git a/components/one_time_tokens/android/backend/sms/BUILD.gn b/component "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -83,7 +81,6 @@ robolectric_binary("one_time_tokens_junit_tests") { +@@ -84,7 +82,6 @@ robolectric_binary("one_time_tokens_junit_tests") { android_library("sms_otp_fetching_interface_java") { deps = [ @@ -3300,7 +3394,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut mPlayServicesAvailable = playServicesAvailable; mCredManHelper = new CredManHelper(mAuthenticationContextProvider, this, mPlayServicesAvailable); -@@ -356,29 +348,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { +@@ -357,29 +349,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { /* credentialRequestResult= */ null); return; } @@ -3330,7 +3424,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut return; } int result = -@@ -435,27 +404,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { +@@ -436,27 +405,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { /* credentialRequestResult= */ null); return; } @@ -3358,7 +3452,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @SuppressWarnings("NewApi") -@@ -909,32 +857,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { +@@ -911,32 +859,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { callback.onIsUserVerifyingPlatformAuthenticatorAvailableResponse(false); return; } @@ -3391,7 +3485,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } public void handleReportRequest(PublicKeyCredentialReportOptions options, Origin origin) { -@@ -1271,16 +1193,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { +@@ -1280,16 +1202,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { if (options.mediation == Mediation.CONDITIONAL) { mCancellableUiState = CancellableUiState.REQUEST_SENT_TO_PLATFORM; } @@ -3408,7 +3502,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } private void handleNonCredentialReturn(GetCredentialOptions options, Integer reason) { -@@ -1325,29 +1237,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { +@@ -1334,29 +1246,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { assert mCancellableUiState == CancellableUiState.NONE || mCancellableUiState == CancellableUiState.REQUEST_SENT_TO_PLATFORM || mCancellableUiState == CancellableUiState.WAITING_FOR_SELECTION; @@ -3765,10 +3859,10 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } private void onConditionalCreateFailure(Exception e) { -@@ -153,70 +92,6 @@ public class IdentityCredentialsHelper { - +@@ -154,70 +93,5 @@ public class IdentityCredentialsHelper { // Dispatches a Report request. - public void handleReportRequest(PublicKeyCredentialReportOptions options, String origin) { + public void handleReportRequest( + PublicKeyCredentialReportOptions options, @Nullable String origin) { - log(TAG, "handleReportRequest"); - try { - IdentityCredentialClient client = @@ -3790,7 +3884,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - - @VisibleForTesting - public SignalCredentialStateRequest buildSignalCredentialStateRequest( -- PublicKeyCredentialReportOptions options, String origin) { +- PublicKeyCredentialReportOptions options, @Nullable String origin) { - String type; - if (options.unknownCredentialId != null) { - type = CRED_MAN_PREFIX + "SIGNAL_UNKNOWN_CREDENTIAL_STATE_REQUEST_TYPE"; @@ -3807,8 +3901,8 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - requestDataBundle.putCharSequence(CRED_MAN_PREFIX + "signal_request_json_key", requestJson); - - return new SignalCredentialStateRequest(type, origin, requestDataBundle); - } - +- } +- - @VisibleForTesting - public CreateCredentialRequest buildConditionalCreateRequest( - PublicKeyCredentialCreationOptions options, @@ -3834,7 +3928,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - origin, - requestJson, - null); -- } + } } diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java @@ -3930,7 +4024,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn -@@ -3840,10 +3840,6 @@ if (is_android) { +@@ -3865,10 +3865,6 @@ if (is_android) { testonly = true sources = content_java_sources_needing_jni deps = [ @@ -3944,7 +4038,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn diff --git a/device/BUILD.gn b/device/BUILD.gn --- a/device/BUILD.gn +++ b/device/BUILD.gn -@@ -525,9 +525,6 @@ if (is_android) { +@@ -526,9 +526,6 @@ if (is_android) { "vr/public/junit/src/org/chromium/device/vr/XrFeatureStatusTest.java", ] deps = [ @@ -3957,7 +4051,7 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn diff --git a/services/BUILD.gn b/services/BUILD.gn --- a/services/BUILD.gn +++ b/services/BUILD.gn -@@ -166,12 +166,6 @@ if (is_android) { +@@ -167,12 +167,6 @@ if (is_android) { "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java", ] deps = [ @@ -3970,7 +4064,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", -@@ -210,10 +204,6 @@ if (is_android) { +@@ -211,10 +205,6 @@ if (is_android) { "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java", ] deps = [ @@ -4384,9 +4478,9 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_ - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_ar_impress_java") { - aar_path = "autorolled/cipd/libs/com_google_ar_impress/impress.aar" -@@ -509,38 +172,6 @@ template("define_autorolled_targets") { + android_aar_prebuilt("com_google_android_play_review_java") { + aar_path = +@@ -522,38 +185,6 @@ template("define_autorolled_targets") { preferred_dep = true } @@ -4425,7 +4519,7 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_ # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(guava_android_target)) { java_prebuilt("com_google_guava_guava_java") { -@@ -582,64 +213,6 @@ template("define_autorolled_targets") { +@@ -595,64 +226,6 @@ template("define_autorolled_targets") { supports_android = true enable_bytecode_checks = false } @@ -4490,7 +4584,7 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_ # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(android_proto_runtime)) { java_prebuilt("com_google_protobuf_protobuf_javalite_java") { -@@ -1044,190 +617,6 @@ template("define_autorolled_targets") { +@@ -1057,190 +630,6 @@ template("define_autorolled_targets") { ] } @@ -4681,7 +4775,7 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_ # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_google_auto_value_auto_value_annotations_java") { jar_path = "autorolled/cipd/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations.jar" -@@ -1244,242 +633,6 @@ template("define_autorolled_targets") { +@@ -1257,242 +646,6 @@ template("define_autorolled_targets") { testonly = true } @@ -4924,7 +5018,7 @@ diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_ # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_google_guava_failureaccess_java") { jar_path = "autorolled/cipd/libs/com_google_guava_failureaccess/failureaccess.jar" -@@ -2015,28 +1168,6 @@ template("define_autorolled_targets") { +@@ -2028,28 +1181,6 @@ template("define_autorolled_targets") { deps = [ "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_java" ] } diff --git a/build/patches/Remove-detection-of-captive-portals.patch b/build/patches/Remove-detection-of-captive-portals.patch index 2264501e6..4c7d8a410 100644 --- a/build/patches/Remove-detection-of-captive-portals.patch +++ b/build/patches/Remove-detection-of-captive-portals.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -613,7 +613,7 @@ void ProfileNetworkContextService::ConfigureNetworkContextParams( +@@ -626,7 +626,7 @@ void ProfileNetworkContextService::ConfigureNetworkContextParams( void ProfileNetworkContextService::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(embedder_support::kAlternateErrorPagesEnabled, diff --git a/build/patches/Remove-help-menu-item.patch b/build/patches/Remove-help-menu-item.patch index 212b1aece..7bbb6854f 100644 --- a/build/patches/Remove-help-menu-item.patch +++ b/build/patches/Remove-help-menu-item.patch @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -1230,9 +1230,6 @@ public class KeyboardShortcuts { +@@ -1241,9 +1241,6 @@ public class KeyboardShortcuts { return true; } return false; @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu 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 -@@ -2739,15 +2739,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2733,15 +2733,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity final Tab currentTab = getActivityTab(); @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java -@@ -222,6 +222,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment +@@ -246,6 +246,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_24dp); @@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -@@ -907,6 +907,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -905,6 +905,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_24dp, getActivity().getTheme())); help.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java -@@ -1267,7 +1267,6 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { +@@ -1265,7 +1265,6 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { // Disable creating new tabs, bookmark, print, help, focus_url, etc. if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base 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 -@@ -603,6 +603,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -644,6 +644,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment help.setIcon( TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_24dp, getActivity().getTheme())); @@ -113,7 +113,7 @@ 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/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 -@@ -1015,6 +1015,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -1061,6 +1061,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity help.setIcon( TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_24dp, getTheme())); @@ -124,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java -@@ -177,6 +177,7 @@ public class GoogleServicesSettings extends ChromeBaseSettingsFragment +@@ -176,6 +176,7 @@ public class GoogleServicesSettings extends ChromeBaseSettingsFragment MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_24dp); @@ -135,7 +135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/G diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java -@@ -291,6 +291,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment +@@ -290,6 +290,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_24dp); @@ -146,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/M 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 -@@ -466,7 +466,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -480,7 +480,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } // Help @@ -158,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/autofill/android/java/res/menu/prefeditor_editor_menu.xml b/chrome/browser/autofill/android/java/res/menu/prefeditor_editor_menu.xml --- a/chrome/browser/autofill/android/java/res/menu/prefeditor_editor_menu.xml +++ b/chrome/browser/autofill/android/java/res/menu/prefeditor_editor_menu.xml -@@ -19,6 +19,7 @@ found in the LICENSE file. +@@ -24,6 +24,7 @@ found in the LICENSE file. android:id="@+id/help_menu_id" android:icon="@drawable/ic_help_24dp" android:title="@string/help" @@ -169,7 +169,7 @@ diff --git a/chrome/browser/autofill/android/java/res/menu/prefeditor_editor_men diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/options/AutofillOptionsFragment.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/options/AutofillOptionsFragment.java --- a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/options/AutofillOptionsFragment.java +++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/options/AutofillOptionsFragment.java -@@ -154,6 +154,7 @@ public class AutofillOptionsFragment extends ChromeBaseSettingsFragment { +@@ -167,6 +167,7 @@ public class AutofillOptionsFragment extends ChromeBaseSettingsFragment { MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_24dp); @@ -191,7 +191,7 @@ diff --git a/chrome/browser/prefetch/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java -@@ -74,6 +74,7 @@ public abstract class PrivacySandboxSettingsBaseFragment extends ChromeBaseSetti +@@ -82,6 +82,7 @@ public abstract class PrivacySandboxSettingsBaseFragment extends ChromeBaseSetti help.setIcon( TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_24dp, getActivity().getTheme())); @@ -213,10 +213,10 @@ diff --git a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc --- a/chrome/browser/ui/chrome_pages.cc +++ b/chrome/browser/ui/chrome_pages.cc -@@ -145,6 +145,15 @@ void LaunchReleaseNotesImpl(Profile* profile, apps::LaunchSource source) { - // shown in the last active browser. If there is no such browser, a new browser - // is created. - void ShowHelpImpl(Browser* browser, Profile* profile, HelpSource source) { +@@ -148,6 +148,15 @@ void LaunchReleaseNotesImpl(Profile* profile, apps::LaunchSource source) { + void ShowHelpImpl(BrowserWindowInterface* browser, + Profile* profile, + HelpSource source) { + if (source == HelpSource::kWebUI) { + GURL url = GURL("https://github.com/uazo/cromite/issues"); + if (browser) { 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 608d0dfd2..b4c917f4c 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 @@ -59,7 +59,7 @@ 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 -@@ -50,6 +50,15 @@ using MemoryAllocation = BlobMemoryController::MemoryAllocation; +@@ -53,6 +53,15 @@ using MemoryAllocation = BlobMemoryController::MemoryAllocation; using QuotaAllocationTask = BlobMemoryController::QuotaAllocationTask; using DiskSpaceFuncPtr = BlobMemoryController::DiskSpaceFuncPtr; @@ -75,7 +75,7 @@ diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/bl File::Error CreateBlobDirectory(const FilePath& blob_storage_dir) { File::Error error = File::FILE_OK; base::CreateDirectoryAndGetError(blob_storage_dir, &error); -@@ -80,22 +89,15 @@ BlobStorageLimits CalculateBlobStorageLimitsImpl( +@@ -83,22 +92,15 @@ BlobStorageLimits CalculateBlobStorageLimitsImpl( uint64_t memory_size = optional_memory_size_for_testing ? optional_memory_size_for_testing.value() @@ -245,7 +245,7 @@ diff --git a/third_party/blink/renderer/core/timing/memory_info.cc b/third_party diff --git a/third_party/blink/renderer/core/timing/window_performance.cc b/third_party/blink/renderer/core/timing/window_performance.cc --- a/third_party/blink/renderer/core/timing/window_performance.cc +++ b/third_party/blink/renderer/core/timing/window_performance.cc -@@ -314,7 +314,7 @@ MemoryInfo* WindowPerformance::memory(ScriptState* script_state) const { +@@ -316,7 +316,7 @@ MemoryInfo* WindowPerformance::memory(ScriptState* script_state) const { const bool is_locked_to_site = Platform::Current()->IsLockedToSite(); auto* memory_info = MakeGarbageCollected( is_locked_to_site ? MemoryInfo::Precision::kPrecise diff --git a/build/patches/Remove-voice-recognition-integration.patch b/build/patches/Remove-voice-recognition-integration.patch index f495ce871..d7a353dc3 100644 --- a/build/patches/Remove-voice-recognition-integration.patch +++ b/build/patches/Remove-voice-recognition-integration.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tabbed_mode/TabbedRootUiCoordinator.java | 2 +- .../browser/toolbar/ToolbarManager.java | 5 -- .../ui/AdaptiveToolbarUiCoordinator.java | 50 ------------------- - .../chrome/browser/ui/RootUiCoordinator.java | 18 ------- + .../chrome/browser/ui/RootUiCoordinator.java | 25 ---------- chrome/browser/ui/android/omnibox/BUILD.gn | 1 - .../chrome/browser/omnibox/LocationBar.java | 6 --- .../omnibox/LocationBarCoordinator.java | 14 +----- @@ -25,12 +25,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../omnibox/voice/VoiceRecognitionUtil.java | 1 + chrome/browser/ui/android/toolbar/BUILD.gn | 1 - .../toolbar/VoiceToolbarButtonController.java | 1 + - 21 files changed, 11 insertions(+), 236 deletions(-) + 21 files changed, 11 insertions(+), 243 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 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java -@@ -518,7 +518,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -526,7 +526,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { mIntentDataProvider.get(), AppCompatResources.getDrawable(mActivity, R.drawable.ic_open_in_new_white_24dp), mOpenInBrowserRunnable, @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -75,7 +75,6 @@ import org.chromium.chrome.browser.ntp_customization.NtpCustomizationUtils.NtpBa +@@ -64,7 +64,6 @@ import org.chromium.chrome.browser.ntp_customization.NtpCustomizationUtils.NtpBa import org.chromium.chrome.browser.ntp_customization.theme.chrome_colors.NtpThemeColorInfo; import org.chromium.chrome.browser.ntp_customization.theme.upload_image.BackgroundImageInfo; import org.chromium.chrome.browser.omnibox.OmniboxStub; @@ -50,15 +50,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.readaloud.ReadAloudController; -@@ -145,7 +144,6 @@ public class NewTabPage +@@ -122,7 +121,6 @@ public class NewTabPage TemplateUrlServiceObserver, BrowserControlsStateProvider.Observer, FeedSurfaceDelegate, - VoiceRecognitionHandler.Observer, - ModuleDelegateHost { + SnackbarManageable { private static final String TAG = "NewTabPage"; -@@ -180,7 +178,6 @@ public class NewTabPage +@@ -157,7 +155,6 @@ public class NewTabPage protected boolean mIsDefaultSearchEngineGoogle; protected @Nullable OmniboxStub mOmniboxStub; @@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. // The timestamp at which the constructor was called. protected final long mConstructedTimeNs; -@@ -297,8 +294,7 @@ public class NewTabPage +@@ -260,8 +257,7 @@ public class NewTabPage @Override public boolean isVoiceSearchEnabled() { @@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } @Override -@@ -309,15 +305,7 @@ public class NewTabPage +@@ -272,15 +268,7 @@ public class NewTabPage if (mIsDestroyed) return; FeedReliabilityLogger feedReliabilityLogger = mFeedSurfaceProvider.getReliabilityLogger(); @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (feedReliabilityLogger != null) { feedReliabilityLogger.onOmniboxFocused(); } -@@ -1012,12 +1000,6 @@ public class NewTabPage +@@ -930,12 +918,6 @@ public class NewTabPage mOmniboxStub.addUrlFocusChangeListener(feedReliabilityLogger); } } @@ -101,37 +101,37 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. - mVoiceRecognitionHandler = mOmniboxStub.getVoiceRecognitionHandler(); - if (mVoiceRecognitionHandler != null) { - mVoiceRecognitionHandler.addObserver(this); -- mNewTabPageLayout.updateActionButtonVisibility(); +- mNewTabPageCoordinator.updateActionButtonVisibility(); - } } /** -@@ -1036,11 +1018,6 @@ public class NewTabPage +@@ -954,11 +936,6 @@ public class NewTabPage } } - @Override - public void onVoiceAvailabilityImpacted() { -- mNewTabPageLayout.updateActionButtonVisibility(); +- mNewTabPageCoordinator.updateActionButtonVisibility(); - } - - /** Adds an observer to be notified on most visited tile clicks. */ - public void addMostVisitedTileClickObserver(MostVisitedTileClickObserver observer) { - mMostVisitedTileClickObservers.addObserver(observer); -@@ -1131,9 +1108,6 @@ public class NewTabPage + @Override + public SnackbarManager getSnackbarManager() { + return mNewTabPageManager.getSnackbarManager(); +@@ -1050,9 +1027,6 @@ public class NewTabPage mOmniboxStub.removeUrlFocusChangeListener(feedReliabilityLogger); } mFeedSurfaceProvider.destroy(); - if (mVoiceRecognitionHandler != null) { - mVoiceRecognitionHandler.removeObserver(this); - } - if (mSearchResumptionModuleCoordinator != null) { - mSearchResumptionModuleCoordinator.destroy(); - } + + if (mTopInsetChangeObserver != null) { + mTopInsetProvider.removeObserver(mTopInsetChangeObserver); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java -@@ -103,6 +103,7 @@ class SearchBoxMediator implements DestroyObserver { +@@ -126,6 +126,7 @@ class SearchBoxMediator implements DestroyObserver { /** Called to add a click listener for the voice search button. */ void addVoiceSearchButtonClickListener(OnClickListener listener) { @@ -156,9 +156,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se /* bookmarkState= */ (url) -> false, - VoiceToolbarButtonController::isToolbarMicEnabled, + /* isToolbarMicEnabled */ () -> false, - /* merchantTrustSignalsCoordinatorSupplier= */ null, new OmniboxActionDelegateImpl( this, + () -> mSearchBoxDataProvider.getTab(), diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java @@ -187,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -1138,7 +1138,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1206,7 +1206,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mTabBookmarkerSupplier, mBookmarkModelSupplier, mActivityTabProvider, @@ -199,7 +199,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/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 -@@ -122,7 +122,6 @@ import org.chromium.chrome.browser.omnibox.OverrideUrlLoadingDelegateImpl; +@@ -123,7 +123,6 @@ import org.chromium.chrome.browser.omnibox.OverrideUrlLoadingDelegateImpl; import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownScrollListener; import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; @@ -207,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; -@@ -3283,10 +3282,6 @@ public class ToolbarManager +@@ -3434,10 +3433,6 @@ public class ToolbarManager return mLocationBar.getOmniboxStub(); } @@ -309,7 +309,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveTool 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 -@@ -126,7 +126,6 @@ import org.chromium.chrome.browser.ntp_customization.edge_to_edge.TopInsetCoordi +@@ -130,7 +130,6 @@ import org.chromium.chrome.browser.ntp_customization.edge_to_edge.TopInsetCoordi import org.chromium.chrome.browser.omnibox.OmniboxChipManager; import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; @@ -317,7 +317,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.open_in_app.OpenInAppEntryPoint; import org.chromium.chrome.browser.open_in_app.OpenInAppMenuItemProvider; import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; -@@ -360,7 +359,6 @@ public class RootUiCoordinator +@@ -363,7 +362,6 @@ public class RootUiCoordinator private @Nullable LayoutManagerImpl mLayoutManager; protected OneshotSupplier mIntentMetadataOneshotSupplier; protected OneshotSupplierImpl mPromoShownOneshotSupplier = new OneshotSupplierImpl<>(); @@ -325,7 +325,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi private @Nullable MediaCaptureOverlayController mCaptureController; private @Nullable ScrollCaptureManager mScrollCaptureManager; protected final ActivityLifecycleDispatcher mActivityLifecycleDispatcher; -@@ -845,9 +843,6 @@ public class RootUiCoordinator +@@ -860,9 +858,6 @@ public class RootUiCoordinator } if (mToolbarManager != null) { @@ -335,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mToolbarManager.destroy(); mToolbarManager = null; } -@@ -1928,23 +1923,10 @@ public class RootUiCoordinator +@@ -1966,30 +1961,10 @@ public class RootUiCoordinator if (!mSupportsAppMenuSupplier.getAsBoolean()) { mToolbarManager.getToolbar().disableMenuButton(); } @@ -352,6 +352,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } - protected void addVoiceSearchAdaptiveButton(Supplier<@Nullable Tracker> trackerSupplier) { +- if (mAdaptiveToolbarUiCoordinator == null) { +- assert mActivity == null +- : "mAdaptiveToolbarUiCoordinator was null but RootUiCoordinator was not" +- + " destroyed"; +- return; +- } +- - mAdaptiveToolbarUiCoordinator.addVoiceSearchAdaptiveButton( - () -> mToolbarManager.getVoiceRecognitionHandler(), trackerSupplier); - } @@ -362,7 +369,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn -@@ -176,7 +176,6 @@ android_library("java") { +@@ -181,7 +181,6 @@ android_library("java") { "java/src/org/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionView.java", "java/src/org/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionViewBinder.java", "java/src/org/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionViewProperties.java", @@ -396,7 +403,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -65,7 +65,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdow +@@ -63,7 +63,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdow import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsVisualState; import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; import org.chromium.chrome.browser.omnibox.suggestions.basic.BasicSuggestionProcessor.BookmarkState; @@ -404,7 +411,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.share.ShareDelegate; -@@ -628,12 +627,6 @@ public class LocationBarCoordinator +@@ -617,12 +616,6 @@ public class LocationBarCoordinator return mLocationBarLayout.getSecurityIconView(); } @@ -417,7 +424,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public @Nullable OmniboxStub getOmniboxStub() { return mLocationBarMediator; -@@ -795,7 +788,7 @@ public class LocationBarCoordinator +@@ -784,7 +777,7 @@ public class LocationBarCoordinator public void startAutocompletePrefetch() { if (!mNativeInitialized) return; mAutocompleteCoordinator.prefetchZeroSuggestResults( @@ -426,7 +433,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } /** -@@ -1053,11 +1046,6 @@ public class LocationBarCoordinator +@@ -1042,11 +1035,6 @@ public class LocationBarCoordinator // End tablet-specific methods. @@ -441,7 +448,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/LocationBarLayout.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java -@@ -31,7 +31,6 @@ import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; +@@ -32,7 +32,6 @@ import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.status.StatusView; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; @@ -449,7 +456,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.ui.theme.BrandedColorScheme; import org.chromium.components.browser_ui.widget.CompositeTouchDelegate; import org.chromium.components.embedder_support.util.UrlUtilities; -@@ -495,11 +494,6 @@ public class LocationBarLayout extends ConstraintLayout { +@@ -505,11 +504,6 @@ public class LocationBarLayout extends ConstraintLayout { mSearchEngineUtils = searchEngineUtils; } @@ -464,15 +471,15 @@ 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 -@@ -77,7 +77,6 @@ import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; - import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; +@@ -78,7 +78,6 @@ import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxLoadUrlParams; + import org.chromium.chrome.browser.omnibox.suggestions.SiteSearchActivationSource; -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -130,7 +129,6 @@ import java.util.function.Supplier; +@@ -132,7 +131,6 @@ import java.util.function.Supplier; class LocationBarMediator implements LocationBarDataProvider.Observer, OmniboxStub, @@ -480,7 +487,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow UrlBarDelegate, OnKeyListener, FuseboxAttachmentChangeListener, -@@ -191,7 +189,6 @@ class LocationBarMediator +@@ -193,7 +191,6 @@ class LocationBarMediator }; private final LocationBarLayout mLocationBarLayout; @@ -488,7 +495,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private final LocationBarDataProvider mLocationBarDataProvider; private final @Nullable BrowserControlsStateProvider mBrowserControlsStateProvider; private final LocationBarEmbedderUiOverrides mEmbedderUiOverrides; -@@ -374,18 +371,6 @@ class LocationBarMediator +@@ -372,18 +369,6 @@ class LocationBarMediator mAutocompleteCoordinator = autocompleteCoordinator; mStatusCoordinator = statusCoordinator; @@ -507,7 +514,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow updateShouldAnimateIconChanges(); updateButtonVisibility(); updateSearchEngineStatusIconShownState(); -@@ -404,9 +389,6 @@ class LocationBarMediator +@@ -402,9 +387,6 @@ class LocationBarMediator mStatusCoordinator = null; mAutocompleteCoordinator = null; mUrlCoordinator = null; @@ -517,7 +524,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mLocationBarDataProvider.removeObserver(this); mUrlFocusChangeListeners.clear(); if (mPageZoomIndicatorCoordinator != null) { -@@ -534,11 +516,6 @@ class LocationBarMediator +@@ -533,11 +515,6 @@ class LocationBarMediator mLocationBarLayout.setUnfocusedWidth(unfocusedWidth); } @@ -529,7 +536,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /* package */ void setLensControllerForTesting(LensController lensController) { mLensController = lensController; } -@@ -899,10 +876,6 @@ class LocationBarMediator +@@ -982,10 +959,6 @@ class LocationBarMediator // Hide keyboard before launch voice search to avoid keyboard action announcement in // TalkBack to be picked up by voice search. mUrlCoordinator.setKeyboardVisibility(false, false); @@ -540,10 +547,10 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } /** package */ -@@ -1729,10 +1702,7 @@ class LocationBarMediator - if (mCurrentInput != null && !mCurrentInput.isConventionalRequestType()) return false; +@@ -1829,10 +1802,7 @@ class LocationBarMediator + + if (isUrlBarFocusedOnDesktop()) return false; - if (isUrlBarFocusedWithUserInput()) return false; - if (!mNativeInitialized - || mVoiceRecognitionHandler == null - || !mVoiceRecognitionHandler.isVoiceSearchEnabled() @@ -552,7 +559,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow return false; } boolean isToolbarMicEnabled = mIsToolbarMicEnabledSupplier.getAsBoolean(); -@@ -1750,6 +1720,7 @@ class LocationBarMediator +@@ -1850,6 +1820,7 @@ class LocationBarMediator @VisibleForTesting boolean shouldShowLensButton() { @@ -560,7 +567,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow if (mCurrentInput != null && !mCurrentInput.isConventionalRequestType()) return false; if (isUrlBarFocusedWithUserInput()) return false; -@@ -2013,11 +1984,6 @@ class LocationBarMediator +@@ -2124,11 +2095,6 @@ class LocationBarMediator mUrlCoordinator.clearFocus(); } @@ -572,7 +579,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public void addUrlFocusChangeListener(UrlFocusChangeListener listener) { mUrlFocusChangeListeners.addObserver(listener); -@@ -2042,20 +2008,10 @@ class LocationBarMediator +@@ -2153,20 +2119,10 @@ class LocationBarMediator .build()); } @@ -702,8 +709,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.preloading.PreloadingFeatureMap; import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.share.ShareDelegate; -@@ -694,14 +693,6 @@ class AutocompleteMediator + import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +@@ -698,14 +697,6 @@ class AutocompleteMediator mShouldPreventOmniboxAutocomplete = prevent; } diff --git a/build/patches/Remove-window-name-on-cross-origin-navigation.patch b/build/patches/Remove-window-name-on-cross-origin-navigation.patch index 588b5f007..f17a298a6 100644 --- a/build/patches/Remove-window-name-on-cross-origin-navigation.patch +++ b/build/patches/Remove-window-name-on-cross-origin-navigation.patch @@ -34,7 +34,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc -@@ -3038,7 +3038,8 @@ void DocumentLoader::CommitNavigation() { +@@ -3057,7 +3057,8 @@ void DocumentLoader::CommitNavigation() { // that the name would be nulled and if the name is accessed after we will // fire a UseCounter. If we decide to move forward with this change, we'd // actually clean the name here. @@ -44,7 +44,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p frame_->Tree().ExperimentalSetNulledName(); } -@@ -3049,6 +3050,7 @@ void DocumentLoader::CommitNavigation() { +@@ -3068,6 +3069,7 @@ void DocumentLoader::CommitNavigation() { // TODO(shuuran): CrossSiteCrossBrowsingContextGroupSetNulledName will just // record the fact that the name would be nulled and if the name is accessed // after we will fire a UseCounter. diff --git a/build/patches/Restore-LastTabStandingTracker.patch b/build/patches/Restore-LastTabStandingTracker.patch index 147dbe7c4..a175974ae 100644 --- a/build/patches/Restore-LastTabStandingTracker.patch +++ b/build/patches/Restore-LastTabStandingTracker.patch @@ -27,7 +27,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1327,6 +1327,16 @@ static_library("browser") { +@@ -1060,6 +1060,16 @@ static_library("browser") { "webauthn/webauthn_switches.cc", ] @@ -55,7 +55,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_key.h" #include "chrome/browser/profiles/profiles_state.h" -@@ -65,6 +66,7 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() +@@ -68,6 +69,7 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() .WithAshInternals(ProfileSelection::kOwnInstance) .Build()) { DependsOn(supervised_user::FamilyLinkSettingsServiceFactory::GetInstance()); @@ -383,26 +383,26 @@ new file mode 100644 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -152,6 +152,7 @@ - #include "chrome/browser/password_manager/profile_password_store_factory.h" +@@ -162,6 +162,7 @@ + #include "chrome/browser/password_manager/password_field_classification_model_handler_factory.h" #include "chrome/browser/payments/browser_binding/browser_bound_key_deleter_service_factory.h" #include "chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_factory.h" +#include "chrome/browser/permissions/last_tab_standing_tracker_factory.h" #include "chrome/browser/permissions/notifications_engagement_service_factory.h" #include "chrome/browser/permissions/one_time_permissions_tracker_factory.h" #include "chrome/browser/permissions/origin_keyed_permission_action_service_factory.h" -@@ -1148,6 +1149,7 @@ void ChromeBrowserMainExtraPartsProfiles:: - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - OnDeviceTailModelServiceFactory::GetInstance(); +@@ -1169,6 +1170,7 @@ void ChromeBrowserMainExtraPartsProfiles:: + #if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + on_device_translation::ServiceControllerManagerFactory::GetInstance(); #endif + LastTabStandingTrackerFactory::GetInstance(); + OnDeviceTailModelServiceFactory::GetInstance(); #if !BUILDFLAG(IS_ANDROID) OneGoogleBarServiceFactory::GetInstance(); - OneTimePermissionsTrackerFactory::GetInstance(); 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 -@@ -56,6 +56,7 @@ +@@ -57,6 +57,7 @@ #include "chrome/browser/page_info/page_info_features.h" #include "chrome/browser/page_load_metrics/page_load_metrics_initialize.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" @@ -410,7 +410,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "chrome/browser/permissions/one_time_permissions_tracker_helper.h" #include "chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.h" #include "chrome/browser/predictors/loading_predictor_factory.h" -@@ -463,6 +464,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -472,6 +473,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } HttpsOnlyModeTabHelper::CreateForWebContents(web_contents); webapps::InstallableManager::CreateForWebContents(web_contents); diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index b198a71e1..f7fda4866 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -409,6 +409,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -426,6 +426,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kRecordIncognitoNtpTimeToFirstNavigationMetric, &kRecordSuppressionMetrics, &kReengagementNotification, @@ -34,7 +34,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 -@@ -511,6 +511,7 @@ public abstract class ChromeFeatureList { +@@ -529,6 +529,7 @@ public abstract class ChromeFeatureList { "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; diff --git a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch index 714912d32..84e21f21a 100644 --- a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch +++ b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch @@ -25,7 +25,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/dom_distiller/ReaderModeToolbarButtonController.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java -@@ -71,11 +71,11 @@ public class ReaderModeToolbarButtonController extends BaseButtonDataProvider +@@ -70,11 +70,11 @@ public class ReaderModeToolbarButtonController extends BaseButtonDataProvider modalDialogManager, AppCompatResources.getDrawable(context, R.drawable.ic_mobile_friendly_24dp), context.getString(R.string.reader_mode_cpa_button_text), @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/R diff --git a/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java b/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java -@@ -313,6 +313,10 @@ public class ContextualPageActionController { +@@ -298,6 +298,10 @@ public class ContextualPageActionController { && mTabSupplier.get().getId() == tab.getId(); if (!isSameTab) return; @@ -80,7 +80,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml --- a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_group_adaptive_toolbar_preference.xml -@@ -90,6 +90,15 @@ found in the LICENSE file. +@@ -99,6 +99,15 @@ found in the LICENSE file. app:iconSrc="@drawable/summarize_auto" app:primaryText="@string/adaptive_toolbar_button_preference_page_summary" app:descriptionText="@string/adaptive_toolbar_button_preference_page_summary_description"/> @@ -99,7 +99,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/radio_button_grou diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java -@@ -362,7 +362,7 @@ public class AdaptiveToolbarButtonController +@@ -356,7 +356,7 @@ public class AdaptiveToolbarButtonController } private boolean isScreenWideEnoughForButton() { @@ -111,7 +111,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/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java -@@ -75,9 +75,9 @@ public class AdaptiveToolbarFeatures { +@@ -77,9 +77,9 @@ public class AdaptiveToolbarFeatures { case AdaptiveToolbarButtonVariant.VOICE: case AdaptiveToolbarButtonVariant.AUTO: case AdaptiveToolbarButtonVariant.GLIC: @@ -137,7 +137,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/adaptive/AdaptiveToolbarStatePredictor.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java -@@ -201,12 +201,12 @@ public class AdaptiveToolbarStatePredictor { +@@ -205,12 +205,12 @@ public class AdaptiveToolbarStatePredictor { case AdaptiveToolbarButtonVariant.PAGE_SUMMARY: case AdaptiveToolbarButtonVariant.OPEN_IN_BROWSER: case AdaptiveToolbarButtonVariant.GLIC: @@ -151,7 +151,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow case AdaptiveToolbarButtonVariant.PRICE_INSIGHTS: case AdaptiveToolbarButtonVariant.TAB_GROUPING: return false; -@@ -235,6 +235,10 @@ public class AdaptiveToolbarStatePredictor { +@@ -239,6 +239,10 @@ public class AdaptiveToolbarStatePredictor { * @param callback A callback for results. */ public void readFromSegmentationPlatform(Callback> callback) { @@ -165,10 +165,10 @@ 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/adaptive/AdaptiveToolbarStats.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats.java -@@ -122,6 +122,8 @@ public class AdaptiveToolbarStats { - return AdaptiveToolbarRadioButtonState.PAGE_SUMMARY; - case AdaptiveToolbarButtonVariant.OPEN_IN_BROWSER: +@@ -128,6 +128,8 @@ public class AdaptiveToolbarStats { return AdaptiveToolbarRadioButtonState.OPEN_IN_BROWSER; + case AdaptiveToolbarButtonVariant.GLIC: + return AdaptiveToolbarRadioButtonState.GLIC; + case AdaptiveToolbarButtonVariant.READER_MODE: + return AdaptiveToolbarRadioButtonState.UNKNOWN; case AdaptiveToolbarButtonVariant.AUTO: @@ -177,15 +177,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/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/settings/RadioButtonGroupAdaptiveToolbarPreference.java -@@ -43,6 +43,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut - private @Nullable RadioButtonWithDescription mAddToBookmarksButton; +@@ -44,6 +44,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut private @Nullable RadioButtonWithDescription mReadAloudButton; private @Nullable RadioButtonWithDescription mPageSummaryButton; + private @Nullable RadioButtonWithDescription mGlicButton; + private @Nullable RadioButtonWithDescription mReaderMode; private @AdaptiveToolbarButtonVariant int mSelected; private @AdaptiveToolbarButtonVariant int mAutoButtonCaption; private @Nullable AdaptiveToolbarStatePredictor mStatePredictor; -@@ -77,6 +78,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut +@@ -80,6 +81,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut mAutoButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_based_on_usage); @@ -193,7 +193,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mNewTabButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_new_tab); mShareButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_share); -@@ -84,6 +86,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut +@@ -87,6 +89,7 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_voice_search); mTranslateButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_translate); @@ -201,16 +201,16 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mAddToBookmarksButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_add_to_bookmarks); -@@ -91,6 +94,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut - (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_read_aloud); +@@ -95,6 +98,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut mPageSummaryButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_page_summary); + mGlicButton = (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_glic); + mReaderMode = + (RadioButtonWithDescription) holder.findViewById(R.id.adaptive_option_reader_mode); mIsBound = true; -@@ -168,13 +173,6 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut +@@ -173,13 +178,6 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut mAutoButton.setDescriptionText( getContext().getString(resId, getButtonString(uiState.autoButtonCaption))); @@ -224,25 +224,25 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow updateVoiceButtonVisibility(); updateReadAloudButtonVisibility(); updatePageSummaryButtonVisibility(); -@@ -203,6 +201,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut - mSelected = AdaptiveToolbarButtonVariant.READ_ALOUD; - } else if (mPageSummaryButton.isChecked()) { +@@ -212,6 +210,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut mSelected = AdaptiveToolbarButtonVariant.PAGE_SUMMARY; + } else if (mGlicButton.isChecked()) { + mSelected = AdaptiveToolbarButtonVariant.GLIC; + } else if (mReaderMode.isChecked()) { + mSelected = AdaptiveToolbarButtonVariant.READER_MODE; } else { assert false : "No matching setting found."; } -@@ -242,6 +242,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut - return mReadAloudButton; - case AdaptiveToolbarButtonVariant.PAGE_SUMMARY: +@@ -253,6 +253,8 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut return mPageSummaryButton; + case AdaptiveToolbarButtonVariant.GLIC: + return mGlicButton; + case AdaptiveToolbarButtonVariant.READER_MODE: + return mReaderMode; } return null; } -@@ -273,6 +275,9 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut +@@ -287,6 +289,9 @@ public class RadioButtonGroupAdaptiveToolbarPreference extends ContainedRadioBut case AdaptiveToolbarButtonVariant.OPEN_IN_BROWSER: stringRes = R.string.menu_open_in_product_default; break; diff --git a/build/patches/Restore-classic-new-tab-page.patch b/build/patches/Restore-classic-new-tab-page.patch index 54aa481cf..a20ade03c 100644 --- a/build/patches/Restore-classic-new-tab-page.patch +++ b/build/patches/Restore-classic-new-tab-page.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc --- a/chrome/browser/search/search.cc +++ b/chrome/browser/search/search.cc -@@ -94,17 +94,6 @@ enum NewTabURLState { +@@ -96,17 +96,6 @@ enum NewTabURLState { NEW_TAB_URL_MAX }; @@ -28,7 +28,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc bool IsMatchingServiceWorker(const GURL& my_url, const GURL& document_url) { // The origin should match. if (!MatchesOrigin(my_url, document_url)) { -@@ -141,20 +130,6 @@ bool IsNTPOrRelatedURLHelper(const GURL& url, Profile* profile) { +@@ -143,20 +132,6 @@ bool IsNTPOrRelatedURLHelper(const GURL& url, Profile* profile) { IsMatchingServiceWorker(url, new_tab_url)); } @@ -49,7 +49,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc // Used to look up the URL to use for the New Tab page. Also tracks how we // arrived at that URL so it can be logged with UMA. struct NewTabURLDetails { -@@ -177,33 +152,8 @@ struct NewTabURLDetails { +@@ -179,33 +154,8 @@ struct NewTabURLDetails { const GURL local_url(default_is_google ? chrome::kChromeUINewTabPageURL : chrome::kChromeUINewTabPageThirdPartyURL); diff --git a/build/patches/Restore-offline-indicator-v2-flag.patch b/build/patches/Restore-offline-indicator-v2-flag.patch index e995cb56c..347c5df13 100644 --- a/build/patches/Restore-offline-indicator-v2-flag.patch +++ b/build/patches/Restore-offline-indicator-v2-flag.patch @@ -92,7 +92,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 -@@ -1553,7 +1553,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1618,7 +1618,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { private void initStatusIndicatorCoordinator(LayoutManagerImpl layoutManager) { // TODO(crbug.com/40112282): Disable on tablets for now as we need to do one or two extra // things for tablets. @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab return; } -@@ -1593,6 +1594,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1658,6 +1659,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { hubManager.setStatusIndicatorHeight(mStatusIndicatorHeight); }); @@ -117,7 +117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab 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 -@@ -390,6 +390,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -408,6 +408,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNotificationTrampolineNoNewTask, &kNtpMvcRefactor, &kNtpSimplification, @@ -128,7 +128,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 -@@ -533,6 +533,7 @@ public abstract class ChromeFeatureList { +@@ -551,6 +551,7 @@ public abstract class ChromeFeatureList { "NotificationTrampolineNoNewTask"; public static final String NTP_MVC_REFACTOR = "NtpMvcRefactor"; public static final String NTP_SIMPLIFICATION = "NtpSimplification"; diff --git a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch index b2132bac9..a2d32e033 100644 --- a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch +++ b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch @@ -21,8 +21,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -2407,6 +2407,10 @@ - "yangsharon@google.com", "alexmos@google.com", "creis@google.com" ], +@@ -2367,6 +2367,10 @@ + "alexmos@google.com", "creis@google.com" ], "expiry_milestone": 150 }, + { @@ -30,8 +30,8 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js + "expiry_milestone": -1 + }, { - "name": "disable-quick-answers-v2-translation", - "owners": [ "croissant-eng@chromium.org" ], + "name": "disable-u18-feedback-desktop", + "owners": [ "chrome-signin-team@google.com" ], diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/disable-pull-to-refresh-effect.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/disable-pull-to-refresh-effect.grdp new file mode 100644 --- /dev/null diff --git a/build/patches/Revert-removal-of-execution-context-address-space.patch b/build/patches/Revert-removal-of-execution-context-address-space.patch index f85eb2d71..1f49a3923 100644 --- a/build/patches/Revert-removal-of-execution-context-address-space.patch +++ b/build/patches/Revert-removal-of-execution-context-address-space.patch @@ -96,7 +96,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc --- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc +++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc -@@ -278,6 +278,7 @@ void WebSharedWorkerImpl::StartWorkerContext( +@@ -285,6 +285,7 @@ void WebSharedWorkerImpl::StartWorkerContext( MakeGarbageCollected(), std::make_unique( std::move(content_settings)), @@ -214,7 +214,7 @@ diff --git a/third_party/blink/renderer/core/loader/modulescript/worker_module_s diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc --- a/third_party/blink/renderer/core/workers/dedicated_worker.cc +++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc -@@ -363,6 +363,7 @@ void DedicatedWorker::OnScriptLoadStarted( +@@ -370,6 +370,7 @@ void DedicatedWorker::OnScriptLoadStarted( network::mojom::ReferrerPolicy::kDefault, Vector(), DocumentPolicy::DocumentPolicyBundle{}, @@ -222,7 +222,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third std::move(back_forward_cache_controller_host), std::move(coep_reporting_observer), std::move(dip_reporting_observer)); -@@ -430,6 +431,7 @@ void DedicatedWorker::OnFinished( +@@ -438,6 +439,7 @@ void DedicatedWorker::OnFinished( ->GetParsedPolicies()) : Vector(), classic_script_loader_->GetDocumentPolicy(), @@ -230,7 +230,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third std::move(back_forward_cache_controller_host), /*coep_reporting_observer=*/mojo::NullReceiver(), /*dip_reporting_observer=*/mojo::NullReceiver()); -@@ -448,6 +450,7 @@ void DedicatedWorker::ContinueStart( +@@ -456,6 +458,7 @@ void DedicatedWorker::ContinueStart( Vector response_content_security_policies, DocumentPolicy::DocumentPolicyBundle response_document_policy, @@ -238,7 +238,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third mojo::PendingRemote back_forward_cache_controller_host, mojo::PendingReceiver -@@ -473,6 +476,7 @@ void DedicatedWorker::ContinueStart( +@@ -481,6 +484,7 @@ void DedicatedWorker::ContinueStart( std::move(referrer_policy), std::move(response_content_security_policies), std::move(response_document_policy), @@ -246,7 +246,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third std::move(back_forward_cache_controller_host), std::move(coep_reporting_observer), std::move(dip_reporting_observer)), -@@ -483,6 +487,7 @@ void DedicatedWorker::ContinueStart( +@@ -491,6 +495,7 @@ void DedicatedWorker::ContinueStart( script_url, std::move(worker_main_script_load_params), std::move(referrer_policy), std::move(response_content_security_policies), std::move(response_document_policy), @@ -254,7 +254,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third std::move(back_forward_cache_controller_host), std::move(coep_reporting_observer), std::move(dip_reporting_observer)); } -@@ -495,6 +500,7 @@ void DedicatedWorker::ContinueStartInternal( +@@ -503,6 +508,7 @@ void DedicatedWorker::ContinueStartInternal( Vector response_content_security_policies, DocumentPolicy::DocumentPolicyBundle document_policy, @@ -262,7 +262,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third mojo::PendingRemote back_forward_cache_controller_host, mojo::PendingReceiver -@@ -509,7 +515,7 @@ void DedicatedWorker::ContinueStartInternal( +@@ -517,7 +523,7 @@ void DedicatedWorker::ContinueStartInternal( CreateGlobalScopeCreationParams( script_url, referrer_policy, std::move(response_content_security_policies), @@ -271,7 +271,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third std::move(dip_reporting_observer)), std::move(worker_main_script_load_params), options_, script_url, *outside_fetch_client_settings_object_, v8_stack_trace_id_, token_, -@@ -548,6 +554,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams( +@@ -556,6 +562,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams( Vector response_content_security_policies, DocumentPolicy::DocumentPolicyBundle document_policy, @@ -279,7 +279,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third mojo::PendingReceiver coep_reporting_observer, mojo::PendingReceiver -@@ -600,6 +607,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams( +@@ -608,6 +615,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams( std::move(document_policy), execution_context->GetSecurityOrigin(), execution_context->IsSecureContext(), execution_context->GetHttpsState(), MakeGarbageCollected(), CreateWebContentSettingsClient(), @@ -317,25 +317,19 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc --- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc +++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc -@@ -95,6 +95,8 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( - creation_params->referrer_policy; - DocumentPolicy::DocumentPolicyBundle response_document_policy = - std::move(creation_params->document_policy); -+ std::optional response_address_space = -+ creation_params->response_address_space; - const bool parent_is_isolated_context = - creation_params->parent_is_isolated_context; - base::TimeTicks start_time; -@@ -121,7 +123,7 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( +@@ -118,8 +118,10 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( + // Legacy on-the-main-thread worker script fetch (to be removed): // Pass dummy origin trial tokens here as it is already set to outside's // origin trial tokens in DedicatedWorkerGlobalScope's constructor. ++ std::optional response_address_space = ++ creation_params->response_address_space; global_scope->Initialize(response_script_url, response_referrer_policy, - std::move(response_csp), + *response_address_space, std::move(response_csp), std::move(response_document_policy), nullptr /* response_origin_trial_tokens */); return global_scope; -@@ -238,6 +240,7 @@ const AtomicString& DedicatedWorkerGlobalScope::InterfaceName() const { +@@ -241,6 +243,7 @@ const AtomicString& DedicatedWorkerGlobalScope::InterfaceName() const { void DedicatedWorkerGlobalScope::Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -343,7 +337,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco Vector response_csp, DocumentPolicy::DocumentPolicyBundle response_document_policy, const Vector* /* response_origin_trial_tokens */) { -@@ -254,6 +257,9 @@ void DedicatedWorkerGlobalScope::Initialize( +@@ -257,6 +260,9 @@ void DedicatedWorkerGlobalScope::Initialize( // parsing the `Referrer-Policy` header of response." SetReferrerPolicy(response_referrer_policy); @@ -353,7 +347,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco // The following is the Content-Security-Policy part of "Initialize worker // global scope's policy container" // https://html.spec.whatwg.org/#initialize-worker-policy-container -@@ -502,6 +508,7 @@ void DedicatedWorkerGlobalScope::DidFetchClassicScript( +@@ -510,6 +516,7 @@ void DedicatedWorkerGlobalScope::DidFetchClassicScript( // Pass dummy origin trial tokens here as it is already set to outside's // origin trial tokens in DedicatedWorkerGlobalScope's constructor. Initialize(classic_script_loader->ResponseURL(), response_referrer_policy, @@ -364,7 +358,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h --- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h +++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h -@@ -112,6 +112,7 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { +@@ -111,6 +111,7 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { void Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -383,7 +377,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr worker_settings, -@@ -79,6 +80,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams( +@@ -80,6 +81,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams( starter_https_state(starter_https_state), worker_clients(worker_clients), content_settings_client(std::move(content_settings_client)), @@ -410,7 +404,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr, -@@ -189,6 +191,11 @@ struct CORE_EXPORT GlobalScopeCreationParams final { +@@ -190,6 +192,11 @@ struct CORE_EXPORT GlobalScopeCreationParams final { std::unique_ptr content_settings_client; @@ -821,7 +815,7 @@ diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_gl diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc --- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc -@@ -90,6 +90,7 @@ class AudioWorkletGlobalScopeTest : public PageTestBase, public ModuleTestBase { +@@ -89,6 +89,7 @@ class AudioWorkletGlobalScopeTest : public PageTestBase, public ModuleTestBase { window->GetSecurityOrigin(), window->IsSecureContext(), window->GetHttpsState(), nullptr /* worker_clients */, nullptr /* content_settings_client */, diff --git a/build/patches/Revert-remove-allowscript-content-setting-secondary-url.patch b/build/patches/Revert-remove-allowscript-content-setting-secondary-url.patch index 0dc8a6a6e..e33b29010 100644 --- a/build/patches/Revert-remove-allowscript-content-setting-secondary-url.patch +++ b/build/patches/Revert-remove-allowscript-content-setting-secondary-url.patch @@ -211,7 +211,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p 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 -@@ -4175,19 +4175,6 @@ bool LocalFrame::IsSameOrigin() { +@@ -4161,19 +4161,6 @@ bool LocalFrame::IsSameOrigin() { return security_origin->IsSameOriginWith(top_security_origin); } @@ -234,7 +234,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -939,12 +939,6 @@ class CORE_EXPORT LocalFrame final +@@ -936,12 +936,6 @@ class CORE_EXPORT LocalFrame final return *v8_local_compile_hints_producer_; } @@ -288,7 +288,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -641,7 +641,8 @@ void FrameFetchContext::AddClientHintsIfNecessary( +@@ -635,7 +635,8 @@ void FrameFetchContext::AddClientHintsIfNecessary( // Check if |url| is allowed to run JavaScript. If not, client hints are not // attached to the requests that initiate on the render side. @@ -298,7 +298,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi return; } -@@ -1104,15 +1105,26 @@ void FrameFetchContext::SetFirstPartyCookie(ResourceRequest& request) { +@@ -1100,15 +1101,26 @@ void FrameFetchContext::SetFirstPartyCookie(ResourceRequest& request) { } } diff --git a/build/patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch b/build/patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch index f1a8f0253..4ab842df0 100644 --- a/build/patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch +++ b/build/patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java --- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java +++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java -@@ -34,6 +34,7 @@ import org.chromium.build.annotations.Nullable; +@@ -35,6 +35,7 @@ import org.chromium.build.annotations.Nullable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -19,7 +19,7 @@ diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoade import javax.annotation.concurrent.GuardedBy; -@@ -266,7 +267,21 @@ public class LibraryLoader { +@@ -267,7 +268,21 @@ public class LibraryLoader { */ public void initInAppZygote() { assert !mInitDone; diff --git a/build/patches/Set-caret-blink-interval-to-default.patch b/build/patches/Set-caret-blink-interval-to-default.patch index 564e35261..dc8afbab0 100644 --- a/build/patches/Set-caret-blink-interval-to-default.patch +++ b/build/patches/Set-caret-blink-interval-to-default.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -3758,9 +3758,7 @@ void WebViewImpl::UpdateRendererPreferences( +@@ -3745,9 +3745,7 @@ void WebViewImpl::UpdateRendererPreferences( UpdateFontRenderingFromRendererPrefs(); blink::SetCaretBlinkInterval( diff --git a/build/patches/Set-the-screen-frame-rate-to-60-Hz.patch b/build/patches/Set-the-screen-frame-rate-to-60-Hz.patch index ba94b27b5..f992c532d 100644 --- a/build/patches/Set-the-screen-frame-rate-to-60-Hz.patch +++ b/build/patches/Set-the-screen-frame-rate-to-60-Hz.patch @@ -53,8 +53,8 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc &kRenderThrottleFrameRate, "render-throttled-frame-interval-hz", 30}; +SET_CROMITE_FEATURE_DISABLED(kRenderThrottleFrameRate); - BASE_FEATURE(kFastPathNoRaster, base::FEATURE_ENABLED_BY_DEFAULT); - + BASE_FEATURE(kInternalBeginFrameSourceOnManyDidNotProduceFrame, + base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc --- a/cc/scheduler/scheduler_state_machine.cc +++ b/cc/scheduler/scheduler_state_machine.cc @@ -67,7 +67,7 @@ diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_st #else return true; #endif -@@ -1560,6 +1560,15 @@ void SchedulerStateMachine::FrameIntervalUpdated( +@@ -1432,6 +1432,15 @@ void SchedulerStateMachine::FrameIntervalUpdated( // // Apply some slack, so that if for some reason the interval is a bit larger // than 8.33333333333333ms, then we catch it still. @@ -83,7 +83,7 @@ diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_st constexpr float kSlackFactor = .9; bool fast_vsync_interval = frame_interval < base::Hertz(120) * (1 / kSlackFactor); -@@ -1891,6 +1900,14 @@ void SchedulerStateMachine::SetRequestHighFramerate(bool flag) { +@@ -1758,6 +1767,14 @@ void SchedulerStateMachine::SetRequestHighFramerate(bool flag) { } base::TimeDelta SchedulerStateMachine::MainFrameThrottledInterval() const { @@ -117,7 +117,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi 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 -@@ -11134,9 +11134,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -10856,9 +10856,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(::features::kBlockRootWindowAccessibleNameChangeEvent)}, #endif // BUILDFLAG(IS_MAC) @@ -133,7 +133,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -52,6 +52,7 @@ +@@ -53,6 +53,7 @@ #include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM @@ -141,7 +141,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #include "chrome/browser/after_startup_task_utils.h" #include "chrome/browser/ai/ai_manager.h" #include "chrome/browser/app_mode/app_mode_utils.h" -@@ -311,6 +312,7 @@ +@@ -320,6 +321,7 @@ #include "components/variations/variations_associated_data.h" #include "components/variations/variations_switches.h" #include "components/version_info/version_info.h" @@ -149,7 +149,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #include "components/webapps/common/web_app_id.h" #include "components/webui/chrome_urls/pref_names.h" #include "content/public/browser/attribution_data_model.h" -@@ -2818,6 +2820,15 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -2844,6 +2846,15 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( command_line->AppendSwitchASCII(ash::switches::kHomedir, homedir.value()); #endif @@ -190,7 +190,7 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/component namespace viz { -@@ -261,7 +262,10 @@ BackToBackBeginFrameSource::BackToBackBeginFrameSource( +@@ -268,7 +269,10 @@ BackToBackBeginFrameSource::BackToBackBeginFrameSource( time_source_->SetClient(this); // The time_source_ ticks immediately, so we SetActive(true) for a single // tick when we need it, and keep it as SetActive(false) otherwise. @@ -202,7 +202,7 @@ diff --git a/components/viz/common/frame_sinks/begin_frame_source.cc b/component } BackToBackBeginFrameSource::~BackToBackBeginFrameSource() = default; -@@ -319,6 +323,14 @@ void BackToBackBeginFrameSource::OnTimerTick() { +@@ -326,6 +330,14 @@ void BackToBackBeginFrameSource::OnTimerTick() { } base::TimeTicks frame_time = time_source_->LastTickTime(); base::TimeDelta interval = max_vrr_interval_.value_or(vsync_interval_); @@ -243,7 +243,7 @@ diff --git a/components/viz/common/frame_sinks/delay_based_time_source.cc b/comp diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc --- a/components/viz/service/display/display.cc +++ b/components/viz/service/display/display.cc -@@ -32,6 +32,7 @@ +@@ -33,6 +33,7 @@ #include "base/trace_event/traced_value.h" #include "base/trace_event/typed_macros.h" #include "build/build_config.h" @@ -251,9 +251,9 @@ diff --git a/components/viz/service/display/display.cc b/components/viz/service/ #include "cc/base/math_util.h" #include "cc/base/region.h" #include "cc/base/simple_enclosed_region.h" -@@ -283,8 +284,21 @@ void Display::PresentationGroupTiming::OnSwap(gfx::SwapTimings timings, - "latency_ms", frame_latency.InMillisecondsF()); - } +@@ -269,8 +270,21 @@ void Display::PresentationGroupTiming::OnSwap(gfx::SwapTimings timings, + + auto frame_latency = timings.swap_start - frame_time_; if (frame_latency < base::Seconds(0)) { - LOG(ERROR) << "Frame latency is negative: " - << frame_latency.InMillisecondsF() << " ms"; @@ -286,7 +286,7 @@ diff --git a/components/viz/service/frame_sinks/external_begin_frame_source_andr // Must come after all headers that specialize FromJniType() / ToJniType(). #include "components/viz/service/service_jni_headers/ExternalBeginFrameSourceAndroid_jni.h" -@@ -247,6 +248,10 @@ ExternalBeginFrameSourceAndroid::ExternalBeginFrameSourceAndroid( +@@ -261,6 +262,10 @@ ExternalBeginFrameSourceAndroid::ExternalBeginFrameSourceAndroid( float refresh_rate, bool requires_align_with_java) : ExternalBeginFrameSource(this, restart_id) { @@ -297,7 +297,7 @@ diff --git a/components/viz/service/frame_sinks/external_begin_frame_source_andr // Android WebView requires begin frame to be inside the "animate" stage of // input-animate-draw stages of the java Choreographer, which requires using // java Choreographer. -@@ -280,6 +285,14 @@ void ExternalBeginFrameSourceAndroid::OnVSyncImpl( +@@ -294,6 +299,14 @@ void ExternalBeginFrameSourceAndroid::OnVSyncImpl( DCHECK_EQ(base::TimeTicks::GetClock(), base::TimeTicks::Clock::LINUX_CLOCK_MONOTONIC); base::TimeTicks frame_time = ToTimeTicks(time_nanos); @@ -401,13 +401,14 @@ diff --git a/third_party/blink/renderer/core/animation/animation_clock.cc b/thir diff --git a/third_party/blink/renderer/core/view_transition/view_transition.cc b/third_party/blink/renderer/core/view_transition/view_transition.cc --- a/third_party/blink/renderer/core/view_transition/view_transition.cc +++ b/third_party/blink/renderer/core/view_transition/view_transition.cc -@@ -996,8 +996,10 @@ CSSStyleSheet* ViewTransition::UAStyleSheet() const { +@@ -1067,9 +1067,11 @@ CSSStyleSheet* ViewTransition::UAStyleSheet() const { void ViewTransition::WillCommitCompositorFrame() { // There should only be 1 commit when we're in the capturing phase and // rendering is paused immediately after it finishes. +#if !BUILDFLAG(IS_WIN) - if (state_ == State::kCapturing) + if (state_ == State::kCapturing) { PauseRendering(); + } +#endif } diff --git a/build/patches/Show-NTP-at-startup.patch b/build/patches/Show-NTP-at-startup.patch index 44bff2d8b..bf9524bb3 100644 --- a/build/patches/Show-NTP-at-startup.patch +++ b/build/patches/Show-NTP-at-startup.patch @@ -100,7 +100,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 -@@ -3246,6 +3246,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -3279,6 +3279,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt mInactivityTrackerSupplier.set( new ChromeInactivityTracker( ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF)); @@ -112,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -@@ -23,9 +23,11 @@ import org.chromium.base.metrics.RecordHistogram; +@@ -22,9 +22,11 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -121,10 +121,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToC import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.flags.cromite.sShowNtpAtStartupAndroid; - import org.chromium.chrome.browser.magic_stack.HomeModulesMetricsUtils; import org.chromium.chrome.browser.ntp.NewTabPage; + import org.chromium.chrome.browser.ntp_customization.NtpCustomizationUtils; import org.chromium.chrome.browser.profiles.Profile; -@@ -140,6 +142,18 @@ public final class ReturnToChromeUtil { +@@ -138,6 +140,18 @@ public final class ReturnToChromeUtil { return false; } @@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToC // Checks whether to show the NTP homepage due to feature flag // HOME_SURFACE_RETURN_TIME_SECONDS. long lastVisibleTimeMs = inactivityTracker.getLastVisibleTimeMs(); -@@ -258,7 +272,7 @@ public final class ReturnToChromeUtil { +@@ -246,7 +260,7 @@ public final class ReturnToChromeUtil { TabModel currentTabModel, TabCreator tabCreator, HomeSurfaceTracker homeSurfaceTracker) { @@ -167,9 +167,9 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp 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 -@@ -433,6 +433,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -449,6 +449,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kSearchInCCTAlternateTapHandlingIfEnabledByEmbedder, &kSearchInCCTIfEnabledByEmbedder, - &kSearchResumptionModuleAndroid, &kSettingsMultiColumn, + &kShowNtpAtStartupAndroid, &kSettingsSingleActivity, @@ -235,7 +235,7 @@ diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_ 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 -@@ -1041,6 +1041,8 @@ public final class ChromePreferenceKeys { +@@ -964,6 +964,8 @@ public final class ChromePreferenceKeys { public static final String TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF = "ChromeTabbedActivity.BackgroundTimeMs"; @@ -269,7 +269,7 @@ diff --git a/chrome/browser/resources/settings/on_startup_page/on_startup_page.t diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc --- a/chrome/browser/sessions/session_restore.cc +++ b/chrome/browser/sessions/session_restore.cc -@@ -938,7 +938,13 @@ class SessionRestoreImpl : public BrowserCollectionObserver { +@@ -933,7 +933,13 @@ class SessionRestoreImpl : public BrowserCollectionObserver { // be selected as ShowBrowser() will load the selected tab. bool is_selected_tab = (initial_tab_count == 0) && (i == selected_tab_index); @@ -284,7 +284,7 @@ diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/session // Convert the last active time because WebContents needs a TimeTicks. const base::TimeDelta delta = tab.last_active_time - epoch_time; const base::TimeTicks last_active_time_ticks = epoch_time_ticks + delta; -@@ -1258,6 +1264,7 @@ class SessionRestoreImpl : public BrowserCollectionObserver { +@@ -1253,6 +1259,7 @@ class SessionRestoreImpl : public BrowserCollectionObserver { } if (last_normal_browser && !normal_startup_tabs.empty()) { AppendURLsToBrowser(last_normal_browser, normal_startup_tabs); @@ -370,7 +370,7 @@ diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java --- a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java +++ b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java -@@ -111,6 +111,7 @@ public class SingleTabSwitcherOnNtpMediator { +@@ -110,6 +110,7 @@ public class SingleTabSwitcherOnNtpMediator { mSingleTabCardClickedCallback = null; } }); @@ -378,7 +378,7 @@ diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/brow mPropertyModel.set( SEE_MORE_LINK_CLICK_LISTENER, () -> { -@@ -275,14 +276,14 @@ public class SingleTabSwitcherOnNtpMediator { +@@ -272,14 +273,14 @@ public class SingleTabSwitcherOnNtpMediator { public void onPageLoadFinished(Tab tab, GURL url) { super.onPageLoadFinished(tab, url); mPropertyModel.set(TITLE, tab.getTitle()); @@ -424,10 +424,11 @@ diff --git a/chrome/browser/ui/browser_tabrestore.cc b/chrome/browser/ui/browser diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc -@@ -657,6 +657,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs( +@@ -650,6 +650,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs( + if (prefs_tabs.empty()) { AppendTabs(provider.GetNewTabPageTabs(*command_line_, profile_), &tabs); } - ++ + SessionStartupPref session_startup_pref = + SessionStartupPref::GetStartupPref(profile_); + if (session_startup_pref.type == SessionStartupPref::LAST_AND_URLS) { @@ -435,10 +436,9 @@ diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/ + new_tabs.emplace_back(GURL(chrome::kChromeUINewTabURL)); + AppendTabs(new_tabs, &tabs); + } -+ - // Potentially add a tab appropriate to display the Privacy Sandbox - // confirmation dialog on top of. Ideally such a tab will already exist - // in |tabs|, and no additional tab will be required. + } + + // Maybe add any tabs which the user has previously pinned. diff --git a/cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc b/cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc new file mode 100644 --- /dev/null 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 4a96057da..189e214af 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 @@ -24,7 +24,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); } else if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS) { -@@ -1251,17 +1253,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1254,17 +1256,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. @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } @RequiresNonNull({"mSite"}) -@@ -1614,12 +1607,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1617,12 +1610,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSetting @Nullable Integer currentValue = mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT); @@ -62,7 +62,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Not possible to embargo JAVASCRIPT. setupContentSettingsPreference( -@@ -1629,6 +1623,29 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1632,6 +1626,29 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment isOneTime(ContentSettingsType.JAVASCRIPT)); } @@ -92,7 +92,7 @@ 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. 1. If the site is a candidate and has activation, the permission -@@ -1646,9 +1663,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1649,9 +1666,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. diff --git a/build/patches/Site-setting-for-images.patch b/build/patches/Site-setting-for-images.patch index 829a1632c..23012bcf6 100644 --- a/build/patches/Site-setting-for-images.patch +++ b/build/patches/Site-setting-for-images.patch @@ -324,7 +324,7 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t 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 -@@ -4162,19 +4162,6 @@ bool LocalFrame::IsSameOrigin() { +@@ -4148,19 +4148,6 @@ bool LocalFrame::IsSameOrigin() { return security_origin->IsSameOriginWith(top_security_origin); } @@ -347,7 +347,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -938,12 +938,6 @@ class CORE_EXPORT LocalFrame final +@@ -935,12 +935,6 @@ class CORE_EXPORT LocalFrame final return *v8_local_compile_hints_producer_; } @@ -390,7 +390,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi fetcher->SetAutoLoadImages( frame->GetSettings()->GetLoadsImagesAutomatically()); fetcher->SetEarlyHintsPreloadedResources( -@@ -518,16 +519,13 @@ void FrameFetchContext::AddResourceTiming( +@@ -512,16 +513,13 @@ void FrameFetchContext::AddResourceTiming( ->AddResourceTiming(std::move(info), initiator_type); } diff --git a/build/patches/Supporting-Dangling-Ptr-Detection-via-BackupRefPtr.patch b/build/patches/Supporting-Dangling-Ptr-Detection-via-BackupRefPtr.patch index 10636563a..4a13e96b3 100644 --- a/build/patches/Supporting-Dangling-Ptr-Detection-via-BackupRefPtr.patch +++ b/build/patches/Supporting-Dangling-Ptr-Detection-via-BackupRefPtr.patch @@ -29,7 +29,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/allocator/partition_alloc_features.cc b/base/allocator/partition_alloc_features.cc --- a/base/allocator/partition_alloc_features.cc +++ b/base/allocator/partition_alloc_features.cc -@@ -99,6 +99,7 @@ BASE_FEATURE_PARAM(int, +@@ -100,6 +100,7 @@ BASE_FEATURE_PARAM(int, partition_alloc::internal::SlotSpanRingMaxSize::kMedium); BASE_FEATURE(kPartitionAllocWithAdvancedChecks, FEATURE_DISABLED_BY_DEFAULT); @@ -37,7 +37,7 @@ diff --git a/base/allocator/partition_alloc_features.cc b/base/allocator/partiti constexpr FeatureParam::Option kPartitionAllocWithAdvancedChecksEnabledProcessesOptions[] = { {PartitionAllocWithAdvancedChecksEnabledProcesses::kBrowserOnly, -@@ -175,6 +176,7 @@ BASE_FEATURE(kPartitionAllocBackupRefPtr, +@@ -176,6 +177,7 @@ BASE_FEATURE(kPartitionAllocBackupRefPtr, FEATURE_DISABLED_BY_DEFAULT #endif ); @@ -45,7 +45,7 @@ diff --git a/base/allocator/partition_alloc_features.cc b/base/allocator/partiti constexpr FeatureParam::Option kBackupRefPtrEnabledProcessesOptions[] = { -@@ -229,6 +231,7 @@ BASE_FEATURE(kPartitionAllocMemoryTagging, +@@ -231,6 +233,7 @@ BASE_FEATURE(kPartitionAllocMemoryTagging, FEATURE_DISABLED_BY_DEFAULT #endif ); @@ -114,7 +114,7 @@ diff --git a/base/allocator/partition_alloc_support.cc b/base/allocator/partitio diff --git a/base/allocator/partition_allocator/partition_alloc.gni b/base/allocator/partition_allocator/partition_alloc.gni --- a/base/allocator/partition_allocator/partition_alloc.gni +++ b/base/allocator/partition_allocator/partition_alloc.gni -@@ -208,8 +208,8 @@ declare_args() { +@@ -221,8 +221,8 @@ declare_args() { # This will write a fixed cookie pattern at the end of each allocation, and # later verify the pattern remain unchanged to ensure there is no OOB write. # It comes with performance and memory cost, hence enabled only in debug. @@ -125,7 +125,7 @@ diff --git a/base/allocator/partition_allocator/partition_alloc.gni b/base/alloc # This will change partition cookie size to 4B or 8B, whichever equivalent to # size of InSlotMetadata. This option is useful for InSlotMetadata corruption -@@ -360,7 +360,7 @@ declare_args() { +@@ -373,7 +373,7 @@ declare_args() { # This is meant to be used primarily on bots. It is much easier to override # the feature flags using a binary flag instead of updating multiple bots's # scripts to pass command line arguments. @@ -183,7 +183,7 @@ diff --git a/build_overrides/partition_alloc.gni b/build_overrides/partition_all 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 -@@ -719,8 +719,8 @@ public class CompositorViewHolder extends FrameLayout +@@ -722,8 +722,8 @@ public class CompositorViewHolder extends FrameLayout mApplicationBottomInsetSupplier.getSupplier().removeObserver(mOnViewportInsetsChanged); } diff --git a/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch b/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch index 9f8db80b8..361cbd4b0 100644 --- a/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch +++ b/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc -@@ -3093,6 +3093,7 @@ void SpdySession::OnHeaders(spdy::SpdyStreamId stream_id, +@@ -3142,6 +3142,7 @@ void SpdySession::OnHeaders(spdy::SpdyStreamId stream_id, if (it == active_streams_.end()) { // NOTE: it may just be that the stream was cancelled. LOG(WARNING) << "Received HEADERS for invalid stream " << stream_id; diff --git a/build/patches/Temp-disable-UseContextSnapshot.patch b/build/patches/Temp-disable-UseContextSnapshot.patch index 14222de28..37fc5b0ae 100644 --- a/build/patches/Temp-disable-UseContextSnapshot.patch +++ b/build/patches/Temp-disable-UseContextSnapshot.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -1092,6 +1092,7 @@ BASE_FEATURE(kUnrestrictedSharedArrayBuffer, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -1085,6 +1085,7 @@ BASE_FEATURE(kUnrestrictedSharedArrayBuffer, base::FEATURE_DISABLED_BY_DEFAULT); #if BUILDFLAG(IS_ANDROID) && BUILDFLAG(INCLUDE_BOTH_V8_SNAPSHOTS) // If enabled, blink's context snapshot is used rather than the v8 snapshot. BASE_FEATURE(kUseContextSnapshot, base::FEATURE_ENABLED_BY_DEFAULT); diff --git a/build/patches/Temp-disable-experimental-web-platform-features.patch b/build/patches/Temp-disable-experimental-web-platform-features.patch index 94deba063..d8728cf83 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 -@@ -5086,10 +5086,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4912,10 +4912,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kFallbackToSWIfGLES3NotSupportedName, flag_descriptions::kFallbackToSWIfGLES3NotSupportedDescription, kOsAll, FEATURE_VALUE_TYPE(features::kFallbackToSWIfGLES3NotSupported)}, diff --git a/build/patches/Temp-disable-predictive-back-gesture.patch b/build/patches/Temp-disable-predictive-back-gesture.patch index 4ba35b822..2e4dccdf3 100644 --- a/build/patches/Temp-disable-predictive-back-gesture.patch +++ b/build/patches/Temp-disable-predictive-back-gesture.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -223,7 +223,7 @@ by a child template that "extends" this file. +@@ -215,7 +215,7 @@ by a child template that "extends" this file. {% endif %} android:networkSecurityConfig="@xml/network_security_config" android:appComponentFactory="org.chromium.chrome.browser.base.SplitCompatAppComponentFactory" diff --git a/build/patches/Temp-guard-FileSystemAccessPersistentPermissions.patch b/build/patches/Temp-guard-FileSystemAccessPersistentPermissions.patch index 12811b2c6..45b94fba2 100644 --- a/build/patches/Temp-guard-FileSystemAccessPersistentPermissions.patch +++ b/build/patches/Temp-guard-FileSystemAccessPersistentPermissions.patch @@ -10,16 +10,16 @@ Subject: Temp guard FileSystemAccessPersistentPermissions diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc -@@ -511,7 +511,7 @@ bool ShouldBlockAccessToPath( - auto should_block_with_rule = [&](const base::FilePath& block_path, - BlockType block_type) -> bool { +@@ -541,7 +541,7 @@ bool ShouldBlockAccessToPath( + } + if (path == block_path || path.IsParent(block_path)) { - LOG(ERROR) << "Blocking access to " << path + LOG(ERROR) << "ShouldBlockAccessToPath: Blocking access to " << path << " because it is a parent of " << block_path; return true; } -@@ -560,7 +560,7 @@ bool ShouldBlockAccessToPath( +@@ -629,7 +629,7 @@ bool ShouldBlockAccessToPath( } // The nearest ancestor blocks access to its children, so block access. diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 1e3179571..f63838146 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -387,7 +387,7 @@ new file mode 100755 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 -@@ -570,6 +570,14 @@ public class WebsitePreferenceBridge { +@@ -571,6 +571,14 @@ public class WebsitePreferenceBridge { WebsitePreferenceBridgeJni.get().resetNotificationsSettingsForTest(browserContextHandle); } @@ -402,7 +402,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c @NativeMethods public interface Natives { boolean isNotificationEmbargoedForOrigin( -@@ -738,5 +746,7 @@ public class WebsitePreferenceBridge { +@@ -740,5 +748,7 @@ public class WebsitePreferenceBridge { String toDomainWildcardPattern(String pattern); String toHostOnlyPattern(String pattern); @@ -575,7 +575,7 @@ new file mode 100644 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 -@@ -1312,5 +1312,21 @@ JNI_WebsitePreferenceBridge_ToHostOnlyPattern(JNIEnv* env, +@@ -1319,5 +1319,21 @@ JNI_WebsitePreferenceBridge_ToHostOnlyPattern(JNIEnv* env, return ConvertUTF8ToJavaString(env, host_only_pattern.ToString()); } @@ -693,7 +693,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov } PrefProvider::~PrefProvider() { -@@ -588,4 +594,14 @@ void PrefProvider::SetClockForTesting(const base::Clock* clock) { +@@ -584,4 +590,14 @@ void PrefProvider::SetClockForTesting(const base::Clock* clock) { } } @@ -711,7 +711,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -82,6 +82,9 @@ class PrefProvider : public UserModifiableProvider { +@@ -83,6 +83,9 @@ class PrefProvider : public UserModifiableProvider { ContentSettingsPref* GetPref(ContentSettingsType type) const; @@ -721,7 +721,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov private: friend class DeadlockCheckerObserver; // For testing. -@@ -135,6 +138,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -131,6 +134,7 @@ class PrefProvider : public UserModifiableProvider { base::ThreadChecker thread_checker_; raw_ptr clock_; @@ -765,7 +765,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -422,6 +422,9 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -424,6 +424,9 @@ class HostContentSettingsMap : public content_settings::Observer, // Returns the current time of the `clock_`. base::Time Now() const { return clock_->Now(); } @@ -796,7 +796,7 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -93,4 +93,5 @@ struct ContentSettingPatternSource { +@@ -94,4 +94,5 @@ struct ContentSettingPatternSource { struct RendererContentSettingRules { array settings_rules; array mixed_content_rules; @@ -805,7 +805,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -130,7 +130,8 @@ bool StructTraitssettings_rules) && @@ -818,7 +818,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h --- a/components/content_settings/core/common/content_settings_mojom_traits.h +++ b/components/content_settings/core/common/content_settings_mojom_traits.h -@@ -214,6 +214,11 @@ struct StructTraits< +@@ -219,6 +219,11 @@ struct StructTraits< return r.mixed_content_rules; } diff --git a/build/patches/Use-64-bit-WebView-processes.patch b/build/patches/Use-64-bit-WebView-processes.patch index 81d57e9e4..251d16ef9 100644 --- a/build/patches/Use-64-bit-WebView-processes.patch +++ b/build/patches/Use-64-bit-WebView-processes.patch @@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/nonembedded/java/AndroidManifest.xml b/android_webview/nonembedded/java/AndroidManifest.xml --- a/android_webview/nonembedded/java/AndroidManifest.xml +++ b/android_webview/nonembedded/java/AndroidManifest.xml -@@ -39,10 +39,7 @@ by a child template that "extends" this file. +@@ -41,10 +41,7 @@ by a child template that "extends" this file. g_use_boringssl; diff --git a/build/patches/Use-browser-navigation-handler.patch b/build/patches/Use-browser-navigation-handler.patch index ee01323ba..6e78e9796 100644 --- a/build/patches/Use-browser-navigation-handler.patch +++ b/build/patches/Use-browser-navigation-handler.patch @@ -32,7 +32,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -111,6 +111,7 @@ import org.chromium.ui.util.MotionEventUtils; +@@ -113,6 +113,7 @@ import org.chromium.ui.util.MotionEventUtils; import org.chromium.url.GURL; import java.util.ArrayList; @@ -227,7 +227,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Side 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 -@@ -100,6 +100,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunStatus; +@@ -103,6 +103,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; @@ -235,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.gesturenav.BackActionDelegate; -@@ -951,7 +952,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -995,7 +996,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public void onInflationComplete() { mCoordinator = mActivity.findViewById(R.id.coordinator); diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 42e088063..698395f8e 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -66,7 +66,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h 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 -@@ -664,6 +664,8 @@ chrome_java_resources = [ +@@ -676,6 +676,8 @@ chrome_java_resources = [ "java/res/xml/search_widget_info.xml", "java/res/xml/tracing_preferences.xml", "java/res/xml/unified_account_settings_preferences.xml", @@ -78,7 +78,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 -@@ -967,6 +967,7 @@ chrome_java_sources = [ +@@ -982,6 +982,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java", "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java", "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java", @@ -200,9 +200,9 @@ new file mode 100644 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 -@@ -142,6 +142,11 @@ found in the LICENSE file. +@@ -148,6 +148,11 @@ found in the LICENSE file. android:key="content_settings" - android:order="26" + android:order="27" android:title="@string/prefs_site_settings"/> + getGroupedTabsByWindow( @WindowId int windowId, Token tabGroupId, boolean isIncognito); @@ -989,7 +989,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 -@@ -469,6 +469,24 @@ public class TabWindowManagerImpl implements TabWindowManager { +@@ -478,6 +478,24 @@ public class TabWindowManagerImpl implements TabWindowManager { return null; } @@ -1028,7 +1028,7 @@ diff --git a/chrome/browser/ui/android/desktop_site/java/src/org/chromium/chrome diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -253,6 +253,32 @@ CHAR_LIMIT guidelines: +@@ -259,6 +259,32 @@ CHAR_LIMIT guidelines: Visit help page @@ -1064,7 +1064,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1770,6 +1770,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; +@@ -1380,6 +1380,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; inline constexpr char kHadThreeConsecutiveNotificationPermissionDenies[] = "profile.content_settings.had_three_consecutive_denies.notifications"; @@ -1215,9 +1215,9 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/co const JavaRef& j_initiator_origin, bool has_user_gesture, bool should_clear_history_list, -@@ -327,6 +328,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( - - params.navigation_ui_data = std::move(navigation_ui_data); +@@ -333,6 +334,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( + ConvertJavaStringToUTF8(env, internal_scroll_to_text_fragment); + } + params.override_user_agent = static_cast( + user_agent_override_option); @@ -1239,7 +1239,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3861,6 +3861,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3889,6 +3889,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( #if BUILDFLAG(IS_CHROMEOS) switches::kSchedulerBoostUrgent, #endif @@ -1258,7 +1258,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/flat_set.h" -@@ -2416,8 +2417,6 @@ void WebContentsImpl::SetUserAgentOverride( +@@ -2425,8 +2426,6 @@ void WebContentsImpl::SetUserAgentOverride( OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::SetUserAgentOverride", "ua_override", ua_override.ua_string_override, "override_in_new_tabs", override_in_new_tabs); @@ -1267,7 +1267,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser if (GetUserAgentOverride() == ua_override) { return; -@@ -3769,6 +3768,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( +@@ -3880,6 +3879,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( #else prefs.viewport_meta_enabled = false; #endif @@ -1288,7 +1288,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh params.getInitiatorOrigin(), params.getHasUserGesture(), params.getShouldClearHistoryList(), -@@ -298,13 +299,13 @@ import java.util.Map; +@@ -299,13 +300,13 @@ import java.util.Map; public void setUseDesktopUserAgent( boolean override, boolean reloadOnChange, boolean skipOnInitialNavigation) { if (mNativeNavigationControllerAndroid != 0) { @@ -1309,7 +1309,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh NavigationControllerImplJni.get() .setUseDesktopUserAgent( -@@ -479,7 +480,7 @@ import java.util.Map; +@@ -480,7 +481,7 @@ import java.util.Map; @Nullable String dataUrlAsString, boolean canLoadLocalResources, boolean isRendererInitiated, @@ -1321,7 +1321,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -801,7 +801,6 @@ void RenderThreadImpl::InitializeRenderer( +@@ -832,7 +832,6 @@ void RenderThreadImpl::InitializeRenderer( uint64_t trace_id) { TRACE_EVENT("navigation", "RenderThreadImpl::InitializeRenderer", perfetto::TerminatingFlow::Global(trace_id)); diff --git a/build/patches/Viewport-Protection-flag.patch b/build/patches/Viewport-Protection-flag.patch index 49d8afe6a..0437d9b63 100644 --- a/build/patches/Viewport-Protection-flag.patch +++ b/build/patches/Viewport-Protection-flag.patch @@ -211,7 +211,7 @@ new file mode 100644 diff --git a/components/guest_view/browser/guest_view_base.cc b/components/guest_view/browser/guest_view_base.cc --- a/components/guest_view/browser/guest_view_base.cc +++ b/components/guest_view/browser/guest_view_base.cc -@@ -689,6 +689,14 @@ void GuestViewBase::AttachToOuterWebContentsFrame( +@@ -691,6 +691,14 @@ void GuestViewBase::AttachToOuterWebContentsFrame( std::move(attachment_callback).Run(); } @@ -282,7 +282,7 @@ diff --git a/third_party/blink/public/common/widget/device_emulation_params.h b/ diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5 --- a/third_party/blink/renderer/core/css/css_properties.json5 +++ b/third_party/blink/renderer/core/css/css_properties.json5 -@@ -4572,6 +4572,7 @@ +@@ -4581,6 +4581,7 @@ }, { name: "opacity", @@ -290,7 +290,7 @@ diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_pa property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"], interpolable: true, compositable: true, -@@ -4579,7 +4580,6 @@ +@@ -4588,7 +4589,6 @@ field_template: "primitive", default_value: "1.0", type_name: "float", @@ -313,7 +313,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/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc -@@ -2355,7 +2355,12 @@ ComputedStyleBuilder StyleResolver::InitialStyleBuilderForElement() const { +@@ -2361,7 +2361,12 @@ ComputedStyleBuilder StyleResolver::InitialStyleBuilderForElement() const { ComputedStyleBuilder builder = CreateComputedStyleBuilder(); builder.SetRtlOrdering(GetDocument().VisuallyOrdered() ? EOrder::kVisual : EOrder::kLogical); @@ -330,15 +330,15 @@ diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/th diff --git a/third_party/blink/renderer/core/events/mouse_event.h b/third_party/blink/renderer/core/events/mouse_event.h --- a/third_party/blink/renderer/core/events/mouse_event.h +++ b/third_party/blink/renderer/core/events/mouse_event.h -@@ -31,6 +31,7 @@ +@@ -29,6 +29,7 @@ + #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/dom/events/simulated_click_options.h" #include "third_party/blink/renderer/core/events/ui_event_with_key_state.h" - #include "third_party/blink/renderer/platform/wtf/casting.h" +#include "third_party/blink/renderer/core/page/page.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" + #include "ui/base/mojom/menu_source_type.mojom-blink.h" - namespace blink { - -@@ -147,8 +148,22 @@ class CORE_EXPORT MouseEvent : public UIEventWithKeyState { +@@ -148,8 +149,22 @@ class CORE_EXPORT MouseEvent : public UIEventWithKeyState { // Note that these values are adjusted to counter the effects of zoom, so that // values exposed via DOM APIs are invariant under zooming. @@ -374,7 +374,7 @@ diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_part namespace blink { -@@ -59,11 +60,21 @@ class CORE_EXPORT PointerEvent : public MouseEvent { +@@ -61,11 +62,21 @@ class CORE_EXPORT PointerEvent : public MouseEvent { double screenX() const override { if (ShouldHaveIntegerCoordinates()) return MouseEvent::screenX(); @@ -399,7 +399,7 @@ diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_part 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 -@@ -1111,7 +1111,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { +@@ -1094,7 +1094,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { page_popup_ = WebPagePopupImpl::Create( std::move(popup_widget_host), std::move(widget_host), std::move(widget_receiver), this, agent_group_scheduler, @@ -449,7 +449,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p } ScriptPromise LocalDOMWindow::scrollBy(ScriptState* script_state, -@@ -2438,6 +2449,23 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, +@@ -2439,6 +2450,23 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, if (!completed_url.IsEmpty() || result.new_window) result.frame->Navigate(frame_request, WebFrameLoadType::kStandard); @@ -473,7 +473,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p // TODO(japhet): window-open-noopener.html?_top and several tests in // html/browsers/windows/browsing-context-names/ appear to require that // the special case target names (_top, _parent, _self) ignore opener -@@ -2489,6 +2517,15 @@ DOMWindow* LocalDOMWindow::openPictureInPictureWindow( +@@ -2490,6 +2518,15 @@ DOMWindow* LocalDOMWindow::openPictureInPictureWindow( DCHECK(result.new_window); result.frame->Navigate(frame_request, WebFrameLoadType::kStandard); @@ -492,7 +492,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p 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 -@@ -1691,6 +1691,10 @@ void LocalFrame::RestoreScrollOffsets() { +@@ -1670,6 +1670,10 @@ void LocalFrame::RestoreScrollOffsets() { saved_scroll_offsets_ = nullptr; } @@ -503,7 +503,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ void LocalFrame::SetLayoutZoomFactor(float factor) { SetZoomFactors(factor, text_zoom_factor_, css_zoom_factor_); } -@@ -1880,12 +1884,16 @@ mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { +@@ -1859,12 +1863,16 @@ mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { return mojo_handler_->GetDevicePosture(); } @@ -522,7 +522,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ return ratio; } -@@ -3484,6 +3492,11 @@ void LocalFrame::SetScaleFactor(float scale_factor) { +@@ -3470,6 +3478,11 @@ void LocalFrame::SetScaleFactor(float scale_factor) { DCHECK(!GetDocument() || !GetDocument()->Printing()); DCHECK(IsMainFrame()); @@ -537,7 +537,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -438,7 +438,8 @@ class CORE_EXPORT LocalFrame final +@@ -435,7 +435,8 @@ class CORE_EXPORT LocalFrame final void SetInViewSourceMode(bool = true); void SetLayoutZoomFactor(float); @@ -547,7 +547,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b void SetTextZoomFactor(float); float TextZoomFactor() const { return text_zoom_factor_; } void SetCssZoomFactor(float); -@@ -447,7 +448,7 @@ class CORE_EXPORT LocalFrame final +@@ -444,7 +445,7 @@ class CORE_EXPORT LocalFrame final float text_zoom_factor, float css_zoom_factor); @@ -556,7 +556,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b // Informs the local root's document and its local descendant subtree that a // media query value changed. -@@ -1107,6 +1108,7 @@ class CORE_EXPORT LocalFrame final +@@ -1104,6 +1105,7 @@ class CORE_EXPORT LocalFrame final unsigned did_run_detach_impl_ : 1 = false; float layout_zoom_factor_; @@ -662,7 +662,7 @@ diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h b/t 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 -@@ -1958,6 +1958,15 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1950,6 +1950,15 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( if (DeviceEmulator() && widget_base_ && !widget_base_->WillBeDestroyed()) { DeviceEmulator()->UpdateVisualProperties(visual_properties); @@ -875,7 +875,7 @@ diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/ren diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h --- a/third_party/blink/renderer/core/style/computed_style.h +++ b/third_party/blink/renderer/core/style/computed_style.h -@@ -2117,6 +2117,12 @@ class ComputedStyle final : public ComputedStyleBase { +@@ -2085,6 +2085,12 @@ class ComputedStyle final : public ComputedStyleBase { IsRunningBackdropFilterAnimationOnCompositor(); } diff --git a/build/patches/WIN-Add-some-prefs-to-secure-preferences.patch b/build/patches/WIN-Add-some-prefs-to-secure-preferences.patch index 0930d3e3e..900375d5c 100644 --- a/build/patches/WIN-Add-some-prefs-to-secure-preferences.patch +++ b/build/patches/WIN-Add-some-prefs-to-secure-preferences.patch @@ -10,7 +10,7 @@ Subject: WIN Add some prefs to secure preferences 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 -@@ -118,6 +118,14 @@ bool g_disable_domain_check_for_testing = false; +@@ -117,6 +117,14 @@ bool g_disable_domain_check_for_testing = false; // See CleanupDeprecatedTrackedPreferences() in pref_hash_filter.cc to remove a // deprecated tracked preference. const auto kTrackedPrefs = std::to_array({ diff --git a/build/patches/WIN-disable-annotate-downloads.patch b/build/patches/WIN-disable-annotate-downloads.patch index c703bcb32..d181d5fe7 100644 --- a/build/patches/WIN-disable-annotate-downloads.patch +++ b/build/patches/WIN-disable-annotate-downloads.patch @@ -9,7 +9,7 @@ Subject: WIN disable annotate downloads diff --git a/components/download/internal/common/download_file_impl.cc b/components/download/internal/common/download_file_impl.cc --- a/components/download/internal/common/download_file_impl.cc +++ b/components/download/internal/common/download_file_impl.cc -@@ -420,8 +420,8 @@ void DownloadFileImpl::RenameAndAnnotate( +@@ -419,8 +419,8 @@ void DownloadFileImpl::RenameAndAnnotate( std::unique_ptr parameters(new RenameParameters( ANNOTATE_WITH_SOURCE_INFORMATION, full_path, std::move(callback))); parameters->client_guid = client_guid; diff --git a/build/patches/WIN-enable-pdf-plugin.patch b/build/patches/WIN-enable-pdf-plugin.patch index 4a88a0697..e4e01b013 100644 --- a/build/patches/WIN-enable-pdf-plugin.patch +++ b/build/patches/WIN-enable-pdf-plugin.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -2408,7 +2408,9 @@ WebAutofillClient* LocalFrame::GetAutofillClient() { +@@ -2387,7 +2387,9 @@ WebAutofillClient* LocalFrame::GetAutofillClient() { } PluginData* LocalFrame::GetPluginData() const { diff --git a/build/patches/Warning-message-for-unsupported-hardware-aes.patch b/build/patches/Warning-message-for-unsupported-hardware-aes.patch index aa3c1e7a0..437162e1e 100644 --- a/build/patches/Warning-message-for-unsupported-hardware-aes.patch +++ b/build/patches/Warning-message-for-unsupported-hardware-aes.patch @@ -39,7 +39,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn -@@ -437,6 +437,7 @@ if (is_win) { +@@ -438,6 +438,7 @@ if (is_win) { "//components/webapps/isolated_web_apps:scheme", "//content/public/app", "//crypto", @@ -47,7 +47,7 @@ diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn "//net:net_resources", "//sandbox/win:sandbox", "//third_party/cld_3/src/src:cld_3", -@@ -1646,6 +1647,8 @@ if (is_android) { +@@ -1630,6 +1631,8 @@ if (is_android) { "//chrome/common/profiler", "//chrome/gpu", "//chrome/renderer", @@ -85,8 +85,8 @@ diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegat diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -7383,6 +7383,10 @@ Keep your key file in a safe place. You will need it to create new versions of y - You are using an unsupported feature flag: $1SignedHTTPExchange. Stability and security will suffer. +@@ -7292,6 +7292,10 @@ Keep your key file in a safe place. You will need it to create new versions of y + Chrome is loading flags from a command-line file. Stability and security may be affected. + @@ -99,7 +99,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc --- a/chrome/browser/ui/startup/bad_flags_prompt.cc +++ b/chrome/browser/ui/startup/bad_flags_prompt.cc -@@ -288,6 +288,15 @@ void ShowBadFlagsPrompt(content::WebContents* web_contents) { +@@ -304,6 +304,15 @@ void ShowBadFlagsPrompt(content::WebContents* web_contents) { return; } } @@ -118,7 +118,7 @@ diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/s diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3866,6 +3866,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3894,6 +3894,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kSchedulerBoostUrgent, #endif switches::kDesktopModeViewportMetaEnabled, diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index d5372c55a..8173ba165 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/dimens.xml | 11 + chrome/android/java/res/values/styles.xml | 24 ++ .../DefaultSearchEngineFirstRunFragment.java | 3 - - .../browser/firstrun/FirstRunActivity.java | 39 +- + .../browser/firstrun/FirstRunActivity.java | 47 +-- .../firstrun/FirstRunFlowSequencer.java | 55 +-- .../browser/firstrun/FirstRunFragment.java | 3 + .../browser/firstrun/FirstRunUtils.java | 1 + @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...creenSigninAndHistorySyncActivityBase.java | 6 +- .../browser/locale/LocaleManagerDelegate.java | 5 +- .../Welcome-screen.grdp | 27 ++ - 17 files changed, 926 insertions(+), 76 deletions(-) + 17 files changed, 926 insertions(+), 84 deletions(-) create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java @@ -32,18 +32,18 @@ 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 -@@ -524,6 +524,7 @@ chrome_java_resources = [ +@@ -532,6 +532,7 @@ chrome_java_resources = [ "java/res/layout/find_in_page.xml", "java/res/layout/find_toolbar.xml", "java/res/layout/fre_tos_privacy_disclaimer.xml", + "java/res/layout/fre_tosanduma.xml", + "java/res/layout/gesture_user_education_iph_layout.xml", + "java/res/layout/google_wallet_widget.xml", "java/res/layout/hats_survey_container.xml", - "java/res/layout/history_clear_browsing_data_header.xml", - "java/res/layout/history_item_view.xml", diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -673,6 +673,8 @@ chrome_java_sources = [ +@@ -684,6 +684,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/firstrun/LightweightFirstRunActivity.java", "java/src/org/chromium/chrome/browser/firstrun/SkipTosDialogPolicyListener.java", "java/src/org/chromium/chrome/browser/firstrun/TosDialogBehaviorSharedPrefInvalidator.java", @@ -312,7 +312,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; import org.chromium.chrome.browser.ui.signin.DialogWhenLargeContentLayout; -@@ -237,7 +237,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -283,7 +283,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(); @@ -321,7 +321,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); -@@ -262,9 +262,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -308,9 +308,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. @@ -331,13 +331,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR assumeNonNull(mFreProperties); mFirstRunFlowSequencer.updateFirstRunProperties(mFreProperties); -@@ -280,16 +277,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -326,24 +323,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa mFreProgressStates.add(MobileFreProgress.DEFAULT_SEARCH_ENGINE_SHOWN); } - // An optional history sync opt-in page, the visibility of this page will be decided on the - // fly according to the situation. -- BooleanSupplier showHistorySync = () -> mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE); +- BooleanSupplier showHistorySync = +- () -> { +- if (ChromeFeatureList.isEnabled(ChromeFeatureList.DEFAULT_BROWSER_PROMO_FRE)) { +- return mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE) +- && !mHistorySyncStepCompleted; +- } else { +- return mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE); +- } +- }; - if (!showHistorySync.getAsBoolean()) { - HistorySyncHelper historySyncHelper = HistorySyncHelper.getForProfile(originalProfile); - historySyncHelper.recordHistorySyncNotShown(SigninAccessPoint.START_PAGE); @@ -345,10 +353,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR - mPages.add(new FirstRunPage<>(HistorySyncFirstRunFragment.class, showHistorySync)); - mFreProgressStates.add(MobileFreProgress.HISTORY_SYNC_OPT_IN_SHOWN); - - if (ChromeFeatureList.sDefaultBrowserPromoFre.isEnabled()) { + if (ChromeFeatureList.isEnabled(ChromeFeatureList.DEFAULT_BROWSER_PROMO_FRE)) { + int promoIndex = mPages.size(); BooleanSupplier showDefaultBrowserPromo = - () -> { -@@ -536,6 +523,21 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -608,6 +587,21 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa return true; } @@ -370,7 +378,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR // Activity: @Override public void onRestoreInstanceState(@Nullable Bundle state) { -@@ -683,11 +685,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -755,11 +749,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa public void acceptTermsOfService(boolean allowMetricsAndCrashUploading) { assert mNativeInitializationPromise.isFulfilled(); diff --git a/build/patches/add-browser-policy.patch b/build/patches/add-browser-policy.patch index 1459212f1..697115237 100644 --- a/build/patches/add-browser-policy.patch +++ b/build/patches/add-browser-policy.patch @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -109,7 +107,6 @@ by a child template that "extends" this file. +@@ -101,7 +99,6 @@ by a child template that "extends" this file. resizeTo, moveBy}|). --> @@ -148,7 +148,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -162,7 +159,6 @@ by a child template that "extends" this file. +@@ -154,7 +151,6 @@ by a child template that "extends" this file. @@ -183,7 +183,7 @@ diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/brow #if BUILDFLAG(IS_WIN) #include "chrome/installer/util/google_update_settings.h" -@@ -198,6 +200,16 @@ void ChromeFeatureListCreator::CreatePrefService() { +@@ -186,6 +188,16 @@ void ChromeFeatureListCreator::CreatePrefService() { // ManagementService's cache. if (local_state_pref_store->ReadPrefs() == JsonPrefStore::PREF_READ_ERROR_NONE) { @@ -203,7 +203,7 @@ diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/brow diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector.cc b/chrome/browser/navigation_predictor/search_engine_preconnector.cc --- a/chrome/browser/navigation_predictor/search_engine_preconnector.cc +++ b/chrome/browser/navigation_predictor/search_engine_preconnector.cc -@@ -79,6 +79,9 @@ namespace features { +@@ -78,6 +78,9 @@ namespace features { BASE_FEATURE(kPreconnectFromKeyedService, base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kPreconnectToSearch, base::FEATURE_ENABLED_BY_DEFAULT); @@ -229,7 +229,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 -@@ -2518,9 +2518,9 @@ bool AreFuturePoliciesEnabledByDefault() { +@@ -2537,9 +2537,9 @@ bool AreFuturePoliciesEnabledByDefault() { if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) { return true; } @@ -242,7 +242,7 @@ diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc } } // namespace -@@ -3382,7 +3382,10 @@ std::unique_ptr BuildHandlerList( +@@ -3401,7 +3401,10 @@ std::unique_ptr BuildHandlerList( key::kExtensionInstallCloudPolicyChecksEnabled, extensions::pref_names::kExtensionInstallCloudPolicyChecksEnabled, base::Value::Type::BOOLEAN)); @@ -339,7 +339,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 -@@ -289,7 +289,9 @@ void ChromeSigninClient::DoFinalInit() { +@@ -206,7 +206,9 @@ void ChromeSigninClient::DoFinalInit() { bool ChromeSigninClient::ProfileAllowsSigninCookies(Profile* profile) { scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); @@ -350,7 +350,7 @@ diff --git a/chrome/browser/signin/chrome_signin_client.cc b/chrome/browser/sign } PrefService* ChromeSigninClient::GetPrefs() { -@@ -407,6 +409,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() { +@@ -324,6 +326,9 @@ bool ChromeSigninClient::AreNetworkCallsDelayed() { } void ChromeSigninClient::DelayNetworkCall(base::OnceClosure callback) { @@ -391,7 +391,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browse #include "components/policy/core/common/policy_scheduler.h" #include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/policy_utils.h" -@@ -213,6 +215,10 @@ void PolicyUIHandler::RegisterMessages() { +@@ -217,6 +219,10 @@ void PolicyUIHandler::RegisterMessages() { "exportPoliciesJSON", base::BindRepeating(&PolicyUIHandler::HandleExportPoliciesJson, base::Unretained(this))); @@ -402,7 +402,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browse web_ui()->RegisterMessageCallback( "listenPoliciesUpdates", base::BindRepeating(&PolicyUIHandler::HandleListenPoliciesUpdates, -@@ -501,8 +507,102 @@ void PolicyUIHandler::SendPolicies() { +@@ -536,8 +542,102 @@ void PolicyUIHandler::SendPolicies() { "policies-updated", base::Value( policy_value_and_status_aggregator_->GetAggregatedPolicyNames()), @@ -510,7 +510,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.cc b/chrome/browse diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.h b/chrome/browser/ui/webui/policy/policy_ui_handler.h --- a/chrome/browser/ui/webui/policy/policy_ui_handler.h +++ b/chrome/browser/ui/webui/policy/policy_ui_handler.h -@@ -80,6 +80,8 @@ class PolicyUIHandler : public content::WebUIMessageHandler, +@@ -97,6 +97,8 @@ class PolicyUIHandler : public content::WebUIMessageHandler, private: void HandleExportPoliciesJson(const base::ListValue& args); @@ -522,7 +522,7 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.h b/chrome/browser diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -395,7 +395,7 @@ +@@ -389,7 +389,7 @@ @@ -591,7 +591,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm } // namespace BASE_FEATURE(kCommerceAllowLocalImages, base::FEATURE_DISABLED_BY_DEFAULT); -@@ -252,16 +202,15 @@ const base::FeatureParam kRevertIconOnFailure{ +@@ -249,16 +199,15 @@ const base::FeatureParam kRevertIconOnFailure{ &kShoppingList, kRevertIconOnFailureParam, false}; bool IsPartnerMerchant(const GURL& url) { @@ -611,7 +611,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm } bool IsCartDiscountFeatureEnabled() { -@@ -313,6 +262,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature, +@@ -310,6 +259,7 @@ bool IsEnabledForCountryAndLocale(const base::Feature& feature, bool IsRegionLockedFeatureEnabled(const base::Feature& feature, const std::string& country_code, const std::string& locale) { @@ -619,7 +619,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 -@@ -345,6 +295,7 @@ base::TimeDelta GetDiscountFetchDelay() { +@@ -342,6 +292,7 @@ base::TimeDelta GetDiscountFetchDelay() { } bool IsNoDiscountMerchant(const GURL& url) { @@ -627,7 +627,7 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm auto* pattern_from_component = commerce_heuristics::CommerceHeuristicsData::GetInstance() .GetNoDiscountMerchantPattern(); -@@ -356,4 +307,6 @@ bool IsNoDiscountMerchant(const GURL& url) { +@@ -353,4 +304,6 @@ bool IsNoDiscountMerchant(const GURL& url) { return RE2::PartialMatch(url.host(), *pattern_from_component); } #endif @@ -904,7 +904,7 @@ diff --git a/components/policy/resources/templates/policy_definitions/Miscellane diff --git a/components/policy/resources/webui/policy_row.html b/components/policy/resources/webui/policy_row.html --- a/components/policy/resources/webui/policy_row.html +++ b/components/policy/resources/webui/policy_row.html -@@ -163,6 +163,7 @@ a { +@@ -164,6 +164,7 @@ a {
@@ -943,7 +943,7 @@ diff --git a/components/policy/resources/webui/policy_row.ts b/components/policy // Populate the remaining columns with policy scope, level and value if a // value has been set. Otherwise, leave them blank. if (!this.unset_) { -@@ -227,6 +234,11 @@ export class PolicyRowElement extends CustomElement { +@@ -230,6 +237,11 @@ export class PolicyRowElement extends CustomElement { } } @@ -958,7 +958,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 -@@ -690,8 +690,8 @@ Additional details: +@@ -696,8 +696,8 @@ Additional details: Default @@ -1016,7 +1016,7 @@ 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 -@@ -49,6 +49,7 @@ BASE_FEATURE(kWebRequestSecurityInfo, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -54,6 +54,7 @@ BASE_FEATURE(kWebRequestSecurityInfo, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kAllowWithholdingExtensionPermissionsOnInstall, base::FEATURE_DISABLED_BY_DEFAULT); @@ -1027,7 +1027,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi 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 -@@ -472,6 +472,7 @@ void GaiaAuthFetcher::StartListAccounts() { +@@ -478,6 +478,7 @@ void GaiaAuthFetcher::StartListAccounts() { })"); net::HttpRequestHeaders headers; headers.SetHeader("Origin", "https://www.google.com"); diff --git a/build/patches/autofill-miscellaneous.patch b/build/patches/autofill-miscellaneous.patch index 00f658f5a..abb9bd807 100644 --- a/build/patches/autofill-miscellaneous.patch +++ b/build/patches/autofill-miscellaneous.patch @@ -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 -@@ -1130,10 +1130,6 @@ ChromePasswordManagerClient::GetHttpAuthManager() { +@@ -1131,10 +1131,6 @@ ChromePasswordManagerClient::GetHttpAuthManager() { 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 -@@ -463,15 +463,6 @@ ChromeAutofillClient::GetURLLoaderFactory() { +@@ -465,15 +465,6 @@ ChromeAutofillClient::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 -@@ -309,10 +309,6 @@ class AutofillClient { +@@ -329,10 +329,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 -@@ -315,12 +315,6 @@ void AutofillManager::QueryServerPredictions( +@@ -312,12 +312,6 @@ void AutofillManager::QueryServerPredictions( // StartQueryRequest() expects to include the queried forms. This would allow // StartQueryRequest() to provide the queried forms to the callback // automatically, instead of passing them in separately here. @@ -259,7 +259,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ } void AutofillManager::OnFormsParsed(const std::vector& forms, -@@ -357,19 +351,6 @@ void AutofillManager::OnFormsParsed(const std::vector& forms, +@@ -354,19 +348,6 @@ void AutofillManager::OnFormsParsed(const std::vector& forms, features::kAutofillServerQueryPredictionsEarly)) { return; } @@ -282,7 +282,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 -@@ -886,6 +886,7 @@ BASE_FEATURE(kAutofillPopupDontAcceptNonVisibleEnoughSuggestion, +@@ -884,6 +884,7 @@ BASE_FEATURE(kAutofillPopupDontAcceptNonVisibleEnoughSuggestion, // affect their functionality. BASE_FEATURE(kAutofillPopupZOrderSecuritySurface, base::FEATURE_ENABLED_BY_DEFAULT); diff --git a/build/patches/bromite-build-utils.patch b/build/patches/bromite-build-utils.patch index 6459a7a03..4557de194 100644 --- a/build/patches/bromite-build-utils.patch +++ b/build/patches/bromite-build-utils.patch @@ -425,7 +425,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 -@@ -829,3 +829,5 @@ if (is_component_build) { +@@ -830,3 +830,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 bbf0c3151..f1b61fe34 100644 --- a/build/patches/disable-WebView-variations-support.patch +++ b/build/patches/disable-WebView-variations-support.patch @@ -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 -@@ -691,10 +691,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { +@@ -683,10 +683,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { // This must happen after pref value has been read and SafeMode setup has completed. setupStartupTaskExperiments(androidXConfig); 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 d02202be1..5b813f128 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 -@@ -148,12 +148,12 @@ const size_t kMaxHostLength = 4096; +@@ -147,12 +147,12 @@ const size_t kMaxHostLength = 4096; // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are // cached. @@ -37,7 +37,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc diff --git a/net/dns/host_resolver_manager_request_impl.cc b/net/dns/host_resolver_manager_request_impl.cc --- a/net/dns/host_resolver_manager_request_impl.cc +++ b/net/dns/host_resolver_manager_request_impl.cc -@@ -33,6 +33,8 @@ +@@ -35,6 +35,8 @@ #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" @@ -46,7 +46,7 @@ diff --git a/net/dns/host_resolver_manager_request_impl.cc b/net/dns/host_resolv namespace net { HostResolverManager::RequestImpl::RequestImpl( -@@ -274,6 +276,9 @@ void HostResolverManager::RequestImpl::OnIOComplete(int rv) { +@@ -288,6 +290,9 @@ void HostResolverManager::RequestImpl::OnIOComplete(int rv) { int HostResolverManager::RequestImpl::DoIPv6Reachability() { next_state_ = STATE_GET_PARAMETERS; diff --git a/build/patches/do-not-block-build-incompatible-profiles.patch b/build/patches/do-not-block-build-incompatible-profiles.patch index 6764ac858..508ceab98 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 -@@ -2820,7 +2820,7 @@ template("run_mksnapshot") { +@@ -2823,7 +2823,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/eyeo-133.0.6943.49-android_api.patch b/build/patches/eyeo-133.0.6943.49-android_api.patch index 561b7efd6..0a9be65e0 100644 --- a/build/patches/eyeo-133.0.6943.49-android_api.patch +++ b/build/patches/eyeo-133.0.6943.49-android_api.patch @@ -52,7 +52,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn import("//build/config/android/config.gni") import("//build/config/cronet/config.gni") -@@ -570,6 +573,7 @@ if (_is_default_toolchain) { +@@ -574,6 +577,7 @@ if (_is_default_toolchain) { "//chrome/browser/xsurface:java", "//chrome/browser/xsurface_provider:dependency_provider_impl_java", "//chrome/browser/xsurface_provider:java", @@ -60,7 +60,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/android_autofill/browser:java", "//components/autofill/android:autofill_features_java", "//components/autofill/android:autofill_java", -@@ -1514,6 +1518,7 @@ if (_is_default_toolchain) { +@@ -1528,6 +1532,7 @@ if (_is_default_toolchain) { "//chrome/test/data/translate/", "//chrome/test/data/webauthn/", "//chrome/test/media_router/resources/", @@ -68,7 +68,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/", -@@ -3125,6 +3130,12 @@ if (_is_default_toolchain) { +@@ -3152,6 +3157,12 @@ if (_is_default_toolchain) { sources += [ "java/src/org/chromium/chrome/browser/media/MediaCapturePickerManagerBridge.java" ] } @@ -81,7 +81,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" ] -@@ -3216,6 +3227,7 @@ if (_is_default_toolchain) { +@@ -3243,6 +3254,7 @@ if (_is_default_toolchain) { "//chrome/browser/ui/plus_addresses/android:jni_headers", "//chrome/browser/util:jni_headers", "//chrome/browser/webauthn/android:jni_headers", @@ -154,7 +154,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 -@@ -3234,6 +3234,10 @@ static_library("browser") { +@@ -3041,6 +3041,10 @@ static_library("browser") { ] deps += [ "//chrome/browser/password_entry_edit/android" ] 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 7021d286b..0986f1814 100644 --- a/build/patches/eyeo-133.0.6943.49-android_settings.patch +++ b/build/patches/eyeo-133.0.6943.49-android_settings.patch @@ -237,7 +237,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 -@@ -281,6 +281,10 @@ if (_is_default_toolchain) { +@@ -280,6 +280,10 @@ if (_is_default_toolchain) { deps += [ "//chrome/browser:screen_capture_java_resources" ] } @@ -248,7 +248,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" ] } -@@ -820,6 +824,10 @@ if (_is_default_toolchain) { +@@ -825,6 +829,10 @@ if (_is_default_toolchain) { "//chrome/browser/password_entry_edit:public_java", ] @@ -272,10 +272,10 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j --> + android:order="17" /> + bypass_redirect_checks : bypass_redirect_checks_; @@ -50232,7 +50232,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" -@@ -3834,6 +3838,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( +@@ -3877,6 +3881,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( std::move(callback)); } @@ -50244,7 +50244,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b + void RenderFrameHostImpl::ExecuteJavaScript(const std::u16string& javascript, JavaScriptResultCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + CHECK_CURRENTLY_ON(BrowserThread::UI); diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h @@ -50259,7 +50259,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_ -@@ -515,6 +519,8 @@ class CONTENT_EXPORT RenderFrameHostImpl +@@ -526,6 +530,8 @@ class CONTENT_EXPORT RenderFrameHostImpl const std::u16string& method_name, base::ListValue arguments, JavaScriptResultCallback callback) override; @@ -50331,7 +50331,7 @@ diff --git a/content/public/test/fake_local_frame.cc b/content/public/test/fake_ #include "content/public/test/fake_local_frame.h" -@@ -102,6 +106,9 @@ void FakeLocalFrame::RequestVideoFrameAtWithBoundsHint( +@@ -103,6 +107,9 @@ void FakeLocalFrame::RequestVideoFrameAtWithBoundsHint( void FakeLocalFrame::PluginActionAt(const gfx::Point& location, blink::mojom::PluginActionType action) {} @@ -50355,7 +50355,7 @@ diff --git a/content/public/test/fake_local_frame.h b/content/public/test/fake_l #ifndef CONTENT_PUBLIC_TEST_FAKE_LOCAL_FRAME_H_ #define CONTENT_PUBLIC_TEST_FAKE_LOCAL_FRAME_H_ -@@ -85,6 +89,7 @@ class FakeLocalFrame : public blink::mojom::LocalFrame { +@@ -87,6 +91,7 @@ class FakeLocalFrame : public blink::mojom::LocalFrame { RequestVideoFrameAtWithBoundsHintCallback callback) override; void PluginActionAt(const gfx::Point& location, blink::mojom::PluginActionType action) override; @@ -50376,7 +50376,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") -@@ -178,6 +181,10 @@ inspector_protocol_generate("protocol_sources") { +@@ -179,6 +182,10 @@ inspector_protocol_generate("protocol_sources") { static_library("content_shell_lib") { testonly = true sources = [ @@ -50387,7 +50387,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", -@@ -247,6 +254,7 @@ static_library("content_shell_lib") { +@@ -250,6 +257,7 @@ static_library("content_shell_lib") { "browser/shell_platform_delegate_android.cc", "browser/shell_web_contents_view_delegate_android.cc", ] @@ -50395,7 +50395,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn } if (is_mac) { -@@ -327,6 +335,8 @@ static_library("content_shell_lib") { +@@ -333,6 +341,8 @@ static_library("content_shell_lib") { ":shell_controller_mojom", "//base", "//base:base_static", @@ -50404,7 +50404,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "//components/cdm/renderer", "//components/custom_handlers", "//components/custom_handlers:test_support", -@@ -346,6 +356,7 @@ static_library("content_shell_lib") { +@@ -352,6 +362,7 @@ static_library("content_shell_lib") { "//components/services/storage/test_api", "//components/surface_embed/buildflags", "//components/url_formatter", @@ -50412,7 +50412,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "//components/variations/service", "//components/web_cache/renderer", "//content:content_resources", -@@ -441,6 +452,7 @@ static_library("content_shell_lib") { +@@ -447,6 +458,7 @@ static_library("content_shell_lib") { "//mojo/public/java/system:test_support", "//ui/android", ] @@ -50420,7 +50420,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn } if (shell_use_toolkit_views) { -@@ -531,6 +543,8 @@ repack("pak") { +@@ -537,6 +549,8 @@ repack("pak") { sources = [ "$root_gen_dir/base/tracing/protos/tracing_proto_resources.pak", @@ -50429,7 +50429,7 @@ diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn "$root_gen_dir/components/ukm_resources.pak", "$root_gen_dir/content/attribution_internals_resources.pak", "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak", -@@ -564,6 +578,8 @@ repack("pak") { +@@ -570,6 +584,8 @@ repack("pak") { deps = [ ":resources", "//base/tracing/protos:chrome_track_event_resources", @@ -50788,7 +50788,7 @@ diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_ #include "extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h" #include -@@ -469,7 +473,7 @@ void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect( +@@ -468,7 +472,7 @@ void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect( head->bypass_redirect_checks = true; } @@ -50858,7 +50858,7 @@ diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blin module blink.mojom; -@@ -1007,6 +1011,10 @@ interface LocalFrame { +@@ -999,6 +1003,10 @@ interface LocalFrame { // the given point in the view coordinate space. PluginActionAt(gfx.mojom.Point location, blink.mojom.PluginActionType action); @@ -50883,7 +50883,7 @@ diff --git a/third_party/blink/public/web/web_document.h b/third_party/blink/pub #ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_ #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_ -@@ -160,6 +164,14 @@ class BLINK_EXPORT WebDocument : public WebNode { +@@ -161,6 +165,14 @@ class BLINK_EXPORT WebDocument : public WebNode { WebCssOrigin = WebCssOrigin::kAuthor, BackForwardCacheAware = BackForwardCacheAware::kAllow); @@ -51038,7 +51038,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 -@@ -3010,7 +3010,13 @@ void HTMLElement::setSpellcheck(bool enable) { +@@ -3031,7 +3031,13 @@ void HTMLElement::setSpellcheck(bool enable) { } void HTMLElement::click() { @@ -51717,7 +51717,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 -@@ -1287,6 +1291,14 @@ +@@ -1299,6 +1303,14 @@ "components/user_scripts/browser/resources/browser_resources.grd": { "includes": [7625], }, @@ -51755,10 +51755,10 @@ diff --git a/tools/metrics/histograms/metadata/extensions/enums.xml b/tools/metr -@@ -3276,6 +3280,8 @@ Called by update_extension_permission.py.--> - +@@ -3282,6 +3286,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 4cb6e6be3..b16ca8192 100644 --- a/build/patches/eyeo-133.0.6943.49-chrome_integration.patch +++ b/build/patches/eyeo-133.0.6943.49-chrome_integration.patch @@ -12,7 +12,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module .../adblock_chrome_content_browser_client.cc | 27 ++++++++++++++++ .../adblock_chrome_content_browser_client.h | 31 +++++++++++++++++++ chrome/browser/chrome_browser_main.cc | 7 +++++ - chrome/browser/extensions/BUILD.gn | 5 +++ chrome/browser/preferences/BUILD.gn | 4 +++ .../prefs/chrome_pref_service_factory.cc | 11 +++++++ ...hrome_browser_main_extra_parts_profiles.cc | 22 +++++++++++++ @@ -22,7 +21,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module chrome/browser/ui/tab_helpers.cc | 13 ++++++++ chrome/chrome_paks.gni | 5 +++ chrome/common/BUILD.gn | 3 ++ - 16 files changed, 172 insertions(+), 1 deletion(-) + 15 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 chrome/browser/adblock/README.md create mode 100644 chrome/browser/adblock/adblock_chrome_content_browser_client.cc create mode 100644 chrome/browser/adblock/adblock_chrome_content_browser_client.h @@ -71,7 +70,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn import("//base/allocator/allocator.gni") import("//build/buildflag_header.gni") -@@ -209,6 +212,8 @@ static_library("browser") { +@@ -220,6 +223,8 @@ static_library("browser") { "accessibility/page_colors_controller_factory.h", "accessibility/prefers_default_scrollbar_styles_prefs.cc", "accessibility/prefers_default_scrollbar_styles_prefs.h", @@ -80,15 +79,15 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "after_startup_task_utils.cc", "after_startup_task_utils.h", "bad_message.cc", -@@ -1982,6 +1987,7 @@ static_library("browser") { - "//chrome/common/notifications", +@@ -1837,6 +1842,7 @@ static_library("browser") { "//chrome/installer/util:with_no_strings", "//chrome/services/speech/buildflags", + "//components/account_settings", + "//components/adblock/content:browser", "//components/application_locale_storage", "//components/assist_ranker", "//components/autofill/content/browser", -@@ -8360,6 +8366,7 @@ static_library("browser_public_dependencies") { +@@ -7676,6 +7682,7 @@ group("browser_public_dependencies") { "//chrome/services/file_util/public/mojom", "//components/accessibility_annotator/core", "//components/account_id", @@ -186,7 +185,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows #include "chrome/browser/chrome_browser_main.h" -@@ -90,6 +94,7 @@ +@@ -94,6 +98,7 @@ #include "chrome/grit/branded_strings.h" #include "chrome/grit/generated_resources.h" #include "chrome/installer/util/google_update_settings.h" @@ -194,7 +193,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" -@@ -1845,6 +1850,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1870,6 +1875,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // called inside PostProfileInit. content::WebUIControllerFactory::RegisterFactory( ChromeWebUIControllerFactory::GetInstance()); @@ -203,35 +202,6 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows RegisterChromeWebUIConfigs(); RegisterChromeUntrustedWebUIConfigs(); -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 -@@ -1,6 +1,9 @@ - # 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. -+# -+# This source code is a part of eyeo Chromium SDK. -+# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. - - import("//build/config/chromebox_for_meetings/buildflags.gni") - import("//build/config/chromeos/ui_mode.gni") -@@ -482,6 +485,7 @@ source_set("extensions") { - "window_controller_list.h", - "window_controller_list_observer.h", - ] -+ - configs += [ - "//build/config:precompiled_headers", - "//build/config/compiler:wexit_time_destructors", -@@ -837,6 +841,7 @@ source_set("extensions") { - ] - } - -+ - # Chrome OS does not support Native Messaging policies. - if (!is_chromeos) { - sources += [ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn --- a/chrome/browser/preferences/BUILD.gn +++ b/chrome/browser/preferences/BUILD.gn @@ -245,7 +215,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU import("//build/config/android/rules.gni") import("//third_party/jni_zero/jni_zero.gni") -@@ -55,6 +58,7 @@ java_cpp_strings("java_pref_names_srcjar") { +@@ -57,6 +60,7 @@ java_cpp_strings("java_pref_names_srcjar") { "//chrome/browser/enterprise/reporting/prefs.cc", "//chrome/browser/ui/safety_hub/safety_hub_prefs.h", "//chrome/common/pref_names.h", @@ -267,7 +237,7 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse #include "chrome/browser/prefs/chrome_pref_service_factory.h" -@@ -44,6 +48,7 @@ +@@ -43,6 +47,7 @@ #include "chrome/grit/branded_strings.h" #include "chrome/grit/browser_resources.h" #include "chrome/grit/generated_resources.h" @@ -275,7 +245,7 @@ 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" -@@ -198,6 +203,12 @@ const auto kTrackedPrefs = std::to_array({ +@@ -197,6 +202,12 @@ const auto kTrackedPrefs = std::to_array({ EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, #endif @@ -302,7 +272,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" -@@ -264,6 +268,15 @@ +@@ -274,6 +278,15 @@ #include "chrome/browser/webid/federated_identity_permission_context_factory.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_features.h" @@ -318,7 +288,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" -@@ -974,6 +987,15 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -985,6 +998,15 @@ void ChromeBrowserMainExtraPartsProfiles:: FederatedIdentityApiPermissionContextFactory::GetInstance(); FederatedIdentityAutoReauthnPermissionContextFactory::GetInstance(); FederatedIdentityPermissionContextFactory::GetInstance(); @@ -347,15 +317,15 @@ diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD. import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") -@@ -305,6 +308,7 @@ group("dev_ui_resources") { +@@ -311,6 +314,7 @@ group("dev_ui_resources") { + "predictors:resources", "privacy_sandbox/internals:resources", "usb_internals:resources", - "webnn_internals:resources", + "//components/adblock/content/resources/adblock_internals:resources", "//components/commerce/core/internals/resources", "//components/data_sharing/data_sharing_internals/resources", "//components/download/resources/download_internals:resources", -@@ -380,6 +384,7 @@ repack("dev_ui_paks") { +@@ -387,6 +391,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", @@ -376,7 +346,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") -@@ -435,6 +438,7 @@ static_library("ui") { +@@ -446,6 +449,7 @@ static_library("ui") { "//chrome/installer/util:with_no_strings", "//components/access_code_cast/common:metrics", "//components/account_id", @@ -384,7 +354,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "//components/affiliations/core/browser:affiliations", "//components/autofill/content/browser", "//components/autofill/content/browser:risk_proto", -@@ -1049,6 +1053,12 @@ static_library("ui") { +@@ -1085,6 +1089,12 @@ static_library("ui") { "//extensions/browser:extension_action_enums", ] } @@ -448,7 +418,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "chrome/browser/ui/tab_helpers.h" -@@ -106,6 +110,8 @@ +@@ -107,6 +111,8 @@ #include "chrome/common/chrome_features.h" #include "chrome/common/chrome_isolated_world_ids.h" #include "chrome/common/chrome_switches.h" @@ -457,7 +427,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc #include "components/blocked_content/popup_blocker_tab_helper.h" #include "components/blocked_content/popup_opener_tab_helper.h" #include "components/breadcrumbs/core/breadcrumbs_status.h" -@@ -346,6 +352,12 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -355,6 +361,12 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { optimization_guide_decider); } } @@ -470,7 +440,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); -@@ -374,6 +386,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -383,6 +395,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { // completions. HttpAuthCacheStatus::HttpAuthCacheStatus::CreateForWebContents(web_contents); #endif // BUILDFLAG(IS_ANDROID) @@ -491,7 +461,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") -@@ -128,6 +131,7 @@ template("chrome_extra_paks") { +@@ -129,6 +132,7 @@ template("chrome_extra_paks") { "$root_gen_dir/chrome/glic_shared_resources.pak", "$root_gen_dir/chrome/saved_tab_groups_unsupported_resources.pak", "$root_gen_dir/chrome/segmentation_internals_resources.pak", @@ -499,7 +469,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/core/browser/geo/autofill_alternative_state_name_map_resources.pak", "$root_gen_dir/components/autofill_and_password_manager_internals_resources.pak", -@@ -172,6 +176,7 @@ template("chrome_extra_paks") { +@@ -174,6 +178,7 @@ template("chrome_extra_paks") { "//chrome/browser/resources/glic/shared:resources", "//chrome/browser/resources/saved_tab_groups_unsupported:resources", "//chrome/common:resources", 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 08d339726..1d1412b0e 100644 --- a/build/patches/eyeo-133.0.6943.49-extension_api.patch +++ b/build/patches/eyeo-133.0.6943.49-extension_api.patch @@ -6,7 +6,7 @@ Based on Chromium 133.0.6943.49 Pre-requisites: eyeo Browser Ad filtering Solution: Base Module --- - chrome/browser/extensions/BUILD.gn | 11 + + chrome/browser/extensions/BUILD.gn | 10 + chrome/browser/extensions/api/BUILD.gn | 4 + .../adblock_private/adblock_private_api.cc | 693 +++++++++++++++ .../api/adblock_private/adblock_private_api.h | 360 ++++++++ @@ -24,7 +24,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module tools/metrics/histograms/enums.xml | 3 + .../definitions/adblock_private.d.ts | 182 ++++ .../definitions/eyeo_filtering_private.d.ts | 266 ++++++ - 18 files changed, 3190 insertions(+), 1 deletion(-) + 18 files changed, 3189 insertions(+), 1 deletion(-) create mode 100644 chrome/browser/extensions/api/adblock_private/adblock_private_api.cc create mode 100644 chrome/browser/extensions/api/adblock_private/adblock_private_api.h create mode 100644 chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc @@ -37,24 +37,23 @@ 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 -@@ -841,6 +841,17 @@ source_set("extensions") { - ] - } - -+ ### Extensions API module start -+ sources += [ -+ "api/adblock_private/adblock_private_api.cc", -+ "api/adblock_private/adblock_private_api.h", -+ "api/eyeo_filtering_private/eyeo_filtering_private_api.cc", -+ "api/eyeo_filtering_private/eyeo_filtering_private_api.h", -+ ] -+ -+ deps += [ "//components/adblock/content:browser" ] -+ -+ ### Extensions API module end - - # Chrome OS does not support Native Messaging policies. - if (!is_chromeos) { +@@ -463,6 +463,16 @@ source_set("extensions") { + "window_controller_list.h", + "window_controller_list_observer.h", + ] ++ ### Extensions API module start ++ sources += [ ++ "api/adblock_private/adblock_private_api.cc", ++ "api/adblock_private/adblock_private_api.h", ++ "api/eyeo_filtering_private/eyeo_filtering_private_api.cc", ++ "api/eyeo_filtering_private/eyeo_filtering_private_api.h", ++ ] ++ ++ deps += [ "//components/adblock/content:browser" ] ++ ### Extensions API module end + configs += [ + "//build/config:precompiled_headers", + "//build/config/compiler:wexit_time_destructors", diff --git a/chrome/browser/extensions/api/BUILD.gn b/chrome/browser/extensions/api/BUILD.gn --- a/chrome/browser/extensions/api/BUILD.gn +++ b/chrome/browser/extensions/api/BUILD.gn @@ -68,7 +67,7 @@ diff --git a/chrome/browser/extensions/api/BUILD.gn b/chrome/browser/extensions/ import("//chrome/common/extensions/api/api_sources.gni") import("//chrome/common/features.gni") -@@ -143,6 +146,7 @@ function_registration("api_registration") { +@@ -148,6 +151,7 @@ function_registration("api_registration") { # include generated headers from these targets. # TODO(brettw) this should be made unnecessary if possible. "//chrome/common/extensions/api", @@ -1153,7 +1152,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" -@@ -36,10 +40,12 @@ +@@ -34,10 +38,12 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h" @@ -2410,9 +2409,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 -@@ -68,6 +72,16 @@ - "contexts": ["privileged_extension"], - "dependencies": ["permission:experimentalAiData"] +@@ -73,6 +77,16 @@ + "dependencies": ["permission:glicPrivate"], + "feature_flag": "ApiGlicPrivate" }, + "adblockPrivate": [{ + "dependencies": ["permission:adblockPrivate"], @@ -2427,7 +2426,7 @@ diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/ext "app": { "blocklist": [ "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice -@@ -546,6 +560,14 @@ +@@ -551,6 +565,14 @@ "channel": "stable", "contexts": [] }, @@ -2470,10 +2469,10 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com "autofillPrivate": { "channel": "trunk", "extension_types": ["extension", "platform_app"], -@@ -410,6 +421,13 @@ - // "desktop_android" is not supported. - "platforms": ["chromeos", "linux", "mac", "win"] - }, +@@ -532,6 +543,13 @@ + ] + } + ], + "eyeoFilteringPrivate": { + "channel": "stable", + "extension_types": ["extension", "platform_app"], @@ -2481,9 +2480,9 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com + "664F11343A17783FC7F6DC994BBC8AAF6823739C" // eyeo test extension + ] + }, - "favicon": { + "lockWindowFullscreenPrivate": { "channel": "stable", - "extension_types": ["extension"] + "component_extensions_auto_granted": false, diff --git a/chrome/common/extensions/api/adblock_private.idl b/chrome/common/extensions/api/adblock_private.idl new file mode 100644 --- /dev/null @@ -2683,8 +2682,8 @@ diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extens import("//chrome/common/features.gni") import("//components/guest_view/buildflags/buildflags.gni") @@ -42,6 +45,8 @@ schema_sources_ = [ + "tab_groups.json", "tabs.json", - "web_authentication_proxy.webidl", "web_navigation.json", + "adblock_private.idl", + "eyeo_filtering_private.idl", @@ -2973,10 +2972,10 @@ diff --git a/extensions/common/mojom/api_permission_id.mojom b/extensions/common module extensions.mojom; -@@ -289,6 +293,8 @@ enum APIPermissionID { - kExperimentalActor = 262, +@@ -290,6 +294,8 @@ enum APIPermissionID { kEnterpriseLogin = 263, kProxyOverrideRulesPrivate = 264, + kGlicPrivate = 265, + kAdblockPrivate = 999, + kEyeoFilteringPrivate = 1000, diff --git a/build/patches/kill-Vision.patch b/build/patches/kill-Vision.patch index 26eab9471..df27cfadf 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 -@@ -311,8 +311,6 @@ if (_is_default_toolchain) { +@@ -310,8 +310,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 bc388fd58..31d007549 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 -@@ -321,6 +321,7 @@ public class ShareDelegateImpl implements ShareDelegate { +@@ -346,6 +346,7 @@ public class ShareDelegateImpl implements ShareDelegate { @VisibleForTesting static boolean shouldFetchCanonicalUrl(final Tab currentTab) { diff --git a/build/patches/translate-disable-fetching-of-languages-from-server.patch b/build/patches/translate-disable-fetching-of-languages-from-server.patch index 448cf928d..666a41d07 100644 --- a/build/patches/translate-disable-fetching-of-languages-from-server.patch +++ b/build/patches/translate-disable-fetching-of-languages-from-server.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/translate/core/browser/translate_language_list.cc b/components/translate/core/browser/translate_language_list.cc --- a/components/translate/core/browser/translate_language_list.cc +++ b/components/translate/core/browser/translate_language_list.cc -@@ -392,6 +392,7 @@ GURL TranslateLanguageList::TranslateLanguageUrl() { +@@ -394,6 +394,7 @@ GURL TranslateLanguageList::TranslateLanguageUrl() { } void TranslateLanguageList::RequestLanguageList() { @@ -18,7 +18,7 @@ diff --git a/components/translate/core/browser/translate_language_list.cc b/comp // If resource requests are not allowed, we'll get a callback when they are. if (!resource_requests_allowed_) { request_pending_ = true; -@@ -421,6 +422,7 @@ void TranslateLanguageList::RequestLanguageList() { +@@ -423,6 +424,7 @@ void TranslateLanguageList::RequestLanguageList() { if (!result) NotifyEvent(__LINE__, "Request is omitted due to retry limit"); } diff --git a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch index 7c497ad87..c08c78629 100644 --- a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch +++ b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch @@ -14,19 +14,19 @@ 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 -@@ -1037,8 +1037,6 @@ static_library("browser") { +@@ -854,8 +854,6 @@ static_library("browser") { "profiles/force_youtube_safety_mode_policy_handler.h", "profiles/off_the_record_profile_impl.cc", "profiles/off_the_record_profile_impl.h", - "profiles/profile_avatar_downloader.cc", - "profiles/profile_avatar_downloader.h", - "profiles/profile_destroyer.cc", - "profiles/profile_destroyer.h", "profiles/profile_impl.cc", + "profiles/profile_impl.h", + "profiles/profiles_state.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 -@@ -370,14 +370,6 @@ ProfileAttributesEntry::GetAvatarIconWithType( +@@ -368,14 +368,6 @@ ProfileAttributesEntry::GetAvatarIconWithType( 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 5a4db6b1d..26a7fae96 100644 --- a/build/patches/ungoogled-chromium-Disable-translate-integration.patch +++ b/build/patches/ungoogled-chromium-Disable-translate-integration.patch @@ -240,7 +240,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse @Override public void onStart() { super.onStart(); -@@ -323,17 +196,9 @@ public class LanguageSettings extends ChromeBaseSettingsFragment +@@ -324,17 +197,9 @@ public class LanguageSettings extends ChromeBaseSettingsFragment // Get the actual default system language to set as target language. code = GlobalAppLocaleController.getInstance().getOriginalSystemLocale().getLanguage(); } @@ -258,7 +258,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse } /** -@@ -481,23 +346,5 @@ public class LanguageSettings extends ChromeBaseSettingsFragment +@@ -482,23 +347,5 @@ public class LanguageSettings extends ChromeBaseSettingsFragment private static void updateTranslateAdvancedSectionIndex( boolean enabled, boolean refreshResult) { @@ -285,7 +285,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 -@@ -2060,9 +2060,6 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2103,9 +2103,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. @@ -298,7 +298,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc --- a/components/translate/core/browser/translate_manager.cc +++ b/components/translate/core/browser/translate_manager.cc -@@ -829,8 +829,9 @@ void TranslateManager::FilterIsTranslatePossible( +@@ -859,8 +859,9 @@ void TranslateManager::FilterIsTranslatePossible( TriggerDecision::kDisabledOffline); } @@ -313,7 +313,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 -@@ -134,20 +134,13 @@ void TranslateScript::OnScriptFetchComplete(bool success, +@@ -137,20 +137,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 5b5fc24d1..ac14a9526 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 -@@ -151,7 +151,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -153,7 +153,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 77fae5979..e90ea91cc 100644 --- a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch +++ b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch @@ -65,19 +65,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../search_engines/search_terms_data.cc | 4 +- components/search_engines/template_url.cc | 6 +- components/search_provider_logos/BUILD.gn | 2 - - .../logo_service_impl.cc | 16 +- + .../logo_service_impl.cc | 15 +- components/url_matcher/url_util.cc | 87 ----- .../webid/identity_url_loader_throttle.cc | 1 + ...gled-chromium-no-special-hosts-domains.inc | 1 + net/base/url_util.cc | 25 +- services/network/network_context.cc | 2 +- - 64 files changed, 56 insertions(+), 888 deletions(-) + 64 files changed, 56 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 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -124,7 +124,6 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; +@@ -128,7 +128,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.OmniboxChipManager; @@ -85,7 +85,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.open_in_app.OpenInAppEntryPoint; import org.chromium.chrome.browser.open_in_app.OpenInAppMenuItemProvider; -@@ -1548,10 +1547,8 @@ public class RootUiCoordinator +@@ -1582,10 +1581,8 @@ public class RootUiCoordinator Profile profile = tab.getProfile(); TemplateUrlService service = TemplateUrlServiceFactory.getForProfile(profile); String url = service.getUrlForSearchQuery(query); @@ -99,7 +99,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 -@@ -726,10 +726,6 @@ static_library("browser") { +@@ -600,10 +600,6 @@ static_library("browser") { "page_load_metrics/observers/captcha_metrics_observer.h", "page_load_metrics/observers/captcha_provider_manager.cc", "page_load_metrics/observers/captcha_provider_manager.h", @@ -110,7 +110,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", -@@ -738,10 +734,6 @@ static_library("browser") { +@@ -612,10 +608,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", @@ -121,7 +121,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", -@@ -1261,8 +1253,6 @@ static_library("browser") { +@@ -1041,8 +1033,6 @@ static_library("browser") { "supervised_user/metrics_service_accessor_delegate.h", "supervised_user/supervised_user_browser_utils.cc", "supervised_user/supervised_user_browser_utils.h", @@ -130,21 +130,27 @@ 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", -@@ -1379,10 +1369,7 @@ static_library("browser") { - "//chrome/browser/enterprise/browser_management:management_identity_impl", - "//chrome/browser/devtools", +@@ -1130,8 +1120,6 @@ static_library("browser") { + "//chrome/browser/enterprise/connectors/reporting:impl", + "//chrome/browser/favicon:impl", - "//chrome/browser/feedback", - "//chrome/browser/feedback:feedback_impl", "//chrome/browser/file_system_access:impl", + + # TODO(crbug.com/494635303): Remove this circular dependency when +@@ -1139,7 +1127,6 @@ static_library("browser") { + # gets extracted into its own target. + "//chrome/browser/finds", + "//chrome/browser/first_party_sets:impl", - "//chrome/browser/google", # TODO(crbug.com/486309771): Remove this circular dependency when # chrome_metrics_service_accessor.h gets extracted into its own target. -@@ -1592,7 +1579,6 @@ static_library("browser") { - # should be added to browser_generated_files. - ":browser_public_dependencies", - ":chrome_content_browser_client_parts", +@@ -1372,7 +1359,6 @@ static_library("browser") { + "//chrome/browser/download", + "//chrome/browser/enterprise/connectors/reporting:impl", + "//chrome/browser/external_protocol", - "//chrome/browser/google", "//chrome/browser/headless", "//chrome/browser/history_embeddings", @@ -152,7 +158,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/android/metrics/uma_session_stats.cc b/chrome/browser/android/metrics/uma_session_stats.cc --- a/chrome/browser/android/metrics/uma_session_stats.cc +++ b/chrome/browser/android/metrics/uma_session_stats.cc -@@ -320,16 +320,6 @@ static void JNI_UmaSessionStats_ChangeMetricsReportingConsent( +@@ -308,16 +308,6 @@ static void JNI_UmaSessionStats_ChangeMetricsReportingConsent( int32_t called_from) { UpdateMetricsPrefsOnPermissionChange( consent, static_cast(called_from)); @@ -172,7 +178,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 -@@ -1366,7 +1366,6 @@ BrowserProcessImpl::component_updater() { +@@ -1405,7 +1405,6 @@ BrowserProcessImpl::component_updater() { std::make_unique(); std::string brand; @@ -183,7 +189,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 -@@ -508,11 +508,6 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -518,11 +518,6 @@ void ProcessSingletonNotificationCallbackImpl( StartupBrowserCreator::ProcessCommandLineAlreadyRunning( command_line, current_directory, startup_profile_path_info); @@ -195,7 +201,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows } // Handles notifications from other processes. The function receives the -@@ -2035,11 +2030,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -2060,11 +2055,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { upgrade_util::SaveLastModifiedTimeOfExe(); #endif @@ -210,7 +216,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 -@@ -3041,7 +3041,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -3067,7 +3067,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( switches::kForceAppMode, #endif switches::kForceUIDirection, @@ -218,7 +224,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch switches::kJavaScriptHarmony, switches::kEnableExperimentalWebAssemblyFeatures, embedder_support::kOriginTrialDisabledFeatures, -@@ -5859,7 +5858,8 @@ GetClientDataHeader(content::FrameTreeNodeId frame_tree_node_id) { +@@ -5899,7 +5898,8 @@ GetClientDataHeader(content::FrameTreeNodeId frame_tree_node_id) { } #endif @@ -228,7 +234,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 -@@ -5899,7 +5899,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( +@@ -5939,7 +5939,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( std::move(bound_session_request_throttled_handler), #endif std::move(dynamic_params)); @@ -237,7 +243,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch std::vector> ChromeContentBrowserClient::CreateURLLoaderThrottles( -@@ -5956,15 +5956,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( +@@ -5996,15 +5996,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( GetClientDataHeader(frame_tree_node_id); #endif @@ -253,7 +259,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch { auto* factory = ProtocolHandlerRegistryFactory::GetForBrowserContext(browser_context); -@@ -6009,20 +6000,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( +@@ -6049,20 +6040,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( Profile* profile = Profile::FromBrowserContext(browser_context); DCHECK(profile); @@ -277,7 +283,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.cc b/chrome/browser/chrome_content_browser_client_navigation_throttles.cc --- a/chrome/browser/chrome_content_browser_client_navigation_throttles.cc +++ b/chrome/browser/chrome_content_browser_client_navigation_throttles.cc -@@ -386,7 +386,6 @@ void CreateAndAddChromeThrottlesForNavigation( +@@ -389,7 +389,6 @@ void CreateAndAddChromeThrottlesForNavigation( #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -329,7 +335,7 @@ diff --git a/chrome/browser/domain_reliability/service_factory.cc b/chrome/brows diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/BUILD.gn b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/BUILD.gn --- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/BUILD.gn +++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/BUILD.gn -@@ -40,7 +40,6 @@ source_set("commands") { +@@ -42,7 +42,6 @@ source_set("commands") { "win_key_rotation_command.h", ] deps += [ @@ -360,7 +366,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 -@@ -516,7 +516,6 @@ source_set("extensions") { +@@ -501,7 +501,6 @@ source_set("extensions") { "//chrome/browser/extensions/api:api_registration", "//chrome/browser/favicon", "//chrome/browser/gcm", @@ -371,18 +377,18 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUIL diff --git a/chrome/browser/feedback/BUILD.gn b/chrome/browser/feedback/BUILD.gn --- a/chrome/browser/feedback/BUILD.gn +++ b/chrome/browser/feedback/BUILD.gn -@@ -118,7 +118,6 @@ source_set("feedback_impl") { +@@ -116,7 +116,6 @@ source_set("feedback_impl") { "//chrome/browser/devtools", "//chrome/browser/extensions", "//chrome/browser/first_party_sets", - "//chrome/browser/google", "//chrome/browser/metrics", "//chrome/browser/performance_manager/public/user_tuning", - "//chrome/browser/signin", + "//chrome/browser/profiles:profile_manager", diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc --- a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc -@@ -123,7 +123,6 @@ constexpr char kOsVersionTag[] = "OS VERSION"; +@@ -126,7 +126,6 @@ constexpr char kOsVersionTag[] = "OS VERSION"; #if BUILDFLAG(IS_WIN) constexpr char kUsbKeyboardDetected[] = "usb_keyboard_detected"; constexpr char kIsEnrolledToDomain[] = "enrolled_to_domain"; @@ -431,7 +437,7 @@ diff --git a/chrome/browser/google/BUILD.gn b/chrome/browser/google/BUILD.gn sources = [ "google_brand.cc", "google_brand.h", -@@ -91,7 +91,7 @@ source_set("unit_tests") { +@@ -84,7 +84,7 @@ source_set("unit_tests") { sources = [ "google_update_settings_unittest.cc" ] deps = [ @@ -457,7 +463,7 @@ diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/c const char kGoogleNewsPathPattern[] = "/articles/(.*)"; } // namespace -@@ -240,26 +238,6 @@ bool LongScreenshotsTabService::IsAmpUrl(const GURL& url) { +@@ -242,26 +240,6 @@ bool LongScreenshotsTabService::IsAmpUrl(const GURL& url) { return false; } @@ -487,7 +493,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 -@@ -638,7 +638,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { +@@ -643,7 +643,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { } bool ChromeMetricsServiceClient::GetBrand(std::string* brand_code) { @@ -599,8 +605,8 @@ diff --git a/chrome/browser/metrics/metrics_reporting_state.cc b/chrome/browser/ - called_from)); } - void UpdateMetricsPrefsOnPermissionChange( -@@ -197,13 +132,7 @@ void UpdateMetricsPrefsOnPermissionChange( + void ChangeMetricsReportingLevel( +@@ -210,13 +145,7 @@ void UpdateMetricsPrefsOnPermissionChange( crash_keys::ClearMetricsClientId(); } @@ -618,7 +624,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 -@@ -937,7 +937,6 @@ void SystemNetworkContextManager::ConfigureDefaultNetworkContextParams( +@@ -954,7 +954,6 @@ void SystemNetworkContextManager::ConfigureDefaultNetworkContextParams( network::mojom::NetworkContextParams* network_context_params) { variations::UpdateCorsExemptHeaderForVariations(network_context_params); variations::UpdateCorsExemptHeaderForOmniboxAutofocus(network_context_params); @@ -645,7 +651,7 @@ diff --git a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_im diff --git a/chrome/browser/new_tab_page/promos/promo_service.cc b/chrome/browser/new_tab_page/promos/promo_service.cc --- a/chrome/browser/new_tab_page/promos/promo_service.cc +++ b/chrome/browser/new_tab_page/promos/promo_service.cc -@@ -82,11 +82,7 @@ bool CanBlockPromos() { +@@ -81,11 +81,7 @@ bool CanBlockPromos() { } GURL GetGoogleBaseUrl() { @@ -673,7 +679,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 -@@ -212,14 +212,9 @@ void PageLoadMetricsEmbedder::RegisterObservers( +@@ -214,14 +214,9 @@ void PageLoadMetricsEmbedder::RegisterObservers( tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); @@ -691,9 +697,9 @@ diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/ diff --git a/chrome/browser/profile_resetter/BUILD.gn b/chrome/browser/profile_resetter/BUILD.gn --- a/chrome/browser/profile_resetter/BUILD.gn +++ b/chrome/browser/profile_resetter/BUILD.gn -@@ -18,7 +18,6 @@ if (!is_android) { +@@ -122,7 +122,6 @@ if (!is_android) { deps = [ - "//chrome/browser", + ":impl", "//chrome/browser/browsing_data:constants", - "//chrome/browser/google", "//chrome/browser/search/background", @@ -715,10 +721,10 @@ 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 -@@ -30,7 +30,6 @@ static_library("safe_browsing") { - "//build:branding_buildflags", - "//chrome/app:generated_resources", +@@ -32,7 +32,6 @@ static_library("safe_browsing") { + "//chrome/browser:browser_features", "//chrome/browser:browser_process", + "//chrome/browser/enterprise/connectors/reporting", - "//chrome/browser/google", "//chrome/browser/history", "//chrome/browser/optimization_guide", @@ -726,7 +732,7 @@ diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsin diff --git a/chrome/browser/search_engines/BUILD.gn b/chrome/browser/search_engines/BUILD.gn --- a/chrome/browser/search_engines/BUILD.gn +++ b/chrome/browser/search_engines/BUILD.gn -@@ -32,7 +32,6 @@ source_set("search_engines") { +@@ -33,7 +33,6 @@ source_set("search_engines") { deps = [ "//chrome/browser:browser_process", @@ -751,7 +757,7 @@ diff --git a/chrome/browser/search_engines/ui_thread_search_terms_data.cc b/chro diff --git a/chrome/browser/signin/android/signin_manager_android.cc b/chrome/browser/signin/android/signin_manager_android.cc --- a/chrome/browser/signin/android/signin_manager_android.cc +++ b/chrome/browser/signin/android/signin_manager_android.cc -@@ -69,6 +69,7 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { +@@ -68,6 +68,7 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { remover_(profile->GetBrowsingDataRemover()) { remover_->AddObserver(this); @@ -759,7 +765,7 @@ diff --git a/chrome/browser/signin/android/signin_manager_android.cc b/chrome/br switch (cleared_types) { case ClearedTypes::kGoogleServiceWorkerCaches: { std::unique_ptr google_tld_filter = -@@ -77,10 +78,6 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { +@@ -76,10 +77,6 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { // TODO(msramek): BrowsingDataFilterBuilder was not designed for // large filters. Optimize it. @@ -773,7 +779,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 -@@ -308,7 +308,6 @@ static_library("ui") { +@@ -311,7 +311,6 @@ static_library("ui") { "//chrome/browser/glic/actor", "//chrome/browser/glic/fre", "//chrome/browser/glic/public:features", @@ -784,7 +790,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn -@@ -77,8 +77,6 @@ android_library("java") { +@@ -80,8 +80,6 @@ android_library("java") { "java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxTabUtils.java", "java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxViewBinder.java", "java/src/org/chromium/chrome/browser/omnibox/fusebox/FuseboxViewHolder.java", @@ -796,7 +802,7 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr 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 -@@ -53,7 +53,6 @@ import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; +@@ -51,7 +51,6 @@ import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.omnibox.LocationBarMediator.OmniboxUma; import org.chromium.chrome.browser.omnibox.fusebox.FuseboxCoordinator; import org.chromium.chrome.browser.omnibox.fusebox.FuseboxCoordinator.FuseboxState; @@ -804,7 +810,7 @@ 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.status.StatusCoordinator.PageInfoAction; import org.chromium.chrome.browser.omnibox.status.StatusView; -@@ -540,7 +539,6 @@ public class LocationBarCoordinator +@@ -529,7 +528,6 @@ public class LocationBarCoordinator mLocationBarMediator.destroy(); mLocationBarMediator = null; @@ -823,7 +829,7 @@ 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; -@@ -419,22 +418,6 @@ class LocationBarMediator +@@ -418,22 +417,6 @@ class LocationBarMediator if (!mUrlFocusedWithoutAnimations) handleUrlFocusAnimation(hasFocus); @@ -846,7 +852,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow if (!hasFocus && mLocationBarDataProvider.hasTab()) { setUrl( mLocationBarDataProvider.getCurrentGurl(), -@@ -451,8 +434,6 @@ class LocationBarMediator +@@ -450,8 +433,6 @@ class LocationBarMediator Profile profile = mProfileSupplier.get(); assert profile != null; templateUrlService.addObserver(this); @@ -855,7 +861,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow })); mLocationBarLayout.onFinishNativeInitialization(); -@@ -736,14 +717,6 @@ class LocationBarMediator +@@ -807,14 +788,6 @@ class LocationBarMediator // ContentView. if (currentTab != null && !url.isEmpty()) { LoadUrlParams loadUrlParams = new LoadUrlParams(url); @@ -870,7 +876,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow loadUrlParams.setTransitionType( omniboxLoadUrlParams.transitionType | PageTransition.FROM_ADDRESS_BAR); if (omniboxLoadUrlParams.inputStartTimestamp != 0) { -@@ -2128,7 +2101,6 @@ class LocationBarMediator +@@ -2239,7 +2212,6 @@ class LocationBarMediator if (OmniboxFeatures.sUseFusedLocationProvider.isEnabled() && profile != null && templateUrlService != null) { @@ -878,7 +884,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } } -@@ -2136,7 +2108,6 @@ class LocationBarMediator +@@ -2247,7 +2219,6 @@ class LocationBarMediator public void onPauseWithNative() { OmniboxFeatures.updateLastExitTimestamp(); if (OmniboxFeatures.sUseFusedLocationProvider.isEnabled()) { @@ -889,18 +895,18 @@ 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/geo/GeolocationHeader.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeader.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeader.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/geo/GeolocationHeader.java -@@ -228,6 +228,7 @@ public class GeolocationHeader { +@@ -218,6 +218,7 @@ public class GeolocationHeader { private static @HeaderState int geoHeaderStateForUrl( Profile profile, @Nullable TemplateUrlService service, String url) { + if ((true)) return HeaderState.LOCATION_PERMISSION_BLOCKED; try (TraceEvent e = TraceEvent.scoped("GeolocationHeader.geoHeaderStateForUrl")) { - // Only send X-Geo to search engines associated with the current profile. - if (profile == null || service == null) return HeaderState.UNSUITABLE_URL; + if (OmniboxFeatures.sPlatformAgnosticXGeo.isEnabled()) { + return HeaderState.HEADER_DISABLED; 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 -@@ -778,12 +778,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource( +@@ -760,12 +760,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource( // 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. @@ -916,7 +922,7 @@ diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/br diff --git a/chrome/browser/ui/webui/ntp/new_tab_ui.cc b/chrome/browser/ui/webui/ntp/new_tab_ui.cc --- a/chrome/browser/ui/webui/ntp/new_tab_ui.cc +++ b/chrome/browser/ui/webui/ntp/new_tab_ui.cc -@@ -202,8 +202,7 @@ std::string NewTabUI::NewTabHTMLSource::GetContentSecurityPolicy( +@@ -203,8 +203,7 @@ std::string NewTabUI::NewTabHTMLSource::GetContentSecurityPolicy( network::mojom::CSPDirectiveName directive) { if (directive == network::mojom::CSPDirectiveName::ScriptSrc) { // 'unsafe-inline' and google resources are added to script-src. @@ -1010,7 +1016,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 -@@ -7155,7 +7155,6 @@ test("unit_tests") { +@@ -7084,7 +7084,6 @@ test("unit_tests") { "//chrome/browser/glic", "//chrome/browser/glic:unit_tests", "//chrome/browser/glic/test_support", @@ -1756,7 +1762,7 @@ diff --git a/components/search_provider_logos/BUILD.gn b/components/search_provi diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/search_provider_logos/logo_service_impl.cc --- a/components/search_provider_logos/logo_service_impl.cc +++ b/components/search_provider_logos/logo_service_impl.cc -@@ -247,8 +247,7 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { +@@ -249,8 +249,7 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, GURL base_url; GURL doodle_url; @@ -1766,7 +1772,7 @@ diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/ if (is_google) { // Note: Ideally the Google doodle URL would be specified in // prepopulated_engines.json, but there is some custom logic in -@@ -275,23 +274,12 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { +@@ -277,24 +276,14 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, clock_ = base::DefaultClock::GetInstance(); } @@ -1781,7 +1787,8 @@ diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/ - // We encode the type of doodle (regular or gray) in the URL so that the - // logo cache gets cleared when that value changes. - GURL prefilled_url = AppendPreliminaryParamsToDoodleURL( -- want_gray_logo_getter_.Run(), for_webui_ntp, doodle_url); + want_gray_logo_getter_.Run(), for_webui_ntp, enable_animated_logo, + doodle_url); - SetServerAPI( - prefilled_url, - base::BindRepeating(&search_provider_logos::ParseDoodleLogoResponse, @@ -1967,7 +1974,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 -@@ -3153,7 +3153,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -3230,7 +3230,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 0bd035167..e554df892 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 -@@ -145,7 +145,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -147,7 +147,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { false); #endif registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy, From 5e2e7d381769f729e5c8dfe582d8393a64e10201 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 8 May 2026 08:36:11 +0200 Subject: [PATCH 02/12] Patches for 148.0.7778.97 (need work) --- ...ctionary-suggestions-for-the-Omnibox.patch | 38 +- .../patches/Disable-all-predictors-code.patch | 698 ++++++++++++------ .../Enable-extension-in-incognito.patch | 467 +++++------- .../Enable-native-Android-autofill.patch | 59 +- ...al-support-for-extensions-on-Android.patch | 505 ++++++------- .../Restore-Simplified-NTP-launch.patch | 209 +++--- .../Restore-chrome-password-store.patch | 249 +++++-- .../Use-list-mode-for-tab-switcher.patch | 50 +- 8 files changed, 1207 insertions(+), 1068 deletions(-) diff --git a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch index bbb7de1f8..b5e8e6691 100644 --- a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -10,10 +10,10 @@ 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 | 25 +++++++++++++----- + .../browser/omnibox/LocationBarMediator.java | 21 ++++++++++++--- .../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++ .../browser/omnibox/UrlBarViewBinder.java | 1 + - 4 files changed, 47 insertions(+), 6 deletions(-) + 4 files changed, 45 insertions(+), 4 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 @@ -29,25 +29,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re 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 -@@ -591,7 +591,7 @@ class LocationBarMediator - if (NativePage.isChromePageUrl(currentUrl, mLocationBarDataProvider.isOffTheRecord()) - && mCurrentInput != null) { - mCurrentInput.setUserText(null); -- beginOrResumeInput(/* activateNewSession= */ false); -+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false); - } else { - setUrlBarText( - mLocationBarDataProvider.getUrlBarData(), -@@ -842,7 +842,7 @@ class LocationBarMediator - if (mCurrentInput == null) return; // session not started yet. - - mCurrentInput.setUserText(null); -- beginOrResumeInput(/* activateNewSession= */ false); -+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false); - updateButtonVisibility(); - mUrlCoordinator.requestAccessibilityFocus(); - } -@@ -923,7 +923,7 @@ class LocationBarMediator +@@ -1006,7 +1006,7 @@ class LocationBarMediator // Existing text (e.g. if the user pasted via the fakebox) from the fake box // should be restored after toggling the focus. if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) { @@ -56,7 +38,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } } -@@ -968,7 +968,7 @@ class LocationBarMediator +@@ -1051,7 +1051,7 @@ class LocationBarMediator */ @EnsuresNonNullIf("mCurrentInput") @VisibleForTesting @@ -65,8 +47,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow // Do not instantiate a new ephemeral session unless we're activating it as well. var session = FuseboxSessionState.from(mLocationBarDataProvider); -@@ -1002,6 +1002,19 @@ class LocationBarMediator - .addSyncObserverAndCallIfNonNull(mAutocompleteRequestTypeObserver); +@@ -1086,6 +1086,19 @@ class LocationBarMediator + mStatusCoordinator.setSiteSearchDataSupplier(mCurrentInput.getSiteSearchDataSupplier()); UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText()); + if (wasFocus) { @@ -85,7 +67,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mUrlCoordinator.setUrlBarData( data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection()); -@@ -1076,7 +1089,7 @@ class LocationBarMediator +@@ -1161,7 +1174,7 @@ class LocationBarMediator // This call is permitted to happen before anyone else is activated, and // must be called before everyone else cleans up. if (hasFocus) { @@ -94,7 +76,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } else { endInputInternal(); } -@@ -1953,7 +1966,7 @@ class LocationBarMediator +@@ -2064,7 +2077,7 @@ class LocationBarMediator } // Wait for the Url focus change before refreshing autocomplete. @@ -122,7 +104,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.display.DisplayUtil; -@@ -109,6 +111,7 @@ public class UrlBar extends AutocompleteEditText { +@@ -112,6 +114,7 @@ public class UrlBar extends AutocompleteEditText { private boolean mFocusEventEmitted; private boolean mAllowFocus = true; private boolean mAllowMultilineInput; @@ -130,7 +112,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mCurrentInputCanBeWrapped; private boolean mPendingScroll; -@@ -332,6 +335,29 @@ public class UrlBar extends AutocompleteEditText { +@@ -335,6 +338,29 @@ public class UrlBar extends AutocompleteEditText { mPendingScroll = false; } fixupTextDirection(); diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 6f45b7ae2..9909547b9 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -6,19 +6,20 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/BUILD.gn | 1 - + .../chrome_autocomplete_provider_client.cc | 4 +-- .../background_download_service_factory.cc | 2 +- .../preloading_model_keyed_service.cc | 3 ++ .../preloading_model_keyed_service_factory.cc | 4 +-- .../chrome_hints_manager.cc | 1 + - .../model_validator_keyed_service.cc | 6 +++- + .../model_validator_keyed_service.cc | 6 ++++ .../optimization_guide_keyed_service.cc | 1 - .../password_change_delegate_impl.cc | 2 ++ - chrome/browser/permissions/BUILD.gn | 2 -- + chrome/browser/permissions/BUILD.gn | 24 ++++++------- .../permissions/chrome_permissions_client.cc | 2 -- .../passage_embedder_delegate.cc | 2 ++ - .../permissions_ai_ui_selector.cc | 5 ++++ - .../permissions_ai_ui_selector.h | 5 +++- - .../prediction_model_handler_provider.cc | 12 ++++++-- + .../permissions_ai_ui_selector.cc | 5 +++ + .../permissions_ai_ui_selector.h | 5 ++- + .../prediction_model_handler_provider.cc | 14 ++++++-- .../prediction_model_handler_provider.h | 2 ++ .../quiet_notification_permission_ui_state.cc | 4 +-- .../autocomplete_action_predictor.cc | 2 ++ @@ -30,42 +31,46 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/safe_browsing/BUILD.gn | 1 - ...ation_content_detection_service_factory.cc | 6 ++++ .../preloading/AndroidPrerenderManager.java | 1 + - .../ui/autofill/chrome_autofill_client.cc | 13 +------- + .../ui/autofill/chrome_autofill_client.cc | 13 +------ chrome/browser/ui/tab_helpers.cc | 1 - .../autofill_ml_internals_page_handler.cc | 2 ++ .../autofill_ml_internals_page_handler.h | 3 ++ .../autofill_ml_internals_ui.cc | 3 ++ - .../read_anything/read_aloud_app_model.cc | 16 ++++++++-- - .../read_anything/read_aloud_app_model.h | 9 +++++- - .../read_anything_app_controller.cc | 10 +++++++ + .../ui/webui/omnibox/omnibox_page_handler.cc | 5 +-- + .../read_anything/read_aloud_app_model.cc | 16 +++++++-- + .../read_anything/read_aloud_app_model.h | 9 ++++- + .../read_anything_app_controller.cc | 10 ++++++ .../read_anything_app_controller.h | 4 +++ chrome/test/BUILD.gn | 2 -- chrome/utility/BUILD.gn | 2 +- chrome/utility/services.cc | 8 ----- components/BUILD.gn | 2 +- - .../browser/foundations/autofill_manager.cc | 6 ++++ + components/autofill/core/browser/BUILD.gn | 30 ++++++++-------- + .../browser/foundations/autofill_manager.cc | 10 ++++-- .../browser/foundations/autofill_manager.h | 3 ++ - .../autofill_optimization_guide_decider.cc | 5 ++-- - .../field_classification_model_handler.cc | 12 +++++--- - .../field_classification_model_handler.h | 10 +++++-- + .../autofill_optimization_guide_decider.cc | 5 +-- + .../field_classification_model_handler.cc | 12 ++++--- + .../field_classification_model_handler.h | 10 ++++-- .../aim_eligibility_service_features.cc | 1 + .../browser/autocomplete_controller.cc | 4 +++ .../omnibox/browser/base_search_provider.cc | 4 +-- + .../omnibox/browser/omnibox_field_trial.cc | 2 +- .../prediction_model_download_manager.cc | 6 ++-- .../delivery/prediction_model_fetcher_impl.cc | 1 + .../core/hints/hints_fetcher.cc | 1 + .../core/hints/hints_manager.cc | 2 ++ - .../core/optimization_guide_features.cc | 11 ++++--- - components/optimization_guide/features.gni | 3 +- + .../core/optimization_guide_features.cc | 11 +++--- .../page_category_classifier_bridge_impl.cc | 4 +++ .../page_category_classifier_bridge_impl.h | 3 ++ .../core/page_content_annotations_features.cc | 8 +++++ .../page_content_annotations_model_manager.cc | 1 + - .../core/page_content_annotations_service.h | 7 +++-- - .../browser/client_side_phishing_model.cc | 4 +-- + .../core/page_content_annotations_service.h | 7 ++-- + .../permissions/prediction_service/BUILD.gn | 34 +++++++++---------- + .../browser/client_side_phishing_model.cc | 4 ++- .../notification_content_detection/BUILD.gn | 4 --- + .../core/language_detection/BUILD.gn | 1 - components/viz/service/BUILD.gn | 4 +-- - components/viz/service/gl/gpu_service_impl.cc | 19 ------------ + components/viz/service/gl/gpu_service_impl.cc | 14 -------- content/browser/BUILD.gn | 6 ++-- content/browser/gpu/gpu_process_host.cc | 6 ++-- .../service_worker_main_resource_loader.cc | 1 + @@ -73,7 +78,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + - .../Disable-all-predictors-code.inc | 5 ++++ + .../Disable-all-predictors-code.inc | 5 +++ .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 2 ++ @@ -82,13 +87,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html services/on_device_model/ml/ts_model.cc | 4 +-- services/on_device_model/on_device_model.gni | 2 +- services/on_device_model/safety/BUILD.gn | 2 +- + .../passage_embeddings_service.cc | 4 +++ services/webnn/BUILD.gn | 2 +- services/webnn/features.gni | 2 +- - services/webnn/webnn_context_provider_impl.cc | 30 +------------------ + services/webnn/webnn_context_provider_impl.cc | 30 +--------------- .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 83 files changed, 209 insertions(+), 141 deletions(-) + 89 files changed, 264 insertions(+), 186 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 @@ -101,7 +107,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 -@@ -2230,7 +2230,6 @@ static_library("browser") { +@@ -2081,7 +2081,6 @@ static_library("browser") { "//components/resources", "//components/safe_browsing/content/browser", "//components/safe_browsing/content/browser:safe_browsing_service", @@ -109,6 +115,24 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/safe_browsing/content/browser/password_protection", "//components/safe_browsing/content/browser/web_ui", "//components/safe_browsing/content/common/proto:download_file_types_proto", +diff --git a/chrome/browser/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 +@@ -441,12 +441,12 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager() + + AutocompleteScoringModelService* + ChromeAutocompleteProviderClient::GetAutocompleteScoringModelService() const { +- return AutocompleteScoringModelServiceFactory::GetForProfile(profile_); ++ return nullptr; + } + + OnDeviceTailModelService* + ChromeAutocompleteProviderClient::GetOnDeviceTailModelService() const { +- return OnDeviceTailModelServiceFactory::GetForProfile(profile_); ++ return nullptr; + } + + ProviderStateService* diff --git a/chrome/browser/download/background_download_service_factory.cc b/chrome/browser/download/background_download_service_factory.cc --- a/chrome/browser/download/background_download_service_factory.cc +++ b/chrome/browser/download/background_download_service_factory.cc @@ -124,15 +148,15 @@ diff --git a/chrome/browser/download/background_download_service_factory.cc b/ch diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc --- a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc +++ b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc -@@ -11,6 +11,7 @@ +@@ -7,6 +7,7 @@ + #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" #include "chrome/browser/navigation_predictor/preloading_model_handler.h" - #endif -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ namespace { // The model takes all of its inputs as floats, so this is a convenience -@@ -28,6 +29,7 @@ constexpr float ToInput(base::TimeDelta val) { +@@ -24,6 +25,7 @@ constexpr float ToInput(base::TimeDelta val) { static_assert(1.0f == ToInput(true)); } // namespace @@ -140,10 +164,10 @@ diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service. PreloadingModelKeyedService::Inputs::Inputs() = default; PreloadingModelKeyedService::Inputs::Inputs(const Inputs& other) = default; -@@ -37,6 +39,7 @@ PreloadingModelKeyedService::Inputs::operator=(const Inputs& other) = default; +@@ -32,6 +34,7 @@ PreloadingModelKeyedService::Inputs::operator=(const Inputs& other) = default; + PreloadingModelKeyedService::PreloadingModelKeyedService( OptimizationGuideKeyedService* optimization_guide_keyed_service) { - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) +#error BUILD_WITH_TFLITE_LIB must be disabled auto* model_provider = static_cast( @@ -174,30 +198,31 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc b/chrome/browser/optimization_guide/model_validator_keyed_service.cc --- a/chrome/browser/optimization_guide/model_validator_keyed_service.cc +++ b/chrome/browser/optimization_guide/model_validator_keyed_service.cc -@@ -68,13 +68,13 @@ namespace optimization_guide { +@@ -64,6 +64,7 @@ namespace optimization_guide { ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) : profile_(profile) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DCHECK(ShouldStartModelValidator()); auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile); - if (!opt_guide_service) { - return; +@@ -103,6 +104,7 @@ ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) + &ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation, + weak_ptr_factory_.GetWeakPtr())); } --#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - if (switches::ShouldValidateModel()) { - // Create the validator object which will get destroyed when the model - // load is complete. -@@ -135,6 +135,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( ++#endif + } + + ModelValidatorKeyedService::~ModelValidatorKeyedService() = default; +@@ -129,6 +131,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( void ModelValidatorKeyedService::StartModelExecutionValidation() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); if (!opt_guide_service) { -@@ -153,6 +154,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { +@@ -147,6 +150,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { /*options=*/{}, base::BindOnce(&ModelValidatorKeyedService::OnModelExecuteResponse, weak_ptr_factory_.GetWeakPtr())); @@ -205,15 +230,15 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc } void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( -@@ -170,6 +172,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( +@@ -164,6 +168,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation( std::unique_ptr input) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); -@@ -217,6 +220,7 @@ void ModelValidatorKeyedService::ExecuteModel( +@@ -211,6 +216,7 @@ void ModelValidatorKeyedService::ExecuteModel( *metadata, base::BindRepeating( &ModelValidatorKeyedService::OnDeviceModelExecuteResponse, weak_ptr_factory_.GetWeakPtr(), std::move(request))); @@ -224,7 +249,7 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -465,7 +465,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -464,7 +464,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -235,11 +260,11 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service. diff --git a/chrome/browser/password_manager/password_change_delegate_impl.cc b/chrome/browser/password_manager/password_change_delegate_impl.cc --- a/chrome/browser/password_manager/password_change_delegate_impl.cc +++ b/chrome/browser/password_manager/password_change_delegate_impl.cc -@@ -343,12 +343,14 @@ void PasswordChangeDelegateImpl::StartPasswordChangeFlow() { +@@ -342,12 +342,14 @@ void PasswordChangeDelegateImpl::StartPasswordChangeFlow() { // a local ML model for field classification. // TODO(452883239): Clean this up when model is downloaded on start-up for // everybody. -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (base::FeatureList::IsEnabled( password_manager::features:: kProactivelyDownloadModelForPasswordChange)) { @@ -253,7 +278,7 @@ diff --git a/chrome/browser/password_manager/password_change_delegate_impl.cc b/ diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn --- a/chrome/browser/permissions/BUILD.gn +++ b/chrome/browser/permissions/BUILD.gn -@@ -43,8 +43,6 @@ source_set("permissions") { +@@ -43,12 +43,10 @@ source_set("permissions") { "prediction_service/language_detection_observer.h", "prediction_service/passage_embedder_delegate.cc", "prediction_service/passage_embedder_delegate.h", @@ -261,11 +286,63 @@ diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BU - "prediction_service/permissions_ai_ui_selector.h", "prediction_service/prediction_model_handler_provider.cc", "prediction_service/prediction_model_handler_provider.h", +- "prediction_service/prediction_model_handler_provider_factory.cc", +- "prediction_service/prediction_model_handler_provider_factory.h", ++ # "prediction_service/prediction_model_handler_provider_factory.cc", ++ # "prediction_service/prediction_model_handler_provider_factory.h", "prediction_service/prediction_service_factory.cc", + "prediction_service/prediction_service_factory.h", + "prediction_service/prediction_service_request.cc", +@@ -86,7 +84,7 @@ source_set("permissions") { + "//chrome/browser/metrics", + "//chrome/browser/nfc", + "//chrome/browser/optimization_guide", +- "//chrome/browser/passage_embeddings", ++ # "//chrome/browser/passage_embeddings", + "//chrome/browser/profiles", + "//chrome/browser/profiles:profile", + "//chrome/browser/resource_coordinator", +@@ -116,7 +114,7 @@ source_set("permissions") { + "//components/language_detection/core", + "//components/optimization_guide/core", + "//components/optimization_guide/proto:optimization_guide_proto", +- "//components/passage_embeddings/core", ++ # "//components/passage_embeddings/core", + "//components/permissions", + "//components/permissions/prediction_service", + "//components/pref_registry", +@@ -125,7 +123,7 @@ source_set("permissions") { + "//components/safe_browsing/core/browser/db:database_manager", + "//components/safe_browsing/core/common", + "//components/safe_browsing/core/common:safe_browsing_prefs", +- "//components/segmentation_platform/internal:optimization_guide_segmentation_handler", ++ # "//components/segmentation_platform/internal:optimization_guide_segmentation_handler", + "//components/site_engagement/content", + "//components/subresource_filter/content/browser", + "//components/supervised_user/core/common:features", +@@ -188,12 +186,12 @@ source_set("permissions") { + } + } + +- if (!is_android) { +- deps += [ +- "//chrome/browser/ui/permission_bubble", +- "//third_party/tflite_support", +- ] +- } ++ # if (!is_android) { ++ # deps += [ ++ # "//chrome/browser/ui/permission_bubble", ++ # "//third_party/tflite_support", ++ # ] ++ # } + + if (safe_browsing_mode != 0) { + sources += [ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc -@@ -474,8 +474,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -475,8 +475,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( #endif selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); @@ -277,15 +354,15 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc --- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc -@@ -25,6 +25,7 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) +@@ -26,6 +26,7 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) : profile_(profile) {} Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (auto* prediction_model_handler_provider = PredictionModelHandlerProviderFactory::GetForBrowserContext( profile_)) { -@@ -38,6 +39,7 @@ Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { +@@ -39,6 +40,7 @@ Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { return prediction_model_handler_provider->GetPassageEmbedder(); } PermissionUmaUtil::RecordPassageEmbedderMetadataValid(false); @@ -296,15 +373,15 @@ diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_dele diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc --- a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc +++ b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc -@@ -414,6 +414,7 @@ void PermissionsAiUiSelector::SelectUiToUse( +@@ -383,6 +383,7 @@ void PermissionsAiUiSelector::SelectUiToUse( } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( ModelExecutionData model_data, ModelExecutionCallback model_execution_callback, -@@ -468,6 +469,7 @@ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( +@@ -437,6 +438,7 @@ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( InquireServerModel(model_data.features, std::move(model_data.request_metadata)); } @@ -312,7 +389,7 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel void PermissionsAiUiSelector::OnTimeout() { VLOG(1) << "[CPSS] Overall timeout for prediction reached."; -@@ -677,6 +679,7 @@ bool PermissionsAiUiSelector::ShouldHoldBack( +@@ -647,6 +649,7 @@ bool PermissionsAiUiSelector::ShouldHoldBack( PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( permissions::RequestType request_type) { @@ -320,30 +397,30 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel const bool is_msbb_enabled = profile_->GetPrefs()->GetBoolean( unified_consent::prefs::kUrlKeyedAnonymizedDataCollectionEnabled); -@@ -749,6 +752,7 @@ PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( +@@ -715,6 +718,7 @@ PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( return PredictionSource::kNoCpssModel; } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void PermissionsAiUiSelector::set_language_detection_observer_for_testing( std::unique_ptr language_detection_observer) { -@@ -761,6 +765,7 @@ void PermissionsAiUiSelector::set_inner_text_for_testing( +@@ -727,6 +731,7 @@ void PermissionsAiUiSelector::set_inner_text_for_testing( CHECK_IS_TEST(); inner_text_for_testing_ = std::move(inner_text_); } +#endif - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) void PermissionsAiUiSelector::set_snapshot_for_testing(SkBitmap snapshot) { + CHECK_IS_TEST(); diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h --- a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h +++ b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h -@@ -119,13 +119,14 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { +@@ -111,13 +111,14 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { + void set_snapshot_for_testing(SkBitmap snapshot); - #endif -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void set_inner_text_for_testing( content_extraction::InnerTextResult inner_text); @@ -355,11 +432,11 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel void set_callback_for_testing(DecisionMadeCallback callback) { callback_ = std::move(callback); } -@@ -176,10 +177,12 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { +@@ -168,10 +169,12 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { // later. When the text is fetched asynchronously with success, // model_execution_callback will get called to continue the chain of // asynchronously added input data. -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void OnGetInnerTextForOnDeviceModel( ModelExecutionData model_data, ModelExecutionCallback model_execution_callback, @@ -371,28 +448,30 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc --- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc -@@ -13,8 +13,11 @@ - #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" +@@ -12,9 +12,12 @@ + #include "build/build_config.h" #include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h" #include "components/permissions/features.h" +-#include "components/permissions/prediction_service/permissions_aiv4_handler.h" + -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ +#include "components/permissions/prediction_service/permissions_aiv3_handler.h" - #include "components/permissions/prediction_service/permissions_aiv4_handler.h" + #include "components/permissions/prediction_service/prediction_model_handler.h" -#include "components/permissions/request_type.h" ++#include "components/permissions/prediction_service/permissions_aiv4_handler.h" +#endif #if BUILDFLAG(IS_ANDROID) #include "components/download/public/background_service/download_params.h" -@@ -30,6 +33,7 @@ using optimization_guide::proto::OptimizationTarget; +@@ -26,6 +29,7 @@ using optimization_guide::proto::OptimizationTarget; namespace { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ inline OptimizationTarget getGeolocationAiv4OptTarget() { #if BUILDFLAG(IS_ANDROID) return OptimizationTarget:: -@@ -48,6 +52,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() { +@@ -44,6 +48,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() { OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_DESKTOP; #endif } @@ -400,12 +479,12 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand } // namespace -@@ -55,7 +60,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider( - OptimizationGuideKeyedService* optimization_guide, +@@ -51,7 +56,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider( + optimization_guide::OptimizationGuideModelProvider* optimization_guide, passage_embeddings::EmbedderMetadataProvider* embedder_metadata_provider, passage_embeddings::Embedder* passage_embedder) - : passage_embedder_(passage_embedder) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ + : passage_embedder_(passage_embedder) +#endif + { @@ -415,18 +494,18 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand 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 -@@ -56,9 +56,11 @@ class PredictionModelHandlerProvider - #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) +@@ -54,9 +54,11 @@ class PredictionModelHandlerProvider + passage_embeddings::Embedder* passage_embedder_); private: -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // EmbedderMetadataObserver: void EmbedderMetadataUpdated( passage_embeddings::EmbedderMetadata metadata) override; +#endif - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) // LINT.IfChange(ModelHandlers) + std::unique_ptr diff --git a/chrome/browser/permissions/quiet_notification_permission_ui_state.cc b/chrome/browser/permissions/quiet_notification_permission_ui_state.cc --- a/chrome/browser/permissions/quiet_notification_permission_ui_state.cc +++ b/chrome/browser/permissions/quiet_notification_permission_ui_state.cc @@ -484,7 +563,7 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc --- a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc +++ b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc -@@ -255,3 +255,7 @@ bool ShouldSuppressPrefetchForUnsupportedMode(const AutocompleteMatch& match) { +@@ -258,3 +258,7 @@ bool ShouldSuppressPrefetchForUnsupportedMode(const AutocompleteMatch& match) { } return ShouldSuppressPrefetchForUnsupportedMode(match.destination_url); } @@ -506,7 +585,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1240,7 +1240,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1261,7 +1261,6 @@ void ChromeBrowserMainExtraPartsProfiles:: #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) policy::UserPolicyOidcSigninServiceFactory::GetInstance(); #endif @@ -517,7 +596,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -60,7 +60,6 @@ static_library("safe_browsing") { +@@ -64,7 +64,6 @@ static_library("safe_browsing") { "//components/resources:components_resources_grit", "//components/safe_browsing:buildflags", "//components/safe_browsing/content/browser", @@ -548,7 +627,7 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific content::BrowserContext* context) const { CHECK(opt_guide); CHECK(context); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ auto database_manager = g_browser_process->safe_browsing_service()->database_manager(); scoped_refptr background_task_runner = @@ -576,7 +655,7 @@ diff --git a/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/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 -@@ -585,7 +585,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { +@@ -580,7 +580,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { } AutofillAiManager* ChromeAutofillClient::GetAutofillAiManager() { @@ -607,7 +686,7 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/brows 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 -@@ -477,7 +477,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -486,7 +486,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } MixedContentSettingsTabHelper::CreateForWebContents(web_contents); NavigationMetricsRecorder::CreateForWebContents(web_contents); @@ -622,7 +701,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals mojo::PendingReceiver receiver, autofill::MlLogRouter* log_router) : receiver_(this, std::move(receiver)) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (log_router) { log_router_observation_.Observe(log_router); } @@ -645,7 +724,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals private: mojo::Receiver receiver_; mojo::Remote page_; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ base::ScopedObservation log_router_observation_{this}; +#endif @@ -667,7 +746,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals void AutofillMlInternalsUI::BindInterface( mojo::PendingReceiver receiver) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ page_handler_ = std::make_unique( std::move(receiver), autofill::MlLogRouterFactory::GetForProfile( Profile::FromWebUI(web_ui()))); @@ -675,6 +754,19 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals } WEB_UI_CONTROLLER_TYPE_IMPL(AutofillMlInternalsUI) +diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc +--- a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc ++++ b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc +@@ -290,8 +290,5 @@ OmniboxPageHandler::GetAutocompleteControllerType( + } + + AutocompleteScoringModelService* OmniboxPageHandler::GetMlService() { +- return OmniboxFieldTrial::IsMlUrlScoringEnabled() +- ? AutocompleteScoringModelServiceFactory::GetInstance() +- ->GetForProfile(profile_) +- : nullptr; ++ return nullptr; + } diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc --- a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc +++ b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc @@ -682,7 +774,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc #include "base/task/thread_pool.h" #include "base/time/time.h" #include "base/values.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/phrase_segmentation/dependency_tree.h" @@ -692,7 +784,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc namespace { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Returns the dependency parser model for this renderer process. DependencyParserModel& GetDependencyParserModel_() { static base::NoDestructor instance; @@ -708,13 +800,13 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& ReadAloudAppModel::GetDependencyParserModel() { return GetDependencyParserModel_(); } +#endif -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void ReadAloudAppModel::CalculatePhrases( a11y::ReadAloudCurrentGranularity& granularity) { if (!features::IsReadAnythingReadAloudPhraseHighlightingEnabled()) { @@ -732,7 +824,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc void ReadAloudAppModel::StartPhraseCalculation() { if (processed_granularities_on_current_page_.size() > 0) { current_phrase_calculation_index_ = 0; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ CalculatePhrases(processed_granularities_on_current_page_[0]); +#endif } @@ -740,7 +832,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc void ReadAloudAppModel::UpdatePhraseBoundaries(std::vector tokens, std::vector heads) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Reset the phrase calculation flag, so that the next phrase calculation can // be scheduled, if needed. is_calculating_phrases = false; @@ -760,7 +852,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h #include "base/values.h" #include "chrome/common/read_anything/read_anything.mojom.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" @@ -770,7 +862,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h bool is_docs, const std::set* current_nodes); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Get the dependency parsing model for this renderer process. DependencyParserModel& GetDependencyParserModel(); +#endif @@ -781,7 +873,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h // still needs to be read. bool NoValidTextRemainingInCurrentNode(bool is_pdf, bool is_docs) const; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Asynchronously segment the given granularity into phrases. Once the phrases // are calculated, `UpdatePhraseBoundaries` will be called. void CalculatePhrases(a11y::ReadAloudCurrentGranularity& granularity); @@ -805,21 +897,21 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr #include "chrome/common/read_anything/read_anything.mojom-shared.h" #include "chrome/common/read_anything/read_anything_util.h" #include "chrome/renderer/accessibility/ax_tree_distiller.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "chrome/renderer/accessibility/read_anything/read_anything_app_model.h" #include "chrome/renderer/accessibility/read_anything/read_anything_node_utils.h" -@@ -2135,6 +2137,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -2152,6 +2154,7 @@ void ReadAnythingAppController::OnConnected() { render_frame()->GetBrowserInterfaceBroker().GetInterface( std::move(page_handler_factory_receiver)); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Get the dependency parser model used by phrase-based highlighting. if (read_aloud_model_.GetDependencyParserModel().IsAvailable()) { return; -@@ -2143,6 +2146,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -2160,6 +2163,7 @@ void ReadAnythingAppController::OnConnected() { page_handler_->GetDependencyParserModel( base::BindOnce(&ReadAnythingAppController::UpdateDependencyParserModel, weak_ptr_factory_.GetWeakPtr())); @@ -827,28 +919,28 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr SetDistillationState( read_anything::mojom::ReadAnythingDistillationState::kNotAttempted); } -@@ -2415,8 +2419,10 @@ std::u16string ReadAnythingAppController::GetCurrentTextContent() { +@@ -2432,8 +2436,10 @@ std::u16string ReadAnythingAppController::GetCurrentTextContent() { } void ReadAnythingAppController::PreprocessTextForSpeech() { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ read_aloud_model_.PreprocessTextForSpeech(model_.is_pdf(), model_.IsDocs(), model_.GetCurrentlyVisibleNodes()); +#endif } void ReadAnythingAppController::MovePositionToNextGranularity() { -@@ -2768,14 +2774,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { +@@ -2801,14 +2807,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { void ReadAnythingAppController::UpdateDependencyParserModel( base::File model_file) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ read_aloud_model_.GetDependencyParserModel().UpdateWithFile( std::move(model_file)); +#endif } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& ReadAnythingAppController::GetDependencyParserModelForTesting() { return read_aloud_model_.GetDependencyParserModel(); @@ -864,17 +956,17 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } // namespace ukm class AXTreeDistiller; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ class DependencyParserModel; +#endif class ReadAnythingAppControllerTest; class ReadAnythingAppControllerScreen2xDataCollectionModeTest; class ReadAnythingAppControllerReadabilityTest; -@@ -381,7 +383,9 @@ class ReadAnythingAppController +@@ -382,7 +384,9 @@ class ReadAnythingAppController // available. void UpdateDependencyParserModel(base::File model_file); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& GetDependencyParserModelForTesting(); +#endif @@ -883,7 +975,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6005,8 +6005,6 @@ if (!is_android) { +@@ -5969,8 +5969,6 @@ if (!is_android) { "//chrome/browser/ui/exclusive_access:test_support", "//chrome/browser/ui/hats", "//components/safe_browsing/content/browser:safe_browsing_blocking_page", @@ -932,34 +1024,99 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -629,7 +629,7 @@ test("components_unittests") { - "//components/media_router/common/providers/cast/channel:unit_tests", +@@ -639,7 +639,7 @@ test("components_unittests") { "//components/one_time_tokens/core/browser:unit_tests", "//components/page_info:unit_tests", + "//components/password_manager/core/browser/actor_login:unit_tests", - "//components/permissions/prediction_service:unit_tests", + # "//components/permissions/prediction_service:unit_tests", "//components/privacy_sandbox/privacy_sandbox_attestations:unit_tests", "//components/safety_check:unit_tests", "//components/security_interstitials/content:unit_tests", +diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn +--- a/components/autofill/core/browser/BUILD.gn ++++ b/components/autofill/core/browser/BUILD.gn +@@ -555,16 +555,16 @@ static_library("browser") { + "ml_model/autofill_ai/autofill_ai_model_executor.h", + "ml_model/autofill_ai/autofill_ai_model_executor_impl.cc", + "ml_model/autofill_ai/autofill_ai_model_executor_impl.h", +- "ml_model/field_classification_model_encoder.cc", +- "ml_model/field_classification_model_encoder.h", +- "ml_model/field_classification_model_executor.cc", +- "ml_model/field_classification_model_executor.h", +- "ml_model/field_classification_model_handler.cc", +- "ml_model/field_classification_model_handler.h", +- "ml_model/logging/ml_log_router.cc", +- "ml_model/logging/ml_log_router.h", +- "ml_model/model_predictions.cc", +- "ml_model/model_predictions.h", ++ # "ml_model/field_classification_model_encoder.cc", ++ # "ml_model/field_classification_model_encoder.h", ++ # "ml_model/field_classification_model_executor.cc", ++ # "ml_model/field_classification_model_executor.h", ++ # "ml_model/field_classification_model_handler.cc", ++ # "ml_model/field_classification_model_handler.h", ++ # "ml_model/logging/ml_log_router.cc", ++ # "ml_model/logging/ml_log_router.h", ++ # "ml_model/model_predictions.cc", ++ # "ml_model/model_predictions.h", + "network/autofill_ai/fake_wallet_pass_access_manager.cc", + "network/autofill_ai/fake_wallet_pass_access_manager.h", + "network/autofill_ai/private_pass_conversion_util.cc", +@@ -997,7 +997,7 @@ static_library("browser") { + ":country_data", + ":legal_message_line", + ":payments_sync_utils", +- "//components/autofill/core/browser/ml_model/logging:mojo_bindings", ++ # "//components/autofill/core/browser/ml_model/logging:mojo_bindings", + "//components/autofill/core/browser/payments:card_unmask_challenge_option", + "//components/autofill/core/browser/proto", + "//components/autofill/core/browser/proto:autofill_ai_proto", +@@ -1013,10 +1013,10 @@ static_library("browser") { + "//third_party/abseil-cpp:absl", + "//third_party/libaddressinput", + "//third_party/libaddressinput:strings_grit", +- "//third_party/tflite", +- "//third_party/tflite:tflite_public_headers", +- "//third_party/tflite_support", +- "//third_party/tflite_support:tflite_support_proto", ++ # "//third_party/tflite", ++ # "//third_party/tflite:tflite_public_headers", ++ # "//third_party/tflite_support", ++ # "//third_party/tflite_support:tflite_support_proto", + "//ui/base", + "//ui/gfx/geometry", + "//ui/gfx/range", 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 -@@ -140,8 +140,10 @@ struct AutofillManager::AsyncContext { +@@ -35,8 +35,8 @@ + #include "components/autofill/core/browser/logging/log_manager.h" + #include "components/autofill/core/browser/metrics/form_interactions_ukm_logger.h" + #include "components/autofill/core/browser/metrics/quality_metrics.h" +-#include "components/autofill/core/browser/ml_model/field_classification_model_handler.h" +-#include "components/autofill/core/browser/ml_model/model_predictions.h" ++// #include "components/autofill/core/browser/ml_model/field_classification_model_handler.h" ++// #include "components/autofill/core/browser/ml_model/model_predictions.h" + #include "components/autofill/core/browser/suggestions/suggestion_hiding_reason.h" + #include "components/autofill/core/browser/suggestions/suggestion_util.h" + #include "components/autofill/core/common/autofill_constants.h" +@@ -137,8 +137,10 @@ struct AutofillManager::AsyncContext { std::vector forms; std::vector regex_predictions; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ std::vector autofill_predictions; std::vector password_manager_predictions; +#endif GeoIpCountryCode country_code; LanguageCode current_page_language; std::unique_ptr log_manager; -@@ -1034,12 +1036,14 @@ void AutofillManager::UpdateFormCache( +@@ -1024,12 +1026,14 @@ void AutofillManager::UpdateFormCache( auto apply_predictions = [](FormStructure& form_structure, const AsyncContext& context, size_t i) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (!context.autofill_predictions.empty()) { context.autofill_predictions[i].ApplyTo(form_structure.fields()); } @@ -970,15 +1127,15 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ if (!context.regex_predictions.empty()) { context.regex_predictions[i].ApplyTo(form_structure.fields()); } -@@ -1155,6 +1159,7 @@ void AutofillManager::LogCurrentFieldTypes( +@@ -1145,6 +1149,7 @@ void AutofillManager::LogCurrentFieldTypes( } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void AutofillManager::SubscribeToMlModelChanges( FieldClassificationModelHandler& handler) { switch (handler.optimization_target()) { -@@ -1178,5 +1183,6 @@ void AutofillManager::SubscribeToMlModelChanges( +@@ -1168,5 +1173,6 @@ void AutofillManager::SubscribeToMlModelChanges( NOTREACHED(); } } @@ -988,7 +1145,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ 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 -@@ -40,6 +40,7 @@ +@@ -41,6 +41,7 @@ #include "components/autofill/core/common/mojom/autofill_types.mojom.h" #include "components/autofill/core/common/signatures.h" #include "components/autofill/core/common/unique_ids.h" @@ -996,11 +1153,11 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c #include "components/translate/core/browser/translate_driver.h" namespace autofill { -@@ -392,10 +393,12 @@ class AutofillManager +@@ -394,10 +395,12 @@ class AutofillManager // Reparses all known forms. void ReparseKnownForms(); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // After subscribing, FieldClassificationModelHandler::OnModelUpdated() will // trigger ReparseKnownForms(). There may be a handler for Autofill and/or // Password Manager. @@ -1012,7 +1169,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c 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 -@@ -282,6 +282,7 @@ void AutofillOptimizationGuideDecider::OnPaymentsDataLoaded( +@@ -292,6 +292,7 @@ void AutofillOptimizationGuideDecider::OnPaymentsDataLoaded( // If we do not have any optimization types to register, do not do anything. if (!optimization_types.empty()) { @@ -1020,7 +1177,7 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut decider_->RegisterOptimizationTypes( std::vector( std::move(optimization_types).extract())); -@@ -386,7 +387,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockSingleFieldSuggestions( +@@ -396,7 +397,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockSingleFieldSuggestions( const AutofillField* field) const { // If the field's storable type is `IBAN_VALUE`, check whether IBAN // suggestions should be blocked based on `url`. @@ -1029,7 +1186,7 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization( url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED, -@@ -412,7 +413,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockFormFieldSuggestion( +@@ -422,7 +423,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockFormFieldSuggestion( const CreditCard& card) const { if (auto optimization_type = GetVcnMerchantOptOutOptimizationTypeForCard(card); @@ -1065,11 +1222,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ autofill_ml_internals::mojom::MlPredictionLogPtr FieldClassificationModelHandler::CreateMlPredictionLog( const FormData& form) const { -@@ -239,6 +238,7 @@ FieldClassificationModelHandler::CreateMlPredictionLog( +@@ -223,6 +222,7 @@ FieldClassificationModelHandler::CreateMlPredictionLog( prediction_log->start_time = base::Time::Now(); return prediction_log; } @@ -1077,11 +1234,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode void PopulateMlPredictionLogAfterInference( autofill_ml_internals::mojom::MlPredictionLog& prediction_log, -@@ -268,9 +268,11 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( +@@ -252,9 +252,11 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( std::optional prediction_log = std::nullopt; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (log_router_ && log_router_->HasReceivers()) { prediction_log = CreateMlPredictionLog(form); } @@ -1089,11 +1246,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode FieldClassificationModelEncoder::ModelInput encoded_input = state_->encoder.EncodeForm(form); -@@ -336,11 +338,13 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( +@@ -320,11 +322,13 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( predicted_types); } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (output && prediction_log && self->log_router_) { PopulateMlPredictionLogAfterInference(*prediction_log.value(), output.value()); @@ -1111,7 +1268,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/ml_model/field_classification_model_encoder.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" #include "components/autofill/core/browser/ml_model/logging/ml_log_router.h" +#endif @@ -1132,7 +1289,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode ModelInputHash CalculateModelInputHash( const FieldClassificationModelEncoder::ModelInput& input); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ autofill_ml_internals::mojom::MlPredictionLogPtr CreateMlPredictionLog( const FormData& form_structure) const; +#endif @@ -1143,7 +1300,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode ModelChangeCallbackList model_change_callback_list_; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ raw_ptr log_router_ = nullptr; +#endif @@ -1167,21 +1324,21 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "components/omnibox/browser/autocomplete_provider_client.h" +#endif #include "components/omnibox/browser/autocomplete_scoring_signals_annotator.h" #include "components/omnibox/browser/bookmark_provider.h" #include "components/omnibox/browser/bookmark_scoring_signals_annotator.h" -@@ -128,6 +130,7 @@ using ProviderType = AutocompleteProvider::Type; +@@ -130,6 +132,7 @@ using ProviderType = AutocompleteProvider::Type; constexpr bool is_android = !!BUILDFLAG(IS_ANDROID); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void RecordMlScoreCoverage(size_t matches_with_non_null_scores, size_t total_scored_matches) { int percent_score_coverage = -@@ -236,6 +239,7 @@ void RecordTotalMatchesScored(size_t num_scored) { +@@ -238,6 +241,7 @@ void RecordTotalMatchesScored(size_t num_scored) { base::UmaHistogramCounts1000("Omnibox.URLScoringModelExecuted.Matches", num_scored); } @@ -1209,10 +1366,22 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn } // static +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 +@@ -830,7 +830,7 @@ bool AreScoringSignalsAnnotatorsEnabled() { + return GetMLConfig().enable_scoring_signals_annotators; + } + bool IsMlUrlScoringEnabled() { +- return IsUrlScoringModelEnabled() && GetMLConfig().ml_url_scoring; ++ return false; + } + bool IsMlUrlScoringCounterfactual() { + return IsMlUrlScoringEnabled() && GetMLConfig().ml_url_scoring_counterfactual; diff --git a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc --- a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc +++ b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc -@@ -55,7 +55,7 @@ const char kDisableModelDownloadsForBenchmarking[] = +@@ -56,7 +56,7 @@ const char kDisableModelDownloadsForBenchmarking[] = // we require models to come from. constexpr std::array kPublisherKeyHash = { 0x66, 0xa1, 0xd9, 0x3e, 0x4e, 0x5a, 0x66, 0x8a, 0x0f, 0xd3, 0xfa, @@ -1221,7 +1390,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo 0x5c, 0x7f, 0xd0, 0x0c, 0xa1, 0x6e, 0xef, 0xdd, 0x63, 0x7a}; const net::NetworkTrafficAnnotationTag kOptimizationGuidePredictionModelsTrafficAnnotation = -@@ -125,7 +125,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( +@@ -126,7 +126,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( unzip::UnzipperFactory unzipper_factory, scoped_refptr background_task_runner) : download_service_tracker_(download_service_tracker), @@ -1230,7 +1399,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo api_key_(features::GetOptimizationGuideServiceAPIKey()), get_base_model_dir_for_download_callback_( get_base_model_dir_for_download_callback), -@@ -139,6 +139,7 @@ void PredictionModelDownloadManager::StartDownload( +@@ -140,6 +140,7 @@ void PredictionModelDownloadManager::StartDownload( const GURL& download_url, proto::OptimizationTarget optimization_target, const std::optional& scheduling_params) { @@ -1238,7 +1407,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo download::DownloadParams download_params; download_params.client = download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS; -@@ -303,6 +304,7 @@ bool PredictionModelDownloadManager::VerifyDownload( +@@ -304,6 +305,7 @@ bool PredictionModelDownloadManager::VerifyDownload( const base::FilePath& download_file_path, const base::FilePath& base_model_dir, bool delete_file_on_error) { @@ -1249,7 +1418,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo diff --git a/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc b/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc --- a/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc +++ b/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc -@@ -53,6 +53,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels( +@@ -54,6 +54,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels( proto::RequestContext request_context, const std::string& locale, ModelsFetchedCallback models_fetched_callback) { @@ -1260,7 +1429,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_fetche diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/components/optimization_guide/core/hints/hints_fetcher.cc --- a/components/optimization_guide/core/hints/hints_fetcher.cc +++ b/components/optimization_guide/core/hints/hints_fetcher.cc -@@ -204,6 +204,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( +@@ -206,6 +206,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( bool skip_cache, HintsFetchedCallback hints_fetched_callback, std::optional request_context_metadata) { @@ -1271,7 +1440,7 @@ diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/compone diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/components/optimization_guide/core/hints/hints_manager.cc --- a/components/optimization_guide/core/hints/hints_manager.cc +++ b/components/optimization_guide/core/hints/hints_manager.cc -@@ -461,6 +461,7 @@ void HintsManager::Shutdown() { +@@ -460,6 +460,7 @@ void HintsManager::Shutdown() { OptimizationGuideDecision HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision( OptimizationTypeDecision optimization_type_decision) { @@ -1279,7 +1448,7 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone switch (optimization_type_decision) { case OptimizationTypeDecision::kAllowedByOptimizationFilter: case OptimizationTypeDecision::kAllowedByHint: -@@ -2063,4 +2064,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( +@@ -2062,4 +2063,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( hint_cache_->RemoveHintsForHosts(std::move(on_success), hint_keys); } @@ -1288,7 +1457,7 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc --- a/components/optimization_guide/core/optimization_guide_features.cc +++ b/components/optimization_guide/core/optimization_guide_features.cc -@@ -42,11 +42,7 @@ namespace features { +@@ -43,11 +43,7 @@ namespace optimization_guide::features { namespace { constexpr auto enabled_by_default_mobile_only = @@ -1300,7 +1469,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } // namespace -@@ -275,8 +271,7 @@ size_t MaxHostKeyedHintCacheSize() { +@@ -280,8 +276,7 @@ size_t MaxHostKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -1310,7 +1479,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -637,5 +632,9 @@ std::optional GetMainFrameGetAIPageContentTimeout() { +@@ -642,4 +637,8 @@ std::optional GetMainFrameGetAIPageContentTimeout() { return kGetAIPageContentMainFrameTimeoutParam.Get(); } @@ -1318,50 +1487,36 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b +SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction); +SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP); - } // namespace features - } // namespace optimization_guide -diff --git a/components/optimization_guide/features.gni b/components/optimization_guide/features.gni ---- a/components/optimization_guide/features.gni -+++ b/components/optimization_guide/features.gni -@@ -15,8 +15,7 @@ declare_args() { - # This enables build with TFLite library. - # TODO(b/269198471): Make sure the internal archive files for opt guide get - # updated when win arm64 gets added as a supported platform for TFLite. -- build_with_tflite_lib = is_android || is_win || is_linux || is_mac || -- is_chromeos || is_fuchsia || is_ios -+ build_with_tflite_lib = false - } - - if (is_ios) { + } // namespace optimization_guide::features diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc --- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc +++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc -@@ -24,7 +24,9 @@ PageCategoryClassifierBridgeImpl::PageCategoryClassifierBridgeImpl( - : page_embeddings_service_(page_embeddings_service), - category_classifier_(category_classifier) { +@@ -28,7 +28,9 @@ PageCategoryClassifierBridgeImpl::PageCategoryClassifierBridgeImpl( + category_classifier_(category_classifier), + optimization_guide_logger_(optimization_guide_logger) { scoped_observation_.Observe(&*page_embeddings_service_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ category_classifier_observation_.Observe(&*category_classifier_); +#endif } PageCategoryClassifierBridgeImpl::~PageCategoryClassifierBridgeImpl() = default; -@@ -36,6 +38,7 @@ PageCategoryClassifierBridgeImpl::GetUsageMode() const { +@@ -40,6 +42,7 @@ PageCategoryClassifierBridgeImpl::GetUsageMode() const { void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( content::Page& page) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ std::vector embeddings = page_embeddings_service_->GetEmbeddings(page); -@@ -53,6 +56,7 @@ void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( +@@ -57,6 +60,7 @@ void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( page.GetMainDocument().GetLastCommittedURL(), page.GetMainDocument().GetPageUkmSourceId(), std::move(title_url_embedding), std::move(passage_embeddings)); +#endif } - // TODO - crbug.com/434047312: Move the metrics recording to the actual user of + void PageCategoryClassifierBridgeImpl::OnCategoriesClassified( diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h --- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h +++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h @@ -1373,11 +1528,11 @@ diff --git a/components/page_content_annotations/content/page_category_classifie #include "components/page_content_annotations/content/page_embeddings_service.h" #include "components/page_content_annotations/core/on_device_category_classifier.h" #include "components/page_content_annotations/core/page_category_classifier_bridge.h" -@@ -50,9 +51,11 @@ class PageCategoryClassifierBridgeImpl +@@ -54,9 +55,11 @@ class PageCategoryClassifierBridgeImpl PageEmbeddingsService::Observer> scoped_observation_{this}; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ base::ScopedObservation category_classifier_observation_{this}; @@ -1388,7 +1543,7 @@ diff --git a/components/page_content_annotations/content/page_category_classifie diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc --- a/components/page_content_annotations/core/page_content_annotations_features.cc +++ b/components/page_content_annotations/core/page_content_annotations_features.cc -@@ -63,6 +63,7 @@ const base::FeatureParam kPageContentExtractionTriggeringMode{ +@@ -56,6 +56,7 @@ const base::FeatureParam kPageContentExtractionTriggeringMode{ bool IsSupportedLocale(const std::string& locale, const std::string& supported_locales) { @@ -1396,7 +1551,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (supported_locales == "*") { return true; } -@@ -82,6 +83,7 @@ bool IsSupportedLocale(const std::string& locale, +@@ -75,6 +76,7 @@ bool IsSupportedLocale(const std::string& locale, bool IsSupportedCountry(const std::string& country_code, const std::string& supported_countries) { @@ -1404,7 +1559,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (supported_countries == "*") { return true; } -@@ -149,6 +151,7 @@ base::TimeDelta PCAServiceWaitForTitleDelayDuration() { +@@ -144,6 +146,7 @@ base::TimeDelta PCAServiceWaitForTitleDelayDuration() { } bool ShouldEnablePageContentAnnotations() { @@ -1412,7 +1567,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f // Allow for the validation experiment or remote page metadata to enable the // PCAService without need to enable both features. return base::FeatureList::IsEnabled(kPageContentAnnotations) || -@@ -281,6 +284,7 @@ bool IsSupportedLocaleForFeature( +@@ -283,6 +286,7 @@ bool IsSupportedLocaleForFeature( const std::string& locale, const base::Feature& feature, const std::string& default_value = "de,en,es,fr,it,nl,pt,tr") { @@ -1420,7 +1575,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (!base::FeatureList::IsEnabled(feature)) { return false; } -@@ -298,6 +302,7 @@ bool IsSupportedLocaleForFeature( +@@ -300,6 +304,7 @@ bool IsSupportedLocaleForFeature( bool IsSupportedCountryForFeature(const std::string& country_code, const base::Feature& feature, const std::string& default_value) { @@ -1428,7 +1583,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (!base::FeatureList::IsEnabled(feature)) { return false; } -@@ -312,4 +317,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code, +@@ -314,4 +319,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code, return IsSupportedCountry(country_code, value); } @@ -1450,24 +1605,82 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m diff --git a/components/page_content_annotations/core/page_content_annotations_service.h b/components/page_content_annotations/core/page_content_annotations_service.h --- a/components/page_content_annotations/core/page_content_annotations_service.h +++ b/components/page_content_annotations/core/page_content_annotations_service.h -@@ -127,8 +127,11 @@ enum class PageContentAnnotationsType { +@@ -126,8 +126,11 @@ enum class PageContentAnnotationsType { class PageContentAnnotationsService : public KeyedService, public history::HistoryServiceObserver, - public ZeroSuggestCacheServiceInterface::Observer, - public OnDeviceCategoryClassifier::Observer { + public ZeroSuggestCacheServiceInterface::Observer -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ + , public OnDeviceCategoryClassifier::Observer +#endif + { public: // Observer interface to listen for PageContentAnnotations for page loads. // Annotations will be sent for each page load for the registered annotation +diff --git a/components/permissions/prediction_service/BUILD.gn b/components/permissions/prediction_service/BUILD.gn +--- a/components/permissions/prediction_service/BUILD.gn ++++ b/components/permissions/prediction_service/BUILD.gn +@@ -16,37 +16,37 @@ source_set("prediction_service") { + sources = [ + "permission_ui_selector.cc", + "permission_ui_selector.h", +- "permissions_ai_encoder_base.cc", +- "permissions_ai_encoder_base.h", +- "permissions_aiv4_executor.cc", +- "permissions_aiv4_executor.h", +- "permissions_aiv4_handler.cc", +- "permissions_aiv4_handler.h", ++ # "permissions_ai_encoder_base.cc", ++ # "permissions_ai_encoder_base.h", ++ # "permissions_aiv4_executor.cc", ++ # "permissions_aiv4_executor.h", ++ # "permissions_aiv4_handler.cc", ++ # "permissions_aiv4_handler.h", + "prediction_common.cc", + "prediction_common.h", +- "prediction_model_executor.cc", +- "prediction_model_executor.h", +- "prediction_model_handler.cc", +- "prediction_model_handler.h", ++ # "prediction_model_executor.cc", ++ # "prediction_model_executor.h", ++ # "prediction_model_handler.cc", ++ # "prediction_model_handler.h", + "prediction_request_features.h", + "prediction_service.cc", + "prediction_service.h", + "prediction_service_base.h", +- "prediction_signature_model_executor.cc", +- "prediction_signature_model_executor.h", ++ # "prediction_signature_model_executor.cc", ++ # "prediction_signature_model_executor.h", + ] + deps = [ + "//components/keyed_service/content", +- "//components/passage_embeddings/core", ++ # "//components/passage_embeddings/core", + "//components/permissions:permissions_common", + "//components/version_info", + "//content/public/browser", + "//services/network/public/cpp", +- "//skia", ++ # "//skia", + "//third_party/protobuf:protobuf_lite", +- "//third_party/tflite:tflite_public_headers", +- "//third_party/tflite_support", +- "//third_party/tflite_support:tflite_support_proto", ++ # "//third_party/tflite:tflite_public_headers", ++ # "//third_party/tflite_support", ++ # "//third_party/tflite_support:tflite_support_proto", + ] + public_deps = [ + ":prediction_service_messages_proto", diff --git a/components/safe_browsing/content/browser/client_side_phishing_model.cc b/components/safe_browsing/content/browser/client_side_phishing_model.cc --- a/components/safe_browsing/content/browser/client_side_phishing_model.cc +++ b/components/safe_browsing/content/browser/client_side_phishing_model.cc -@@ -486,7 +486,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( +@@ -523,7 +523,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( model_metadata.value()); } @@ -1476,17 +1689,22 @@ diff --git a/components/safe_browsing/content/browser/client_side_phishing_model if (image_embedding_model_metadata.has_value()) { embedding_model_opt_guide_metadata_image_embedding_version_ = image_embedding_model_metadata->image_embedding_model_version(); -@@ -510,9 +510,9 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( +@@ -547,6 +547,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( embedding_list_version_num); } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Drop any existing target image embeddings in preparation for a new set. target_image_embeddings_.clear(); --#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) // Only load image embeddings when the version of their embedder matches the - // version of the embedder that's been loaded. - if (model_and_list.second.has_value() && +@@ -567,6 +568,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( + } + base::UmaHistogramCounts100000("SBClientPhishing.ImageEmbeddingList.Size", + target_image_embeddings_.size()); ++#endif + // There is no use of the image embedding model if the visual trigger model is + // not present, so we will only send to the renderer when that is the case. + if (visual_tflite_model_ && image_embedding_model_) { diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn --- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn +++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn @@ -1501,6 +1719,17 @@ diff --git a/components/safe_browsing/content/browser/notification_content_detec ] deps = [ +diff --git a/components/translate/core/language_detection/BUILD.gn b/components/translate/core/language_detection/BUILD.gn +--- a/components/translate/core/language_detection/BUILD.gn ++++ b/components/translate/core/language_detection/BUILD.gn +@@ -28,7 +28,6 @@ static_library("language_detection") { + ":chinese_script_classifier", + "//base", + "//components/language/core/common", +- "//components/language_detection/core", + "//components/translate/core/common", + "//third_party/cld_3/src/src:cld_3", + "//third_party/icu", diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn @@ -1518,32 +1747,27 @@ diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn diff --git a/components/viz/service/gl/gpu_service_impl.cc b/components/viz/service/gl/gpu_service_impl.cc --- a/components/viz/service/gl/gpu_service_impl.cc +++ b/components/viz/service/gl/gpu_service_impl.cc -@@ -641,25 +641,6 @@ void GpuServiceImpl::BindWebNNContextProvider( - client_id, client_tracing_id, is_incognito)); - return; - } -- -- if (!webnn_context_provider_) { -- scoped_refptr shared_context_state = -- GetContextState(); -- // `shared_context_state` may be nullptr if there is no GPU acceleration. -- // For such case, WebNN CPU backend, e.g. TFLite XNNPACK, is still useful. -- -- // TODO(crbug.com/345352987): manage `WebNNContextProviderImpl` instance per -- // `client_id` in order to support memory metrics. -- webnn_context_provider_ = webnn::WebNNContextProviderImpl::Create( -- std::move(shared_context_state), gpu_feature_info_, gpu_info_, -- shared_image_manager(), gpu_channel_manager_->peak_memory_monitor(), -- base::BindOnce(&GpuServiceImpl::LoseAllContexts, weak_ptr_), -- main_runner(), GetGpuScheduler(), gpu_host_); +@@ -650,20 +650,6 @@ void GpuServiceImpl::BindWebNNContextProvider( + } + + void GpuServiceImpl::CreateWebNNContextProviderIfNeeded() { +- if (webnn_context_provider_) { +- return; - } - -- webnn_context_provider_->BindWebNNContextProvider( -- std::move(pending_receiver), -- {is_incognito, client_id, client_tracing_id}); +- scoped_refptr shared_context_state = +- GetContextState(); +- // `shared_context_state` may be nullptr if there is no GPU acceleration. +- // For such case, WebNN CPU backend, e.g. TFLite XNNPACK, is still useful. +- +- webnn_context_provider_ = webnn::WebNNContextProviderImpl::Create( +- std::move(shared_context_state), gpu_feature_info_, gpu_info_, +- shared_image_manager(), gpu_channel_manager_->peak_memory_monitor(), +- base::BindOnce(&GpuServiceImpl::LoseAllContexts, weak_ptr_), +- main_runner(), GetGpuScheduler(), gpu_host_); } - void GpuServiceImpl::GetVideoMemoryUsageStats( + void GpuServiceImpl::BindWebNNServiceIntrospection( diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -1579,14 +1803,14 @@ diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_p diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc -@@ -543,6 +543,7 @@ bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( +@@ -539,6 +539,7 @@ bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( scoped_refptr context, scoped_refptr version, base::OnceCallback clone_completed_for_fetch_handler_callback) { + if ((true)) return false; // Set fetch_handler_bypass_option to tell the renderer that // RaceNetworkRequest is enabled. - version->set_fetch_handler_bypass_option( + service_worker_client_->set_fetch_handler_bypass_option( diff --git a/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc b/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc new file mode 100644 --- /dev/null @@ -1644,8 +1868,8 @@ new file mode 100644 diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn --- a/media/webrtc/BUILD.gn +++ b/media/webrtc/BUILD.gn -@@ -5,6 +5,7 @@ - import("//components/optimization_guide/features.gni") +@@ -4,6 +4,7 @@ + import("//media/media_options.gni") import("//third_party/webrtc/webrtc.gni") +import("//components/optimization_guide/features.gni") @@ -1655,10 +1879,10 @@ diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc --- a/media/webrtc/helpers.cc +++ b/media/webrtc/helpers.cc -@@ -14,6 +14,7 @@ +@@ -13,6 +13,7 @@ + #include "base/time/time.h" #include "build/build_config.h" #include "build/chromecast_buildflags.h" - #include "components/optimization_guide/machine_learning_tflite_buildflags.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" #include "media/base/media_switches.h" #include "media/webrtc/webrtc_features.h" @@ -1666,21 +1890,21 @@ diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc 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 -@@ -27,7 +27,7 @@ +@@ -26,7 +26,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) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) -+#if false && !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) #include "services/on_device_model/safety/bert_safety_model.h" #endif -@@ -207,7 +207,7 @@ void TsHolder::Reset(mojom::TextSafetyModelParamsPtr params, +@@ -198,7 +198,7 @@ void TsHolder::Reset(mojom::TextSafetyModelParamsPtr params, mojo::PendingReceiver model) { model_.Clear(); --#if !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) -+#if false && !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) if (!params->safety_assets || params->safety_assets->which() == mojom::SafetyModelAssets::Tag::kTsAssets) { auto impl = TsModel::Create(*chrome_ml_, std::move(params)); @@ -1697,15 +1921,29 @@ diff --git a/services/on_device_model/on_device_model.gni b/services/on_device_m 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") +@@ -2,7 +2,7 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. --if (!is_fuchsia && build_with_tflite_lib) { -+if (build_with_tflite_lib && !is_fuchsia) { +-if (!is_fuchsia) { ++if (false /*build_with_tflite_lib*/) { source_set("bert_safety_op_resolver") { sources = [ "bert_safety_op_resolver.cc", +diff --git a/services/passage_embeddings/passage_embeddings_service.cc b/services/passage_embeddings/passage_embeddings_service.cc +--- a/services/passage_embeddings/passage_embeddings_service.cc ++++ b/services/passage_embeddings/passage_embeddings_service.cc +@@ -36,6 +36,10 @@ void PassageEmbeddingsService::LoadModels( + mojom::PassageEmbedderParamsPtr embedder_params, + mojo::PendingReceiver receiver, + LoadModelsCallback callback) { ++ if ((true)) { ++ std::move(callback).Run(false); ++ return; ++ } + embedder_ = std::make_unique( + std::move(receiver), std::move(embedder_params), + base::BindOnce(&PassageEmbeddingsService::OnEmbedderDisconnect, diff --git a/services/webnn/BUILD.gn b/services/webnn/BUILD.gn --- a/services/webnn/BUILD.gn +++ b/services/webnn/BUILD.gn @@ -1728,12 +1966,12 @@ diff --git a/services/webnn/features.gni b/services/webnn/features.gni - webnn_use_tflite = is_android || is_chromeos || is_linux || is_apple || is_win + webnn_use_tflite = false #is_android || is_chromeos || is_linux || is_apple || is_win - # TODO(crbug.com/454732289): Enable LiteRT after migration is complete. - webnn_use_litert = false + # LiteRT matches TFLite except for arm. + # TODO(b/454732289): Add arm support once APK size issue is resolved. diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webnn_context_provider_impl.cc --- a/services/webnn/webnn_context_provider_impl.cc +++ b/services/webnn/webnn_context_provider_impl.cc -@@ -263,35 +263,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( +@@ -331,35 +331,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( } #if BUILDFLAG(IS_WIN) @@ -1773,7 +2011,7 @@ diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webn diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc -@@ -1782,6 +1782,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( +@@ -1788,6 +1788,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( } bool HTMLDocumentParser::ShouldSkipPreloadScan() { @@ -1795,7 +2033,7 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -4319,7 +4319,7 @@ +@@ -4416,7 +4416,7 @@ // // It also has some feature params defined throughout the codebase. name: "Prerender2", diff --git a/build/patches/Enable-extension-in-incognito.patch b/build/patches/Enable-extension-in-incognito.patch index 7a711f710..4438eb85f 100644 --- a/build/patches/Enable-extension-in-incognito.patch +++ b/build/patches/Enable-extension-in-incognito.patch @@ -7,7 +7,7 @@ Full activation of incognito mode in experimental extension License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../chrome/browser/ChromeTabbedActivity.java | 9 ++ - .../chrome/browser/app/ChromeActivity.java | 45 ++++++- + .../chrome/browser/app/ChromeActivity.java | 42 +++++- .../BaseCustomTabRootUiCoordinator.java | 2 + .../CustomTabIntentDataProvider.java | 3 + .../tabbed_mode/TabbedRootUiCoordinator.java | 1 + @@ -22,21 +22,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../extensions/extension_actions_bridge.cc | 23 +++- .../extensions/extension_actions_bridge.h | 4 +- .../ExtensionActionContextMenuBridge.java | 2 +- - .../ui/extensions/ExtensionActionsBridge.java | 65 +++++++++- + .../ui/extensions/ExtensionActionsBridge.java | 67 +++++++++- .../ui/extensions/ExtensionsMenuBridge.java | 101 ++++++++++++--- .../extensions/ExtensionsToolbarBridge.java | 121 +++++++++++++----- - .../ExtensionActionListCoordinator.java | 15 ++- - .../ExtensionActionListMediator.java | 30 ++--- - .../ExtensionToolbarCoordinator.java | 3 + - .../ExtensionToolbarCoordinatorImpl.java | 15 +-- - ...MenuAndAccessControlButtonCoordinator.java | 5 +- + .../ExtensionActionListCoordinator.java | 13 +- + .../ExtensionActionListMediator.java | 25 ++-- .../extensions/ExtensionsMenuCoordinator.java | 2 + .../extensions/ExtensionsMenuMediator.java | 14 +- + .../ExtensionsToolbarCoordinatorImpl.java | 2 +- .../browser_window/ChromeAndroidTaskImpl.java | 18 ++- .../ChromeAndroidTaskFeature.java | 2 +- components/tabs/impl/tab_collection.cc | 16 +++ components/tabs/impl/tab_strip_collection.cc | 4 +- - 30 files changed, 415 insertions(+), 124 deletions(-) + 28 files changed, 405 insertions(+), 105 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 @@ -49,14 +47,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.data_sharing.DataSharingIntentUtils; import org.chromium.chrome.browser.data_sharing.DataSharingTabGroupUtils; import org.chromium.chrome.browser.data_sharing.DataSharingTabManager; -@@ -316,11 +317,15 @@ import org.chromium.chrome.browser.tasks.tab_management.TabSwitcherPaneBase; +@@ -321,11 +322,15 @@ import org.chromium.chrome.browser.tasks.tab_management.TabSwitcherPaneBase; import org.chromium.chrome.browser.tasks.tab_management.TabUiUtils; import org.chromium.chrome.browser.tasks.tab_management.TabsSettings; import org.chromium.chrome.browser.tasks.tab_management.archived_tabs_auto_delete_promo.ArchivedTabsAutoDeletePromoManager; +import org.chromium.chrome.browser.tabmodel.IncognitoTabModelObserver; import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata; import org.chromium.chrome.browser.toolbar.ToolbarManager; - import org.chromium.chrome.browser.toolbar.extensions.ExtensionToolbarCoordinator; + import org.chromium.chrome.browser.toolbar.extensions.ExtensionsToolbarCoordinator; import org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer; import org.chromium.chrome.browser.ui.AppLaunchDrawBlocker; +import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridge; @@ -65,10 +63,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.ui.IncognitoRestoreAppLaunchDrawBlockerFactory; import org.chromium.chrome.browser.ui.RootUiCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; -@@ -4139,6 +4144,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt - } - RecordUserAction.record("MobileMenuRecentTabs"); - } else if (id == R.id.extensions_menu_id) { +@@ -4167,6 +4172,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt + coordinator.showExtensionsMenu(); + RecordUserAction.record("MobileMenuExtensionsMenu"); + } else if (id == R.id.manage_extensions_menu_id) { + if (getCurrentTabModel().isIncognito()) { + CustomTabActivity.showInfoPage(this, UrlConstants.CHROME_EXTENSIONS_URL); + return true; @@ -79,7 +77,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 -@@ -188,6 +188,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -190,6 +190,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabState; import org.chromium.chrome.browser.tab.TabUtils; import org.chromium.chrome.browser.tab_ui.TabContentManager; @@ -87,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.tabmodel.SupportedProfileType; import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; -@@ -220,6 +221,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac +@@ -222,6 +223,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; @@ -97,16 +95,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridge; import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; -@@ -1131,19 +1135,46 @@ public abstract class ChromeActivity extends AsyncInitializationActivity - // TODO(crbug.com/475200706): Handle multiple profiles for mobile. +@@ -1136,16 +1140,46 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + // TODO(crbug.com/491791326): Handle multiple profiles for mobile. Profile profile = tabModelSelector.getCurrentModel().getProfile(); assert profile != null; - chromeAndroidTask.addFeature( - new ChromeAndroidTaskFeatureKey( - ExtensionWindowControllerBridge.class, profile, activityWindowAndroid), -- () -> -- ExtensionWindowControllerBridgeFactory.create( -- chromeAndroidTask, profile)); +- ExtensionWindowControllerBridgeFactory::create); + addFeatures(chromeAndroidTask, profile); // 5. Make the ChromeAndroidTask available via OneshotSupplier. @@ -128,7 +124,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv } } -- /** Returns an {@link OneshotSupplier} for {@link ChromeAndroidTask}. */ + private void addFeatures(ChromeAndroidTask task, Profile profile) { + task.addFeature( + new ChromeAndroidTaskFeatureKey( @@ -148,13 +143,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + () -> ExtensionsMenuBridge.create(task, profile)); + } + + /** Returns an {@link OneshotSupplier} for {@link ChromeAndroidTask}. */ protected final OneshotSupplier getChromeAndroidTaskSupplier() { return mChromeAndroidTaskSupplier; - } 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 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java -@@ -93,6 +93,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; +@@ -92,6 +92,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.RequestDesktopUtils; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab_ui.TabContentManager; @@ -162,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior; -@@ -127,6 +128,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -126,6 +127,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.function.BooleanSupplier; import java.util.function.Supplier; @@ -173,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base 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 -@@ -340,6 +340,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -349,6 +349,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid private final boolean mEnableUrlBarHiding; private boolean mInteractWithBackground; @@ -181,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust private List mCustomButtonParams; private @Nullable Drawable mCloseButtonIcon; private final boolean mIsCloseButtonEnabled; -@@ -723,6 +724,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -754,6 +755,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid mSideSheetRoundedCornersPosition = getActivitySideSheetRoundedCornersPositionFromIntent(intent); @@ -189,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust logCustomTabFeatures(intent, colorScheme); String packageName = getClientPackageNameFromSessionOrCallingActivity(mIntent, mSession); RecordHistogram.recordBooleanHistogram( -@@ -1377,6 +1379,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1408,6 +1410,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public @CustomTabProfileType int getCustomTabMode() { @@ -200,10 +195,10 @@ 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/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 -@@ -201,6 +201,7 @@ import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior; - import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; +@@ -206,6 +206,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; + import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager; + import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskFeatureKey; +import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoUtils; import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderCoordinator; @@ -211,7 +206,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/TabModelJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java -@@ -144,8 +144,7 @@ public abstract class TabModelJniBridge implements TabModelInternal { +@@ -145,8 +145,7 @@ public abstract class TabModelJniBridge implements TabModelInternal { @Override public void dissociateWithBrowserWindow() { @@ -248,7 +243,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod 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 -@@ -140,6 +140,7 @@ import org.chromium.chrome.browser.tab.TabObscuringHandler; +@@ -142,6 +142,7 @@ import org.chromium.chrome.browser.tab.TabObscuringHandler; import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.chrome.browser.tab_ui.TabModelDotInfo; @@ -256,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.tabmodel.IncognitoStateProvider; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModel; -@@ -241,6 +242,7 @@ import org.chromium.url.GURL; +@@ -251,6 +252,7 @@ import org.chromium.url.GURL; import java.util.List; import java.util.function.Supplier; @@ -267,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -157,6 +157,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -161,6 +161,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab_ui.RecyclerViewPosition; import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.chrome.browser.tab_ui.TabSwitcher; @@ -275,7 +270,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModel; -@@ -256,6 +257,7 @@ import java.lang.ref.WeakReference; +@@ -261,6 +262,7 @@ import java.lang.ref.WeakReference; import java.util.Collections; import java.util.function.BooleanSupplier; import java.util.function.Supplier; @@ -299,19 +294,19 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_f diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc --- a/chrome/browser/extensions/extension_tab_util.cc +++ b/chrome/browser/extensions/extension_tab_util.cc -@@ -1183,7 +1183,7 @@ bool ExtensionTabUtil::OpenOptionsPageFromWebContents( +@@ -1143,7 +1143,7 @@ bool ExtensionTabUtil::OpenOptionsPageFromWebContents( if (!url) { return false; } - const bool open_in_tab = ShouldOpenInTab(extension); + const bool open_in_tab = false; //ShouldOpenInTab(extension); - // Opens the url as instructed by `open_in_tab`. On android we take a different - // path because the `Browser` object is not available. - // TODO(crbug.com/441209530): Unify the path on android after browser + BrowserWindowInterface* browser = + browser_window_util::GetBrowserForTabContents(*web_contents); + CHECK(browser); diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java -@@ -148,7 +148,7 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -155,7 +155,7 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { } for (IncognitoTabModelObserver observer : mIncognitoObservers) { @@ -320,7 +315,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse } mDelegateModel -@@ -159,6 +159,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -166,6 +166,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { mCurrentTabSupplier.set(null); mTabCountSupplier.set(0); @@ -331,7 +326,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse mDelegateModel = EmptyTabModel.getInstance(true); for (Callback delegateModelObserver : mDelegateModelObservers) { delegateModelObserver.onResult(mDelegateModel); -@@ -196,6 +200,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -203,6 +207,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { assert mNativeAndroidBrowserWindow == 0; mNativeAndroidBrowserWindow = nativeAndroidBrowserWindow; mDelegateModel.associateWithBrowserWindow(nativeAndroidBrowserWindow); @@ -375,10 +370,10 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ - : browser_(browser), - profile_(browser->GetProfile()), + : profile_(profile), - java_object_(java_object), - keybinding_registry_( - std::make_unique(profile_)) {} -@@ -57,6 +58,16 @@ void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { + java_object_(java_object) {} + + ExtensionActionsBridge::~ExtensionActionsBridge() = default; +@@ -51,6 +52,16 @@ void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { install_directory, install_updacked_directory)); } @@ -392,10 +387,10 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ + } +} + - jni_zero::ScopedJavaLocalRef - ExtensionActionsBridge::HandleKeyDownEvent( - JNIEnv* env, -@@ -74,11 +85,9 @@ ExtensionActionsBridge::HandleKeyDownEvent( + void ExtensionActionsBridge::Destroy(JNIEnv* env) { + delete this; + } +@@ -58,11 +69,9 @@ void ExtensionActionsBridge::Destroy(JNIEnv* env) { static int64_t JNI_ExtensionActionsBridge_Init( JNIEnv* env, const base::android::JavaRef& java_object, @@ -412,7 +407,7 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/chrome/browser/ui/android/extensions/extension_actions_bridge.h --- a/chrome/browser/ui/android/extensions/extension_actions_bridge.h +++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.h -@@ -22,7 +22,7 @@ namespace extensions { +@@ -19,7 +19,7 @@ namespace extensions { // This bridge is created and owned by Java UI code. class ExtensionActionsBridge { public: @@ -421,20 +416,18 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/c const base::android::JavaRef& java_object); ExtensionActionsBridge(const ExtensionActionsBridge&) = delete; ExtensionActionsBridge& operator=(const ExtensionActionsBridge&) = delete; -@@ -31,12 +31,12 @@ class ExtensionActionsBridge { +@@ -27,10 +27,10 @@ class ExtensionActionsBridge { + // JNI implementations. - void Destroy(JNIEnv* env); void ClearExtensionData(JNIEnv* env); + void CloseBackgroundHosts(JNIEnv* env); - jni_zero::ScopedJavaLocalRef HandleKeyDownEvent( - JNIEnv* env, - const ui::KeyEventAndroid& key_event); + void Destroy(JNIEnv* env); private: - const raw_ptr browser_; const raw_ptr profile_; const base::android::ScopedJavaGlobalRef java_object_; - const std::unique_ptr + }; diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java @@ -451,19 +444,21 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java -@@ -5,6 +5,7 @@ +@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.ui.extensions; - import android.view.KeyEvent; -+import android.util.ArrayMap; - - import androidx.annotation.VisibleForTesting; - -@@ -22,17 +23,60 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; + import org.jni_zero.JNINamespace; ++import android.view.KeyEvent; ++ + import org.jni_zero.JniType; + import org.jni_zero.NativeMethods; - import java.util.Objects; +@@ -15,22 +17,66 @@ import org.chromium.build.annotations.Nullable; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; +import android.graphics.Rect; ++import android.util.ArrayMap; +import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskFeature; +import org.chromium.chrome.browser.tabmodel.TabModel; +import org.chromium.base.Log; @@ -492,9 +487,11 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b ExtensionActionsBridgeJni.get() - .init(this, task.getOrCreateNativeBrowserWindowPtr(profile)); + .init(this, mProfile); -+ } -+ -+ @Override + } + + @Override +- public void destroy() { +- assert mNativeExtensionActionsBridge != 0; + public void onFeatureRemoved() { + destroy(); + } @@ -520,21 +517,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + + public static ExtensionActionsBridge create(ChromeAndroidTask task, Profile profile) { + return new ExtensionActionsBridge(task, profile); - } - - /** Represents the result of handling a key event. */ -@@ -64,8 +108,8 @@ public class ExtensionActionsBridge implements Destroyable { - } - } - -- @Override -- public void destroy() { -+ private void destroy() { -+ closeBackgroundHosts(); - assert mNativeExtensionActionsBridge != 0; ++ } ++ ++ @privatevoid destroy() { ++ closeBackgroundHosts(); ++assert mNativeExtensionActionsBridge != 0; ExtensionActionsBridgeJni.get().destroy(mNativeExtensionActionsBridge); mNativeExtensionActionsBridge = 0; -@@ -88,19 +132,26 @@ public class ExtensionActionsBridge implements Destroyable { + LifetimeAssert.destroy(mLifetimeAssert); +@@ -46,17 +92,24 @@ public class ExtensionActionsBridge implements Destroyable { } public void clearExtensionData() { @@ -554,15 +545,13 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b - long init(ExtensionActionsBridge bridge, long browserWindowInterfacePtr); + long init(ExtensionActionsBridge bridge, @JniType("Profile*") Profile profile); - void destroy(long nativeExtensionActionsBridge); - void clearExtensionData(long nativeExtensionActionsBridge); + void closeBackgroundHosts(long nativeExtensionActionsBridge); + - HandleKeyEventResult handleKeyDownEvent( - long nativeExtensionActionsBridge, - @JniType("ui::KeyEventAndroid") KeyEvent keyEvent); + void destroy(long nativeExtensionActionsBridge); + } + } diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java @@ -679,12 +668,12 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -77,12 +129,12 @@ public class ExtensionsMenuBridge implements Destroyable { - */ - public void onSiteSettingsToggleChanged(boolean isChecked) { +@@ -118,12 +170,12 @@ public class ExtensionsMenuBridge implements Destroyable { + /** Called when the reload page button is clicked. */ + public void onReloadPageButtonClicked() { ExtensionsMenuBridgeJni.get() -- .onSiteSettingsToggleChanged(mNativeExtensionsMenuDelegateAndroid, isChecked); -+ .onSiteSettingsToggleChanged(Instance().mNativeExtensionsMenuDelegateAndroid, isChecked); +- .onReloadPageButtonClicked(mNativeExtensionsMenuDelegateAndroid); ++ .onReloadPageButtonClicked(Instance().mNativeExtensionsMenuDelegateAndroid); } /** Returns whether the native menu model is ready. */ @@ -694,7 +683,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -92,7 +144,8 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -133,7 +185,8 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionAdded(int actionIndex) { @@ -704,7 +693,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -103,7 +156,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -144,7 +197,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionIconUpdated(int actionIndex) { @@ -716,7 +705,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -114,7 +170,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -155,7 +211,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionRemoved(int actionIndex) { @@ -728,7 +717,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -125,7 +184,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -166,7 +225,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionUpdated(int actionIndex) { @@ -740,7 +729,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -134,13 +196,14 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -175,13 +237,14 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onReady() { @@ -761,7 +750,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java -@@ -26,10 +26,17 @@ import org.chromium.content_public.browser.WebContents; +@@ -27,10 +27,17 @@ import org.chromium.content_public.browser.WebContents; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -780,7 +769,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b // TODO(crbug.com/423483658): Consider moving ExtensionsMenuButtonState and related types // (e.g., RequestAccessButtonParams) into a new ExtensionControls.java file. @IntDef({ -@@ -47,21 +54,61 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -48,21 +55,61 @@ public class ExtensionsToolbarBridge implements Destroyable { private final @Nullable LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this); private long mNativeExtensionsToolbarAndroid; private final ObserverList mObservers = new ObserverList<>(); @@ -847,7 +836,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b assert mNativeExtensionsToolbarAndroid != 0; ExtensionsToolbarBridgeJni.get().destroy(mNativeExtensionsToolbarAndroid); mNativeExtensionsToolbarAndroid = 0; -@@ -69,27 +116,30 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -70,27 +117,30 @@ public class ExtensionsToolbarBridge implements Destroyable { } public void addObserver(Observer observer) { @@ -874,7 +863,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + assert Instance().mNativeExtensionsToolbarAndroid != 0; + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return null; } @@ -884,7 +873,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } @Nullable -@@ -105,9 +155,10 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -106,9 +156,10 @@ public class ExtensionsToolbarBridge implements Destroyable { // ChromeAndroidTask}'s destruction, and it is currently being worked on. return null; } @@ -896,38 +885,39 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b actionId, webContents, canvasWidthDp, -@@ -116,58 +167,58 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -127,52 +178,52 @@ public class ExtensionsToolbarBridge implements Destroyable { } - public String[] getAllActionIds() { + public String[] getPinnedActionIds() { - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return new String[0]; } -- return ExtensionsToolbarBridgeJni.get().getAllActionIds(mNativeExtensionsToolbarAndroid); -+ return ExtensionsToolbarBridgeJni.get().getAllActionIds(Instance().mNativeExtensionsToolbarAndroid); +- return ExtensionsToolbarBridgeJni.get().getPinnedActionIds(mNativeExtensionsToolbarAndroid); ++ return ExtensionsToolbarBridgeJni.get().getPinnedActionIds(Instance().mNativeExtensionsToolbarAndroid); } - public String[] getPinnedActionIds() { + public boolean isActionDraggable(String actionId) { - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. - return new String[0]; + return false; } -- return ExtensionsToolbarBridgeJni.get().getPinnedActionIds(mNativeExtensionsToolbarAndroid); -+ return ExtensionsToolbarBridgeJni.get().getPinnedActionIds(Instance().mNativeExtensionsToolbarAndroid); + return ExtensionsToolbarBridgeJni.get() +- .isActionDraggable(mNativeExtensionsToolbarAndroid, actionId); ++ .isActionDraggable(Instance().mNativeExtensionsToolbarAndroid, actionId); } public void executeUserAction(String actionId, @InvocationSource int source) { - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return; } @@ -940,7 +930,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return; } @@ -957,6 +947,10 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + .getExtensionsMenuButtonState(Instance().mNativeExtensionsToolbarAndroid, webContents); } + public void onRequestAccessButtonClicked(WebContents webContents) { +@@ -184,10 +235,10 @@ public class ExtensionsToolbarBridge implements Destroyable { + } + public RequestAccessButtonParams getRequestAccessButtonParams(WebContents webContents) { - assert mNativeExtensionsToolbarAndroid != 0; + assert Instance().mNativeExtensionsToolbarAndroid != 0; @@ -967,15 +961,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b assert params != null; return params; } -@@ -175,63 +226,63 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -209,21 +260,21 @@ public class ExtensionsToolbarBridge implements Destroyable { @CalledByNative - public void triggerPopup(@JniType("std::string") String actionId, long nativeHostPtr) { + void showContextMenu(@JniType("std::string") String actionId) { // {@link mDelegate} should be set in {@code ExtensionActionListMediator}'s constructor. - assert mDelegate != null; + assert Instance().mDelegate != null; -- mDelegate.triggerPopup(actionId, nativeHostPtr); -+ Instance().mDelegate.triggerPopup(actionId, nativeHostPtr); +- mDelegate.showContextMenu(actionId); ++ Instance().mDelegate.showContextMenu(actionId); } @CalledByNative @@ -993,6 +987,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b observer.onToolbarControlStateUpdated(); } } +@@ -254,42 +305,42 @@ public class ExtensionsToolbarBridge implements Destroyable { @CalledByNative public void onActionsInitialized() { @@ -1035,25 +1030,16 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } @CalledByNative - public void onActiveWebContentsChanged() { + public void onActiveWebContentsChanged(WebContents webContents) { - for (Observer observer : mObservers) { + for (Observer observer : Instance().mObservers) { - observer.onActiveWebContentsChanged(); + observer.onActiveWebContentsChanged(webContents); } } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java -@@ -33,6 +33,8 @@ import org.chromium.ui.listmenu.ListMenuButton; - import org.chromium.ui.modelutil.MVCListAdapter.ModelList; - import org.chromium.ui.modelutil.PropertyModel; - -+import java.util.function.Function; -+ - /** - * Root component for the extension action buttons. Exposes public API for external consumers to - * interact with the buttons and affect their states. -@@ -46,16 +48,19 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -44,17 +44,20 @@ public class ExtensionActionListCoordinator implements Destroyable { private final Context mContext; private final ExtensionActionListRecyclerView mContainer; @@ -1062,6 +1048,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow private final ExtensionActionListMediator mMediator; private final DragReorderableRecyclerViewAdapter mAdapter; @Nullable private final LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this); + private final RecyclerViewDelegate mRecyclerViewDelegate = new RecyclerViewDelegate(); + public final ExtensionsToolbarBridge mExtensionsToolbarBridge; private boolean mIsDragging; @@ -1073,7 +1060,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow WindowAndroid windowAndroid, ChromeAndroidTask task, Profile profile, -@@ -66,6 +71,8 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -65,6 +68,8 @@ public class ExtensionActionListCoordinator implements Destroyable { @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { mContext = context; mContainer = container; @@ -1082,8 +1069,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mModels = new ModelList(); mMediator = -@@ -79,7 +86,8 @@ public class ExtensionActionListCoordinator implements Destroyable { - this::getButtonViewForId, +@@ -78,7 +83,8 @@ public class ExtensionActionListCoordinator implements Destroyable { + mRecyclerViewDelegate, extensionsToolbarBridge, contextMenuPopulatorFactory, - selectionDropdownMenuDelegate); @@ -1092,7 +1079,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionsToolbarDragTouchHandler dragTouchHandler = new ExtensionsToolbarDragTouchHandler(context, mModels); -@@ -135,8 +143,13 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -134,6 +140,10 @@ public class ExtensionActionListCoordinator implements Destroyable { LifetimeAssert.setSafeToGc(mLifetimeAssert, true); } @@ -1100,16 +1087,21 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow + mMediator.onPrimaryClick(actionId); + } + - /** Performs a click on the button for the given action. */ - public void click(String actionId) { + /** + * Executes the given action. + * +@@ -141,6 +151,7 @@ public class ExtensionActionListCoordinator implements Destroyable { + * @param source How this execution was triggered. + */ + public void executeUserAction(String actionId, @InvocationSource int source) { + mExtensionsMenuButton.dismiss(); - View view = getButtonViewForId(actionId); - if (view != null) { - view.performClick(); + mMediator.executeUserAction(actionId, source); + } + diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java -@@ -40,6 +40,7 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -39,6 +39,7 @@ import org.chromium.ui.modelutil.PropertyModel; import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -1117,21 +1109,21 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow @NullMarked class ExtensionActionListMediator implements Destroyable { -@@ -88,11 +89,11 @@ class ExtensionActionListMediator implements Destroyable { +@@ -87,11 +88,11 @@ class ExtensionActionListMediator implements Destroyable { private final WindowAndroid mWindowAndroid; private final ModelList mModels; private final ChromeAndroidTask mTask; - private final Profile mProfile; private final NullableObservableSupplier mCurrentTabSupplier; - private final ExtensionActionListCoordinator.ActionAnchorViewProvider mActionAnchorViewProvider; private final @Nullable ContextMenuPopulatorFactory mContextMenuPopulatorFactory; private final @Nullable SelectionDropdownMenuDelegate mSelectionDropdownMenuDelegate; + private final ExtensionActionListCoordinator.RecyclerViewDelegate mRecyclerViewDelegate; + private final ListMenuButton mExtensionsMenuButton; private final ExtensionsToolbarBridge mExtensionsToolbarBridge; private final ToolbarDelegate mToolbarDelegate = new ToolbarDelegate(); -@@ -116,19 +117,20 @@ class ExtensionActionListMediator implements Destroyable { - ExtensionActionListCoordinator.ActionAnchorViewProvider actionAnchorViewProvider, +@@ -124,19 +125,20 @@ class ExtensionActionListMediator implements Destroyable { + ExtensionActionListCoordinator.RecyclerViewDelegate recyclerViewDelegate, ExtensionsToolbarBridge extensionsToolbarBridge, @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, - @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { @@ -1143,7 +1135,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mTask = task; - mProfile = profile; mCurrentTabSupplier = currentTabSupplier; - mActionAnchorViewProvider = actionAnchorViewProvider; + mRecyclerViewDelegate = recyclerViewDelegate; mExtensionsToolbarBridge = extensionsToolbarBridge; mContextMenuPopulatorFactory = contextMenuPopulatorFactory; mSelectionDropdownMenuDelegate = selectionDropdownMenuDelegate; @@ -1154,7 +1146,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mExtensionsToolbarBridge.addObserver(mToolbarObserver); reconcileActionItems(); } -@@ -141,7 +143,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -149,7 +151,7 @@ class ExtensionActionListMediator implements Destroyable { assert mActionState instanceof ActionState.Idle; mExtensionsToolbarBridge.removeObserver(mToolbarObserver); @@ -1163,7 +1155,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow LifetimeAssert.setSafeToGc(mLifetimeAssert, true); } -@@ -316,7 +318,8 @@ class ExtensionActionListMediator implements Destroyable { +@@ -401,7 +403,8 @@ class ExtensionActionListMediator implements Destroyable { return mModels.get(index).model.get(ExtensionActionButtonProperties.ID); } @@ -1173,30 +1165,26 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow if (mActionState instanceof ActionState.PopupActive activeState) { boolean closeOnly = activeState.getActionId().equals(actionId); closePopup(); -@@ -337,20 +340,13 @@ class ExtensionActionListMediator implements Destroyable { +@@ -470,16 +473,14 @@ class ExtensionActionListMediator implements Destroyable { + closeContextMenu(); ExtensionActionPopupContents contents = ExtensionActionPopupContents.create(nativeHostPtr); - -- if (findIndexForId(actionId) == -1) { -- // TODO(crbug.com/483194547): Implement popping out actions. -- contents.destroy(); -- return; -- } else { -- showPopupOnReadyAnchor(actionId, contents); -- } +- requestActionVisibility(actionId, () -> showPopupOnAnchor(actionId, contents)); + showPopupOnReadyAnchor(actionId, contents); } - private void showPopupOnReadyAnchor(String actionId, ExtensionActionPopupContents contents) { - View buttonView = mActionAnchorViewProvider.getButtonViewForId(actionId); + private void showPopupOnAnchor(String actionId, ExtensionActionPopupContents contents) { + ListMenuButton buttonView = + (ListMenuButton) mRecyclerViewDelegate.getButtonViewForId(actionId); if (buttonView == null) { - contents.destroy(); +- undoPopout(); - return; + buttonView = mExtensionsMenuButton; } Activity activity = mWindowAndroid.getActivity().get(); -@@ -420,7 +416,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -564,7 +565,7 @@ class ExtensionActionListMediator implements Destroyable { assert mActionState instanceof ActionState.Idle; ExtensionActionContextMenuBridge bridge = new ExtensionActionContextMenuBridge( @@ -1205,102 +1193,19 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionActionContextMenuUtils.showContextMenu( mContext, buttonView, -@@ -452,7 +448,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -597,7 +598,7 @@ class ExtensionActionListMediator implements Destroyable { /** Updates the list of displayed actions to fit within the provided width constraint. */ public void fitActionsWithinWidth(int availableWidth) { -- mAvailableWidth = availableWidth; -+ // mAvailableWidth = availableWidth; +- mAvailableWidthForPinnedActions = availableWidth; ++ // mAvailableWidthForPinnedActions = availableWidth; // If this is called during an animation (e.g. the user resizes window during pinning / // unpinning animation), we abandon the animation and update to the new state instantly. -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java -@@ -18,6 +18,7 @@ import org.chromium.build.annotations.Nullable; - import org.chromium.chrome.browser.layouts.toolbar.ToolbarWidthConsumer; - import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.tab.Tab; -+import org.chromium.chrome.browser.tabmodel.TabModel; - import org.chromium.chrome.browser.tabmodel.TabCreator; - import org.chromium.chrome.browser.theme.ThemeColorProvider; - import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; -@@ -26,6 +27,8 @@ import org.chromium.components.embedder_support.contextmenu.ContextMenuPopulator - import org.chromium.content_public.browser.selection.SelectionDropdownMenuDelegate; - import org.chromium.ui.base.WindowAndroid; - -+import java.util.function.Function; -+ - /** - * The coordinator of the extension-related toolbar UI. - * -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java -@@ -65,23 +65,18 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - ViewGroup rootView, - @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, - @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { -- mBridge = new ExtensionActionsBridge(task, profile); -+ mBridge = ExtensionActionsBridge.Instance(); - - extensionToolbarStub.setLayoutResource(R.layout.extension_toolbar_container); - mContainer = (LinearLayout) extensionToolbarStub.inflate(); - -- mExtensionsToolbarBridge = new ExtensionsToolbarBridge(task, profile); -- -- mProfileSupplier.addObserver((profile) -> { -- if (!ExtensionUi.isEnabled(profileSupplier.get())) { -- container.setVisibility(View.GONE); -- } -- }); -+ mExtensionsToolbarBridge = ExtensionsToolbarBridge.Instance(); - - mExtensionActionListCoordinator = - new ExtensionActionListCoordinator( - context, - mContainer.findViewById(R.id.extension_action_list), -+ mContainer.findViewById(R.id.extensions_menu_button), - windowAndroid, - task, - profile, -@@ -108,8 +103,8 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - public void destroy() { - mExtensionsMenuAndAccessControlButtonCoordinator.destroy(); - mExtensionActionListCoordinator.destroy(); -- mExtensionsToolbarBridge.destroy(); -- mBridge.destroy(); -+ //mExtensionsToolbarBridge.destroy(); -+ //mBridge.destroy(); - - LifetimeAssert.setSafeToGc(mLifetimeAssert, true); - } -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java -@@ -48,7 +48,8 @@ public class ExtensionsMenuAndAccessControlButtonCoordinator implements Destroya - NullableObservableSupplier currentTabSupplier, - TabCreator tabCreator, - ExtensionsToolbarBridge extensionsToolbarBridge, -- View requestAccessButton) { -+ View requestAccessButton, -+ ExtensionActionListCoordinator extensionActionListCoordinator) { - mExtensionsMenuCoordinator = - new ExtensionsMenuCoordinator( - context, -@@ -58,7 +59,7 @@ public class ExtensionsMenuAndAccessControlButtonCoordinator implements Destroya - profile, - currentTabSupplier, - tabCreator, -- extensionsToolbarBridge); -+ extensionsToolbarBridge, extensionActionListCoordinator); - - mExtensionAccessControlButtonCoordinator = - new ExtensionAccessControlButtonCoordinator( diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java -@@ -43,6 +43,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -45,6 +45,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.widget.RectProvider; @@ -1337,26 +1242,26 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * Mediator for the extensions menu. This class is responsible for listening to changes in the * extensions and updating the model accordingly. -@@ -43,7 +47,6 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - private final PropertyModel mMenuPropertyModel; +@@ -44,7 +48,6 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + private final PropertyModel mSitePermissionsPageModel; private final Runnable mOnReady; private final ChromeAndroidTask mTask; - private final Profile mProfile; private final ExtensionActionListCoordinator mExtensionActionListCoordinator; /** -@@ -69,8 +72,8 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -73,8 +76,8 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + mCurrentTabSupplier = currentTabSupplier; mOnReady = onReady; - mMenuPropertyModel = propertyModel; mTask = task; - mProfile = profile; - mMenuBridge = new ExtensionsMenuBridge(mTask, mProfile, /* observer= */ this); + mMenuBridge = ExtensionsMenuBridge.Instance(); + mMenuBridge.setObserver(task, /* observer= */ this); - mMenuPropertyModel.set( - ExtensionsMenuProperties.SITE_SETTINGS_TOGGLE_CLICK_LISTENER, -@@ -100,7 +103,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + mMainPageModel = mainPageModel; + mMainPageModel.set( +@@ -112,7 +115,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ExtensionActionContextMenuBridge contextMenuBridge = new ExtensionActionContextMenuBridge( @@ -1365,27 +1270,39 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionActionContextMenuUtils.showContextMenu( mContext, -@@ -113,7 +116,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - /** Destroys the mediator. */ - @Override +@@ -142,7 +145,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ public void destroy() { + mMainPageModel.set(ExtensionsMenuProperties.SITE_SETTINGS_TOGGLE_CLICK_LISTENER, null); + mSitePermissionsPageModel.set(SitePermissionsPageProperties.BACK_CLICK_LISTENER, null); - mMenuBridge.destroy(); + //mMenuBridge.destroy(); } /** -@@ -174,6 +177,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - break; +@@ -253,6 +256,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + break; + } } - } -+ if (oldIndex < 0) return; - assert oldIndex != -1 - : "Action model with ID " + entry.id + " should exist in mActionModels."; ++ if (oldIndex < 0) return; + assert oldIndex != -1 + : "Action model with ID " + entry.id + " should exist in mActionModels."; + +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +@@ -127,7 +127,7 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + currentTabSupplier, + tabCreator, + mExtensionsToolbarBridge, +- mMenuButtonPinningDelegate); ++ mMenuButtonPinningDelegate, mExtensionActionListCoordinator); + mExtensionAccessControlButtonCoordinator = + new ExtensionAccessControlButtonCoordinator( diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java --- a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java +++ b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java -@@ -334,7 +334,7 @@ final class ChromeAndroidTaskImpl +@@ -329,7 +329,7 @@ final class ChromeAndroidTaskImpl // profile is destroyed. This should be fixed. For now we can just defer the // destruction until the activity is destroyed since there should never be more // than one profile/window on desktop Android. @@ -1394,8 +1311,8 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro if (mPendingBrowserWindow != null && mPendingBrowserWindow.getProfile() == profile) { assert mActivityScopedObjectsDeque.isEmpty(); -@@ -402,6 +402,10 @@ final class ChromeAndroidTaskImpl - observer.onBrowserWindowAdded(ptr); +@@ -425,6 +425,10 @@ final class ChromeAndroidTaskImpl + } } } + @@ -1405,16 +1322,16 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro } private @Nullable Integer mId; -@@ -685,7 +689,7 @@ final class ChromeAndroidTaskImpl - mFeatures.put(featureKey, feature); - feature.onAddedToTask(); - if (tabModelSelector != null) { -- feature.onTabModelSelected(tabModelSelector.getCurrentModel()); -+ feature.onTabModelSelected(this, tabModelSelector.getCurrentModel()); - } +@@ -738,7 +742,7 @@ final class ChromeAndroidTaskImpl + ? null + : topActivityScopedObjects.mTabModelSelector; + if (tabModelSelector != null) { +- feature.onTabModelSelected(tabModelSelector.getCurrentModel()); ++ feature.onTabModelSelected(this, tabModelSelector.getCurrentModel()); } } -@@ -1166,6 +1170,14 @@ final class ChromeAndroidTaskImpl + +@@ -1208,6 +1212,14 @@ final class ChromeAndroidTaskImpl for (var feature : mFeatures.values()) { feature.onTaskFocusChanged(isTopResumedActivity); } @@ -1429,7 +1346,7 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro } @Override -@@ -1805,7 +1817,7 @@ final class ChromeAndroidTaskImpl +@@ -1867,7 +1879,7 @@ final class ChromeAndroidTaskImpl private void onTabModelSelected(TabModel tabModel) { for (var feature : mFeatures.values()) { @@ -1441,7 +1358,7 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro diff --git a/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java b/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java --- a/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java +++ b/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java -@@ -62,5 +62,5 @@ public interface ChromeAndroidTaskFeature { +@@ -72,5 +72,5 @@ public interface ChromeAndroidTaskFeature { * * @param tabModel The selected {@link TabModel}. */ diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 2cdfa3868..f6d127492 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -38,7 +38,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/content_autofill_driver.cc | 11 +++ .../content/browser/content_autofill_driver.h | 10 ++ .../content_autofill_driver_factory.cc | 12 +++ - .../content/renderer/autofill_agent.cc | 10 +- + .../content/renderer/autofill_agent.cc | 4 - .../renderer/password_autofill_agent.cc | 5 +- .../browser/foundations/autofill_driver.h | 2 + .../foundations/autofill_driver_factory.cc | 4 + @@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/browser/password_form_manager.cc | 4 + .../core/browser/password_manager_client.cc | 2 + .../core/browser/password_manager_client.h | 2 + - 35 files changed, 255 insertions(+), 144 deletions(-) + 35 files changed, 249 insertions(+), 144 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 @@ -192,10 +192,10 @@ 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 -@@ -627,22 +627,8 @@ public class MainSettings extends ChromeBaseSettingsFragment - } +@@ -720,22 +720,8 @@ public class MainSettings extends ChromeBaseSettingsFragment - private void updateAutofillPreferences() { + // TODO(crbug.com/482988366): Remove this method once the Autofill and passwords feature is launched. + private void updateAutofillPreferencesPreAutofillAndPasswords() { - addPreferenceIfAbsent(PREF_AUTOFILL_SECTION); - addPreferenceIfAbsent(PREF_AUTOFILL_OPTIONS); - Preference autofillOptionsPreference = findPreference(PREF_AUTOFILL_OPTIONS); @@ -220,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe 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 -@@ -122,6 +122,13 @@ import java.util.HashMap; +@@ -121,6 +121,13 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -234,7 +234,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. -@@ -1248,6 +1255,11 @@ class TabImpl implements Tab { +@@ -1252,6 +1259,11 @@ class TabImpl implements Tab { } mObservers.clear(); @@ -246,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (!abortNavigationsFromTabClosures) mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1637,6 +1649,7 @@ class TabImpl implements Tab { +@@ -1641,6 +1653,7 @@ class TabImpl implements Tab { * @return iff the AutofillProvider should provide a ViewStructure when prompted. */ boolean providesAutofillStructure() { @@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (!mProfile.isNativeInitialized()) { return false; } -@@ -2436,16 +2449,21 @@ class TabImpl implements Tab { +@@ -2440,16 +2453,21 @@ class TabImpl implements Tab { * @return true if the the provider is available for the given WebContents. */ private boolean prepareAutofillProvider(WebContents newWebContents) { @@ -282,7 +282,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav // TODO: crbug.com/432447902 — Provide only an activity context and push changes. mAutofillProvider = new AutofillProvider( -@@ -2455,7 +2473,16 @@ class TabImpl implements Tab { +@@ -2459,7 +2477,16 @@ class TabImpl implements Tab { getContext().getString(R.string.app_name)); TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid); } @@ -311,7 +311,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ #include "chrome/browser/ui/android/context_menu_helper.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" -@@ -417,8 +418,7 @@ void TabAndroid::InitializeAutofillIfNecessary() { +@@ -431,8 +432,7 @@ void TabAndroid::InitializeAutofillIfNecessary() { ->MaybeInitKeyboardSuppressor(); return; } @@ -324,7 +324,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ diff --git a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc --- a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc +++ b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc -@@ -426,14 +426,6 @@ GetAutofillManager(const tabs::TabInterface& tab) { +@@ -427,14 +427,6 @@ GetAutofillManager(const tabs::TabInterface& tab) { if (!profile) { return base::unexpected(kAutofillNotAvailable); } @@ -379,7 +379,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse 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 -@@ -518,6 +518,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials( +@@ -521,6 +521,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials( } #if BUILDFLAG(IS_ANDROID) @@ -407,7 +407,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/ 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 -@@ -336,6 +336,12 @@ CHAR_LIMIT guidelines: +@@ -345,6 +345,12 @@ CHAR_LIMIT guidelines: You and Google @@ -558,7 +558,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 -@@ -380,9 +380,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -389,9 +389,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents); ChainedBackNavigationTracker::CreateForWebContents(web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); @@ -712,7 +712,7 @@ new file mode 100644 diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc --- a/components/autofill/content/browser/content_autofill_driver.cc +++ b/components/autofill/content/browser/content_autofill_driver.cc -@@ -280,6 +280,13 @@ void RouteToManager(ContentAutofillDriver& source, +@@ -281,6 +281,13 @@ void RouteToManager(ContentAutofillDriver& source, AutofillManager& manager = target.GetAutofillManager(); (manager.* manager_fun)(WithNewVersion(std::forward(args))...); @@ -726,7 +726,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co }, source, Lift(source, std::forward(args))...); } -@@ -700,6 +707,10 @@ ContentAutofillDriver::GetAutofillAgent() { +@@ -701,6 +708,10 @@ ContentAutofillDriver::GetAutofillAgent() { return autofill_agent_; } @@ -796,7 +796,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc -@@ -1615,17 +1615,19 @@ void AutofillAgent::ShowSuggestions( +@@ -1551,10 +1551,6 @@ void AutofillAgent::ShowSuggestions( password_generation_agent_->ShowPasswordGenerationSuggestions( input_element, form_cache)) { is_popup_possibly_visible_ = true; @@ -804,22 +804,9 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components - features::kAutofillAndroidKeyboardAccessoryDynamicPositioning)) { - return; - } -+#if !BUILDFLAG(IS_ANDROID) -+ return; -+#endif } -+ [[maybe_unused]] - bool password_agent_handled_request = TryShowPasswordSuggestions( - input_element, IsPasswordsAutofillManuallyTriggered(trigger_source), - password_request); -+#if !BUILDFLAG(IS_ANDROID) - if (password_agent_handled_request) { - return; - } -+#endif } - if (config_.secure_context_required && diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc --- a/components/autofill/content/renderer/password_autofill_agent.cc +++ b/components/autofill/content/renderer/password_autofill_agent.cc @@ -864,7 +851,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 -@@ -247,6 +247,8 @@ class AutofillManager +@@ -249,6 +249,8 @@ class AutofillManager LifecycleState new_state, base::PassKey pass_key); @@ -888,7 +875,7 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h --- a/components/autofill/core/browser/foundations/browser_autofill_manager.h +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h -@@ -457,6 +457,8 @@ class BrowserAutofillManager : public AutofillManager { +@@ -452,6 +452,8 @@ class BrowserAutofillManager : public AutofillManager { // latter check is needed because IPC messages can arrive out of order. void UpdateInitialInteractionTimestamp(base::TimeTicks interaction_timestamp); @@ -921,7 +908,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 -@@ -152,6 +152,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] = +@@ -153,6 +153,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] = // retention policy was run. inline constexpr char kAutocompleteLastVersionRetentionPolicy[] = "autocomplete.retention_policy_last_version"; @@ -936,7 +923,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc --- a/components/password_manager/core/browser/password_form_manager.cc +++ b/components/password_manager/core/browser/password_form_manager.cc -@@ -1196,6 +1196,10 @@ void PasswordFormManager::FillNow() { +@@ -1200,6 +1200,10 @@ void PasswordFormManager::FillNow() { } autofills_left_--; @@ -962,7 +949,7 @@ diff --git a/components/password_manager/core/browser/password_manager_client.cc diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h --- a/components/password_manager/core/browser/password_manager_client.h +++ b/components/password_manager/core/browser/password_manager_client.h -@@ -224,6 +224,8 @@ class PasswordManagerClient { +@@ -228,6 +228,8 @@ class PasswordManagerClient { virtual void ShowKeyboardReplacingSurface( PasswordManagerDriver* driver, const autofill::PasswordSuggestionRequest& request); diff --git a/build/patches/Experimental-support-for-extensions-on-Android.patch b/build/patches/Experimental-support-for-extensions-on-Android.patch index b71e4633a..02f8188ec 100644 --- a/build/patches/Experimental-support-for-extensions-on-Android.patch +++ b/build/patches/Experimental-support-for-extensions-on-Android.patch @@ -42,11 +42,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/tab/RequestDesktopUtils.java | 2 +- .../TabbedAppMenuPropertiesDelegate.java | 2 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- - .../browser/tasks/ReturnToChromeUtil.java | 2 +- .../browser/toolbar/ToolbarManager.java | 2 +- chrome/app/extensions_strings.grdp | 7 ++ chrome/app/theme/theme_resources.grd | 4 +- - chrome/browser/BUILD.gn | 6 +- + chrome/browser/BUILD.gn | 4 +- chrome/browser/about_flags.cc | 4 ++ ...chrome_selection_dropdown_menu_delegate.cc | 4 +- .../bookmarks/bar/BookmarkBarUtils.java | 6 +- @@ -74,7 +73,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../feedback/DeviceInfoFeedbackSource.java | 2 +- .../browser/flags/ChromeFeatureList.java | 6 +- .../browser/incognito/IncognitoUtils.java | 2 +- - .../magic_stack/HomeModulesConfigManager.java | 2 +- chrome/browser/media/router/BUILD.gn | 4 +- .../browser/media/router/discovery/BUILD.gn | 2 +- .../media/router/media_router_feature.cc | 10 +-- @@ -83,7 +81,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/open_in_app/OpenInAppUtils.java | 2 +- .../policy_value_and_status_aggregator.cc | 2 +- ...hrome_browser_main_extra_parts_profiles.cc | 2 +- - .../profiles/off_the_record_profile_impl.cc | 9 ++- + .../profiles/off_the_record_profile_impl.cc | 5 +- chrome/browser/profiles/profile_destroyer.cc | 2 +- chrome/browser/resources/BUILD.gn | 2 +- chrome/browser/resources/discards/BUILD.gn | 2 +- @@ -117,11 +115,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/ui/android/tab_model/tab_model.cc | 2 +- .../android/tab_model/tab_model_test_helper.h | 2 +- .../toolbar/java/res/layout/toolbar_phone.xml | 6 ++ - .../ExtensionToolbarCoordinatorImpl.java | 12 +++- .../extensions/ExtensionsMenuCoordinator.java | 8 ++- - .../ExtensionsMenuItemProperties.java | 5 +- + .../ExtensionsMenuItemProperties.java | 4 ++ .../ExtensionsMenuItemViewBinder.java | 2 + .../extensions/ExtensionsMenuMediator.java | 9 ++- + .../ExtensionsToolbarCoordinatorImpl.java | 9 +-- chrome/browser/ui/browser_window/BUILD.gn | 2 +- .../ChromeAndroidTaskTrackerFactory.java | 2 +- chrome/browser/ui/prefs/BUILD.gn | 4 +- @@ -205,7 +203,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/cr_elements/BUILD.gn | 2 +- .../cr_elements/cr_toolbar/cr_toolbar.css | 3 + ui/webui/resources/css/BUILD.gn | 2 +- - 193 files changed, 642 insertions(+), 309 deletions(-) + 191 files changed, 631 insertions(+), 306 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc @@ -214,7 +212,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn -@@ -1316,7 +1316,7 @@ declare_args() { +@@ -1315,7 +1315,7 @@ declare_args() { # logic more easily on an emulator, so the decision to use the arm64 # orderfile for x64 (instead of arm32) is somewhat arbitrary. We just # needed to use some real orderfile. @@ -226,15 +224,15 @@ diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn diff --git a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn --- a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn +++ b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn -@@ -170,6 +170,8 @@ pa_buildflag_header("buildflags") { +@@ -171,6 +171,8 @@ pa_buildflag_header("buildflags") { "HAS_64_BIT_POINTERS=$has_64_bit_pointers", "HAS_MEMORY_TAGGING=$has_memory_tagging", "IS_ANDROID=$is_android", + "IS_DESKTOP_ANDROID_FALSE=false", + "IS_DESKTOP_ANDROID_CROMITE=$is_desktop_android_cromite", "IS_CASTOS=$is_castos", - "IS_CAST_ANDROID=$is_cast_android", "IS_CHROMEOS=$is_chromeos", + "IS_DEBUG=$partition_alloc_is_debug", diff --git a/base/android/device_info.cc b/base/android/device_info.cc --- a/base/android/device_info.cc +++ b/base/android/device_info.cc @@ -279,7 +277,7 @@ diff --git a/base/android/device_info.h b/base/android/device_info.h diff --git a/base/android/java/src/org/chromium/base/DeviceInfo.java b/base/android/java/src/org/chromium/base/DeviceInfo.java --- a/base/android/java/src/org/chromium/base/DeviceInfo.java +++ b/base/android/java/src/org/chromium/base/DeviceInfo.java -@@ -143,10 +143,14 @@ public final class DeviceInfo { +@@ -152,10 +152,14 @@ public final class DeviceInfo { return getInstance().mIDeviceInfo.isFoldable; } @@ -295,7 +293,7 @@ diff --git a/base/android/java/src/org/chromium/base/DeviceInfo.java b/base/andr public static int getVulkanDeqpLevel() { return getInstance().mIDeviceInfo.vulkanDeqpLevel; } -@@ -308,7 +312,7 @@ public final class DeviceInfo { +@@ -320,7 +324,7 @@ public final class DeviceInfo { mIDeviceInfo.isDesktop = (sIsDesktopForTesting != null) ? sIsDesktopForTesting @@ -338,7 +336,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 -@@ -2047,8 +2047,8 @@ if (!is_robolectric && enable_java_templates) { +@@ -2048,8 +2048,8 @@ if (!is_robolectric && enable_java_templates) { } else { defines += [ "_LOGTAG_PREFIX=cr_" ] } @@ -416,7 +414,7 @@ diff --git a/cc/resources/ui_resource_bitmap.cc b/cc/resources/ui_resource_bitma diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -981,7 +981,7 @@ if (_is_default_toolchain) { +@@ -990,7 +990,7 @@ if (_is_default_toolchain) { "//chrome/browser/password_entry_edit/android/internal:java", ] @@ -425,7 +423,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += [ "//chrome/browser/ui/android/extensions/windowing/internal:java" ] } else { -@@ -2367,7 +2367,7 @@ if (_is_default_toolchain) { +@@ -2393,7 +2393,7 @@ if (_is_default_toolchain) { "//components/embedder_support/android:virtual_structure_javatests", ] @@ -449,7 +447,7 @@ diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_p diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -558,9 +558,6 @@ by a child template that "extends" this file. +@@ -550,9 +550,6 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.TabbedMode" android:exported="true" android:launchMode="singleTask" @@ -523,7 +521,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 -@@ -1195,7 +1195,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -1225,7 +1225,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !shouldShowReaderModePrefs(currentTab) && currentTab != null && currentTab.getWebContents() != null @@ -547,15 +545,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appearance/sett diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java -@@ -415,7 +415,7 @@ public class StripLayoutUtils { +@@ -415,6 +415,6 @@ public class StripLayoutUtils { public static boolean shouldApplyMoreDensity() { return ChromeFeatureList.sTabStripDensityChangeAndroid.isEnabled() - && DeviceInfo.isDesktop(); + && DeviceInfo.isDesktopFalse(); } - - // Testing booleans + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java @@ -571,7 +568,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/De diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java -@@ -225,7 +225,7 @@ public class MultiWindowUtils implements ActivityStateListener { +@@ -216,7 +216,7 @@ public class MultiWindowUtils implements ActivityStateListener { return TabWindowManager.MAX_SELECTORS_LEGACY; } @@ -670,7 +667,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesk 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 -@@ -1004,7 +1004,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -1022,7 +1022,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // 2. The current tab is a PDF page. NativePage nativePage = currentTab.getNativePage(); boolean isPdf = nativePage != null && nativePage.isPdf(); @@ -682,7 +679,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -650,7 +650,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -672,7 +672,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { }); mCrossDeviceSettingImporter = @@ -691,7 +688,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab ? null : new CrossDeviceSettingImporter( activityLifecycleDispatcher, -@@ -2224,7 +2224,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -2357,7 +2357,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } else if (id == R.id.toggle_bookmark_bar) { // isActivityStateBookmarkBarCompatible already checks the flag sAndroidBookmarkBar. if (BookmarkBarUtils.isActivityStateBookmarkBarCompatible(mActivity)) { @@ -700,22 +697,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Desktop uses the synced UserPref. BookmarkBarUtils.toggleUserPrefsShowBookmarksBar( mProfileSupplier.get(), /* fromKeyboardShortcut= */ true); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -@@ -133,7 +133,7 @@ public final class ReturnToChromeUtil { - PersistableBundle persistableBundle, - ChromeInactivityTracker inactivityTracker) { - // If the device is android desktop, don't show a NTP homepage. -- if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktop()) { -+ if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktopFalse()) { - return false; - } - 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 -@@ -2391,7 +2391,7 @@ public class ToolbarManager +@@ -2526,7 +2526,7 @@ public class ToolbarManager mActivityTabProvider.asObservable(), mTabCreatorManager.getTabCreator(false), getBrowsingModeThemeColorProvider(), @@ -723,7 +708,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar + mToolbarLayout, contextMenuPopulatorFactory, selectionDropdownMenuDelegate); - if (mExtensionToolbarCoordinator != null) { + if (mExtensionsToolbarCoordinator != null) { diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp --- a/chrome/app/extensions_strings.grdp +++ b/chrome/app/extensions_strings.grdp @@ -768,16 +753,7 @@ diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resou diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7466,7 +7466,7 @@ static_library("browser") { - deps += [ "//media/mojo/mojom:remoting" ] - } - -- if (is_android && !enable_desktop_android_extensions) { -+ if (is_android && !enable_desktop_android_extensions_cromite) { - sources += [ "download/download_crx_util_android.cc" ] - } - -@@ -7810,7 +7810,7 @@ static_library("browser") { +@@ -7267,7 +7267,7 @@ static_library("browser") { # TODO(https://crbug.com/356905053): Add more dependencies here and merge this # block with the `enable_extensions` block above. @@ -786,7 +762,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn sources += [ # TODO(https://crbug.com/356905053): These files are temporary workarounds # allow for a lightweight extensions runtime in desktop-android builds. -@@ -8590,7 +8590,7 @@ static_library("browser_generated_files") { +@@ -7894,7 +7894,7 @@ group("browser_generated_files") { [ "//chrome/browser/ui/webui/new_tab_page/foo:mojo_bindings" ] } } @@ -798,7 +774,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -385,6 +385,10 @@ +@@ -389,6 +389,10 @@ #include "extensions/common/switches.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -885,7 +861,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom 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 -@@ -396,7 +396,7 @@ void BrowserProcessImpl::Init() { +@@ -399,7 +399,7 @@ void BrowserProcessImpl::Init() { // TODO(devlin): Move this block out of BrowserProcessImpl to somewhere like // //chrome/browser/initialize_extensions_browser_client, analogous to // `EnsureExtensionsClientInitialized()` above? @@ -1051,7 +1027,7 @@ diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chro diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc --- a/chrome/browser/chrome_browser_interface_binders_webui.cc +++ b/chrome/browser/chrome_browser_interface_binders_webui.cc -@@ -48,7 +48,7 @@ +@@ -52,7 +52,7 @@ #include "mojo/public/cpp/bindings/binder_map.h" #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -1060,7 +1036,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b #include "chrome/browser/ui/webui/discards/discards.mojom.h" #include "chrome/browser/ui/webui/discards/discards_ui.h" #include "chrome/browser/ui/webui/discards/site_data.mojom.h" -@@ -165,7 +165,7 @@ void PopulateChromeWebUIFrameBinders( +@@ -178,7 +178,7 @@ void PopulateChromeWebUIFrameBinders( #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -1072,7 +1048,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b 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 -@@ -4379,7 +4379,7 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( +@@ -4365,7 +4365,7 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( // TODO(wenz): This should instead proceed with the selected certificate // when there are matching certificates in the OS. #if BUILDFLAG(ENABLE_EXTENSIONS) && \ @@ -1081,7 +1057,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch if (matching_certificates.empty() && nonmatching_certificates.empty()) { extensions::ProcessMap* process_map = extensions::ProcessMap::Get(profile); -@@ -4611,7 +4611,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences( +@@ -4648,7 +4648,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences( // Fill font preferences. These are not registered on Android unless we're built // with extensions (the chrome.fontSettings API can change these). // - http://crbug.com/40337093, http://crbug.com/41304476. @@ -1093,7 +1069,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn --- a/chrome/browser/devtools/BUILD.gn +++ b/chrome/browser/devtools/BUILD.gn -@@ -356,7 +356,7 @@ static_library("devtools") { +@@ -363,7 +363,7 @@ static_library("devtools") { } } @@ -1105,7 +1081,7 @@ diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc --- a/chrome/browser/download/chrome_download_manager_delegate.cc +++ b/chrome/browser/download/chrome_download_manager_delegate.cc -@@ -749,7 +749,7 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( +@@ -745,7 +745,7 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( DownloadPathReservationTracker::FilenameConflictAction action = kDefaultPlatformConflictAction; #if BUILDFLAG(IS_ANDROID) @@ -1138,7 +1114,7 @@ diff --git a/chrome/browser/download/download_offline_content_provider.cc b/chro 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 -@@ -1736,7 +1736,7 @@ source_set("chrome_extensions_browser_client") { +@@ -1697,7 +1697,7 @@ source_set("chrome_extensions_browser_client") { "//extensions/browser/updater", ] @@ -1147,7 +1123,7 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUIL sources += [ "chrome_extensions_browser_client_android.cc" ] deps += [ -@@ -1751,6 +1751,16 @@ source_set("chrome_extensions_browser_client") { +@@ -1712,6 +1712,16 @@ source_set("chrome_extensions_browser_client") { "//extensions/browser", "//extensions/browser/kiosk", ] @@ -1230,7 +1206,7 @@ diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.h b/chrome/bro diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc --- a/chrome/browser/extensions/api/tabs/tabs_api.cc +++ b/chrome/browser/extensions/api/tabs/tabs_api.cc -@@ -1693,6 +1693,9 @@ base::ListValue TabsQueryFunction::BuildTabList( +@@ -1725,6 +1725,9 @@ base::ListValue TabsQueryFunction::BuildTabList( } TabListInterface* tab_list = TabListInterface::From(browser); @@ -1287,7 +1263,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br CHECK(web_contents); // Removing a tab can affect the indices of all existing tabs in the tab -@@ -513,6 +527,9 @@ void TabsEventRouter::OnTabMoved(TabListInterface& tab_list, +@@ -509,6 +523,9 @@ void TabsEventRouter::OnTabMoved(TabListInterface& tab_list, int to_index) { CHECK(tab); content::WebContents* web_contents = tab->GetContents(); @@ -1297,7 +1273,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br CHECK(web_contents); // Moving tab can affect the indices of all existing tabs in the tab list -@@ -551,6 +568,9 @@ void TabsEventRouter::OnHighlightedTabsChanged( +@@ -547,6 +564,9 @@ void TabsEventRouter::OnHighlightedTabsChanged( for (tabs::TabInterface* tab : highlighted_tabs) { content::WebContents* web_contents = tab->GetContents(); @@ -1310,7 +1286,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/chrome/browser/extensions/browser_extension_window_controller.cc --- a/chrome/browser/extensions/browser_extension_window_controller.cc +++ b/chrome/browser/extensions/browser_extension_window_controller.cc -@@ -105,14 +105,22 @@ BrowserExtensionWindowController::BrowserExtensionWindowController( +@@ -109,14 +109,22 @@ BrowserExtensionWindowController::BrowserExtensionWindowController( #if !BUILDFLAG(IS_ANDROID) window_(CHECK_DEREF(browser->GetBrowserForMigrationOnly()->window())), #endif // !BUILDFLAG(IS_ANDROID) @@ -1334,7 +1310,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/ WindowControllerList::GetInstance()->RemoveExtensionWindow(this); } -@@ -122,6 +130,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From( +@@ -126,6 +134,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From( browser_window_interface->GetUnownedUserDataHost()); } @@ -1348,7 +1324,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/ int BrowserExtensionWindowController::GetWindowId() const { return static_cast(session_id_.id()); } -@@ -268,7 +283,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList( +@@ -272,7 +287,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList( ExtensionTabUtil::GetScrubTabBehavior(extension, context, web_contents); tab_list.Append( ExtensionTabUtil::CreateTabObject(web_contents, scrub_tab_behavior, @@ -1397,7 +1373,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.h b/c diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc -@@ -177,8 +177,12 @@ ManagedInstallationMode ExtensionManagement::GetInstallationMode( +@@ -178,8 +178,12 @@ ManagedInstallationMode ExtensionManagement::GetInstallationMode( update_url ? *update_url : std::string()); } @@ -1411,7 +1387,7 @@ diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/ std::string user_name = profile_->GetProfileUserName(); // Crude check to avoid passing invalid strings to `ExtractDomainName`. if (user_name.contains("@")) { -@@ -195,7 +199,7 @@ bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const { +@@ -196,7 +200,7 @@ bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const { ManagedInstallationMode ExtensionManagement::GetInstallationMode( const ExtensionId& extension_id, const std::string& update_url) { @@ -1470,7 +1446,7 @@ diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/fe - return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop()) + return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopCromite()) && FeedServiceBridge.isEnabled() - && isFeedEnabledByDSE(profile); + && isFeedEnabledByDse(profile); } diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java --- a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java @@ -1487,16 +1463,16 @@ diff --git a/chrome/browser/feedback/android/java/src/org/chromium/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 -@@ -767,7 +767,7 @@ public abstract class ChromeFeatureList { +@@ -793,7 +793,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidNewMediaPicker = newCachedFlag(ANDROID_NEW_MEDIA_PICKER, false); public static final CachedFlag sAndroidOpenIncognitoAsWindow = - newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID, true); + newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID_FALSE, false); + public static final CachedFlag sAndroidPageInfoAsAppMenuItem = + newCachedFlag(ANDROID_PAGE_INFO_AS_APP_MENU_ITEM, false); public static final CachedFlag sAndroidProgressBarVisualUpdate = - newCachedFlag( - ANDROID_PROGRESS_BAR_VISUAL_UPDATE, -@@ -891,7 +891,7 @@ public abstract class ChromeFeatureList { +@@ -927,7 +927,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sChromeItemPickerUi = newCachedFlag(CHROME_ITEM_PICKER_UI, /* defaultValue= */ false); public static final CachedFlag sChromeNativeUrlOverriding = @@ -1505,7 +1481,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sClampAutomotiveScaling = newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true); public static final CachedFlag sClankStartupLatencyInjection = -@@ -1067,7 +1067,7 @@ public abstract class ChromeFeatureList { +@@ -1122,7 +1122,7 @@ public abstract class ChromeFeatureList { newCachedFlag(POWER_SAVING_MODE_BROADCAST_RECEIVER_IN_BACKGROUND, true); public static final CachedFlag sPriceChangeModule = newCachedFlag(PRICE_CHANGE_MODULE, true); public static final CachedFlag sProtectRecentlyVisibleTab = @@ -1526,22 +1502,10 @@ diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/brows || ThreadUtils.runOnUiThreadBlocking( () -> DisplayUtil.isGlobalDefaultDisplayWithMinDiagonal( -diff --git a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java ---- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java -+++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java -@@ -89,7 +89,7 @@ public class HomeModulesConfigManager { - */ - public boolean getPrefModuleTypeEnabled(@ModuleType int moduleType) { - boolean defaultEnabled = -- !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop(); -+ !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopFalse(); - return mSharedPreferencesManager.readBoolean( - getSettingsPreferenceKey(moduleType), defaultEnabled); - } diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/BUILD.gn --- a/chrome/browser/media/router/BUILD.gn +++ b/chrome/browser/media/router/BUILD.gn -@@ -261,7 +261,7 @@ static_library("test_support") { +@@ -262,7 +262,7 @@ static_library("test_support") { deps = [] sources = [] @@ -1550,7 +1514,7 @@ diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/ deps += [ "//base", "//chrome/browser/media/router/discovery", -@@ -412,7 +412,7 @@ source_set("unittests") { +@@ -413,7 +413,7 @@ source_set("unittests") { } # Traditional desktop platforms and desktop android with extensions support. @@ -1634,7 +1598,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.h b/chrome/browser diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc --- a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc -@@ -112,7 +112,7 @@ class PeerConnectionTrackerProxyImpl +@@ -113,7 +113,7 @@ class PeerConnectionTrackerProxyImpl // necessarily for any given user profile. // Certain platforms (mobile) are blocked from remote-bound logging. bool IsRemoteLoggingFeatureEnabled() { @@ -1643,7 +1607,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/br bool enabled = false; #else bool enabled = true; -@@ -464,7 +464,7 @@ WebRtcEventLogManager::CreateRemoteLogFileWriterFactory() { +@@ -465,7 +465,7 @@ WebRtcEventLogManager::CreateRemoteLogFileWriterFactory() { if (remote_log_file_writer_factory_for_testing_) { return std::move(remote_log_file_writer_factory_for_testing_); } else { @@ -1679,7 +1643,7 @@ diff --git a/chrome/browser/policy/policy_value_and_status_aggregator.cc b/chrom diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -663,7 +663,7 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -669,7 +669,7 @@ void ChromeBrowserMainExtraPartsProfiles:: chromeos_extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); #endif extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); @@ -1691,36 +1655,25 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -108,6 +108,8 @@ - #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +@@ -110,6 +110,7 @@ #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" -+#include "extensions/browser/api/web_request/extension_web_request_event_router.h" + #include "extensions/browser/api/web_request/extension_web_request_event_router.h" +#include "extensions/browser/process_manager.h" #endif - #if BUILDFLAG(ENABLE_EXTENSIONS) -@@ -216,7 +218,10 @@ void OffTheRecordProfileImpl::Init() { + #if BUILDFLAG(ENABLE_GUEST_VIEW) +@@ -209,7 +210,9 @@ void OffTheRecordProfileImpl::Init() { + // Make the chrome//extension-icon/ resource available. + content::URLDataSource::Add( this, std::make_unique(profile_)); - #endif - --#if BUILDFLAG(ENABLE_EXTENSIONS) -+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +- + if (extensions::ProcessManager* process_manager = extensions::ProcessManager::Get(this)) { + process_manager->MaybeCreateStartupBackgroundHosts(); + } extensions::WebRequestEventRouter::OnOTRBrowserContextCreated(profile_, this); - #endif - -@@ -275,7 +280,7 @@ OffTheRecordProfileImpl::~OffTheRecordProfileImpl() { - - SimpleKeyMap::GetInstance()->Dissociate(this); + #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) --#if BUILDFLAG(ENABLE_EXTENSIONS) -+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) - extensions::WebRequestEventRouter::OnOTRBrowserContextDestroyed(profile_, - this); - #endif diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc --- a/chrome/browser/profiles/profile_destroyer.cc +++ b/chrome/browser/profiles/profile_destroyer.cc @@ -1742,9 +1695,9 @@ diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD. - if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) { + if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) { - public_deps += [ "discards:resources" ] - } - + public_deps += [ + "discards:resources", + "management:resources", diff --git a/chrome/browser/resources/discards/BUILD.gn b/chrome/browser/resources/discards/BUILD.gn --- a/chrome/browser/resources/discards/BUILD.gn +++ b/chrome/browser/resources/discards/BUILD.gn @@ -1822,7 +1775,7 @@ diff --git a/chrome/browser/resources/extensions/item_list.css b/chrome/browser/ diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browser/resources/extensions/toolbar.html.ts --- a/chrome/browser/resources/extensions/toolbar.html.ts +++ b/chrome/browser/resources/extensions/toolbar.html.ts -@@ -25,13 +25,6 @@ export function getHtml(this: ToolbarElement) { +@@ -26,13 +26,6 @@ export function getHtml(this: ToolbarElement) { aria-labelledby="devModeLabel">
@@ -1860,7 +1813,7 @@ diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java -@@ -285,7 +285,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { +@@ -305,7 +305,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { } private void maybeAddCollaborateFirstPartyOption() { @@ -1869,7 +1822,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s return; } FirstPartyOption option = createCollaborateFirstPartyOption(); -@@ -317,7 +317,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { +@@ -337,7 +337,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { private void maybeAddPrintFirstPartyOption() { // For the desktop case, the Print action will be showed in the main menu. @@ -1953,7 +1906,7 @@ diff --git a/chrome/browser/task_manager/common/task_manager_features.cc b/chrom 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 -@@ -706,7 +706,7 @@ static_library("ui") { +@@ -719,7 +719,7 @@ static_library("ui") { } # Desktop-Android-only dependencies. @@ -1962,7 +1915,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ] } -@@ -2975,7 +2975,7 @@ static_library("ui") { +@@ -3022,7 +3022,7 @@ static_library("ui") { allow_circular_includes_from += [ "//chrome/browser/ui/wallet" ] } @@ -2076,8 +2029,8 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/extensions/BUILD.gn b/chrome/browser/ui/android/extensions/BUILD.gn --- a/chrome/browser/ui/android/extensions/BUILD.gn +++ b/chrome/browser/ui/android/extensions/BUILD.gn -@@ -88,8 +88,8 @@ if (enable_extensions_core) { - # BuildConfig. +@@ -87,8 +87,8 @@ if (enable_extensions_core) { + java_cpp_template("generate_buildflags") { sources = [ "java/templates/ExtensionsBuildflags.template" ] - if (enable_desktop_android_extensions) { @@ -2106,9 +2059,9 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ #include "chrome/browser/ui/android/extensions/jni_headers/ExtensionAction_jni.h" #include "chrome/browser/ui/android/extensions/jni_headers/ExtensionActionsBridge_jni.h" -@@ -34,6 +37,26 @@ void ExtensionActionsBridge::Destroy(JNIEnv* env) { - delete this; - } +@@ -28,6 +31,26 @@ ExtensionActionsBridge::ExtensionActionsBridge( + + ExtensionActionsBridge::~ExtensionActionsBridge() = default; +void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { + auto install_directory = profile_->GetPath().AppendASCII(kInstallDirectoryName); @@ -2130,24 +2083,24 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ + install_directory, install_updacked_directory)); +} + - jni_zero::ScopedJavaLocalRef - ExtensionActionsBridge::HandleKeyDownEvent( - JNIEnv* env, + void ExtensionActionsBridge::Destroy(JNIEnv* env) { + delete this; + } diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/chrome/browser/ui/android/extensions/extension_actions_bridge.h --- a/chrome/browser/ui/android/extensions/extension_actions_bridge.h +++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.h -@@ -30,6 +30,7 @@ class ExtensionActionsBridge { +@@ -26,6 +26,7 @@ class ExtensionActionsBridge { + ~ExtensionActionsBridge(); // JNI implementations. - void Destroy(JNIEnv* env); + void ClearExtensionData(JNIEnv* env); - jni_zero::ScopedJavaLocalRef HandleKeyDownEvent( - JNIEnv* env, - const ui::KeyEventAndroid& key_event); + void Destroy(JNIEnv* env); + + private: diff --git a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc --- a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc +++ b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc -@@ -159,6 +159,7 @@ base::android::ScopedJavaLocalRef ExtensionsToolbarAndroid::GetAction( +@@ -183,6 +183,7 @@ base::android::ScopedJavaLocalRef ExtensionsToolbarAndroid::GetAction( content::WebContents* web_contents) { ToolbarActionViewModel* action = toolbar_view_model_->GetActionModelForId(action_id); @@ -2158,36 +2111,36 @@ diff --git a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc diff --git a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml --- a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml +++ b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml -@@ -76,6 +76,7 @@ found in the LICENSE file. - - + +@@ -54,6 +55,7 @@ found in the LICENSE file. - + style="@style/ExtensionsMenuFooterRow" + tools:ignore="UseCompoundDrawables" > + +@@ -70,4 +72,4 @@ found in the LICENSE file. + + - \ No newline at end of file @@ -2195,17 +2148,19 @@ diff --git a/chrome/browser/ui/android/extensions/java/res/layout/extensions_men diff --git a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml --- a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml +++ b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml -@@ -7,4 +7,5 @@ found in the LICENSE file. +@@ -14,6 +14,7 @@ found in the LICENSE file. + 20dp - - 400dp + + 50dp - + 4dp + 20dp + 2dp diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java -@@ -87,6 +87,10 @@ public class ExtensionActionsBridge implements Destroyable { - .handleKeyDownEvent(mNativeExtensionActionsBridge, event); +@@ -45,12 +45,18 @@ public class ExtensionActionsBridge implements Destroyable { + return ExtensionActionsBridgeJni.get().extensionsEnabled(profile); } + public void clearExtensionData() { @@ -2215,15 +2170,14 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b @NativeMethods public interface Natives { boolean extensionsEnabled(@JniType("Profile*") Profile profile); -@@ -95,6 +99,8 @@ public class ExtensionActionsBridge implements Destroyable { - void destroy(long nativeExtensionActionsBridge); + long init(ExtensionActionsBridge bridge, long browserWindowInterfacePtr); + void clearExtensionData(long nativeExtensionActionsBridge); + - HandleKeyEventResult handleKeyDownEvent( - long nativeExtensionActionsBridge, - @JniType("ui::KeyEventAndroid") KeyEvent keyEvent); + void destroy(long nativeExtensionActionsBridge); + } + } diff --git a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn --- a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn +++ b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn @@ -2333,7 +2287,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/android/tab_model/tab_model.cc b/chrome/browser/ui/android/tab_model/tab_model.cc --- a/chrome/browser/ui/android/tab_model/tab_model.cc +++ b/chrome/browser/ui/android/tab_model/tab_model.cc -@@ -173,7 +173,7 @@ bool TabListInterface::CanEditTabList(Profile& profile) { +@@ -183,7 +183,7 @@ bool TabListInterface::CanEditTabList(Profile& profile) { // static bool TabModel::EnableBrowserWindowInterfaceMobile() { @@ -2345,7 +2299,7 @@ diff --git a/chrome/browser/ui/android/tab_model/tab_model.cc b/chrome/browser/u diff --git a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h --- a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h +++ b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h -@@ -129,7 +129,7 @@ class TestTabModel : public TabModel { +@@ -133,7 +133,7 @@ class TestTabModel : public TabModel { // BrowserWindowInterface is available on desktop Android, but not other Android // builds. @@ -2358,7 +2312,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml @@ -65,6 +65,12 @@ found in the LICENSE file. - android:layout_height="wrap_content" + android:layout_height="match_parent" android:visibility="gone"/> + { -+ if (!ExtensionUi.isEnabled(profileSupplier.get())) { -+ container.setVisibility(View.GONE); -+ } -+ }); -+ - mExtensionActionListCoordinator = - new ExtensionActionListCoordinator( - context, -@@ -93,7 +100,8 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - currentTabSupplier, - tabCreator, - mExtensionsToolbarBridge, -- mContainer.findViewById(R.id.extensions_request_access_button)); -+ mContainer.findViewById(R.id.extensions_request_access_button), -+ mExtensionActionListCoordinator); - } - - @Override -@@ -148,7 +156,7 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - } - - private void setHasSpaceToShow(boolean hasSpaceToShow) { -- int visibility = hasSpaceToShow ? View.VISIBLE : View.GONE; -+ int visibility = View.VISIBLE; - mContainer.findViewById(R.id.extensions_menu_button).setVisibility(visibility); - mContainer.findViewById(R.id.extensions_divider).setVisibility(visibility); - } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java -@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.tab.TabLaunchType; - import org.chromium.chrome.browser.tabmodel.TabCreator; +@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.theme.ThemeColorProvider; import org.chromium.chrome.browser.toolbar.MenuBuilderHelper; + import org.chromium.chrome.browser.toolbar.extensions.ExtensionsToolbarCoordinatorImpl.MenuButtonPinningDelegate; +import org.chromium.chrome.browser.toolbar.extensions.ExtensionActionListCoordinator; import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.extensions.ExtensionsToolbarBridge; import org.chromium.chrome.browser.ui.extensions.R; -@@ -63,6 +64,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar +@@ -67,6 +68,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar private final ExtensionsToolbarBridge mExtensionsToolbarBridge; - + private final MenuButtonPinningDelegate mMenuButtonPinningDelegate; private final ThemeColorProvider.TintObserver mTintObserver = this::onTintChanged; + private final ExtensionActionListCoordinator mExtensionActionListCoordinator; @Nullable @VisibleForTesting ExtensionsMenuMediator mMediator; -@@ -84,7 +86,9 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar - Profile profile, +@@ -93,7 +95,9 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar NullableObservableSupplier currentTabSupplier, TabCreator tabCreator, -- ExtensionsToolbarBridge extensionsToolbarBridge) { -+ ExtensionsToolbarBridge extensionsToolbarBridge, + ExtensionsToolbarBridge extensionsToolbarBridge, +- MenuButtonPinningDelegate menuButtonPinningDelegate) { ++ MenuButtonPinningDelegate menuButtonPinningDelegate, + ExtensionActionListCoordinator extensionActionListCoordinator) { + mExtensionActionListCoordinator = extensionActionListCoordinator; mContext = context; mCurrentTabSupplier = currentTabSupplier; mProfile = profile; -@@ -184,7 +188,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar - mPropertyModel, +@@ -212,7 +216,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar + mSitePermissionsPageModel, /* onReady= */ () -> { mExtensionsMenuButton.showMenu(); - }); @@ -2455,7 +2366,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/extensions/ExtensionsMenuItemProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java -@@ -27,11 +27,14 @@ public class ExtensionsMenuItemProperties { +@@ -29,6 +29,9 @@ public class ExtensionsMenuItemProperties { public static final WritableIntPropertyKey CONTEXT_MENU_BUTTON_ICON = new WritableIntPropertyKey(); @@ -2465,16 +2376,18 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow public static final WritableObjectPropertyKey CONTEXT_MENU_BUTTON_ON_CLICK = new WritableObjectPropertyKey<>(); +@@ -58,6 +61,7 @@ public class ExtensionsMenuItemProperties { + public static final PropertyKey[] ALL_KEYS = new PropertyKey[] { -- EXTENSION_ID, ICON, TITLE, CONTEXT_MENU_BUTTON_ICON, CONTEXT_MENU_BUTTON_ON_CLICK -+ EXTENSION_ID, ICON, TITLE, ITEM_CLICK_LISTENER, CONTEXT_MENU_BUTTON_ICON, CONTEXT_MENU_BUTTON_ON_CLICK - }; - } ++ ITEM_CLICK_LISTENER, + EXTENSION_ID, + ICON, + TITLE, diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java -@@ -33,6 +33,8 @@ public class ExtensionsMenuItemViewBinder { +@@ -35,6 +35,8 @@ public class ExtensionsMenuItemViewBinder { // TODO: Investigate the correct resizing method. bitmap.setDensity(120); } @@ -2494,7 +2407,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.extensions.ExtensionActionContextMenuBridge; import org.chromium.chrome.browser.ui.extensions.ExtensionsMenuBridge; -@@ -43,6 +44,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -44,6 +45,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ private final Runnable mOnReady; private final ChromeAndroidTask mTask; private final Profile mProfile; @@ -2502,10 +2415,10 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * @param context The context to use. -@@ -58,7 +60,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - NullableObservableSupplier currentTabSupplier, +@@ -63,7 +65,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ModelList actionModels, - PropertyModel propertyModel, + PropertyModel mainPageModel, + PropertyModel sitePermissionsPropertyModel, - Runnable onReady) { + Runnable onReady, + ExtensionActionListCoordinator extensionActionListCoordinator) { @@ -2513,7 +2426,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mActionModels = actionModels; mContext = context; mCurrentTabSupplier = currentTabSupplier; -@@ -218,6 +222,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -334,6 +338,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ON_CLICK, (view) -> onContextMenuButtonClicked((ListMenuButton) view, entry.id)) @@ -2523,6 +2436,44 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow .with( ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ICON, contextMenuIcon) +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +@@ -87,13 +87,13 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + ViewGroup rootView, + @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, + @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { +- mBridge = new ExtensionActionsBridge(task, profile); ++ mBridge = ExtensionActionsBridge.Instance(); + mProfile = profile; + + extensionsToolbarStub.setLayoutResource(R.layout.extensions_toolbar_container); + mContainer = (LinearLayout) extensionsToolbarStub.inflate(); + +- mExtensionsToolbarBridge = new ExtensionsToolbarBridge(task, profile); ++ mExtensionsToolbarBridge = ExtensionsToolbarBridge.Instance(); + + mPrefService = UserPrefs.get(profile); + +@@ -101,6 +101,7 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + new ExtensionActionListCoordinator( + context, + mContainer.findViewById(R.id.extension_action_list), ++ mContainer.findViewById(R.id.extensions_menu_button), + windowAndroid, + task, + profile, +@@ -152,8 +153,8 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + mExtensionAccessControlButtonCoordinator.destroy(); + mExtensionsMenuCoordinator.destroy(); + mExtensionActionListCoordinator.destroy(); +- mExtensionsToolbarBridge.destroy(); +- mBridge.destroy(); ++ // mExtensionsToolbarBridge.destroy(); ++ // mBridge.destroy(); + + LifetimeAssert.setSafeToGc(mLifetimeAssert, true); + } diff --git a/chrome/browser/ui/browser_window/BUILD.gn b/chrome/browser/ui/browser_window/BUILD.gn --- a/chrome/browser/ui/browser_window/BUILD.gn +++ b/chrome/browser/ui/browser_window/BUILD.gn @@ -2617,17 +2568,17 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u - BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE) #include "chrome/browser/ui/webui/discards/discards_ui.h" + #include "chrome/browser/ui/webui/management/management_ui.h" #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || - // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) -@@ -423,7 +423,7 @@ void RegisterChromeWebUIConfigs() { +@@ -426,7 +426,7 @@ void RegisterChromeWebUIConfigs() { // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE) map.AddWebUIConfig(std::make_unique()); + map.AddWebUIConfig(std::make_unique()); #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || - // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) diff --git a/chrome/browser/ui/webui/current_channel_logo.cc b/chrome/browser/ui/webui/current_channel_logo.cc --- a/chrome/browser/ui/webui/current_channel_logo.cc +++ b/chrome/browser/ui/webui/current_channel_logo.cc @@ -2689,13 +2640,13 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni - if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) { + if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) { - sources += [ "$root_gen_dir/chrome/discards_resources.pak" ] - deps += [ "//chrome/browser/resources/discards:resources" ] - } + sources += [ + "$root_gen_dir/chrome/discards_resources.pak", + "$root_gen_dir/chrome/management_resources.pak", diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc -@@ -805,7 +805,7 @@ const char kMarketUrlForTesting[] = "market-url-for-testing"; +@@ -755,7 +755,7 @@ const char kMarketUrlForTesting[] = "market-url-for-testing"; const char kRequestDesktopSites[] = "request-desktop-sites"; #endif // BUILDFLAG(IS_ANDROID) @@ -2707,7 +2658,7 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h -@@ -239,7 +239,7 @@ extern const char kMarketUrlForTesting[]; +@@ -228,7 +228,7 @@ extern const char kMarketUrlForTesting[]; extern const char kRequestDesktopSites[]; #endif // BUILDFLAG(IS_ANDROID) @@ -2736,7 +2687,7 @@ diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extens 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 -@@ -254,7 +254,7 @@ base::span ChromeURLHosts() { +@@ -255,7 +255,7 @@ base::span ChromeURLHosts() { ash::kChromeUIInternetDetailDialogHost, #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -2748,7 +2699,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -430,7 +430,7 @@ bool IsSystemWebUIHost(std::string_view host); +@@ -444,7 +444,7 @@ bool IsSystemWebUIHost(std::string_view host); #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -2791,7 +2742,7 @@ diff --git a/chrome/renderer/sandbox_status_extension_android.h b/chrome/rendere diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -391,7 +391,7 @@ static_library("test_support") { +@@ -385,7 +385,7 @@ static_library("test_support") { ] } @@ -2800,7 +2751,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn public_deps += [ "//extensions/browser:test_support", "//extensions/common:test_support", -@@ -503,7 +503,7 @@ static_library("test_support") { +@@ -498,7 +498,7 @@ static_library("test_support") { # TODO(https://crbug.com/356905053): Continue pulling more common test # support pieces into here and eventually merge this with the # `enable_extensions` block above. @@ -2809,7 +2760,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/extensions/test_extension_menu_model_android.cc", "../browser/extensions/test_extension_menu_model_android.h", -@@ -1599,7 +1599,7 @@ source_set("platform_browser_tests") { +@@ -1586,7 +1586,7 @@ source_set("platform_browser_tests") { sources += [ "../browser/enterprise/remote_commands/user_remote_commands_service_browsertest.cc" ] } @@ -2818,7 +2769,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn deps += [ "//chrome/browser/ui/prefs:browser_tests" ] } -@@ -1906,7 +1906,7 @@ source_set("platform_browser_tests") { +@@ -1896,7 +1896,7 @@ source_set("platform_browser_tests") { if (enable_guest_view) { deps += [ "//components/guest_view/browser" ] } @@ -2827,7 +2778,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/devtools/global_confirm_info_bar_browsertest.cc" ] } -@@ -2204,7 +2204,7 @@ if (is_android) { +@@ -2208,7 +2208,7 @@ if (is_android) { extra_args = [] # TODO(crbug.com/473636857): Include once all Android builds correctly use BrowserWindowInterface. @@ -2836,7 +2787,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/ui/android/browser_navigator_android_browsertest.cc" ] deps += [ -@@ -2301,7 +2301,7 @@ if (is_android) { +@@ -2305,7 +2305,7 @@ if (is_android) { ] } @@ -2845,7 +2796,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ # These API tests can't be part of platform_browser_tests because they # run in interactive_ui_tests on Win/Mac/Linux. -@@ -6437,7 +6437,7 @@ template("performance_test_suite_template_base") { +@@ -6395,7 +6395,7 @@ template("performance_test_suite_template_base") { } args += [ "--chromium-output-directory=@WrappedPath(.)" ] @@ -2854,8 +2805,8 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn data = [ "//third_party/crossbench-web-tests" ] } -@@ -8260,7 +8260,7 @@ test("unit_tests") { - deps += [ "//chrome/browser/android/extensions:android" ] +@@ -8187,7 +8187,7 @@ test("unit_tests") { + ] } - if (is_desktop_android) { @@ -2863,7 +2814,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn deps += [ # Unit test targets for //chrome/browser/ui/browser_window/internal. # -@@ -10126,7 +10126,7 @@ test("unit_tests") { +@@ -10041,7 +10041,7 @@ test("unit_tests") { ] } @@ -3090,16 +3041,16 @@ diff --git a/components/policy/core/browser/cloud/user_policy_signin_service_bas diff --git a/components/policy/core/browser/configuration_policy_handler_list.cc b/components/policy/core/browser/configuration_policy_handler_list.cc --- a/components/policy/core/browser/configuration_policy_handler_list.cc +++ b/components/policy/core/browser/configuration_policy_handler_list.cc -@@ -104,7 +104,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedDesktopAndroidPolicy( +@@ -109,7 +109,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedDesktopAndroidPolicy( // TODO(b/478012386): We shouldn't use IS_DESKTOP_ANDROID long-term. The feature // flag needs to be removed as soon as we feel comfortable about all exist // Android -#if BUILDFLAG(IS_DESKTOP_ANDROID) +#if BUILDFLAG(IS_DESKTOP_ANDROID_FALSE) - if (!base::FeatureList::IsEnabled(features::kDesktopAndroidPolicy)) { + if (!base::FeatureList::IsEnabled(features::kDesktopAndroidPolicy)) { return false; } -@@ -174,7 +174,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedFuturePolicy( +@@ -227,7 +227,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedFuturePolicy( const base::flat_set& future_policies_allowed, const PolicyDetails& policy_details, PolicyMap::const_reference entry) const { @@ -3123,7 +3074,7 @@ diff --git a/components/policy/core/common/cloud/cloud_policy_constants.cc b/com diff --git a/components/policy/core/common/features.cc b/components/policy/core/common/features.cc --- a/components/policy/core/common/features.cc +++ b/components/policy/core/common/features.cc -@@ -39,7 +39,7 @@ const base::FeatureParam kPolicyRegistrationDelay{ +@@ -40,7 +40,7 @@ const base::FeatureParam kPolicyRegistrationDelay{ // Used to add a captive portal check in SafeSitesNavigationThrottle. BASE_FEATURE(kSafeSitesCaptivePortalCheck, base::FEATURE_ENABLED_BY_DEFAULT); @@ -3210,7 +3161,7 @@ diff --git a/components/webui/version/resources/about_version.html b/components/ 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 -@@ -353,6 +353,11 @@ void SelectionPopupController::OnSelectAroundCaretAck( +@@ -352,6 +352,11 @@ void SelectionPopupController::OnSelectAroundCaretAck( result->word_start_adjust, result->word_end_adjust); } @@ -3221,11 +3172,11 @@ diff --git a/content/browser/android/selection/selection_popup_controller.cc b/c + void SelectionPopupController::HidePopupsAndPreserveSelection() { JNIEnv* env = AttachCurrentThread(); - ScopedJavaLocalRef obj = java_obj_.get(env); + ScopedJavaLocalRef obj = GetJavaObject(env); diff --git a/content/browser/android/selection/selection_popup_controller.h b/content/browser/android/selection/selection_popup_controller.h --- a/content/browser/android/selection/selection_popup_controller.h +++ b/content/browser/android/selection/selection_popup_controller.h -@@ -70,6 +70,7 @@ class SelectionPopupController : public RenderWidgetHostConnector { +@@ -69,6 +69,7 @@ class SelectionPopupController : public RenderWidgetHostConnector { int endOffset, int surroundingTextLength, blink::mojom::SelectAroundCaretResultPtr result); @@ -3236,7 +3187,7 @@ diff --git a/content/browser/android/selection/selection_popup_controller.h b/co diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc -@@ -838,7 +838,7 @@ int BrowserMainLoop::PreCreateThreads() { +@@ -837,7 +837,7 @@ int BrowserMainLoop::PreCreateThreads() { base::UmaHistogramBoolean("SiteIsolation.IsSitePerProcessOrStricter", SiteIsolationPolicy::IsSitePerProcessOrStricter()); @@ -3260,7 +3211,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java --- a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java -@@ -124,9 +124,10 @@ public class ContentUiEventHandler implements UserData { +@@ -133,9 +133,10 @@ public class ContentUiEventHandler implements UserData { event, MotionEventUtils.getEventTimeNanos(event), EventForwarder.getMouseEventActionButton(event), @@ -3277,7 +3228,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Conten 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 -@@ -763,6 +763,9 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -779,6 +779,9 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper */ @Override public void finishActionMode() { @@ -3287,7 +3238,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select mHidden = false; mHandler.removeCallbacks(mRepeatingHideRunnable); -@@ -1982,6 +1985,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -2002,6 +2005,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper void setTextHandlesTemporarilyHidden(long nativeSelectionPopupController, boolean hidden); @@ -3299,7 +3250,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select 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 -@@ -614,7 +614,7 @@ BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount, +@@ -611,7 +611,7 @@ BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kLogJsConsoleMessages, @@ -3308,7 +3259,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_ENABLED_BY_DEFAULT -@@ -1495,7 +1495,7 @@ bool IsFluidResizeEnabled() { +@@ -1503,7 +1503,7 @@ bool IsFluidResizeEnabled() { // dragging seen on tablets and desktops. return base::FeatureList::IsEnabled(features::kFluidResize) && (base::android::device_info::is_tablet() || @@ -3380,16 +3331,16 @@ new file mode 100644 diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn --- a/extensions/browser/BUILD.gn +++ b/extensions/browser/BUILD.gn -@@ -10,7 +10,7 @@ import("//pdf/features.gni") - import("//rlz/buildflags/buildflags.gni") +@@ -11,7 +11,7 @@ import("//rlz/buildflags/buildflags.gni") import("//testing/libfuzzer/fuzzer_test.gni") + import("//third_party/protobuf/proto_library.gni") -if (enable_desktop_android_extensions) { +if (enable_desktop_android_extensions_cromite) { import("//build/config/android/rules.gni") } -@@ -1211,7 +1211,7 @@ source_set("unit_tests") { +@@ -1249,7 +1249,7 @@ source_set("unit_tests") { configs += [ "//build/config/compiler:no_exit_time_destructors" ] } @@ -3559,7 +3510,7 @@ diff --git a/extensions/common/command.cc b/extensions/common/command.cc 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 -@@ -57,7 +57,7 @@ BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs, +@@ -62,7 +62,7 @@ BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs, BASE_FEATURE(kEnableWebHidInWebView, base::FEATURE_ENABLED_BY_DEFAULT); @@ -3568,7 +3519,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi // Disabled by default because on first-run we don't have a Finch seed yet, so // we want to default to the safe behavior of no extensions. BASE_FEATURE(kEnableExtensionsForCorpDesktopAndroid, -@@ -174,7 +174,7 @@ BASE_FEATURE(kDisableExtensionsOnChromeUrlsSwitch, +@@ -179,7 +179,7 @@ BASE_FEATURE(kDisableExtensionsOnChromeUrlsSwitch, // TODO (crbug.com/426554244): Determine if this switch should be // removed for desktop-android builds as well. #if BUILDFLAG(GOOGLE_CHROME_BRANDING) && !BUILDFLAG(IS_CHROMEOS) && \ @@ -3577,7 +3528,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT -@@ -225,4 +225,10 @@ CROMITE_FEATURE(kEnableExtensionAutoupdate, +@@ -227,4 +227,10 @@ CROMITE_FEATURE(kEnableExtensionAutoupdate, CROMITE_FEATURE(kEnableExtensionManagementToChromeStore, "EnableExtensionToChromeStore", base::FEATURE_DISABLED_BY_DEFAULT); @@ -3591,7 +3542,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h -@@ -97,7 +97,7 @@ BASE_DECLARE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs); +@@ -103,7 +103,7 @@ BASE_DECLARE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs); // embedding Chrome App to request access to Human Interface Devices. BASE_DECLARE_FEATURE(kEnableWebHidInWebView); @@ -3600,7 +3551,7 @@ diff --git a/extensions/common/extension_features.h b/extensions/common/extensio // If enabled, extensions will be enabled for @google.com and @managedchrome.com // users on desktop Android. Otherwise they will be blocked. BASE_DECLARE_FEATURE(kEnableExtensionsForCorpDesktopAndroid); -@@ -333,6 +333,10 @@ BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate); +@@ -330,6 +330,10 @@ BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate); // Allows the installation of new extensions. // If active, exposes all features to the chrome web store like chromium. BASE_DECLARE_FEATURE(kEnableExtensionManagementToChromeStore); @@ -3677,7 +3628,7 @@ diff --git a/extensions/renderer/bindings/api_binding_util.cc b/extensions/rende diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -614,7 +614,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) { +@@ -625,7 +625,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) { // Desktop Android isn't ready to pick up the fieldtrial_testing_config.json // change that enables graphite. However, it's the same platform as regular // Android and does. Skip enabling the feature there for now. @@ -3686,7 +3637,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc return false; } -@@ -727,7 +727,7 @@ bool ShouldEnableDrDc() { +@@ -738,7 +738,7 @@ bool ShouldEnableDrDc() { // Chrome on Android desktop aims to be Vulkan-only, which can result // in crashes when enabled together with DrDc. Re-enable DrDc after // crbug.com/380295059 is fixed if it is shown beneficial on desktop. @@ -3736,7 +3687,7 @@ diff --git a/skia/features.gni b/skia/features.gni 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 -@@ -2426,7 +2426,7 @@ BASE_FEATURE(kStopInBackground, +@@ -2438,7 +2438,7 @@ BASE_FEATURE(kStopInBackground, // b/248036988 - Disable this for Chromecast on Android builds to prevent apps // that play audio in the background from stopping. #if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CAST_ANDROID) && \ @@ -3748,7 +3699,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc --- a/third_party/blink/renderer/modules/modules_initializer.cc +++ b/third_party/blink/renderer/modules/modules_initializer.cc -@@ -120,7 +120,7 @@ +@@ -121,7 +121,7 @@ namespace blink { namespace { @@ -3757,7 +3708,7 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p class SuspendCaptureObserver : public GarbageCollected, public Supplement, -@@ -376,7 +376,7 @@ void ModulesInitializer::ProvideModulesToPage( +@@ -378,7 +378,7 @@ void ModulesInitializer::ProvideModulesToPage( const SessionStorageNamespaceId& namespace_id) const { StorageNamespace::ProvideSessionStorageNamespaceTo(page, namespace_id); AudioGraphTracer::ProvideAudioGraphTracerTo(page); @@ -3794,7 +3745,7 @@ diff --git a/tools/json_schema_compiler/cpp_bundle_generator.py b/tools/json_sch diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java -@@ -650,7 +650,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -636,7 +636,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick // (e.g., MIME type */*), the Camera is often included in the app list by default, creating // a confusing experience for desktop users who expect a standard file picker. ArrayList extraIntents = new ArrayList<>(); diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index d4188d242..bd8391eb2 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../native_page/NativePageFactory.java | 20 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 29 +- + .../browser/ntp/NewTabPageCoordinator.java | 28 +- .../ntp/search/SearchBoxViewBinder.java | 1 + .../suggestions/SuggestionsConfig.java | 2 +- .../SuggestionsNavigationDelegate.java | 27 +- @@ -40,8 +40,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../suggestions/tile/TilesLinearLayout.java | 2 +- .../engagement/important_sites_util.cc | 2 +- .../flags/android/chrome_feature_list.cc | 1 + - .../browser/flags/ChromeFeatureList.java | 3 +- - .../chrome_most_visited_sites_factory.cc | 3 - + .../browser/flags/ChromeFeatureList.java | 1 + + .../chrome_most_visited_sites_factory.cc | 4 - .../client_util/HomeModulesRankingHelper.java | 1 + .../strings/android_chrome_strings.grd | 6 + .../core/browser/top_sites_constants.h | 2 +- @@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 8 + .../Restore-Simplified-NTP-launch.inc | 1 + - 45 files changed, 647 insertions(+), 68 deletions(-) + 45 files changed, 646 insertions(+), 67 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 @@ -81,7 +81,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/drawable-hdpi/ic_phone_googblue_36dp.png", "java/res/drawable-hdpi/ic_photo_camera.png", "java/res/drawable-hdpi/ic_place_googblue_36dp.png", -@@ -544,6 +549,7 @@ chrome_java_resources = [ +@@ -553,6 +558,7 @@ chrome_java_resources = [ "java/res/layout/manage_space_activity.xml", "java/res/layout/material_tooltip.xml", "java/res/layout/multiline_spinner_item.xml", @@ -89,7 +89,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/mv_tiles_layout.xml", "java/res/layout/navigation_bubble.xml", "java/res/layout/navigation_sheet.xml", -@@ -552,8 +558,10 @@ chrome_java_resources = [ +@@ -561,8 +567,10 @@ chrome_java_resources = [ "java/res/layout/new_background_tab_animation_tab_switcher_icon.xml", "java/res/layout/new_custom_tab_toolbar.xml", "java/res/layout/new_tab_page_incognito.xml", @@ -103,7 +103,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 -@@ -649,6 +649,7 @@ chrome_java_sources = [ +@@ -660,6 +660,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -111,7 +111,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", -@@ -1096,6 +1097,7 @@ chrome_java_sources = [ +@@ -1111,6 +1112,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java", @@ -416,7 +416,7 @@ diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml -@@ -50,6 +50,13 @@ found in the LICENSE file. +@@ -42,6 +42,13 @@ found in the LICENSE file. /> @@ -577,10 +577,10 @@ 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/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 -@@ -3715,7 +3715,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -3738,7 +3738,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt + getStartupMetricsTracker(), mRootUiCoordinator.getExclusiveAccessManager(), mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); @@ -598,7 +598,7 @@ 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; -@@ -58,6 +59,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -56,6 +57,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.List; import java.util.function.Supplier; @@ -607,7 +607,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe /** * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link * ChromeTabbedActivity}. -@@ -92,6 +95,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; private final @Nullable ExclusiveAccessManager mExclusiveAccessManager; @@ -615,29 +615,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe + private @Nullable NativePageFactory mNativePageFactory; private final BackPressManager mBackPressManager; - private final MultiInstanceManager mMultiInstanceManager; -@@ -128,7 +133,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; +@@ -122,7 +127,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + StartupMetricsTracker startupMetricsTracker, @Nullable ExclusiveAccessManager exclusiveAccessManager, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + @NonNull MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate; mShareDelegateSupplier = shareDelegateSupplier; -@@ -160,6 +166,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -152,6 +158,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + mExclusiveAccessManager = exclusiveAccessManager; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } @Override -@@ -235,7 +242,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -224,7 +231,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); @@ -701,10 +701,10 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java -@@ -201,7 +201,10 @@ public class IdentityDiscController +@@ -204,7 +204,10 @@ public class IdentityDiscController mButtonData.setButtonSpec( - buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), email)); + buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), profileData)); - mButtonData.setCanShow(true); + if (email == null) + mButtonData.setCanShow(false); @@ -731,8 +731,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginAdapter; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; - import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -104,6 +106,7 @@ public class NativePageFactory { + import org.chromium.chrome.browser.contextual_tasks.ContextualTasksNativePage; +@@ -102,6 +104,7 @@ public class NativePageFactory { private final MonotonicObservableSupplier mEdgeToEdgeControllerSupplier; private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; @@ -740,37 +740,37 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker; private @Nullable NativePageBuilder mNativePageBuilder; -@@ -134,7 +137,8 @@ public class NativePageFactory { +@@ -129,7 +132,8 @@ public class NativePageFactory { + TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mBottomSheetController = sheetController; mBrowserControlsManager = browserControlsManager; -@@ -157,6 +161,7 @@ public class NativePageFactory { +@@ -150,6 +154,7 @@ public class NativePageFactory { + mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } private NativePageBuilder getBuilder() { -@@ -185,7 +190,8 @@ public class NativePageFactory { +@@ -176,7 +181,8 @@ public class NativePageFactory { + mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); } return mNativePageBuilder; } -@@ -224,9 +230,10 @@ public class NativePageFactory { +@@ -213,9 +219,10 @@ public class NativePageFactory { + private final StartupMetricsTracker mStartupMetricsTracker; private final BackPressManager mBackPressManager; - private final MultiInstanceManager mMultiInstanceManager; private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; @@ -780,30 +780,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier newTabPageCreationTracker, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -248,7 +255,8 @@ public class NativePageFactory { +@@ -235,7 +242,8 @@ public class NativePageFactory { + TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mNewTabPageCreationTracker = newTabPageCreationTracker; mBottomSheetController = sheetController; -@@ -272,6 +280,7 @@ public class NativePageFactory { +@@ -257,6 +265,7 @@ public class NativePageFactory { + mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } protected NativePage buildNewTabPage(Tab tab, String url) { -@@ -316,7 +325,8 @@ public class NativePageFactory { +@@ -299,7 +308,8 @@ public class NativePageFactory { + mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetProvider, - mStartupMetricsTracker, -- mMultiInstanceManager); -+ mMultiInstanceManager, +- mStartupMetricsTracker); ++ mStartupMetricsTracker, + mBookmarkManagerOpenerSupplier); } @@ -811,7 +811,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java -@@ -31,7 +31,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; +@@ -28,7 +28,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; /** {@link NativePageNavigationDelegate} implementation. */ @NullMarked public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate { @@ -823,9 +823,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -133,6 +133,9 @@ import org.chromium.ui.base.WindowAndroid; +@@ -110,6 +110,9 @@ import org.chromium.ui.base.DeviceFormFactor; + import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; - import org.chromium.url.GURL; +import androidx.annotation.NonNull; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; @@ -833,62 +833,54 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import java.util.List; import java.util.function.Supplier; -@@ -444,7 +447,8 @@ public class NewTabPage +@@ -402,7 +405,8 @@ public class NewTabPage + OneshotSupplier moduleRegistrySupplier, MonotonicObservableSupplier edgeToEdgeControllerSupplier, TopInsetProvider topInsetProvider, - StartupMetricsTracker startupMetricsTracker, -- MultiInstanceManager multiInstanceManager) { -+ MultiInstanceManager multiInstanceManager, +- StartupMetricsTracker startupMetricsTracker) { ++ StartupMetricsTracker startupMetricsTracker, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mConstructedTimeNs = System.nanoTime(); TraceEvent.begin(TAG); -@@ -474,7 +478,7 @@ public class NewTabPage - nativePageHost, - tabModelSelector, - mTab, -- multiInstanceManager); -+ multiInstanceManager, bookmarkManagerOpenerSupplier); +@@ -422,7 +426,7 @@ public class NewTabPage + + SuggestionsNavigationDelegate navigationDelegate = + new SuggestionsNavigationDelegate( +- activity, profile, nativePageHost, tabModelSelector, mTab); ++ activity, profile, nativePageHost, tabModelSelector, mTab, bookmarkManagerOpenerSupplier); mNewTabPageManager = new NewTabPageManagerImpl( navigationDelegate, profile, nativePageHost, snackbarManager); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -14,6 +14,7 @@ import android.graphics.Rect; +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java +@@ -13,6 +13,7 @@ import android.graphics.Point; + import android.graphics.Rect; import android.text.Editable; - import android.util.AttributeSet; import android.view.DragEvent; +import android.view.ViewStub; import android.view.View; + import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; - import android.view.ViewStub; -@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; - import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.incognito.IncognitoUtils; - import org.chromium.chrome.browser.lens.LensEntryPoint; -+import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.lens.LensMetrics; - import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; - import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -59,6 +61,7 @@ import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherIm +@@ -64,6 +65,7 @@ import org.chromium.chrome.browser.setup_list.SetupListModuleUtils; + import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; import org.chromium.chrome.browser.suggestions.tile.TileGroup; - import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate; +import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout; - import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; - import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; -@@ -116,6 +119,8 @@ public class NewTabPageLayout extends LinearLayout { - private SearchEngineUtils.@Nullable SearchEngineIconObserver mSearchEngineIconObserver; - private SearchEngineUtils.@Nullable SearchBoxHintTextObserver mSearchBoxHintTextObserver; + import org.chromium.chrome.browser.tab.Tab; + import org.chromium.chrome.browser.tab.TabLaunchType; + import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -147,6 +149,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + private SetupListManager.@Nullable Observer mSetupListObserver; + private @Nullable Point mContextMenuStartPosition; + private ViewGroup mShortcutsView; + /** * Whether the tiles shown in the layout have finished loading. With {@link #mHasShownView}, * it's one of the 2 flags used to track initialisation progress. -@@ -128,14 +133,14 @@ public class NewTabPageLayout extends LinearLayout { +@@ -159,14 +163,14 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { */ private boolean mHasShownView; @@ -902,10 +894,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL private float mUrlFocusChangePercent; - private boolean mDisableUrlFocusChangeAnimations; + private boolean mDisableUrlFocusChangeAnimations = true; - private boolean mIsViewMoving; /** Flag used to request some layout changes after the next layout pass is completed. */ -@@ -302,6 +307,7 @@ public class NewTabPageLayout extends LinearLayout { + private boolean mTileCountChanged; +@@ -345,6 +349,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { mSearchEngineUtils.addIconObserver(mSearchEngineIconObserver); setSearchBoxTextAppearance(); @@ -913,16 +905,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -762,7 +768,7 @@ public class NewTabPageLayout extends LinearLayout { - return; - } - boolean isSearchProviderIsGoogleChanged = mSearchProviderIsGoogle != isGoogle; -- mSearchProviderHasLogo = hasLogo; -+ mSearchProviderHasLogo = false; - mSearchProviderIsGoogle = isGoogle; - - if (!mSearchProviderIsGoogle) { -@@ -829,6 +835,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -742,6 +747,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + * @param isGoogle Whether the search provider is Google. + */ + void setSearchProviderInfo(boolean hasLogo, boolean isGoogle) { ++ hasLogo = false; ++ isGoogle = false; + if (hasLogo == mSearchProviderHasLogo + && isGoogle == mSearchProviderIsGoogle + && mInitialized) { +@@ -807,6 +814,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { * @param disable Whether to disable the animations. */ void setUrlFocusAnimationsDisabled(boolean disable) { @@ -930,8 +922,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL if (disable == mDisableUrlFocusChangeAnimations) return; mDisableUrlFocusChangeAnimations = disable; if (!disable) onUrlFocusAnimationChanged(); -@@ -1141,6 +1148,22 @@ public class NewTabPageLayout extends LinearLayout { - mComposeplateUrlSupplier = null; +@@ -1335,6 +1343,22 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + } } + private void initializeShortcuts() { @@ -979,7 +971,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java -@@ -24,18 +24,43 @@ import org.chromium.ui.base.PageTransition; +@@ -23,17 +23,42 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -1002,11 +994,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug Profile profile, NativePageHost host, TabModelSelector tabModelSelector, - Tab tab, -- MultiInstanceManager multiInstanceManager) { -+ MultiInstanceManager multiInstanceManager, +- Tab tab) { ++ Tab tab, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { - super(activity, profile, host, tabModelSelector, tab, multiInstanceManager); + super(activity, profile, host, tabModelSelector, tab); + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; + } + @@ -1390,7 +1381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til MarginLayoutParams marginLayoutParams = (MarginLayoutParams) mMvTilesContainerLayout.getLayoutParams(); marginLayoutParams.width = -@@ -383,7 +377,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { +@@ -379,7 +373,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl()); if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return; @@ -1546,7 +1537,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -364,6 +364,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -382,6 +382,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kKeyboardEscBackNavigation, &kLaunchCauseScreenOffFix, &kLensOnQuickActionSearchWidget, @@ -1557,7 +1548,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 -@@ -512,6 +512,7 @@ public abstract class ChromeFeatureList { +@@ -530,6 +530,7 @@ public abstract class ChromeFeatureList { "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; @@ -1565,27 +1556,19 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MOVE_TO_FRONT_IN_LAUNCH_INTENT_DISPATCHER = -@@ -989,7 +990,7 @@ public abstract class ChromeFeatureList { - LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); -- public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true); -+ public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, false); - public static final CachedFlag sMaliciousApkDownloadCheck = - newCachedFlag( - MALICIOUS_APK_DOWNLOAD_CHECK, diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc --- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc +++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc -@@ -74,9 +74,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) { - } +@@ -67,10 +67,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) { std::unique_ptr data_decoder; + -#if BUILDFLAG(IS_ANDROID) - data_decoder = std::make_unique(); -#endif - +- bool is_default_chrome_app_migrated; + #if BUILDFLAG(IS_ANDROID) diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java --- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java @@ -1601,7 +1584,7 @@ diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/ 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 -@@ -4127,6 +4127,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4182,6 +4182,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d Recent tabs @@ -1641,7 +1624,7 @@ diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/c diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc --- a/components/omnibox/common/omnibox_features.cc +++ b/components/omnibox/common/omnibox_features.cc -@@ -194,6 +194,7 @@ BASE_FEATURE(kRemoveSearchReadyOmnibox, DISABLED); +@@ -194,6 +194,7 @@ BASE_FEATURE(kOmniboxAimDeferShowUntilVisualStateReady, ENABLED); BASE_FEATURE(kDefaultTypedNavigationsToHttps, "OmniboxDefaultTypedNavigationsToHttps", enable_if(IS_IOS)); @@ -1649,7 +1632,7 @@ diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/ // Override the delay to create a spare renderer when the omnibox is focused // on Android. -@@ -275,6 +276,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED); +@@ -278,6 +279,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED); // Updates various NTP/Omnibox assets and descriptions for visual alignment on // Android and iOS, V2. BASE_FEATURE(kOmniboxMobileParityUpdateV2, ENABLED); diff --git a/build/patches/Restore-chrome-password-store.patch b/build/patches/Restore-chrome-password-store.patch index 322169b94..7cd0ec0bd 100644 --- a/build/patches/Restore-chrome-password-store.patch +++ b/build/patches/Restore-chrome-password-store.patch @@ -42,8 +42,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../android/java/res/values/dimens.xml | 17 + .../CredentialEditFragmentView.java | 228 ++++++ .../CredentialEntryFragmentViewBase.java | 135 ++++ - .../browser/password_manager/android/BUILD.gn | 23 + - .../ConfirmationDialogHelper.java | 30 + + .../browser/password_manager/android/BUILD.gn | 24 + + .../ConfirmationDialogHelper.java | 146 ++++ .../PasswordManagerHelper.java | 22 +- .../PasswordManagerUtilBridge.java | 3 +- .../settings/CallbackDelayer.java | 18 + @@ -68,8 +68,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../android/password_ui_view_android.cc | 450 +++++++++++ .../android/password_ui_view_android.h | 196 +++++ .../android/pwm_disabled/BUILD.gn | 2 - - .../password_store_backend_factory.cc | 14 +- ...ssword_manager_settings_service_factory.cc | 4 +- + .../password_store_backend_factory.cc | 14 +- chrome/browser/prefs/browser_prefs.cc | 7 - .../strings/android_chrome_strings.grd | 123 ++- .../Import-Password-Android.grdp | 9 + @@ -88,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../core/common/password_manager_pref_names.h | 2 - components/sync/service/sync_prefs.cc | 2 +- .../Restore-chrome-password-store.inc | 1 + - 80 files changed, 5590 insertions(+), 81 deletions(-) + 80 files changed, 5707 insertions(+), 81 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 @@ -109,6 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html create mode 100644 chrome/browser/password_entry_edit/android/java/res/values/dimens.xml create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEntryFragmentViewBase.java + create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/CallbackDelayer.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/DialogManager.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/ExportErrorDialogFragment.java @@ -134,7 +135,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -822,6 +822,10 @@ if (_is_default_toolchain) { +@@ -827,6 +827,10 @@ if (_is_default_toolchain) { "//url/mojom:url_mojom_origin_java", ] @@ -145,7 +146,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += feed_deps srcjar_deps = [ -@@ -972,6 +976,10 @@ if (_is_default_toolchain) { +@@ -981,6 +985,10 @@ if (_is_default_toolchain) { "//components/visited_url_ranking/internal:internal_java", ] @@ -159,7 +160,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 -@@ -654,3 +654,8 @@ chrome_java_resources = [ +@@ -666,3 +666,8 @@ chrome_java_resources = [ "java/res/xml/tracing_preferences.xml", "java/res/xml/unified_account_settings_preferences.xml", ] @@ -171,7 +172,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 -@@ -932,6 +932,7 @@ chrome_java_sources = [ +@@ -947,6 +947,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerDialogViewBinder.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java", @@ -182,7 +183,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java --- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java +++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java -@@ -611,10 +611,7 @@ class ManualFillingMediator +@@ -620,10 +620,7 @@ class ManualFillingMediator // suggestions for non credential fields. The check for feature flag needs to happen before // `IS_CREDENTIAL_FIELD_OR_HAS_AUTOFILL_SUGGESTIONS` check to ensure we get the unbiased // metrics. @@ -197,7 +198,7 @@ diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/ch diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -485,10 +485,9 @@ by a child template that "extends" this file. +@@ -477,10 +477,9 @@ by a child template that "extends" this file. @@ -310,20 +311,20 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res 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 -@@ -64,7 +64,8 @@ found in the LICENSE file. +@@ -69,7 +69,8 @@ found in the LICENSE file. android:key="autofill_section" - android:order="11" + android:order="12" android:title="@string/prefs_section_autofill"/> - diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java -@@ -833,6 +833,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment +@@ -826,6 +826,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment } private static boolean disabledSettingsInThirdPartyMode(Profile profile) { @@ -334,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java -@@ -635,6 +635,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment +@@ -772,6 +772,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment } private static boolean disabledSettingsInThirdPartyMode(Profile profile) { @@ -1061,7 +1062,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 -@@ -30,6 +30,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings; +@@ -29,6 +29,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings; import org.chromium.chrome.browser.lifetime.ApplicationLifetime; import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.page_info.SiteSettingsHelper; @@ -1070,7 +1071,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.chrome.browser.password_manager.PasswordManagerHelper; import org.chromium.chrome.browser.password_manager.PasswordStoreBridge; import org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment; -@@ -160,6 +162,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -165,6 +167,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl PasswordManagerHelper.getForProfile(mProfile), new SettingsCustomTabLauncherImpl()); } @@ -1083,7 +1084,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -657,17 +657,6 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -750,17 +750,6 @@ public class MainSettings extends ChromeBaseSettingsFragment return SettingsNavigationHelper.showAutofillProfileSettings( getActivity()); }); @@ -1098,10 +1099,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe - mModalDialogManagerSupplier.asNonNull().get()); - return true; - }); + } - // This is temporary code needed for migrating people to UPM. With UPM there is no - // longer passwords setting page in Chrome, so we need to ask users to export their -@@ -720,12 +709,6 @@ public class MainSettings extends ChromeBaseSettingsFragment + private void maybeStartPasswordsExportFlow() { +@@ -815,12 +804,6 @@ public class MainSettings extends ChromeBaseSettingsFragment private static void showPasswordSettings( Context context, Profile profile, ModalDialogManager modalDialogManager) { @@ -1145,9 +1146,9 @@ 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 -@@ -3207,6 +3207,13 @@ static_library("browser") { - "touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h", - ] +@@ -3020,6 +3020,13 @@ static_library("browser") { + + public_deps += [ "//chrome/browser/accessibility/accessibility_prefs" ] + # static_library("browser") + sources += [ @@ -2985,12 +2986,13 @@ new file mode 100644 diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn -@@ -188,6 +188,27 @@ android_library("java") { +@@ -187,6 +187,28 @@ android_library("java") { "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordsPreference.java", ] + # android_library("java") + sources += [ ++ "java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandler.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandlerProvider.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordUiView.java", @@ -3013,7 +3015,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p resources_package = "org.chromium.chrome.browser.password_manager" } -@@ -209,6 +230,8 @@ generate_jni("jni_headers") { +@@ -208,6 +230,8 @@ generate_jni("jni_headers") { "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreCredential.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java", ] @@ -3023,22 +3025,63 @@ 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/ConfirmationDialogHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java ---- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java +new file mode 100644 +--- /dev/null +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java -@@ -7,7 +7,9 @@ package org.chromium.chrome.browser.password_manager; - import static org.chromium.build.NullUtil.assumeNonNull; - - import android.content.Context; +@@ -0,0 +1,146 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++package org.chromium.chrome.browser.password_manager; ++ ++import static org.chromium.build.NullUtil.assumeNonNull; ++ ++import android.content.Context; +import android.content.res.Resources; - ++ +import org.chromium.base.CallbackUtils; - import org.chromium.build.annotations.NullMarked; - import org.chromium.build.annotations.Nullable; - import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; -@@ -49,6 +51,34 @@ public class ConfirmationDialogHelper { - mDialogModel = null; - } - ++import org.chromium.build.annotations.NullMarked; ++import org.chromium.build.annotations.Nullable; ++import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; ++import org.chromium.ui.modaldialog.DialogDismissalCause; ++import org.chromium.ui.modaldialog.ModalDialogManager; ++import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; ++import org.chromium.ui.modaldialog.ModalDialogProperties; ++import org.chromium.ui.modaldialog.SimpleModalDialogController; ++import org.chromium.ui.modelutil.PropertyModel; ++ ++import java.util.ArrayList; ++import java.util.List; ++ ++/** ++ * Helps to show a confirmation. ++ * ++ * @deprecated use {@link ActionConfirmationDialog} instead - see crbug.com/440257087. ++ */ ++@Deprecated ++@NullMarked ++public class ConfirmationDialogHelper { ++ private final Context mContext; ++ private ModalDialogManager mModalDialogManager; ++ private @Nullable PropertyModel mDialogModel; ++ private @Nullable Runnable mConfirmedCallback; ++ private @Nullable Runnable mDeclinedCallback; ++ ++ public ConfirmationDialogHelper(Context context) { ++ mContext = context; ++ mModalDialogManager = ++ new ModalDialogManager(new AppModalPresenter(context), ModalDialogType.APP); ++ } ++ ++ /** Hides the dialog. */ ++ public void dismiss() { ++ if (mDialogModel != null) { ++ mModalDialogManager.dismissDialog(mDialogModel, DialogDismissalCause.UNKNOWN); ++ } ++ mDialogModel = null; ++ } ++ + // used by CredentialEditMediator.java + /** Returns the resources associated with the context used to launch the dialog. */ + public Resources getResources() { @@ -3067,9 +3110,71 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom + CallbackUtils.emptyRunnable()); + } + - /** - * Shows an dialog to confirm the deletion. - * ++ /** ++ * Shows an dialog to confirm the deletion. ++ * ++ * @param title A {@link String} used as title. ++ * @param message A {@link CharSequence} used message body. ++ * @param confirmButtonText A {@link String} for confirmation button label. ++ * @param confirmedCallback A callback to run when the dialog is accepted. ++ * @param declinedCallback A callback to run when the dialog is declined. ++ */ ++ public void showConfirmation( ++ String title, ++ CharSequence message, ++ String confirmButtonText, ++ Runnable confirmedCallback, ++ Runnable declinedCallback) { ++ assert title != null; ++ assert message != null; ++ assert confirmedCallback != null; ++ ++ mConfirmedCallback = confirmedCallback; ++ mDeclinedCallback = declinedCallback; ++ ++ mDialogModel = ++ new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) ++ .with( ++ ModalDialogProperties.CONTROLLER, ++ new SimpleModalDialogController( ++ mModalDialogManager, this::onDismiss)) ++ .with( ++ ModalDialogProperties.BUTTON_STYLES, ++ ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE) ++ .with(ModalDialogProperties.TITLE, title) ++ .with( ++ ModalDialogProperties.MESSAGE_PARAGRAPHS, ++ new ArrayList<>(List.of(message))) ++ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, confirmButtonText) ++ .with( ++ ModalDialogProperties.NEGATIVE_BUTTON_TEXT, ++ mContext.getString(R.string.cancel)) ++ .build(); ++ ++ mModalDialogManager.showDialog(mDialogModel, ModalDialogType.APP); ++ } ++ ++ private void onDismiss(@DialogDismissalCause int dismissalCause) { ++ switch (dismissalCause) { ++ case DialogDismissalCause.POSITIVE_BUTTON_CLICKED: ++ assumeNonNull(mConfirmedCallback); ++ mConfirmedCallback.run(); ++ break; ++ case DialogDismissalCause.NEGATIVE_BUTTON_CLICKED: ++ assumeNonNull(mDeclinedCallback); ++ mDeclinedCallback.run(); ++ break; ++ default: ++ // No explicit user decision. ++ break; ++ } ++ mDialogModel = null; ++ } ++ ++ void setModalDialogManagerForTesting(ModalDialogManager modalDialogManager) { ++ mModalDialogManager = modalDialogManager; ++ } ++} 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 @@ -6073,6 +6178,20 @@ diff --git a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn b/chr "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/factories/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc +--- a/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc ++++ b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc +@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { + return std::make_unique( + profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile)); + } +- return nullptr; +-#else ++#endif + return std::make_unique( + profile->GetPrefs()); +-#endif + } diff --git a/chrome/browser/password_manager/factories/password_store_backend_factory.cc b/chrome/browser/password_manager/factories/password_store_backend_factory.cc --- a/chrome/browser/password_manager/factories/password_store_backend_factory.cc +++ b/chrome/browser/password_manager/factories/password_store_backend_factory.cc @@ -6114,24 +6233,10 @@ diff --git a/chrome/browser/password_manager/factories/password_store_backend_fa std::move(login_db), behavior, prefs, os_crypt_async); -#endif // BUILDFLAG(IS_ANDROID) } -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 -@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { - return std::make_unique( - profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile)); - } -- return nullptr; --#else -+#endif - return std::make_unique( - profile->GetPrefs()); --#endif - } 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 -@@ -2642,13 +2642,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, +@@ -2527,13 +2527,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kObsoletePasswordsUseUPMLocalAndSeparateStores); profile_prefs->ClearPref(kObsoleteEmptyProfileStoreLoginDatabase); profile_prefs->ClearPref(kObsoleteUpmAutoExportCsvNeedsDeletion); @@ -6148,7 +6253,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/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 -@@ -797,7 +797,7 @@ For more settings that use data to improve your Chrome experience, go to @@ -6157,7 +6262,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Password saving is turned on by your administrator -@@ -897,6 +897,127 @@ For more settings that use data to improve your Chrome experience, go to @@ -6302,7 +6407,7 @@ new file mode 100644 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 -@@ -391,6 +391,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey, +@@ -409,6 +409,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey, // If enabled, other apps can open the Autofill Options in Chrome. BASE_FEATURE(kAutofillDeepLinkAutofillOptions, base::FEATURE_ENABLED_BY_DEFAULT); @@ -6333,7 +6438,7 @@ diff --git a/components/browser_ui/settings/android/java/src/org/chromium/compon diff --git a/components/password_manager/core/browser/features/password_manager_features_util.cc b/components/password_manager/core/browser/features/password_manager_features_util.cc --- a/components/password_manager/core/browser/features/password_manager_features_util.cc +++ b/components/password_manager/core/browser/features/password_manager_features_util.cc -@@ -19,6 +19,7 @@ namespace password_manager::features_util { +@@ -18,6 +18,7 @@ namespace password_manager::features_util { namespace { bool IsUserEligibleForAccountStorage(const syncer::SyncService* sync_service) { @@ -6344,7 +6449,7 @@ diff --git a/components/password_manager/core/browser/features/password_manager_ diff --git a/components/password_manager/core/browser/import/password_importer.cc b/components/password_manager/core/browser/import/password_importer.cc --- a/components/password_manager/core/browser/import/password_importer.cc +++ b/components/password_manager/core/browser/import/password_importer.cc -@@ -75,6 +75,17 @@ const int32_t kMaxFileSizeBytes = 1000 * 1024; +@@ -82,6 +82,17 @@ base::expected ValidateDataSize(int64_t size) { // optional string. The string will be present if the status is SUCCESS. base::expected ReadFileToString( const base::FilePath& path) { @@ -6359,9 +6464,9 @@ diff --git a/components/password_manager/core/browser/import/password_importer.c + return std::move(file_contents); + } +#endif - std::optional file_size = base::GetFileSize(path); - - if (file_size.has_value()) { + if (std::optional file_size = base::GetFileSize(path)) { + RETURN_IF_ERROR(ValidateDataSize(file_size.value())); + } diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc @@ -6413,7 +6518,7 @@ diff --git a/components/password_manager/core/browser/password_manager_constants diff --git a/components/password_manager/core/browser/password_store/BUILD.gn b/components/password_manager/core/browser/password_store/BUILD.gn --- a/components/password_manager/core/browser/password_store/BUILD.gn +++ b/components/password_manager/core/browser/password_store/BUILD.gn -@@ -74,6 +74,19 @@ source_set("password_store_impl") { +@@ -75,6 +75,19 @@ source_set("password_store_impl") { "android_backend_error.h", "password_data_type_controller_delegate_android.cc", "password_data_type_controller_delegate_android.h", @@ -6457,15 +6562,15 @@ diff --git a/components/password_manager/core/browser/password_store/login_datab diff --git a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc --- a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc +++ b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc -@@ -153,6 +153,7 @@ void PasswordStoreBuiltInBackend::InitBackend( - DCHECK(helper_); - affiliated_match_helper_ = affiliated_match_helper; +@@ -247,6 +247,7 @@ void PasswordStoreBuiltInBackend::InitBackend( + remote_form_changes_received_callback_ = remote_form_changes_received; + sync_enabled_or_disabled_cb_ = sync_enabled_or_disabled_cb; +#if !BUILDFLAG(IS_ANDROID) // To ensure that groups of the kClearUndecryptablePasswords will stay // balanced, after the cleanup is done an additional flag check is needed. // Users won't reach the flag the normal way since the LoginDB is working -@@ -161,6 +162,7 @@ void PasswordStoreBuiltInBackend::InitBackend( +@@ -255,6 +256,7 @@ void PasswordStoreBuiltInBackend::InitBackend( if (pref_service_->GetBoolean(prefs::kClearingUndecryptablePasswords)) { base::FeatureList::IsEnabled(features::kClearUndecryptablePasswords); } @@ -6473,7 +6578,7 @@ diff --git a/components/password_manager/core/browser/password_store/password_st background_task_runner_->PostTask( FROM_HERE, base::BindOnce(&LoginDatabaseAsyncHelper::CreateSyncBackend, -@@ -437,11 +439,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived( +@@ -561,11 +563,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived( weak_ptr_factory_.GetWeakPtr())) .Then(std::move(remote_form_changes_received)); @@ -6576,7 +6681,7 @@ diff --git a/components/password_manager/core/common/password_manager_pref_names diff --git a/components/sync/service/sync_prefs.cc b/components/sync/service/sync_prefs.cc --- a/components/sync/service/sync_prefs.cc +++ b/components/sync/service/sync_prefs.cc -@@ -740,7 +740,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) { +@@ -738,7 +738,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) { kSeparateLocalAndAccountSearchEngines); #endif case UserSelectableType::kPasswords: diff --git a/build/patches/Use-list-mode-for-tab-switcher.patch b/build/patches/Use-list-mode-for-tab-switcher.patch index d801b8e32..caac84fea 100644 --- a/build/patches/Use-list-mode-for-tab-switcher.patch +++ b/build/patches/Use-list-mode-for-tab-switcher.patch @@ -32,7 +32,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/app/ChromeActivity.java | 5 +- chrome/browser/android/favicon_helper.cc | 214 ++++++++++- chrome/browser/android/favicon_helper.h | 25 ++ - .../browser/flags/ChromeFeatureList.java | 6 +- .../flags/cromite/sTabSwitcherListMode.java | 33 ++ .../tab_ui/TabListFaviconProvider.java | 111 ++++++ .../browser/ui/favicon/FaviconHelper.java | 57 ++- @@ -42,7 +41,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../java/res/drawable/ic_warning_red_16dp.xml | 26 ++ .../layout/title_and_description_layout.xml | 31 +- .../tab-switcher-list-mode.inc | 3 + - 35 files changed, 1184 insertions(+), 43 deletions(-) + 34 files changed, 1180 insertions(+), 41 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 @@ -217,7 +216,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.tabmodel.TabClosingSource; import org.chromium.chrome.browser.tabmodel.TabClosureParamsUtils; import org.chromium.chrome.browser.tabmodel.TabCreatorUtil; -@@ -901,6 +902,13 @@ public class TabGridDialogMediator +@@ -900,6 +901,13 @@ public class TabGridDialogMediator TabGridDialogProperties.DIALOG_UNGROUP_BAR_HOVERED_TEXT_COLOR, ungroupBarHoveredTextColor); mModel.set(TabGridDialogProperties.IS_INCOGNITO, isIncognito); @@ -479,7 +478,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/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java -@@ -2630,8 +2630,26 @@ class TabListMediator implements TabListNotificationHandler { +@@ -2622,8 +2622,26 @@ class TabListMediator implements TabListNotificationHandler { private void updateFaviconForTab( PropertyModel model, Tab tab, @Nullable Bitmap icon, @Nullable GURL iconUrl) { if (mActionsOnAllRelatedTabs && isTabInTabGroup(tab)) { @@ -997,7 +996,7 @@ new file mode 100644 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 -@@ -298,7 +298,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase +@@ -305,7 +305,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase || isFullSpaceModeOnAndroidXr; @Nullable Tab tab = getCurrentTab(); @@ -1006,7 +1005,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser return FadeHubLayoutAnimationFactory.createFadeInAnimatorProvider( hubContainerView, HUB_LAYOUT_FADE_DURATION_MS, mOnToolbarAlphaChange); } else if (isFullSpaceModeOnAndroidXr && getTabListMode() == TabListMode.GRID) { -@@ -327,7 +327,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase +@@ -334,7 +334,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase HubContainerView hubContainerView) { assert !DeviceFormFactor.isNonMultiDisplayContextOnTablet(hubContainerView.getContext()); Tab tab = getCurrentTab(); @@ -1057,7 +1056,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/tab_management_java_sources.gni b/chrome/android/features/tab_ui/tab_management_java_sources.gni --- a/chrome/android/features/tab_ui/tab_management_java_sources.gni +++ b/chrome/android/features/tab_ui/tab_management_java_sources.gni -@@ -180,6 +180,8 @@ internal_tab_management_java_sources = [ +@@ -179,6 +179,8 @@ internal_tab_management_java_sources = [ "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListNotificationHandler.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListOnScrollListener.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java", @@ -1085,15 +1084,15 @@ 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 -@@ -197,6 +197,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; +@@ -199,6 +199,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.task_manager.TaskManager; import org.chromium.chrome.browser.task_manager.TaskManagerFactory; +import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.theme.ThemeModuleUtils; - import org.chromium.chrome.browser.tinker_tank.TinkerTankDelegate; import org.chromium.chrome.browser.toolbar.ControlContainer; -@@ -695,8 +696,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + import org.chromium.chrome.browser.toolbar.ToolbarManager; +@@ -700,8 +701,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -1408,29 +1407,6 @@ diff --git a/chrome/browser/android/favicon_helper.h b/chrome/browser/android/fa base::WeakPtrFactory weak_ptr_factory_{this}; }; -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 -@@ -21,6 +21,7 @@ import org.chromium.components.cached_flags.IntCachedFeatureParam; - import org.chromium.components.cached_flags.StringCachedFeatureParam; - - import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase; -+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode; - import java.util.Arrays; - import java.util.stream.Collectors; - -@@ -1372,8 +1373,9 @@ public abstract class ChromeFeatureList { - newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR_FAST_FOLLOW, true); - public static final MutableFlagWithSafeDefault sAndroidContextMenuDuplicateTabs = - newMutableFlagWithSafeDefault(ANDROID_CONTEXT_MENU_DUPLICATE_TABS, false); -- public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = -- newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true); -+ public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = sTabSwitcherListMode.getInstance().isEnabled() -+ ? ChromeFeatureMap.getInstance().immutableFlagWithDefault(ANDROID_PINNED_TABS, false) -+ : newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true); - public static final MutableFlagWithSafeDefault sAndroidPinnedTabsTabletTabStrip = - newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS_TABLET_TAB_STRIP, true); - public static final MutableFlagWithSafeDefault sAndroidTipsNotifications = diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java new file mode 100644 --- /dev/null @@ -1658,7 +1634,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow /** Helper for generating default favicons and sharing the same icon between multiple views. */ public static class DefaultFaviconHelper { private @Nullable Bitmap mChromeDarkBitmap; -@@ -220,6 +234,36 @@ public class FaviconHelper { +@@ -230,6 +244,36 @@ public class FaviconHelper { faviconImageCallback); } @@ -1695,7 +1671,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) @NativeMethods public interface Natives { -@@ -227,6 +271,13 @@ public class FaviconHelper { +@@ -237,6 +281,13 @@ public class FaviconHelper { void destroy(long nativeFaviconHelper); @@ -1734,7 +1710,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable; import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable.HairlineBehavior; import org.chromium.chrome.browser.omnibox.LocationBarCoordinator; -@@ -2106,7 +2107,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2140,7 +2141,7 @@ public class ToolbarPhone extends ToolbarLayout // On entering the tab switcher, set the focusability of the url bar to be false. This will // occur at the start of the enter event, and will later be reset to true upon finishing the // exit event. @@ -1743,7 +1719,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mLocationBar.setUrlBarFocusable(false); } -@@ -2334,7 +2335,8 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2368,7 +2369,8 @@ public class ToolbarPhone extends ToolbarLayout ToggleTabStackButtonCoordinator tabSwitcherButtonCoordinator = getTabSwitcherButtonCoordinator(); assumeNonNull(tabSwitcherButtonCoordinator); From 2afc7b19a4f8a398f715287f6b4ac6a45bc69cd9 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 8 May 2026 08:37:18 +0200 Subject: [PATCH 03/12] Bump to 148.0.7778.97 --- build/RELEASE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASE b/build/RELEASE index aefc6d75e..2004f4162 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -147.0.7727.102 \ No newline at end of file +148.0.7778.97 \ No newline at end of file From edba3a2430d1e08dcf7d897f0f2269ec722fd85c Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 8 May 2026 08:40:38 +0200 Subject: [PATCH 04/12] [TOOLS] Update runner to v2.334.0 --- tools/images/github-runner/Dockerfile | 2 +- tools/images/github-runner/start-runner.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/images/github-runner/Dockerfile b/tools/images/github-runner/Dockerfile index 2c3106313..055c4567c 100644 --- a/tools/images/github-runner/Dockerfile +++ b/tools/images/github-runner/Dockerfile @@ -77,7 +77,7 @@ RUN useradd -m runner \ # Build args ARG TARGETPLATFORM=amd64 -ARG RUNNER_VERSION=2.331.0 +ARG RUNNER_VERSION=2.334.0 WORKDIR /runner # Runner download supports amd64 as x64 diff --git a/tools/images/github-runner/start-runner.sh b/tools/images/github-runner/start-runner.sh index 197ddf964..67a534e8a 100644 --- a/tools/images/github-runner/start-runner.sh +++ b/tools/images/github-runner/start-runner.sh @@ -45,7 +45,7 @@ do -v /casefold:/win_sdk \ --network none \ --device=/dev/kvm \ - uazo/github-runner:2.331.0 + uazo/github-runner:2.334.0 echo "You can stop now" sleep 5s From 5aab1a3f2a8ee2855ee9de130b56b04c9ec6fed0 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 8 May 2026 11:44:31 +0200 Subject: [PATCH 05/12] Bump to 148.0.7778.120 --- build/RELEASE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/RELEASE b/build/RELEASE index 2004f4162..8705f7ddf 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -148.0.7778.97 \ No newline at end of file +148.0.7778.120 \ No newline at end of file From 0bf212cf9bc9ad5c0ff8886115a99d29f4f6c7d9 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Tue, 19 May 2026 10:48:25 +0200 Subject: [PATCH 06/12] Patches for v148 --- .../Add-bookmark-import-export-actions.patch | 8 +- ...nfigure-maximum-connections-per-host.patch | 9 +- ...tting-to-enable-Credman-for-passkeys.patch | 24 +- .../patches/Android-Pixel-Perfect-Mode.patch | 4 +- ...roid-fonts-fingerprinting-mitigation.patch | 25 +- .../patches/Chrome-web-store-protection.patch | 4 +- ...romite-Branding--improve-settings-ui.patch | 11 +- build/patches/Disable-Compose-feature.patch | 33 +- build/patches/Disable-TLS-resumption.patch | 38 +- build/patches/Disable-UA-full-version.patch | 2 +- .../patches/Disable-all-predictors-code.patch | 1368 +++++++++++++++-- .../Disable-integration-with-Gemini.patch | 359 ++++- build/patches/Disable-privacy-sandbox.patch | 4 +- .../Enable-Certificate-Transparency.patch | 7 +- .../Enable-extension-in-incognito.patch | 563 ++++--- .../patches/Enable-gwp-asan-on-Android.patch | 16 +- ...al-support-for-extensions-on-Android.patch | 364 ++++- .../Experimental-user-scripts-support.patch | 6 +- build/patches/Eyeo-Adblock-for-Cromite.patch | 103 +- .../patches/Improve-the-browser-sandbox.patch | 71 +- build/patches/Keyboard-protection-flag.patch | 4 +- .../Move-navigation-bar-to-bottom.patch | 126 +- .../patches/Partition-HSTS-cache-by-NAK.patch | 6 +- ...ning-all-cookies-by-top-frame-domain.patch | 8 +- ...redential-fingerprinting-mitigations.patch | 33 +- .../Remove-binary-blob-integrations.patch | 68 +- .../Restore-Simplified-NTP-launch.patch | 19 +- ...-button-in-top-toolbar-customization.patch | 48 +- .../Restore-chrome-password-store.patch | 6 +- build/patches/Show-NTP-at-startup.patch | 131 +- .../Use-list-mode-for-tab-switcher.patch | 55 +- .../eyeo-133.0.6943.49-extension_api.patch | 12 +- ...romium-Disable-translate-integration.patch | 229 ++- ...ed-chromium-no-special-hosts-domains.patch | 30 +- 34 files changed, 3146 insertions(+), 648 deletions(-) diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index b19a4fad6..06d0c6ccc 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B BackPressHelper.create( this, getOnBackPressedDispatcher(), mBookmarkManagerCoordinator); + -+ mBookmarkManagerCoordinator.setWindow(mWindowAndroid, ++ mBookmarkManagerCoordinator.setWindow(getWindowAndroid(), + getModalDialogManagerSupplier().get()); } @@ -150,13 +150,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + -+ mWindowAndroid.getIntentRequestTracker().saveInstanceState(outState); ++ getWindowAndroid().getIntentRequestTracker().saveInstanceState(outState); + } + + @Override + public void onRequestPermissionsResult( + int requestCode, String[] permissions, int[] grantResults) { -+ if (mWindowAndroid.handlePermissionResult(requestCode, permissions, grantResults)) ++ if (getWindowAndroid().handlePermissionResult(requestCode, permissions, grantResults)) + return; + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } @@ -232,7 +232,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "chrome/browser/bookmarks/bookmark_html_writer.h" +#include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/platform_util.h" -+#include "chrome/browser/ui/chrome_select_file_policy.h" ++#include "chrome/browser/ui/select_file_policy/chrome_select_file_policy.h" +#include "components/user_data_importer/common/imported_bookmark_entry.h" +#include "components/user_data_importer/content/content_bookmark_parser.h" +#include "components/user_data_importer/content/content_bookmark_parser_utils.h" diff --git a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch index 73955d63a..ff809cd2c 100644 --- a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch +++ b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch @@ -11,8 +11,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../common/network_switch_list.h | 4 ++++ .../spoof_checks/top_domains/BUILD.gn | 1 + ...o-configure-maximum-connections-per-host.inc | 17 +++++++++++++++++ - net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++ - 4 files changed, 39 insertions(+) + net/socket/client_socket_pool_manager.cc | 16 ++++++++++++++++ + 4 files changed, 38 insertions(+) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-flag-to-configure-maximum-connections-per-host.inc diff --git a/components/network_session_configurator/common/network_switch_list.h b/components/network_session_configurator/common/network_switch_list.h @@ -76,12 +76,11 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket #include "net/ssl/ssl_config.h" #include "url/gurl.h" #include "url/scheme_host_port.h" -@@ -169,6 +173,19 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test( +@@ -169,6 +173,18 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test( // static size_t ClientSocketPoolManager::max_sockets_per_group( HttpNetworkSession::SocketPoolType pool_type) { -+ -+ if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) { ++ if (pool_type == net::HttpNetworkSession::SocketPoolType::kNormal) { + int maxConnectionsPerHost = 0; + auto value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost); + if (!value.empty() && !base::StringToInt(value, &maxConnectionsPerHost)) { diff --git a/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch b/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch index d7ab7342d..dc53c66db 100644 --- a/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch +++ b/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch @@ -19,9 +19,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../webauthn/android/webauthn_feature_map.cc | 1 + components/webauthn/features.cc | 4 +++ components/webauthn/features.h | 3 +++ - device/fido/public/features.cc | 2 ++ + device/fido/public/features.cc | 1 + .../authentication_credentials_container.cc | 5 ++++ - 11 files changed, 74 insertions(+), 33 deletions(-) + 11 files changed, 73 insertions(+), 33 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp 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 @@ -317,22 +317,14 @@ diff --git a/components/webauthn/features.h b/components/webauthn/features.h diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc --- a/device/fido/public/features.cc +++ b/device/fido/public/features.cc -@@ -130,6 +130,7 @@ BASE_FEATURE(kWebAuthnPublishPrelinkingInfo, - "WebAuthenticationPublishPrelinkingInfo", - base::FEATURE_DISABLED_BY_DEFAULT); - #endif // BUILDFLAG(IS_ANDROID) +@@ -183,6 +183,7 @@ BASE_FEATURE_PARAM(int, + BASE_FEATURE(kWebAuthnImmediateGet, + "WebAuthenticationImmediateGet", + base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGet); - // Disabled by default. - BASE_FEATURE(kWebAuthnHelloSignal, -@@ -189,6 +190,7 @@ BASE_FEATURE_PARAM(int, - &kWebAuthnImmediateGet, - "timeout_ms", - kDefaultImmediateMediationTimeoutMs); -+SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGetAutoselect); - - // Deprecation flag. Disabled by default in M142. Remove in or after M145. - BASE_FEATURE(kWebAuthnSendPinGeneration, + BASE_FEATURE_PARAM(int, + kWebAuthnImmediateMediationTimeoutMilliseconds, diff --git a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc --- a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index 6905fe5dc..0a5dd54ff 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -485,7 +485,7 @@ diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/android/java/res/xml/developer_preferences.xml --- a/chrome/android/java/res/xml/developer_preferences.xml +++ b/chrome/android/java/res/xml/developer_preferences.xml -@@ -40,4 +40,8 @@ found in the LICENSE file. +@@ -45,4 +45,8 @@ found in the LICENSE file. android:summary="@string/android_fonts_fingerprinting_mitigation_summary" app:featureName="android-fonts-fingerprinting-mitigation" app:needRestart="true" /> @@ -851,7 +851,7 @@ diff --git a/components/thin_webview/internal/thin_webview.cc b/components/thin_ web_contents_->GetNativeView()->OnPhysicalBackingSizeChanged(size); - web_contents_->GetNativeView()->OnSizeChanged(size.width(), size.height()); -+ web_contents_->GetNativeView()->OnSizeChanged(size.width(), size.height(), size.height()); ++ web_contents_->GetNativeView()->OnSizeChanged(size.width(), size.height(), size.width(), size.height()); } } // namespace android diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index dc8b42710..e6f95916e 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -46,9 +46,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../skia/src/ports/SkFontMgr_android.cpp | 286 ++- .../skia/src/ports/SkFontMgr_android_data.cpp | 1641 +++++++++++++++++ .../skia/src/ports/SkFontMgr_android_ndk.cpp | 2 +- - .../src/ports/SkFontMgr_android_parser.cpp | 66 +- + .../src/ports/SkFontMgr_android_parser.cpp | 69 +- .../skia/src/ports/SkFontMgr_android_parser.h | 5 +- - 42 files changed, 2449 insertions(+), 88 deletions(-) + 42 files changed, 2451 insertions(+), 89 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 @@ -109,10 +109,10 @@ diff --git a/build/config/freetype/freetype.gni b/build/config/freetype/freetype diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/android/java/res/xml/developer_preferences.xml --- a/chrome/android/java/res/xml/developer_preferences.xml +++ b/chrome/android/java/res/xml/developer_preferences.xml -@@ -23,4 +23,9 @@ found in the LICENSE file. - android:title="Hint: You can also enable Developer options on Beta/Stable channels by tapping the Chrome version in "Settings > About Chrome" multiple times." - app:allowDividerAbove="false" - app:allowDividerBelow="false" /> +@@ -28,4 +28,9 @@ found in the LICENSE file. + android:summary="@string/android_gpu_sandbox_summary" + app:featureName="android-gpu-sandbox" + app:needRestart="true" /> + + // Therefore, we only attempt to parse them on modern devices (Android Lollipop+). + // Pre-21 systems fall through to the legacy fallback fonts handling below. ++ if (!custom) + SkFontMgr_Android_Parser::GetCustomFontFamilies( +- fontFamilies, basePath, PRODUCT_CUSTOMIZATION_FILE, nullptr, nullptr); ++ fontFamilies, basePath, custom, PRODUCT_CUSTOMIZATION_FILE, nullptr, nullptr); + return; + } // Append all the fallback fonts to system fonts std::vector> fallbackFonts; @@ -3276,7 +3285,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android_parser.cpp b/third_par fontFamilies.insert(fontFamilies.end(), std::make_move_iterator(fallbackFonts.begin()), std::make_move_iterator(fallbackFonts.end())); -@@ -898,15 +933,16 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( +@@ -898,15 +934,16 @@ void SkFontMgr_Android_Parser::GetSystemFontFamilies( void SkFontMgr_Android_Parser::GetCustomFontFamilies( std::vector>& fontFamilies, const SkString& basePath, diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index 197b89756..73235d47d 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -339,8 +339,8 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro } // Remove extensions that aren't in an autoupdatable location. if (!Manifest::IsAutoUpdateableLocation(extension->location())) { -+ LOG(INFO) << "Extension " << extension.id() << " is not auto updateable: " -+ << "location=" << extension.location(); ++ LOG(INFO) << "Extension " << extension->id() << " is not auto updateable: " ++ << "location=" << extension->location(); return true; } } else { diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index 1fc07554e..a5606811c 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -8,10 +8,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- chrome/android/chrome_java_resources.gni | 2 +- .../android/java/res/xml/main_preferences.xml | 4 +- - .../res/xml/privacy_preferences_cromite.xml | 191 ++++++++++++++++++ + .../res/xml/privacy_preferences_cromite.xml | 196 ++++++++++++++++++ .../privacy/settings/PrivacySettings.java | 6 +- .../Cromite-settings-ui.grdp | 15 ++ - 5 files changed, 213 insertions(+), 5 deletions(-) + 5 files changed, 218 insertions(+), 5 deletions(-) create mode 100644 chrome/android/java/res/xml/privacy_preferences_cromite.xml create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp @@ -52,7 +52,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences_cromite.xml b/chrom new file mode 100644 --- /dev/null +++ b/chrome/android/java/res/xml/privacy_preferences_cromite.xml -@@ -0,0 +1,191 @@ +@@ -0,0 +1,196 @@ +