diff --git a/build/RELEASE b/build/RELEASE index 7df59c18..d52374ab 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -142.0.7444.176 \ No newline at end of file +143.0.7499.40 \ No newline at end of file diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index 509d1519..6a8d35f4 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -287,7 +287,6 @@ Disable-Posture-API.patch PublicKeyCredential-fingerprinting-mitigations.patch Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch Enable-Cert-Management-UI.patch -Enable-ProcessBoundStringEncryption-by-default.patch Prevent-mouse-wheel-fingerprinting-on-Windows.patch Enable-component-updater.patch Android-fonts-fingerprinting-mitigation.patch @@ -331,5 +330,5 @@ Eyeo-Adblock-for-Cromite.patch # extension patches Experimental-support-for-extensions-on-Android.patch -Backport-v143-android-extensions-changes.patch +Backport-v144-android-extensions-changes.patch Enable-extension-in-incognito.patch diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index 8a9e869b..abb1d341 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 -@@ -242,6 +242,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -249,6 +249,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; -@@ -1004,6 +1005,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -1082,6 +1083,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier()); @@ -40,26 +40,26 @@ 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 -@@ -185,6 +185,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -194,6 +194,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, - &feed::kFeedShowSignInCommand, - &feed::kFeedSignedOutViewDemotion, -+ &kAllowUserCertificates, &feed::kFeedRecyclerBinderUnmountOnDetach, + &feed::kFeedShowSignInCommand, ++ &kAllowUserCertificates, + &feed::kFeedSignedOutViewDemotion, &feed::kInterestFeedV2, &feed::kWebFeedAwareness, 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 -@@ -164,6 +164,7 @@ public abstract class ChromeFeatureList { +@@ -166,6 +166,7 @@ public abstract class ChromeFeatureList { "AccountForSuppressedKeyboardInsets"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 = "AdaptiveButtonInTopToolbarCustomizationV2"; + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY = "AdaptiveButtonInTopToolbarPageSummary"; - public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = -@@ -807,6 +808,8 @@ public abstract class ChromeFeatureList { + public static final String ANDROID_ANIMATED_PROGRESS_BAR_IN_BROWSER = +@@ -805,6 +806,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn = newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false, true); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); @@ -68,8 +68,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sAppSpecificHistoryViewIntent = newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true); public static final CachedFlag sAsyncNotificationManager = -@@ -1130,6 +1133,7 @@ public abstract class ChromeFeatureList { - sAllowTabClosingUponMinimization, +@@ -1128,6 +1131,7 @@ public abstract class ChromeFeatureList { + sAccountForSuppressedKeyboardInsets, sAndroidAnimatedProgressBarInBrowser, sAndroidAnimatedProgressBarInViz, + sAllowUserCertificates, 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 f857bb8b..ec717c85 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 -@@ -883,6 +883,12 @@ public class KeyboardShortcuts { +@@ -903,6 +903,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 1a123980..5db63725 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 -@@ -188,6 +188,10 @@ bool IsReducePPMsEnabled() { +@@ -202,6 +202,10 @@ bool IsReducePPMsEnabled() { return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed); } 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 98c10998..b6f5c315 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -8924,9 +8924,9 @@ +@@ -8954,9 +8954,9 @@ "expiry_milestone": 150 }, { @@ -32,7 +32,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js 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 -@@ -265,6 +265,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { +@@ -264,6 +264,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)}, {wf::EnablePeriodicBackgroundSync, raw_ref(features::kPeriodicBackgroundSync)}, @@ -56,7 +56,7 @@ new file mode 100644 diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/public/cpp/gamepad_features.cc --- a/device/gamepad/public/cpp/gamepad_features.cc +++ b/device/gamepad/public/cpp/gamepad_features.cc -@@ -37,4 +37,12 @@ bool IsGamepadMultitouchEnabled() { +@@ -40,4 +40,12 @@ bool IsGamepadMultitouchEnabled() { return false; } @@ -72,10 +72,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 -@@ -15,8 +15,10 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE( - GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kEnableGamepadMultitouch); +@@ -16,8 +16,10 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kEnableGamepadMultitouch); GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE( kEnableSimulatedGamepadDataFetcher); + GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kGamepadRawInputChangeEvent); +GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kRestrictGamepadAccess); GAMEPAD_FEATURES_EXPORT bool IsGamepadMultitouchEnabled(); diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index 9d89df06..7ef4f8b3 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -100,9 +100,9 @@ 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 -@@ -229,6 +229,9 @@ +@@ -233,6 +233,9 @@ + - + + @@ -197,7 +197,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -207,6 +207,8 @@ +@@ -211,6 +211,8 @@ #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/extensions/background_mode_manager.h" #endif -@@ -1749,6 +1751,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1565,6 +1567,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -683,7 +683,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" #endif -@@ -426,7 +429,7 @@ void RegisterChromeWebUIConfigs() { +@@ -428,7 +431,7 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); #endif @@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -190,6 +190,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -191,6 +191,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"; @@ -1181,9 +1181,9 @@ diff --git a/components/proxy_config/pref_proxy_config_tracker_impl.cc b/compone - ProxyConfigDictionary::CreateSystem()); + ProxyConfigDictionary::CreateDirect()); registry->RegisterBooleanPref(proxy_config::prefs::kUseSharedProxies, false); - } - -@@ -405,6 +405,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig( + registry->RegisterListPref(proxy_config::prefs::kProxyOverrideRules); + #if !BUILDFLAG(IS_CHROMEOS) +@@ -410,6 +410,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig( if (proxy_dict.GetBypassList(&proxy_bypass)) { proxy_config.proxy_rules().bypass_rules.ParseFromString(proxy_bypass); } diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 71b68aa7..ee9489a2 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -46,8 +46,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- .../browser/tabmodel/ChromeTabCreator.java | 5 +- .../tabmodel/TabModelSelectorImpl.java | 3 + - .../browser/tabmodel/TabPersistentStore.java | 9 + - .../browser/toolbar/ToolbarManager.java | 3 +- + .../tabmodel/TabPersistentStoreImpl.java | 7 + + .../browser/toolbar/ToolbarManager.java | 1 + .../webapps/WebappIntentDataProvider.java | 15 ++ .../browser/android/historical_tab_saver.cc | 24 ++- .../chrome_autocomplete_provider_client.cc | 9 + @@ -71,7 +71,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ui/native_page/NativePage.java | 17 +- .../browser/omnibox/LocationBarMediator.java | 8 + .../strings/android_chrome_strings.grd | 25 +++ - .../browser/toolbar/LocationBarModel.java | 4 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + .../snackbar/INeedSnackbarManager.java | 28 +++ .../search_engine_tab_helper.cc | 6 + @@ -88,7 +87,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + - 69 files changed, 791 insertions(+), 103 deletions(-) + 68 files changed, 785 insertions(+), 101 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -101,7 +100,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 -@@ -638,6 +638,7 @@ chrome_java_resources = [ +@@ -650,6 +650,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", @@ -120,7 +119,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", -@@ -925,6 +926,7 @@ chrome_java_sources = [ +@@ -936,6 +937,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", @@ -257,9 +256,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.IntentHandler.ExternalAppId; import org.chromium.chrome.browser.IntentHandler.TabOpenType; - import org.chromium.chrome.browser.app.ChromeActivity; -@@ -837,15 +841,20 @@ public class ChromeTabbedActivity extends ChromeActivity { - } + import org.chromium.chrome.browser.accessibility.settings.CaretBrowsingDialog; +@@ -825,15 +829,20 @@ public class ChromeTabbedActivity extends ChromeActivity { + BrowserWindowType.NORMAL, currentTabModel, mMultiInstanceManager); // For saving non-incognito tab closures for Recent Tabs. - mHistoricalTabModelObserver = @@ -286,7 +285,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( -@@ -3299,7 +3308,7 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3274,7 +3283,7 @@ public class ChromeTabbedActivity extends ChromeActivity { // We determine SupportedProfileType in onPreCreate(). // We determine the model as soon as possible so every systems get initialized coherently. @@ -298,7 +297,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -100,6 +100,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH +@@ -101,6 +101,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.devtools.DevToolsWindowAndroid; @@ -306,7 +305,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; import org.chromium.chrome.browser.download.DownloadManagerService; -@@ -2076,6 +2077,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2144,6 +2145,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -328,7 +327,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. -@@ -635,8 +637,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -633,8 +635,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !isNativePage && !isFileScheme && !isContentScheme @@ -351,7 +350,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ContextMenuItemType; -@@ -430,6 +431,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -437,6 +438,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { mShowEphemeralTabNewLabel = null; mCustomActionMap.clear(); @@ -361,7 +360,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -501,7 +505,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -508,7 +512,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -422,7 +421,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -@@ -224,6 +225,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -248,6 +249,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat openInChromeItemVisible = false; tryAddingReadAloud = false; } @@ -445,7 +444,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -1287,6 +1290,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1328,6 +1331,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid return getInitialActivityWidth() > 0; } @@ -585,7 +584,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 -@@ -20,6 +20,14 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -21,6 +21,14 @@ import org.chromium.components.embedder_support.util.UrlConstants; import java.util.function.Supplier; @@ -600,8 +599,8 @@ 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 { -@@ -49,6 +57,14 @@ public class HistoryPage extends BasicNativePage { - String url) { +@@ -51,6 +59,14 @@ public class HistoryPage extends BasicNativePage { + BackPressManager backPressManager) { super(host); + if (profile.isOffTheRecord() && @@ -626,7 +625,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; -@@ -396,7 +397,8 @@ public class NativePageFactory { +@@ -411,7 +412,8 @@ public class NativePageFactory { NativePage page; @@ -1006,7 +1005,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; -@@ -241,7 +242,8 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -242,7 +243,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. @@ -1019,16 +1018,16 @@ 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 -@@ -210,6 +210,8 @@ import org.chromium.content_public.common.ContentSwitches; +@@ -209,6 +209,8 @@ import org.chromium.content_public.common.ContentSwitches; import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.ui.base.IntentRequestTracker; - import org.chromium.ui.base.LocalizationUtils; + import org.chromium.ui.base.UiAndroidFeatureList; import org.chromium.ui.display.DisplayUtil; -@@ -1281,7 +1283,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1257,7 +1259,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1040,7 +1039,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -56,6 +56,10 @@ import org.chromium.url.GURL; +@@ -55,6 +55,10 @@ import org.chromium.url.GURL; import java.util.Collections; import java.util.function.Supplier; @@ -1049,9 +1048,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome +import org.chromium.chrome.browser.tab.TabObserver; + /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ - @NullMarked - public class ChromeTabCreator extends TabCreator -@@ -587,7 +591,6 @@ public class ChromeTabCreator extends TabCreator + public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabModelOrderController { + /** +@@ -594,7 +598,6 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. public @Nullable Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { @@ -1079,19 +1078,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod TabCreator regularTabCreator = getTabCreatorManager().getTabCreator(false); TabCreator incognitoTabCreator = getTabCreatorManager().getTabCreator(true); mRecentlyClosedBridge = -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -61,6 +61,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils; - import org.chromium.components.embedder_support.util.UrlUtilities; - import org.chromium.content_public.browser.LoadUrlParams; - +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 +@@ -32,6 +32,7 @@ import org.chromium.base.task.TaskTraits; + import org.chromium.build.annotations.Initializer; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; -+ - import java.io.BufferedInputStream; - import java.io.ByteArrayInputStream; - import java.io.DataInputStream; -@@ -837,6 +839,13 @@ public class TabPersistentStore { + import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; + import org.chromium.chrome.browser.crypto.CipherFactory; + import org.chromium.chrome.browser.flags.ChromeFeatureList; +@@ -750,6 +751,12 @@ public class TabPersistentStoreImpl implements TabPersistentStore { } } } @@ -1101,30 +1099,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer + return; + } + } -+ TabModel model = mTabModelSelector.getModel(isIncognito); if (model.isIncognito() != isIncognito) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -50,6 +50,7 @@ import org.chromium.base.supplier.OneshotSupplierImpl; +@@ -53,6 +53,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.IntentHandler; - import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -869,7 +870,7 @@ public class ToolbarManager - return ret; - } - }, -- mToolbarPositionSupplier); -+ mToolbarPositionSupplier, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); - mControlContainer = controlContainer; - mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); - + import org.chromium.chrome.browser.back_press.BackPressMetrics; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java @@ -1186,7 +1174,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and using base::android::JavaParamRef; using base::android::JavaRef; using base::android::ScopedJavaLocalRef; -@@ -101,7 +106,8 @@ std::vector> StringsToUuids( +@@ -89,7 +94,8 @@ std::vector> StringsToUuids( void CreateHistoricalTab( TabAndroid* tab_android, @@ -1196,7 +1184,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!tab_android) { return; } -@@ -112,9 +118,14 @@ void CreateHistoricalTab( +@@ -100,9 +106,14 @@ void CreateHistoricalTab( return; } @@ -1213,16 +1201,16 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!service) { return; } -@@ -178,7 +189,7 @@ void CreateHistoricalBulkClosure( +@@ -166,7 +177,7 @@ void CreateHistoricalBulkClosure( per_tab_optional_tab_group_ids, - std::vector> tabs, + std::vector tabs, std::vector web_contents_state) { - DCHECK(model); + if (!model) return; DCHECK_EQ(tab_group_ids.size(), group_titles.size()); DCHECK_EQ(tab_group_ids.size(), group_colors.size()); DCHECK_EQ(tab_group_ids.size(), tab_group_ids.size()); -@@ -292,11 +303,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -280,11 +291,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1377,7 +1365,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" -@@ -614,6 +617,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -627,6 +630,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1391,7 +1379,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -621,6 +631,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -634,6 +644,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1740,7 +1728,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 -@@ -257,6 +257,7 @@ +@@ -261,6 +261,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1748,7 +1736,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" -@@ -2203,6 +2204,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2022,6 +2023,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1813,7 +1801,7 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi 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 -@@ -31,6 +31,8 @@ robolectric_library("junit") { +@@ -33,6 +33,8 @@ robolectric_library("junit") { deps = [ ":java", @@ -1834,7 +1822,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 { -@@ -187,7 +189,8 @@ public interface NativePage { +@@ -192,7 +194,8 @@ public interface NativePage { */ static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean hasPdfDownload) { return url != null @@ -1844,7 +1832,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -197,7 +200,7 @@ public interface NativePage { +@@ -202,7 +205,7 @@ public interface NativePage { * not have chrome or chrome-native scheme. */ static boolean isChromePageUrl(GURL url, boolean isIncognito) { @@ -1853,7 +1841,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -211,7 +214,8 @@ public interface NativePage { +@@ -216,7 +219,8 @@ public interface NativePage { GURL url, @Nullable NativePage candidatePage, boolean isIncognito, @@ -1863,7 +1851,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. -@@ -229,7 +233,7 @@ public interface NativePage { +@@ -234,7 +238,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { @@ -1872,7 +1860,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } } -@@ -241,7 +245,7 @@ public interface NativePage { +@@ -246,7 +250,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ private static @NativePageType int chromePageType( @@ -1881,7 +1869,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) -@@ -261,7 +265,8 @@ public interface NativePage { +@@ -266,7 +270,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -1894,7 +1882,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 -@@ -99,6 +99,11 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -101,6 +101,11 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.url.GURL; @@ -1904,9 +1892,9 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow +import org.chromium.chrome.browser.preferences.Pref; + import java.util.ArrayList; + import java.util.Collection; import java.util.List; - import java.util.function.BooleanSupplier; -@@ -448,6 +453,9 @@ class LocationBarMediator +@@ -497,6 +502,9 @@ class LocationBarMediator if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return; Tab tab = mLocationBarDataProvider.getTab(); if (tab == null) return; @@ -1919,7 +1907,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 -@@ -6669,6 +6669,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6906,6 +6906,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -1951,27 +1939,6 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro <link1>Search history</link1> and <link2>other forms of activity</link2> may be saved in your Google Account -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java -@@ -167,6 +167,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro - protected GURL mVisibleGurl = GURL.emptyGURL(); - protected String mFormattedFullUrl; - protected String mUrlForDisplay; -+ private boolean mIsAlwaysIncognito; - - // notifyUrlChanged and notifySecurityStateChanged are usually called 3 times across a same - // document navigation. The first call is usually necessary, which updates the UrlBar to reflect -@@ -191,7 +192,8 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro - NewTabPageDelegate newTabPageDelegate, - UrlFormatter urlFormatter, - OfflineStatus offlineStatus, -- ObservableSupplier<@ControlsPosition Integer> toolbarPositionSupplier) { -+ ObservableSupplier<@ControlsPosition Integer> toolbarPositionSupplier, -+ boolean isAlwaysIncognito) { - mContext = context; - mNtpDelegate = newTabPageDelegate; - mUrlFormatter = urlFormatter; diff --git a/chrome/browser/ui/messages/android/BUILD.gn b/chrome/browser/ui/messages/android/BUILD.gn --- a/chrome/browser/ui/messages/android/BUILD.gn +++ b/chrome/browser/ui/messages/android/BUILD.gn @@ -2042,7 +2009,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 -@@ -4101,6 +4101,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4116,6 +4116,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2058,7 +2025,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -120,10 +120,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -122,10 +122,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -2071,25 +2038,24 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -146,11 +148,13 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -148,10 +150,12 @@ PrefProvider::PrefProvider(PrefService* prefs, WebsiteSettingsRegistry* website_settings = WebsiteSettingsRegistry::GetInstance(); for (const WebsiteSettingsInfo* info : *website_settings) { + bool save_site_settings = force_save_site_settings_ && + info->incognito_behavior() == WebsiteSettingsInfo::INHERIT_IN_INCOGNITO; content_settings_prefs_.insert(std::make_pair( - info->type(), - std::make_unique( - info->type(), prefs_, &pref_change_registrar_, info->pref_name(), -- info->partitioned_pref_name(), off_the_record_, restore_session, -+ info->partitioned_pref_name(), off_the_record_ && !save_site_settings, restore_session, - base::BindRepeating(&PrefProvider::Notify, - base::Unretained(this))))); + info->type(), std::make_unique( + info->type(), prefs_, &pref_change_registrar_, +- info->pref_name(), off_the_record_, restore_session, ++ info->pref_name(), off_the_record_ && !save_site_settings, restore_session, + base::BindRepeating(&PrefProvider::Notify, + base::Unretained(this))))); } 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 -@@ -38,6 +38,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -37,6 +37,7 @@ class PrefProvider : public UserModifiableProvider { PrefProvider(PrefService* prefs, bool off_the_record, @@ -2097,7 +2063,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov bool store_last_modified, bool restore_session); -@@ -130,6 +131,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -117,6 +118,7 @@ class PrefProvider : public UserModifiableProvider { raw_ptr prefs_; const bool off_the_record_; @@ -2108,7 +2074,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -288,6 +288,7 @@ struct ContentSettingEntry { +@@ -287,6 +287,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2116,7 +2082,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -297,6 +298,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -296,6 +297,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2124,7 +2090,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. store_last_modified_(store_last_modified), allow_invalid_secondary_pattern_for_testing_(false), clock_(base::DefaultClock::GetInstance()) { -@@ -310,7 +312,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2190,7 +2156,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -921,7 +921,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -922,7 +922,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( // is required. // Request for suggestions in OTR contexts is not allowed; except for the Lens // searchboxes. diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index c07ea764..35e8af51 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -65,8 +65,8 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro - - + diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml --- a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml +++ b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml @@ -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; -@@ -60,7 +61,7 @@ import java.util.function.Supplier; +@@ -61,7 +62,7 @@ import java.util.function.Supplier; */ @NullMarked public class TabbedModeTabDelegateFactory implements TabDelegateFactory { @@ -111,8 +111,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; -@@ -91,7 +92,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - private final BackPressManager mBackPressManager; +@@ -93,7 +94,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + private final MultiInstanceManager mMultiInstanceManager; public TabbedModeTabDelegateFactory( - Activity activity, @@ -208,7 +208,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; -@@ -76,7 +77,7 @@ import java.util.function.Supplier; +@@ -77,7 +78,7 @@ import java.util.function.Supplier; */ @NullMarked public class NativePageFactory { @@ -217,8 +217,8 @@ 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; -@@ -100,7 +101,7 @@ public class NativePageFactory { - private final BackPressManager mBackPressManager; +@@ -102,7 +103,7 @@ public class NativePageFactory { + private final MultiInstanceManager mMultiInstanceManager; public NativePageFactory( - Activity activity, @@ -226,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat BottomSheetController sheetController, BrowserControlsManager browserControlsManager, Supplier<@Nullable Tab> currentTabSupplier, -@@ -175,7 +176,7 @@ public class NativePageFactory { +@@ -180,7 +181,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -235,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mNewTabPageCreationTracker; private final BrowserControlsManager mBrowserControlsManager; -@@ -284,7 +285,7 @@ public class NativePageFactory { +@@ -293,7 +294,7 @@ public class NativePageFactory { mTabModelSelector, mEdgeToEdgeControllerSupplier), mActivity.getComponentName(), @@ -247,7 +247,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 -@@ -205,6 +205,8 @@ static_library("browser") { +@@ -200,6 +200,8 @@ static_library("browser") { "bad_message.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -256,7 +256,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1625,6 +1627,13 @@ static_library("browser") { +@@ -1588,6 +1590,13 @@ static_library("browser") { "webdata_services/web_data_service_factory.cc", ] @@ -270,7 +270,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3715,8 +3724,6 @@ static_library("browser") { +@@ -3711,8 +3720,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -775,7 +775,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; -@@ -655,6 +701,14 @@ class BookmarkManagerMediator +@@ -658,6 +704,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -790,7 +790,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. -@@ -827,6 +881,235 @@ class BookmarkManagerMediator +@@ -830,6 +884,235 @@ class BookmarkManagerMediator } } @@ -1057,8 +1057,8 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + new ModalDialogManager( + new AppModalPresenter(activity), ModalDialogManager.ModalDialogType.APP)); initWithView(mBookmarkManagerCoordinator.getView()); - } + setBackPressHandler(mBookmarkManagerCoordinator, backPressManager); diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java @@ -1251,20 +1251,20 @@ 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 -@@ -255,6 +255,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kBatchTabRestore, +@@ -262,6 +262,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kAuxiliarySearchHistoryDonation, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, + &kBookmarksExportUseSaf, &kBrowserControlsDebugging, &kBrowserControlsEarlyResize, - &kCacheActivityTaskID, + &kBrowserControlsRenderDrivenShowConstraint, 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 @@ -712,6 +712,7 @@ public abstract class ChromeFeatureList { - public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; + public static final String VERIFY_QWACS = "VerifyQWACs"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; + public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf"; public static final String WEB_APK_BACKUP_AND_RESTORE_BACKEND = "WebApkBackupAndRestoreBackend"; @@ -1325,7 +1325,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"; -@@ -1067,6 +1069,7 @@ public final class ChromePreferenceKeys { +@@ -1092,6 +1094,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1364,7 +1364,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -222,6 +222,13 @@ static_library("utility") { +@@ -211,6 +211,13 @@ static_library("utility") { deps += [ "//chrome/services/pdf:lib" ] } diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 9189fa16..081747da 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -54,7 +54,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../core/offline_page_feature.cc | 1 + .../offline_pages/core/offline_page_feature.h | 1 + .../browser/features/password_features.cc | 1 + - components/permissions/features.cc | 2 + + components/permissions/features.cc | 1 + ...nthetic_trials_active_group_id_provider.cc | 4 +- ...ynthetic_trials_active_group_id_provider.h | 4 +- components/webui/flags/flags_state.cc | 59 ++++++ @@ -106,7 +106,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html third_party/blink/public/common/features.h | 1 + ui/base/ui_base_features.cc | 1 + ui/base/ui_base_features.h | 1 + - 93 files changed, 848 insertions(+), 32 deletions(-) + 93 files changed, 847 insertions(+), 32 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp @@ -143,7 +143,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -170,6 +170,8 @@ use_epoll = is_linux || is_chromeos || is_android +@@ -174,6 +174,8 @@ use_epoll = is_linux || is_chromeos || is_android # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -152,7 +152,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1048,7 +1050,7 @@ component("base") { +@@ -1057,7 +1059,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -553,7 +553,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -@@ -39,7 +40,9 @@ import org.chromium.base.CallbackUtils; +@@ -35,7 +36,9 @@ import org.chromium.base.CallbackUtils; import org.chromium.base.DeviceInfo; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; @@ -563,7 +563,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -@@ -49,12 +52,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; +@@ -45,6 +48,7 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; @@ -571,6 +571,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.profiles.ProfileManagerUtils; +@@ -52,6 +56,7 @@ import org.chromium.chrome.browser.settings.search.SettingsSearchCoordinator; import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; @@ -578,7 +579,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; -@@ -107,6 +112,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -106,6 +111,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity PreferenceUpdateObserver { private static final String TAG = "SettingsActivity"; @@ -619,16 +620,16 @@ 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"; -@@ -184,7 +223,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -187,7 +226,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, - getModalDialogManagerSupplier()), + getModalDialogManagerSupplier(), + () -> new RequestRestartDelegate(mSnackbarManagerSupplier, this)), - true /* recursive */); + /* recursive= */ true); fragmentManager.registerFragmentLifecycleCallbacks( - new WideDisplayPaddingApplier(), false /* recursive */); + new WideDisplayPaddingApplier(), /* recursive= */ false); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java @@ -654,7 +655,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 -@@ -387,6 +387,10 @@ using flags_ui::kOsLinux; +@@ -385,6 +385,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -665,9 +666,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4977,6 +4981,10 @@ const FeatureEntry::FeatureVariation kSeamlessSigninPromoTypes[] = { - std::size(kSeamlessSigninPromoTypeTwoButtons), nullptr}}; - #endif // BUILDFLAG(IS_ANDROID) +@@ -5176,6 +5180,10 @@ const FeatureEntry::FeatureVariation kProfilePickerTextVariations[] = { + }; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -676,7 +677,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. -@@ -5003,6 +5011,9 @@ const FeatureEntry::FeatureVariation kSeamlessSigninPromoTypes[] = { +@@ -5202,6 +5210,9 @@ const FeatureEntry::FeatureVariation kProfilePickerTextVariations[] = { const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -689,7 +690,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 -@@ -313,4 +313,5 @@ BASE_FEATURE(kReportPakFileIntegrity, +@@ -302,4 +302,5 @@ BASE_FEATURE(kReportPakFileIntegrity, // show both in Chrome Tabs and Windows. BASE_FEATURE(kRemovalOfIWAsFromTabCapture, base::FEATURE_ENABLED_BY_DEFAULT); @@ -698,7 +699,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 -@@ -126,6 +126,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -122,6 +122,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -748,9 +749,9 @@ 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 -@@ -1159,5 +1159,6 @@ BASE_FEATURE(kUseLibunwindstackNativeUnwinderAndroid, - // a descriptive text. - BASE_FEATURE(kWebOtpCrossDeviceSimpleString, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -835,5 +835,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, base::FEATURE_DISABLED_BY_DEFAULT); + + // clang-format on +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_cc.inc" } // namespace android @@ -758,7 +759,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 -@@ -354,6 +354,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( +@@ -370,6 +370,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( "snippet_as_subtitle", /*default_value=*/false); @@ -769,7 +770,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser 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 -@@ -19,6 +19,10 @@ import org.chromium.components.cached_flags.DoubleCachedFeatureParam; +@@ -20,6 +20,10 @@ import org.chromium.components.cached_flags.DoubleCachedFeatureParam; import org.chromium.components.cached_flags.IntCachedFeatureParam; import org.chromium.components.cached_flags.StringCachedFeatureParam; @@ -780,7 +781,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -1111,7 +1115,7 @@ public abstract class ChromeFeatureList { +@@ -1110,7 +1114,7 @@ public abstract class ChromeFeatureList { newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); // keep-sorted end @@ -789,7 +790,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( // keep-sorted start sAccountForSuppressedKeyboardInsets, -@@ -1268,6 +1272,13 @@ public abstract class ChromeFeatureList { +@@ -1271,6 +1275,13 @@ public abstract class ChromeFeatureList { // keep-sorted end ); @@ -969,7 +970,7 @@ 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 -@@ -664,4 +664,5 @@ bool IsAndroidAnimatedProgressBarInBrowserEnabled() { +@@ -712,4 +712,5 @@ bool IsAndroidAnimatedProgressBarInBrowserEnabled() { BASE_FEATURE(kWhatsNewDesktopRefresh, base::FEATURE_DISABLED_BY_DEFAULT); @@ -1010,7 +1011,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 -@@ -1694,5 +1694,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, base::FEATURE_ENABLED_BY_DEFAULT); +@@ -1909,5 +1909,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, base::FEATURE_ENABLED_BY_DEFAULT); // happen silently without prompting an updating dialog. BASE_FEATURE(kSilentPolicyAndDefaultAppUpdating, base::FEATURE_DISABLED_BY_DEFAULT); @@ -1020,7 +1021,7 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc diff --git a/components/browser_ui/accessibility/android/BUILD.gn b/components/browser_ui/accessibility/android/BUILD.gn --- a/components/browser_ui/accessibility/android/BUILD.gn +++ b/components/browser_ui/accessibility/android/BUILD.gn -@@ -61,6 +61,7 @@ android_library("lib_java") { +@@ -65,6 +65,7 @@ android_library("lib_java") { ":page_zoom_utils_java", "//base:base_java", "//build/android:build_java", @@ -1057,7 +1058,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c implements EmbeddableSettingsPage, Preference.OnPreferenceChangeListener { public static final String PREF_PAGE_ZOOM_DEFAULT_ZOOM = "page_zoom_default_zoom"; public static final String PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT = -@@ -69,7 +71,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -71,7 +73,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat } @Override @@ -1092,7 +1093,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium import androidx.annotation.ColorInt; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceViewHolder; -@@ -43,6 +45,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat +@@ -42,6 +44,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat implements Co /** Indicates if the preference uses a custom layout. */ private final boolean mHasCustomLayout; @@ -1104,7 +1105,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium // TOOD(crbug.com/1451550): This is an interim solution. In the long-term, we should migrate // away from a switch with dynamically changing summaries onto a radio group. /** -@@ -67,6 +74,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat +@@ -66,6 +73,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat implements Co mHasCustomLayout = ManagedPreferencesUtils.isCustomLayoutApplied(context, attrs); mUseSummaryAsTitle = true; @@ -1126,7 +1127,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java --- a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java +++ b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java -@@ -155,7 +155,7 @@ public class CachedFlag extends Flag { +@@ -159,7 +159,7 @@ public class CachedFlag extends Flag { editor.putBoolean(getSharedPreferenceKey(), featureValue); } @@ -1135,7 +1136,7 @@ diff --git a/components/cached_flags/android/java/src/org/chromium/components/ca // Create the key only once to avoid String concatenation every flag check. if (mPreferenceKey == null) { mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); -@@ -163,6 +163,12 @@ public class CachedFlag extends Flag { +@@ -167,6 +167,12 @@ public class CachedFlag extends Flag { return mPreferenceKey; } @@ -1162,7 +1163,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -160,5 +160,6 @@ BASE_FEATURE(kContentSettingsPartitioning, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -143,5 +143,6 @@ const base::FeatureParam BASE_FEATURE(kForceAllowStorageAccess, base::FEATURE_DISABLED_BY_DEFAULT); @@ -1198,8 +1199,8 @@ 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 -@@ -183,4 +183,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -201,4 +201,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, + base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) +#include "cromite_flags/components_password_manager_core_browser_features_password_features_cc.inc" @@ -1207,15 +1208,14 @@ diff --git a/components/password_manager/core/browser/features/password_features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -107,6 +107,8 @@ BASE_FEATURE(kSafetyHubUnusedPermissionRevocationForAllSurfaces, - BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -121,6 +121,7 @@ BASE_FEATURE(kReturnDeniedForNotificationsWhenNoAppLevelSettings, base::FEATURE_DISABLED_BY_DEFAULT); #endif -+ + +#include "cromite_flags/components_permissions_features_cc.inc" } // namespace features - namespace feature_params { + namespace feature_params { diff --git a/components/variations/synthetic_trials_active_group_id_provider.cc b/components/variations/synthetic_trials_active_group_id_provider.cc --- a/components/variations/synthetic_trials_active_group_id_provider.cc +++ b/components/variations/synthetic_trials_active_group_id_provider.cc @@ -1640,7 +1640,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 -@@ -675,4 +675,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { +@@ -701,4 +701,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); } @@ -1649,7 +1649,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 -@@ -1411,4 +1411,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1428,4 +1428,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1658,7 +1658,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 -@@ -409,6 +409,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -416,6 +416,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -2004,7 +2004,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 -@@ -1730,5 +1730,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1710,5 +1710,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2014,7 +2014,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 -@@ -609,5 +609,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -590,5 +590,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2024,18 +2024,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 -@@ -852,4 +852,5 @@ BASE_FEATURE_PARAM(std::string, - "quic_options", - ""); +@@ -904,4 +904,5 @@ BASE_FEATURE_PARAM(std::string, + BASE_FEATURE(kDnsResponseDiscardPartialQuestions, + 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 -@@ -946,6 +946,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kTryQuicByDefault); - // separate the values with a comma (e.g. "ABCD,EFGH"). - NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, kQuicOptions); +@@ -986,6 +986,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, kQuicOptions); + + NET_EXPORT BASE_DECLARE_FEATURE(kDnsResponseDiscardPartialQuestions); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2044,18 +2044,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 -@@ -587,4 +587,5 @@ BASE_FEATURE_PARAM(bool, - "url_loader", - true); +@@ -611,4 +611,5 @@ BASE_FEATURE(kNetworkServicePerPriorityTaskQueues, + BASE_FEATURE(kUseUnexportableKeyServiceInBrowserProcess, + base::FEATURE_DISABLED_BY_DEFAULT); +#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 -@@ -361,6 +361,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); +@@ -383,6 +383,7 @@ BASE_DECLARE_FEATURE(kNetworkServicePerPriorityTaskQueues); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) - BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerURLLoader); + BASE_DECLARE_FEATURE(kUseUnexportableKeyServiceInBrowserProcess); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace network::features @@ -2064,7 +2064,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 -@@ -2633,4 +2633,5 @@ bool IsXrDevice() { +@@ -2693,4 +2693,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2073,7 +2073,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 -@@ -1917,6 +1917,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); +@@ -1955,6 +1955,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. diff --git a/build/patches/Add-cromite-test-support.patch b/build/patches/Add-cromite-test-support.patch index 897f0642..863b5c3f 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 -@@ -145,6 +145,7 @@ import org.chromium.ui.base.SelectFileDialog; +@@ -148,6 +148,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; -@@ -713,7 +714,10 @@ public class ProcessInitializationHandler { +@@ -724,7 +725,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 -@@ -188,6 +188,11 @@ source_set("shell_integration") { +@@ -183,6 +183,11 @@ source_set("shell_integration") { # require many files from it. This makes linking more efficient. static_library("browser") { sources = [ @@ -139,7 +139,7 @@ diff --git a/chrome/browser/android/devtools_server.cc b/chrome/browser/android/ #include "content/public/common/content_switches.h" #include "content/public/common/url_constants.h" #include "net/base/net_errors.h" -@@ -64,6 +66,8 @@ const int kBackLog = 10; +@@ -64,6 +66,8 @@ const int kBackLog = 4096; bool AuthorizeSocketAccessWithDebugPermission( const net::UnixDomainServerSocket::Credentials& credentials) { @@ -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" -@@ -494,6 +495,15 @@ void ChromeContentBrowserClient:: +@@ -495,6 +496,15 @@ void ChromeContentBrowserClient:: render_frame_host); }, &render_frame_host)); @@ -423,18 +423,18 @@ 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 -@@ -210,6 +210,7 @@ static const base::Feature* kBadFeatureFlagsInAboutFlags[] = { +@@ -226,6 +226,7 @@ static const std::variant #if BUILDFLAG(IS_ANDROID) - &chrome::android::kCommandLineOnNonRooted, -+ &features::kEnableCromiteTestSupport, + &chrome::android::kCommandLineOnNonRooted, ++ &features::kEnableCromiteTestSupport, #endif - // This flag disables security for the Page Embedded Permission Control, for + // This flag disables security for the Page Embedded Permission Control, diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -671,6 +671,7 @@ mojom("mojo_bindings") { +@@ -669,6 +669,7 @@ mojom("mojo_bindings") { sources = [ "chrome_render_frame.mojom", "google_accounts_private_api_extension.mojom", @@ -457,7 +457,7 @@ new file mode 100644 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -80,6 +80,8 @@ static_library("renderer") { +@@ -79,6 +79,8 @@ static_library("renderer") { "chrome_render_thread_observer.cc", "chrome_render_thread_observer.h", "custom_menu_commands.h", @@ -860,7 +860,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #if BUILDFLAG(IS_ANDROID) #include "content/browser/accessibility/browser_accessibility_manager_android.h" #include "content/browser/android/content_url_loader_factory.h" -@@ -4773,7 +4775,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4799,7 +4801,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 -@@ -4790,8 +4793,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4816,8 +4819,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 c5ecd490..fcbbcaeb 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -18,14 +18,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../customtabs/CustomTabsConnection.java | 3 +- .../IncognitoCustomTabIntentDataProvider.java | 14 +++++ .../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++ - .../flags/android/chrome_feature_list.cc | 5 +- + .../flags/android/chrome_feature_list.cc | 4 +- .../browser/flags/ChromeFeatureList.java | 3 ++ .../chrome/browser/tab/TabAssociatedApp.java | 6 ++- ...Add-custom-tab-intents-privacy-option.grdp | 25 +++++++++ .../OriginVerifier.java | 5 ++ .../core/common/language_experiments.cc | 1 + .../add-custom-tab-intents-privacy-option.inc | 1 + - 13 files changed, 158 insertions(+), 14 deletions(-) + 13 files changed, 158 insertions(+), 13 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -62,6 +62,9 @@ import java.lang.annotation.Retention; +@@ -66,6 +66,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Set; @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -264,6 +267,9 @@ public class LaunchIntentDispatcher { +@@ -269,6 +272,9 @@ public class LaunchIntentDispatcher { */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis Log.w( TAG, "CustomTabsIntent#shouldAlwaysUseBrowserUI() = " -@@ -292,6 +298,10 @@ public class LaunchIntentDispatcher { +@@ -297,6 +303,10 @@ public class LaunchIntentDispatcher { // Make sure the result of the CustomTabActivity is forwarded to the client. newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Since configureIntentForResizableCustomTab() might change the componenet/class // associated with the passed intent, it needs to be called after #setClassName(context, // CustomTabActivity.class.getName()); -@@ -489,6 +499,17 @@ public class LaunchIntentDispatcher { +@@ -493,6 +503,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -132,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust /** * Extra that, if set, makes the Custom Tab Activity's height to be x pixels, the Custom Tab -@@ -689,7 +689,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -690,7 +690,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION, ScreenOrientation.DEFAULT)); @@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust mBreakPointDp = getActivityBreakPointFromIntent(intent); mInitialActivityHeight = getInitialActivityHeightFromIntent(intent); -@@ -702,8 +702,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -703,8 +703,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT); mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED; @@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust @BackgroundInteractBehavior int backgroundInteractBehavior = IntentUtils.safeGetIntExtra( -@@ -1294,7 +1294,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1335,7 +1335,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() ? CustomTabProfileType.INCOGNITO @@ -327,22 +327,21 @@ 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 -@@ -909,8 +909,9 @@ BASE_FEATURE(kMagicStackAndroid, base::FEATURE_ENABLED_BY_DEFAULT); +@@ -708,7 +708,9 @@ BASE_FEATURE(kMagicStackAndroid, base::FEATURE_ENABLED_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. --BASE_FEATURE(kMayLaunchUrlUsesSeparateStoragePartition, -- base::FEATURE_DISABLED_BY_DEFAULT); +-BASE_FEATURE(kMayLaunchUrlUsesSeparateStoragePartition, base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kMayLaunchUrlUsesSeparateStoragePartition, + "MayLaunchUrlUsesSeparateStoragePartition", + base::FEATURE_DISABLED_BY_DEFAULT); - BASE_FEATURE(kMediaIndicatorsAndroid, base::FEATURE_DISABLED_BY_DEFAULT); - + BASE_FEATURE(kMiniOriginBar, base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kMostVisitedTilesCustomization, base::FEATURE_DISABLED_BY_DEFAULT); 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 -@@ -991,6 +991,8 @@ public abstract class ChromeFeatureList { +@@ -980,6 +980,8 @@ public abstract class ChromeFeatureList { MOST_VISITED_TILES_CUSTOMIZATION, /* defaultValue= */ false, /* defaultValueInTests= */ true); @@ -351,7 +350,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sMostVisitedTilesReselect = newCachedFlag(MOST_VISITED_TILES_RESELECT, false); public static final CachedFlag sMultiInstanceApplicationStatusCleanup = -@@ -1224,6 +1226,7 @@ public abstract class ChromeFeatureList { +@@ -1223,6 +1225,7 @@ public abstract class ChromeFeatureList { sMiniOriginBar, sMitigateLegacySearchEnginePromoOverlap, sMostVisitedTilesCustomization, diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 543cf846..12d1b352 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 -@@ -123,6 +123,7 @@ found in the LICENSE file. +@@ -125,6 +125,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 -@@ -358,6 +358,8 @@ import java.util.Set; +@@ -357,6 +357,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. -@@ -3882,6 +3884,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3858,6 +3860,8 @@ public class ChromeTabbedActivity extends ChromeActivity { .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -63,6 +63,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; +@@ -64,6 +64,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityUtils; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate; -@@ -2529,6 +2530,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2588,6 +2589,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 -@@ -410,6 +410,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -418,6 +418,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm maybeAddDividerLine(modelList, R.id.menu_item_content_filter_divider_line_id); modelList.add(buildContentFilterHelpCenterMenuItem(currentTab)); } @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -4317,6 +4317,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4380,6 +4380,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Dark theme diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 9e5e7811..f0215fe3 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -26,20 +26,20 @@ 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" -@@ -571,6 +572,15 @@ AutocompleteController::AutocompleteController( - provider_client_->GetOmniboxTriggeredFeatureService()), +@@ -557,6 +558,15 @@ AutocompleteController::AutocompleteController( steady_state_omnibox_position_( - metrics::OmniboxEventProto::UNKNOWN_POSITION) { + metrics::OmniboxEventProto::UNKNOWN_POSITION), + config_(config) { + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) { + const std::string flag_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering"); -+ provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH | ++ config_.provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH | + AutocompleteProvider::TYPE_HISTORY_URL | AutocompleteProvider::TYPE_BOOKMARK | AutocompleteProvider::TYPE_BUILTIN; + if (!base::Contains(flag_value, "bookmarks")) -+ provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK; ++ config_.provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK; + if (!base::Contains(flag_value, "chrome")) -+ provider_types &= ~AutocompleteProvider::TYPE_BUILTIN; ++ config_.provider_types &= ~AutocompleteProvider::TYPE_BUILTIN; + } - provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes(); + config_.provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes(); // Providers run in the order they're added. Async providers should run first diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc 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 a38a6369..d2593638 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 @@ -92,7 +92,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 -@@ -22,6 +22,10 @@ +@@ -21,6 +21,10 @@ #include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_pool.h" #include "net/socket/connect_job.h" @@ -103,7 +103,7 @@ 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" -@@ -187,6 +191,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( +@@ -165,6 +169,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( int ClientSocketPoolManager::max_sockets_per_group( HttpNetworkSession::SocketPoolType pool_type) { DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES); diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index 0011adb8..eaa6de58 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,10 +45,10 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1172,6 +1172,7 @@ component("net") { +@@ -1177,6 +1177,7 @@ component("net") { ":net_deps", - "//components/miracle_parameter/common", "//components/network_time/time_tracker", + "//components/unexportable_keys", + "//components/network_session_configurator/common", "//net/http:transport_security_state_generated_files", "//third_party/simdutf", 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 4bc8327e..50d66a2b 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java -@@ -38,6 +38,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; +@@ -39,6 +39,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.init.ChromeActivityNativeDelegate; -@@ -156,6 +157,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { +@@ -158,6 +159,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { @Override public boolean shouldDisableAllExternalIntents() { @@ -68,7 +68,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java -@@ -25,6 +25,7 @@ import org.chromium.base.PackageManagerUtils; +@@ -26,6 +26,7 @@ import org.chromium.base.ResettersForTesting; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity2; @@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -@@ -119,7 +120,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat +@@ -131,7 +132,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat @Override public boolean shouldDisableExternalIntentRequestsForUrl( ExternalNavigationParams params, Intent intent) { @@ -193,7 +193,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java -@@ -1623,6 +1623,12 @@ public class ExternalNavigationHandler { +@@ -1760,6 +1760,12 @@ public class ExternalNavigationHandler { return false; } @@ -206,7 +206,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1716,6 +1722,21 @@ public class ExternalNavigationHandler { +@@ -1851,6 +1857,21 @@ public class ExternalNavigationHandler { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 2bffa706..27a882ad 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 -@@ -105,6 +105,7 @@ void SetRuntimeFeatureDefaultsForPlatform( +@@ -106,6 +106,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 -@@ -1070,6 +1070,10 @@ +@@ -1137,6 +1137,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 8cc46d0c..a4f6491f 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 -@@ -715,7 +715,7 @@ config("compiler") { +@@ -727,7 +727,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" ] } } -@@ -1848,7 +1848,7 @@ config("clang_revision") { +@@ -1836,7 +1836,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 ] -@@ -2183,7 +2183,9 @@ config("default_warnings") { +@@ -2197,7 +2197,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", -@@ -2237,6 +2239,15 @@ config("default_warnings") { +@@ -2251,6 +2253,15 @@ config("default_warnings") { ldflags += [ "-Wno-version-check" ] } @@ -62,7 +62,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn diff --git a/build_overrides/build.gni b/build_overrides/build.gni --- a/build_overrides/build.gni +++ b/build_overrides/build.gni -@@ -54,6 +54,9 @@ declare_args() { +@@ -53,6 +53,9 @@ declare_args() { # Allows googletest to pretty-print various absl types. gtest_enable_absl_printers = true @@ -70,6 +70,6 @@ diff --git a/build_overrides/build.gni b/build_overrides/build.gni + skip_clangd_unsupported_options = false + # Allow projects that wish to stay on C++17 to override Chromium's default. - # TODO(crbug.com/40251117): evaluate removing this end of 2023 + # TODO(anglebug.com/330910097): evaluate removing this 2026-04-01 use_cxx17 = false -- diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 525be567..3fd2a0ff 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -87,9 +87,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 34 +++++++- components/permissions/permission_request.h | 18 +++- - .../permissions/permission_request_manager.cc | 45 ++++++---- + .../permissions/permission_request_manager.cc | 49 ++++++----- .../permissions/permission_request_manager.h | 11 ++- - 37 files changed, 507 insertions(+), 73 deletions(-) + 37 files changed, 509 insertions(+), 75 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -269,7 +269,7 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -689,6 +689,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -696,6 +696,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } @RequiresNonNull({"mSite"}) @@ -281,7 +281,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void setUpClearDataPreference() { ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA); long usage = mSite.getTotalUsage(); -@@ -1295,6 +1300,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1313,6 +1318,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 -@@ -224,7 +224,7 @@ void GetOrigins(JNIEnv* env, +@@ -242,7 +242,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 -@@ -649,6 +649,11 @@ +@@ -652,6 +652,11 @@ URL truncated @@ -481,7 +481,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -199,6 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -207,6 +207,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( std::map user_specified_settings_to_display; @@ -490,7 +490,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -211,6 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -219,6 +221,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( user_specified_settings_to_display[permission.type] = info->delegate().IsAnyPermissionAllowed(*setting_to_display); @@ -499,7 +499,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } } -@@ -227,7 +231,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -235,7 +239,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), @@ -509,7 +509,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } -@@ -240,7 +245,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -248,7 +253,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info->content_settings_type), @@ -522,7 +522,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -1303,6 +1303,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1331,6 +1331,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); @@ -582,7 +582,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java -@@ -13,6 +13,18 @@ import org.chromium.ui.UiUtils; +@@ -14,6 +14,18 @@ import org.chromium.ui.UiUtils; import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modelutil.PropertyModel; @@ -601,7 +601,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** This class creates the model for the permission dialog. */ @NullMarked class PermissionDialogModelFactory { -@@ -67,7 +79,76 @@ class PermissionDialogModelFactory { +@@ -77,7 +89,76 @@ class PermissionDialogModelFactory { ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE) .with(ModalDialogProperties.CHANGE_CUSTOM_VIEW_OR_BUTTONS, true); } @@ -831,7 +831,7 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc --- a/components/permissions/contexts/geolocation_permission_context_android.cc +++ b/components/permissions/contexts/geolocation_permission_context_android.cc -@@ -194,7 +194,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -195,7 +195,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( PermissionDecision decision, bool is_final_decision) { DCHECK(is_final_decision); @@ -850,7 +850,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool is_default_search = IsRequestingOriginDSE(request_data.requesting_origin); if (decision == PermissionDecision::kAllow && -@@ -209,7 +220,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -210,7 +221,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, @@ -859,7 +859,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr request_data.prompt_options); return; } -@@ -230,7 +241,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -231,7 +242,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, @@ -868,7 +868,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr request_data.prompt_options); return; } -@@ -243,14 +254,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -244,14 +255,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( base::BindOnce( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, weak_factory_.GetWeakPtr(), request_data.requesting_origin, @@ -885,7 +885,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr } content::PermissionResult -@@ -427,7 +438,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -428,7 +439,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& requesting_origin, const GURL& embedding_origin, bool persist, @@ -894,7 +894,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr std::optional prompt_options, LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); -@@ -447,7 +458,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -448,7 +459,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( FinishNotifyPermissionSet(location_settings_dialog_request_id_, requesting_origin, embedding_origin, std::move(location_settings_dialog_callback_), @@ -903,7 +903,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -460,7 +471,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -461,7 +472,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( const GURL& embedding_origin, BrowserPermissionCallback callback, bool persist, @@ -912,7 +912,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr std::optional prompt_options) { PermissionRequestData request_data( this, id, -@@ -469,9 +480,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -470,9 +481,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( blink::PermissionType::GEOLOCATION)), requesting_origin, embedding_origin); request_data.prompt_options = prompt_options.value_or(std::monostate()); @@ -972,7 +972,7 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -267,6 +267,17 @@ PermissionContextBase::CreatePermissionRequest( +@@ -282,6 +282,17 @@ PermissionContextBase::CreatePermissionRequest( std::move(request_finished_callback), UsesAutomaticEmbargo()); } @@ -990,7 +990,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -@@ -572,7 +583,8 @@ void PermissionContextBase::DecidePermission( +@@ -626,7 +637,8 @@ void PermissionContextBase::DecidePermission( void PermissionContextBase::PermissionDecided( PermissionDecision decision, bool is_final_decision, @@ -999,8 +999,8 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm + content_settings::mojom::LifetimeMode lifetime_option) { UserMadePermissionDecision(request_data.id, request_data.requesting_origin, request_data.embedding_origin, decision); - -@@ -585,11 +597,12 @@ void PermissionContextBase::PermissionDecided( + // If a permission request originates from an embedded element, its +@@ -650,11 +662,12 @@ void PermissionContextBase::PermissionDecided( // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -1017,7 +1017,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -674,6 +687,30 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -739,6 +752,30 @@ void PermissionContextBase::NotifyPermissionSet( bool persist, PermissionDecision decision, bool is_final_decision) { @@ -1048,7 +1048,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. -@@ -689,8 +726,8 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -754,8 +791,8 @@ void PermissionContextBase::NotifyPermissionSet( if (persist) { // Clone new value, because we need it again for the callback. @@ -1059,7 +1059,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -728,6 +765,17 @@ void PermissionContextBase::UpdateSetting( +@@ -794,6 +831,17 @@ void PermissionContextBase::UpdateSetting( const PermissionRequestData& request_data, PermissionSetting setting, bool is_one_time) { @@ -1077,7 +1077,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, -@@ -737,6 +785,8 @@ void PermissionContextBase::UpdateSetting( +@@ -803,6 +851,8 @@ void PermissionContextBase::UpdateSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1089,7 +1089,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm diff --git a/components/permissions/permission_context_base.h b/components/permissions/permission_context_base.h --- a/components/permissions/permission_context_base.h +++ b/components/permissions/permission_context_base.h -@@ -192,6 +192,18 @@ class PermissionContextBase : public content_settings::Observer { +@@ -198,6 +198,18 @@ class PermissionContextBase : public content_settings::Observer { // Updates stored setting if persist is set, updates tab indicators // and runs the callback to finish the request. @@ -1108,7 +1108,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi virtual void NotifyPermissionSet(const PermissionRequestData& request_data, BrowserPermissionCallback callback, bool persist, -@@ -209,6 +221,11 @@ class PermissionContextBase : public content_settings::Observer { +@@ -214,6 +226,11 @@ class PermissionContextBase : public content_settings::Observer { // Store the decided permission state. Virtual since the permission might be // stored with different restrictions (for example for desktop notifications). @@ -1120,7 +1120,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi virtual void UpdateSetting(const PermissionRequestData& request_data, PermissionSetting setting, bool is_one_time); -@@ -238,6 +255,12 @@ class PermissionContextBase : public content_settings::Observer { +@@ -243,6 +260,12 @@ class PermissionContextBase : public content_settings::Observer { PermissionRequest::PermissionDecidedCallback permission_decided_callback, base::OnceClosure request_finished_callback) const; @@ -1133,7 +1133,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; -@@ -271,7 +294,8 @@ class PermissionContextBase : public content_settings::Observer { +@@ -281,7 +304,8 @@ class PermissionContextBase : public content_settings::Observer { // allows/blocks/dismisses a permission prompt. void PermissionDecided(PermissionDecision decision, bool is_final_decision, @@ -1160,7 +1160,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 -@@ -36,6 +36,16 @@ PermissionRequest::PermissionRequest( +@@ -35,6 +35,16 @@ PermissionRequest::PermissionRequest( request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} @@ -1177,7 +1177,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { std::move(request_finished_callback_).Run(); } -@@ -424,20 +434,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -431,20 +441,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1248,7 +1248,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -172,10 +183,10 @@ class PermissionRequest { +@@ -180,10 +191,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. @@ -1261,7 +1261,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 -@@ -234,6 +245,9 @@ class PermissionRequest { +@@ -242,6 +253,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1274,7 +1274,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -201,7 +201,7 @@ void PermissionRequestManager::AddRequest( +@@ -206,12 +206,12 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1283,27 +1283,36 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p return; } -@@ -270,7 +270,7 @@ void PermissionRequestManager::AddRequest( + if (display::Screen::Get()->IsHeadless()) { +- request->PermissionDenied(); ++ request->PermissionDenied(/*is_one_time*/false, content_settings::mojom::LifetimeMode::ALWAYS); + return; + } + +@@ -282,9 +282,9 @@ void PermissionRequestManager::AddRequest( if (should_auto_approve_request) { if (should_auto_approve_request == PermissionAction::GRANTED) { +- request->PermissionGranted(/*is_one_time=*/false); ++ request->PermissionGranted(/*is_one_time=*/false, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED); + } else if (should_auto_approve_request == PermissionAction::GRANTED_ONCE) { - request->PermissionGranted(/*is_one_time=*/true); + request->PermissionGranted(/*is_one_time=*/true, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED); } return; } -@@ -597,7 +597,8 @@ void PermissionRequestManager::Accept() { - (*requests_iter)->request_type(), - PermissionAction::GRANTED); - PermissionGrantedIncludingDuplicates(requests_iter->get(), +@@ -611,7 +611,8 @@ void PermissionRequestManager::Accept() { + StorePermissionActionForUMA(request->requesting_origin(), + request->request_type(), action); + PermissionGrantedIncludingDuplicates(request.get(), - /*is_one_time=*/false); + /*is_one_time=*/false, + content_settings::mojom::LifetimeMode::ALWAYS); #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -615,7 +616,7 @@ void PermissionRequestManager::Accept() { - CurrentRequestsDecided(PermissionAction::GRANTED); +@@ -629,7 +630,7 @@ void PermissionRequestManager::Accept() { + CurrentRequestsDecided(action); } -void PermissionRequestManager::AcceptThisTime() { @@ -1311,17 +1320,17 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -629,7 +630,8 @@ void PermissionRequestManager::AcceptThisTime() { - (*requests_iter)->request_type(), - PermissionAction::GRANTED_ONCE); - PermissionGrantedIncludingDuplicates(requests_iter->get(), +@@ -641,7 +642,8 @@ void PermissionRequestManager::AcceptThisTime() { + StorePermissionActionForUMA(request->requesting_origin(), + request->request_type(), action); + PermissionGrantedIncludingDuplicates(request.get(), - /*is_one_time=*/true); + /*is_one_time=*/true, + mode); } - NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -637,6 +639,15 @@ void PermissionRequestManager::AcceptThisTime() { + NotifyRequestDecided(action); +@@ -649,6 +651,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1337,16 +1346,16 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -659,7 +670,7 @@ void PermissionRequestManager::Deny() { - StorePermissionActionForUMA((*requests_iter)->requesting_origin(), - (*requests_iter)->request_type(), - PermissionAction::DENIED); -- PermissionDeniedIncludingDuplicates(requests_iter->get()); -+ PermissionDeniedIncludingDuplicates(requests_iter->get(), is_one_time, lifetime_option); +@@ -669,7 +680,7 @@ void PermissionRequestManager::Deny() { + for (const auto& request : requests_) { + StorePermissionActionForUMA(request->requesting_origin(), + request->request_type(), action); +- PermissionDeniedIncludingDuplicates(request.get()); ++ PermissionDeniedIncludingDuplicates(request.get(), is_one_time, lifetime_option); } - NotifyRequestDecided(PermissionAction::DENIED); -@@ -1283,32 +1294,32 @@ PermissionRequestManager::VisitDuplicateRequests( + NotifyRequestDecided(action); +@@ -1306,32 +1317,32 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, @@ -1389,7 +1398,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request); } -@@ -1578,7 +1589,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1608,7 +1619,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { } switch (auto_response_for_test_) { case ACCEPT_ONCE: @@ -1401,7 +1410,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 -@@ -168,8 +168,10 @@ class PermissionRequestManager +@@ -175,8 +175,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept() override; @@ -1413,7 +1422,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -419,9 +421,12 @@ class PermissionRequestManager +@@ -426,9 +428,12 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index a2425da4..b99e64c9 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 -@@ -191,6 +191,7 @@ found in the LICENSE file. +@@ -194,6 +194,7 @@ found in the LICENSE file. @@ -55,26 +55,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -296,6 +297,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac +@@ -294,6 +295,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; + import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType; import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; - import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityExtras.IntentOrigin; import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig; -@@ -309,6 +313,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService; +@@ -308,6 +312,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionInitializerImpl; import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionManagerImpl; +import org.chromium.components.bookmarks.BookmarkId; +import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; + import org.chromium.components.browser_ui.share.ShareParams; import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate; - import org.chromium.components.browser_ui.util.ComposedBrowserControlsVisibilityDelegate; -@@ -3910,6 +3916,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3886,6 +3892,8 @@ public class ChromeTabbedActivity extends ChromeActivity { 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); -@@ -4030,6 +4038,41 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -4019,6 +4027,41 @@ public class ChromeTabbedActivity extends ChromeActivity { 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 -@@ -291,6 +291,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -294,6 +294,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // Bookmarks modelList.add(buildBookmarksItem()); @@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Recent Tabs if (shouldShowRecentTabsItem()) modelList.add(buildRecentTabsItem()); -@@ -466,6 +474,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -474,6 +482,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } modelList.add(buildCloseAllTabsItem()); if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem()); @@ -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 -@@ -4437,6 +4437,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4505,6 +4505,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index 4c89e086..82ab55a3 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 -@@ -133,6 +133,7 @@ found in the LICENSE file. +@@ -136,6 +136,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 -@@ -3946,6 +3946,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3922,6 +3922,8 @@ public class ChromeTabbedActivity extends ChromeActivity { NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER); } RecordUserAction.record("MobileMenuDownloadManager"); @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2697,6 +2697,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2756,6 +2756,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return doOpenWebApk(currentTab); } @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -989,6 +989,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -988,6 +988,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 -@@ -378,6 +378,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -411,6 +411,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat modelList.add(buildAddToHomescreenListItem(currentTab, false)); } @@ -101,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -358,6 +358,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -366,6 +366,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildAddToHomescreenListItem(currentTab, shouldShowIconBeforeItem())); } @@ -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 -@@ -324,6 +324,10 @@ CHAR_LIMIT guidelines: - Collaboration +@@ -327,6 +327,10 @@ CHAR_LIMIT guidelines: + Chrome Tips + diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index f7400b72..df3a2f0b 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java -@@ -497,7 +497,12 @@ class TabGridViewBinder { +@@ -504,7 +504,12 @@ class TabGridViewBinder { if (result != null) { TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else { @@ -29,7 +29,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } }; if (sThumbnailFetcherForTesting != null) { -@@ -535,6 +540,7 @@ class TabGridViewBinder { +@@ -542,6 +547,7 @@ class TabGridViewBinder { */ private static void setFavicon( ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) { @@ -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 -@@ -152,6 +152,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -153,6 +153,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; -@@ -658,7 +659,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -667,7 +668,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -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 -@@ -6185,6 +6185,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6422,6 +6422,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 2834c2bf..698efed8 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -9,9 +9,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../java/res/values-sw600dp/dimens.xml | 4 ++-- chrome/android/java/res/values/dimens.xml | 6 +++++- .../browser/ChromeBaseAppCompatActivity.java | 3 +++ - .../chrome/browser/WarmupManager.java | 5 ++++- - .../ChromeAccessibilitySettingsDelegate.java | 19 ++++++++++++++++++ - .../chrome/browser/app/ChromeActivity.java | 4 +++- + .../chrome/browser/WarmupManager.java | 7 +++++-- + .../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++++++ + .../chrome/browser/app/ChromeActivity.java | 5 ++++- .../overlays/strip/StripLayoutHelper.java | 10 ++++++++-- .../strip/StripLayoutHelperManager.java | 6 +++++- .../scene_layer/TabStripSceneLayer.java | 8 ++++++++ @@ -20,7 +20,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/ui/RootUiCoordinator.java | 6 +++++- chrome/browser/preferences/BUILD.gn | 1 + .../preferences/ChromePreferenceKeys.java | 1 + - .../preferences/ChromeSharedPreferences.java | 12 +++++++++++ + .../preferences/ChromeSharedPreferences.java | 12 ++++++++++++ .../LegacyChromePreferenceKeys.java | 1 + .../AppHeaderCoordinator.java | 2 ++ .../omnibox/LocationBarCoordinator.java | 2 +- @@ -29,16 +29,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../java/res/layout/toolbar_tablet.xml | 2 +- .../java/res/values-sw600dp/dimens.xml | 5 +++-- .../toolbar/java/res/values/dimens.xml | 6 ++++-- - .../browser/toolbar/ControlContainer.java | 2 +- - .../toolbar/top/ToolbarControlContainer.java | 20 ++++++++++++++++++- + .../toolbar/top/ToolbarControlContainer.java | 19 +++++++++++++++++++ .../browser/toolbar/top/ToolbarLayout.java | 5 ++++- .../tab_strip/HeightTransitionHandler.java | 2 ++ .../TabStripTransitionCoordinator.java | 6 +++++- .../res/xml/accessibility_preferences.xml | 5 +++++ - .../accessibility/AccessibilitySettings.java | 13 ++++++++++++ + .../accessibility/AccessibilitySettings.java | 13 +++++++++++++ .../AccessibilitySettingsDelegate.java | 2 ++ - .../chromium/ui/base/DeviceFormFactor.java | 14 +++++++++++++ - 34 files changed, 171 insertions(+), 26 deletions(-) + .../chromium/ui/base/DeviceFormFactor.java | 14 ++++++++++++++ + 33 files changed, 172 insertions(+), 25 deletions(-) diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml --- a/chrome/android/java/res/layout/custom_tabs_control_container.xml @@ -107,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo import org.chromium.chrome.browser.ui.edge_to_edge.SimpleEdgeToEdgeController; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.util.AutomotiveUtils; -@@ -145,6 +146,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity +@@ -146,6 +147,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); @@ -127,14 +126,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.display.DisplayUtil; import org.chromium.url.GURL; -@@ -472,7 +473,9 @@ public class WarmupManager { +@@ -472,8 +473,10 @@ public class WarmupManager { ControlContainer controlContainer = mainView.findViewById(R.id.control_container); if (toolbarId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { -- controlContainer.initWithToolbar(toolbarId); +- controlContainer.initWithToolbar( +- toolbarId, R.dimen.custom_tabs_control_container_height); + controlContainer.initWithToolbar(toolbarId, + DeviceFormFactor.isForceTabletUI() -+ ? R.dimen.control_container_height_tabletui : 0); ++ ? R.dimen.control_container_height_tabletui ++ : R.dimen.custom_tabs_control_container_height); } return mainView; } catch (InflateException e) { @@ -170,21 +171,22 @@ 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 -@@ -808,7 +808,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -818,7 +818,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) { -- controlContainer.initWithToolbar(toolbarLayoutId); +- controlContainer.initWithToolbar(toolbarLayoutId, getToolbarLayoutHeightResId()); + controlContainer.initWithToolbar(toolbarLayoutId, + DeviceFormFactor.isForceTabletUI() -+ ? R.dimen.control_container_height_tabletui : 0); ++ ? R.dimen.control_container_height_tabletui ++ : getToolbarLayoutHeightResId()); } onInitialLayoutInflationComplete(); } 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 -@@ -132,6 +132,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -136,6 +136,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; import org.chromium.components.tab_group_sync.TriggerSource; import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.accessibility.AccessibilityState; @@ -192,7 +194,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; -@@ -5040,8 +5041,13 @@ public class StripLayoutHelper +@@ -5308,8 +5309,13 @@ public class StripLayoutHelper mCloseButtonMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the close button menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -211,7 +213,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 -@@ -105,6 +105,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -101,6 +101,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.content_public.browser.LoadUrlParams; @@ -219,7 +221,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; -@@ -498,7 +499,10 @@ public class StripLayoutHelperManager +@@ -491,7 +492,10 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled( /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); @@ -271,7 +273,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 -@@ -768,7 +768,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -766,7 +766,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public int getControlContainerHeightResource() { @@ -285,7 +287,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 -@@ -110,6 +110,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; +@@ -120,6 +120,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.pdf.PdfPage; @@ -294,7 +296,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; -@@ -1803,7 +1805,9 @@ public class RootUiCoordinator +@@ -1877,7 +1879,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -319,7 +321,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 -@@ -337,6 +337,7 @@ public final class ChromePreferenceKeys { +@@ -348,6 +348,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"; @@ -370,7 +372,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java --- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java +++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java -@@ -42,6 +42,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -43,6 +43,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa import org.chromium.ui.display.DisplayUtil; import org.chromium.ui.edge_to_edge.EdgeToEdgeStateProvider; import org.chromium.ui.insets.CaptionBarInsetsRectProvider; @@ -378,7 +380,7 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c import org.chromium.ui.insets.InsetObserver; import org.chromium.ui.insets.InsetObserver.WindowInsetsConsumer; import org.chromium.ui.insets.InsetsRectProvider; -@@ -281,6 +282,7 @@ public class AppHeaderCoordinator +@@ -304,6 +305,7 @@ public class AppHeaderCoordinator InsetsRectProvider insetsRectProvider, @DesktopWindowHeuristicResult int currentResult, boolean isOnExternalDisplay) { @@ -389,7 +391,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 -@@ -869,7 +869,7 @@ public class LocationBarCoordinator +@@ -903,7 +903,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -401,7 +403,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 -@@ -1489,6 +1489,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1498,6 +1498,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -493,18 +495,6 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml b/chro 64dp 72dp -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java -@@ -26,7 +26,7 @@ public interface ControlContainer { - * - * @param toolbarLayoutId The ID of the toolbar layout to use. - */ -- void initWithToolbar(int toolbarLayoutId); -+ void initWithToolbar(int toolbarLayoutId, int controlContainerHeightOverrideId); - - /** - * @return The {@link ViewResourceAdapter} that exposes this {@link View} as a CC resource. 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 @@ -516,16 +506,14 @@ 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; -@@ -170,8 +171,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout - - @Override +@@ -165,6 +166,24 @@ public class ToolbarControlContainer extends OptimizedFrameLayout @Initializer -- public void initWithToolbar(int toolbarLayoutId) { -+ public void initWithToolbar(int toolbarLayoutId, int controlContainerHeightOverrideId) { + public void initWithToolbar(int toolbarLayoutId, int toolbarLayoutHeightResId) { try (TraceEvent te = TraceEvent.scoped("ToolbarControlContainer.initWithToolbar")) { -+ if (controlContainerHeightOverrideId != 0) { ++ if (DeviceFormFactor.isForceTabletUI() && toolbarLayoutHeightResId != 0) { ++ toolbarLayoutHeightResId = R.dimen.tab_strip_height_tabletui; + Resources res = getContext().getResources(); -+ setMinimumHeight((int) res.getDimension(controlContainerHeightOverrideId)); ++ setMinimumHeight((int) res.getDimension(toolbarLayoutHeightResId)); + int tab_strip_height = + (int) res.getDimension(R.dimen.tab_strip_height_tabletui); + @@ -541,8 +529,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow + ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height; + } mToolbarContainer = findViewById(R.id.toolbar_container); + mToolbarLayoutHeight = getResources().getDimensionPixelSize(toolbarLayoutHeightResId); ViewStub toolbarStub = findViewById(R.id.toolbar_stub); - toolbarStub.setLayoutResource(toolbarLayoutId); 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 @@ -554,7 +542,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; -@@ -581,7 +582,9 @@ public abstract class ToolbarLayout extends FrameLayout +@@ -582,7 +583,9 @@ public abstract class ToolbarLayout extends FrameLayout * not have a tab strip. */ protected int getTabStripHeightFromResource() { @@ -568,7 +556,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/tab_strip/HeightTransitionHandler.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java -@@ -30,6 +30,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarLayout; +@@ -32,6 +32,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarLayout; import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripHeightObserver; import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionDelegate; import org.chromium.ui.base.ViewUtils; @@ -576,14 +564,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.ui.resources.dynamics.DynamicResourceReadyOnceCallback; import org.chromium.ui.util.TokenHolder; -@@ -562,6 +563,7 @@ class HeightTransitionHandler { +@@ -561,6 +562,7 @@ class HeightTransitionHandler { + + /** Get the min screen width (in dp) required for the tab strip to become visible. */ + private static int getScreenWidthThresholdDp() { ++ if (DeviceFormFactor.isForceTabletUI()) return 0; if (TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting != null) { return TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting; } -+ if (DeviceFormFactor.isForceTabletUI()) return 0; - return TRANSITION_THRESHOLD_DP; - } - diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java @@ -610,9 +598,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml -@@ -36,6 +36,11 @@ found in the LICENSE file. - android:summary="@string/jump_start_omnibox_summary" - android:title="@string/jump_start_omnibox_title" /> +@@ -41,6 +41,11 @@ found in the LICENSE file. + android:summary="@string/caret_browsing_summary" + android:title="@string/caret_browsing_title" /> + { -@@ -176,6 +186,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -191,6 +201,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment public boolean onPreferenceChange(Preference preference, Object newValue) { if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) { mDelegate.getForceEnableZoomAccessibilityDelegate().setValue((Boolean) newValue); 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 935f1a26..02dfc47a 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 @@ -29,15 +29,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/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 -@@ -47,6 +47,7 @@ import org.chromium.base.Callback; +@@ -46,6 +46,7 @@ import org.chromium.base.ApplicationStatus; + import org.chromium.base.Callback; import org.chromium.base.CallbackController; import org.chromium.base.CallbackUtils; - import org.chromium.base.CommandLine; +import org.chromium.base.ContextUtils; + import org.chromium.base.CommandLine; + import org.chromium.base.DeviceInfo; import org.chromium.base.IntentUtils; - import org.chromium.base.Log; - import org.chromium.base.MemoryPressureListener; -@@ -2218,8 +2219,10 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2173,8 +2174,10 @@ public class ChromeTabbedActivity extends ChromeActivity { boolean hadCipherData = CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()); @@ -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 -@@ -2856,6 +2856,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -2883,6 +2883,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 ac639836..fce95375 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 -@@ -100,6 +100,7 @@ import org.chromium.components.collaboration.messaging.PersistentNotificationTyp +@@ -101,6 +101,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; -@@ -120,6 +121,9 @@ import java.util.Objects; +@@ -121,6 +122,9 @@ import java.util.Objects; import java.util.Set; import java.util.function.Supplier; @@ -42,14 +42,14 @@ 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. -@@ -1033,9 +1037,15 @@ public class TabGridDialogMediator +@@ -1034,9 +1038,15 @@ public class TabGridDialogMediator UrlConstantResolver urlConstantResolver = UrlConstantResolverFactory.getForProfile(profile); + String url = urlConstantResolver.getNtpUrl(); + if (UrlConstants.NTP_URL.equals(url) + && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { -+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(); ++ GURL gurl = HomepageManager.getInstance().getHomepageGurl(profile.isIncognitoBranded()); + url = gurl != null ? gurl.getSpec() : url; + } TabGroupUtils.openUrlInGroup( @@ -76,7 +76,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); + String url = urlConstantResolver.getNtpUrl(); + if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { -+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(); ++ GURL gurl = HomepageManager.getInstance().getHomepageGurl(currentTab.isIncognito()); + url = gurl != null ? gurl.getSpec() : url; + } mTabCreatorManager @@ -105,8 +105,8 @@ 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 -@@ -84,6 +84,9 @@ import org.chromium.ui.widget.RectProvider; - +@@ -87,6 +87,9 @@ import java.util.List; + import java.util.function.BiConsumer; import java.util.function.Supplier; +import org.chromium.chrome.browser.homepage.HomepageManager; @@ -115,14 +115,14 @@ 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. -@@ -228,9 +231,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina +@@ -235,9 +238,15 @@ public class TabGroupContextMenuCoordinator extends TabStripReorderingHelper Last hour @@ -268,7 +268,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 -@@ -119,6 +119,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -122,6 +122,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); diff --git a/build/patches/Add-search-engine.patch b/build/patches/Add-search-engine.patch index 5e22cc15..a10f8d78 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" ] -@@ -258,6 +260,7 @@ source_set("unit_tests") { +@@ -259,6 +261,7 @@ source_set("unit_tests") { "//testing/gmock", "//testing/gtest", "//third_party/search_engines_data:prepopulated_engines", @@ -141,7 +141,7 @@ new file mode 100644 diff --git a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc --- a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc +++ b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc -@@ -172,10 +172,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -193,10 +193,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -185,22 +185,22 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon namespace TemplateURLPrepopulateData { // Helpers -------------------------------------------------------------------- -@@ -122,7 +124,7 @@ int GetDataVersion(PrefService* prefs) { +@@ -154,7 +156,7 @@ int GetDataVersion(PrefService* prefs) { kCurrentDataVersion; } -std::vector> GetPrepopulatedEngines( +std::vector> GetPrepopulatedEnginesChromium( PrefService& prefs, - std::vector + const std::vector& regional_prepopulated_engines) { -@@ -138,6 +140,17 @@ std::vector> GetPrepopulatedEngines( +@@ -170,6 +172,17 @@ std::vector> GetPrepopulatedEngines( &PrepopulatedEngineToTemplateURLData); } +std::vector> GetPrepopulatedEngines( + PrefService& prefs, -+ std::vector ++ const std::vector& + regional_prepopulated_engines) { + std::vector> t_urls = + GetPrepopulatedEnginesChromium(prefs, regional_prepopulated_engines); @@ -211,8 +211,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon + std::unique_ptr GetPrepopulatedEngine( PrefService& prefs, - std::vector -@@ -159,10 +172,14 @@ std::vector> GetLocalPrepopulatedEngines( + const std::vector& regional_prepopulated_engines, +@@ -190,10 +203,14 @@ std::vector> GetLocalPrepopulatedEngines( return std::vector>(); } @@ -276,7 +276,7 @@ diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_to_struct.py --- a/tools/json_to_struct/json_to_struct.py +++ b/tools/json_to_struct/json_to_struct.py -@@ -103,7 +103,7 @@ def _GenerateHeaderGuard(h_filename): +@@ -104,7 +104,7 @@ def _GenerateHeaderGuard(h_filename): return re.sub(u'^_*', '', result) + u'_' # Remove leading underscores. @@ -285,7 +285,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ """Generates the .h file containing the definition of the structure specified by the schema. -@@ -147,11 +147,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): +@@ -148,11 +148,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): f.write(u'#include "%s"\n' % header) f.write(u'\n') @@ -302,7 +302,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ schema['type_name'], schema['schema'])) f.write(u'\n') -@@ -176,7 +180,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): +@@ -177,7 +181,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): f.write(u'#endif // %s\n' % header_guard) @@ -311,7 +311,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ """Generates the .cc file containing the static initializers for the of the elements specified in the description. -@@ -211,7 +215,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description): +@@ -212,7 +216,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description): f.write(element_generator.GenerateElements(schema['type_name'], schema['schema'], description)) @@ -320,7 +320,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ f.write('\n} // anonymous namespace \n\n') aggregated = GenerateCCAggregation(schema['type_name'], aggregation) -@@ -298,7 +302,7 @@ def GenerateClass(basepath, +@@ -299,7 +303,7 @@ def GenerateClass(basepath, def GenerateStruct(basepath, output_root, namespace, schema, description, @@ -329,7 +329,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ """Generates a C++ struct from a JSON description. Args: -@@ -317,8 +321,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description, +@@ -318,8 +322,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description, """ year = int(year) if year else datetime.now().year head = HEAD % (year, schema_filename, description_filename) @@ -340,7 +340,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ if __name__ == '__main__': parser = optparse.OptionParser( -@@ -333,11 +337,17 @@ if __name__ == '__main__': +@@ -334,11 +338,17 @@ if __name__ == '__main__': parser.add_option('-s', '--schema', help='path to the schema file, ' 'mandatory.') parser.add_option('-o', '--output', help='output filename, ') @@ -358,7 +358,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ description_filename = os.path.normpath(args[0]) root, ext = os.path.splitext(description_filename) shortroot = opts.output if opts.output else os.path.split(root)[1] -@@ -354,4 +364,4 @@ if __name__ == '__main__': +@@ -355,4 +365,4 @@ if __name__ == '__main__': schema = _Load(opts.schema) description = _Load(description_filename) GenerateStruct(basepath, output_root, opts.namespace, schema, description, 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 fa2ce727..8fd4c410 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../api/settings_private/prefs_util.cc | 17 ++++ .../browser/profiles/ProfileManagerUtils.java | 5 ++ .../profiles/android/profile_manager_utils.cc | 5 ++ - chrome/browser/profiles/profile_manager.cc | 15 +++- + chrome/browser/profiles/profile_manager.cc | 17 +++- chrome/browser/profiles/profile_manager.h | 2 + .../clear_browsing_data_dialog.html | 44 +++++++++++ .../clear_browsing_data_dialog.ts | 2 + @@ -40,7 +40,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html content/browser/storage_partition_impl.cc | 1 + .../public/browser/browsing_data_remover.h | 7 +- .../Add-setting-to-clear-data-on-exit.inc | 8 ++ - 36 files changed, 406 insertions(+), 33 deletions(-) + 36 files changed, 407 insertions(+), 34 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-clear-data-on-exit.inc @@ -48,7 +48,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -265,6 +265,7 @@ chrome_java_sources = [ +@@ -268,6 +268,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataCheckBoxPreference.java", "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFetcher.java", "java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java", @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler; import org.chromium.chrome.browser.recent_tabs.CrossDevicePaneFactory; import org.chromium.chrome.browser.reengagement.ReengagementNotificationController; -@@ -2224,7 +2225,11 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2179,7 +2180,11 @@ public class ChromeTabbedActivity extends ChromeActivity { Intent intent = getIntent(); boolean hadCipherData = @@ -334,7 +334,7 @@ new file mode 100644 diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp -@@ -2067,6 +2067,16 @@ +@@ -2097,6 +2097,16 @@ Delete browsing data @@ -354,9 +354,9 @@ 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 -@@ -110,6 +110,7 @@ +@@ -108,6 +108,7 @@ + #include "components/enterprise/client_certificates/core/features.h" #include "components/enterprise/data_controls/core/browser/features.h" - #include "components/enterprise/obfuscation/core/utils.h" #include "components/error_page/common/error_page_switches.h" +#include "components/favicon/core/favicon_database.h" #include "components/feature_engagement/public/feature_constants.h" @@ -459,7 +459,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 -@@ -350,6 +350,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -351,6 +351,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( uint64_t origin_type_mask, base::OnceCallback callback) { CHECK(((remove_mask & @@ -467,7 +467,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. ~content::BrowsingDataRemover::DATA_TYPE_AVOID_CLOSING_CONNECTIONS & ~constants::FILTERABLE_DATA_TYPES) == 0) || filter_builder->MatchesAllOriginsAndDomains()); -@@ -453,6 +454,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -454,6 +455,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( CreateTaskCompletionClosure(TracingDataType::kHistory), &history_task_tracker_); } @@ -477,7 +477,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. if (ClipboardRecentContent::GetInstance()) ClipboardRecentContent::GetInstance()->SuppressClipboardContent(); -@@ -561,6 +565,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -562,6 +566,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( // and SSL host state are scoped to hosts and represent them as std::string. // Rename the method to indicate its more general usage. if (profile_->GetSSLHostStateDelegate()) { @@ -489,7 +489,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. profile_->GetSSLHostStateDelegate()->Clear( filter_builder->MatchesAllOriginsAndDomains() ? base::RepeatingCallback() -@@ -589,9 +598,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -590,9 +599,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( } device_event_log::Clear(delete_begin_, delete_end_); @@ -503,7 +503,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. content::BackgroundTracingManager::GetInstance().DeleteTracesInDateRange( delete_begin_, delete_end_); -@@ -1314,6 +1327,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -1318,6 +1331,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (should_clear_zero_suggest_and_session_token && template_url_service) template_url_service->ClearSessionToken(); @@ -515,7 +515,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -557,6 +557,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -560,6 +560,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] = settings_api::PrefType::kNumber; @@ -574,7 +574,7 @@ diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/b diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1435,6 +1435,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, +@@ -1448,6 +1448,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, } } @@ -594,15 +594,18 @@ 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_ || -@@ -2096,7 +2109,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { - Profile* original_profile = profile->GetOriginalProfile(); +@@ -2117,9 +2130,9 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { // Do nothing if the closed window is not the last window of the same profile. - for (Browser* browser_iter : *BrowserList::GetInstance()) { -- if (browser_iter->profile()->GetOriginalProfile() == original_profile) -+ if (browser_iter->profile() == profile) - return; - } - + bool has_other_window = false; + ForEachCurrentBrowserWindowInterfaceOrderedByActivation( +- [original_profile, &has_other_window](BrowserWindowInterface* browser) { ++ [profile, &has_other_window](BrowserWindowInterface* browser) { + const Profile* const iter_profile = browser->GetProfile(); +- if (iter_profile->GetOriginalProfile() == original_profile) { ++ if (iter_profile == profile) { + has_other_window = true; + } + return !has_other_window; 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 @@ -691,7 +694,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1425,6 +1425,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1434,6 +1434,9 @@ Your Google account may have other forms of browsing history like searches and a Some of your history might not show up here. To see all your Chrome history, open full Chrome history. Also, your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. @@ -718,7 +721,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 -@@ -2042,6 +2042,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2192,6 +2192,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"clearedData", IDS_SETTINGS_CLEARED_DATA}, {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, @@ -938,7 +941,7 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co // Description of database tables: // // icon_mapping -@@ -507,6 +511,11 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, +@@ -505,6 +509,11 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, bool FaviconDatabase::SetFaviconsOutOfDateBetween(base::Time begin, base::Time end) { @@ -965,7 +968,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 -@@ -925,6 +925,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween( +@@ -924,6 +924,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 && @@ -988,7 +991,7 @@ diff --git a/content/browser/btm/btm_service_impl.cc b/content/browser/btm/btm_s diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc -@@ -1550,6 +1550,7 @@ void StoragePartitionImpl::Initialize( +@@ -1551,6 +1551,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 3684cb59..011f5019 100644 --- a/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch +++ b/build/patches/Add-setting-to-enable-Credman-for-passkeys.patch @@ -110,7 +110,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut import org.chromium.components.ukm.UkmRecorder; import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.WebContents; -@@ -169,8 +171,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon +@@ -170,8 +172,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon mIsPaymentRequest = options.isPaymentCredentialCreation; mMakeCredentialCallback = callback; mIsOperationPending = true; @@ -120,7 +120,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut recordOutcomeEvent(MakeCredentialOutcome.OTHER_FAILURE); onError(AuthenticatorStatus.NOT_IMPLEMENTED); return; -@@ -234,8 +235,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon +@@ -235,8 +236,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon mIsConditionalRequest = options.mediation == Mediation.CONDITIONAL; mIsImmediateRequest = options.mediation == Mediation.IMMEDIATE; @@ -130,7 +130,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut || options.publicKey == null) { recordOutcomeEvent(GetAssertionOutcome.OTHER_FAILURE); onError(AuthenticatorStatus.NOT_IMPLEMENTED); -@@ -260,12 +260,11 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon +@@ -277,12 +277,11 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon } private boolean couldSupportConditionalMediation() { @@ -145,7 +145,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -339,26 +338,20 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon +@@ -356,26 +355,20 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon capabilities.add( createWebAuthnClientCapability( AuthenticatorConstants.CAPABILITY_CONDITIONAL_GET, @@ -174,9 +174,9 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - .WEBAUTHN_IMMEDIATE_GET) - && isUvpaa)); + false)); - callback.call(capabilities.toArray(new WebAuthnClientCapability[0])); - }); - } + boolean signal_supported = + isUvpaa + && DeviceFeatureMap.isEnabled( diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java @@ -302,7 +302,7 @@ diff --git a/components/webauthn/features.h b/components/webauthn/features.h diff --git a/device/fido/features.cc b/device/fido/features.cc --- a/device/fido/features.cc +++ b/device/fido/features.cc -@@ -154,6 +154,7 @@ BASE_FEATURE(kWebAuthnImmediateGet, +@@ -171,6 +171,7 @@ BASE_FEATURE(kWebAuthnImmediateGet, #else base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -310,7 +310,7 @@ diff --git a/device/fido/features.cc b/device/fido/features.cc BASE_FEATURE_PARAM(int, kWebAuthnImmediateMediationTimeoutMilliseconds, -@@ -166,6 +167,7 @@ BASE_FEATURE_PARAM(int, +@@ -183,6 +184,7 @@ BASE_FEATURE_PARAM(int, BASE_FEATURE(kWebAuthnImmediateGetAutoselect, "WebAuthenticationImmediateGetAutoselect", base::FEATURE_ENABLED_BY_DEFAULT); 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 2d7068de..e1a9fa6b 100644 --- a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch +++ b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch @@ -59,7 +59,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/A diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml --- a/chrome/android/java/res/values/ids.xml +++ b/chrome/android/java/res/values/ids.xml -@@ -109,6 +109,7 @@ found in the LICENSE file. +@@ -111,6 +111,7 @@ found in the LICENSE file. @@ -98,28 +98,28 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java -@@ -132,8 +132,9 @@ class ChromeContextMenuItem { - int PRINT_PAGE = 40; +@@ -134,8 +134,9 @@ class ChromeContextMenuItem { // Developer Group - int INSPECT_ELEMENT = 41; -+ int FOLLOW_LINK = 42; + int VIEW_PAGE_SOURCE = 41; + int INSPECT_ELEMENT = 42; ++ int FOLLOW_LINK = 43; // ALWAYS UPDATE! -- int NUM_ENTRIES = 42; -+ int NUM_ENTRIES = 43; +- int NUM_ENTRIES = 43; ++ int NUM_ENTRIES = 44; } /** Mapping from {@link Item} to the ID found in the ids.xml. */ -@@ -180,6 +181,7 @@ class ChromeContextMenuItem { - R.id.contextmenu_share_page, // Item.SHARE_PAGE +@@ -183,6 +184,7 @@ class ChromeContextMenuItem { R.id.contextmenu_print_page, // Item.PRINT_PAGE + R.id.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE R.id.contextmenu_inspect_element, // Item.INSPECT_ELEMENT + R.id.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB }; /** Mapping from {@link Item} to the ID of the string that describes the action of the item. */ -@@ -226,6 +228,7 @@ class ChromeContextMenuItem { - R.string.contextmenu_share_page, // Item.SHARE_PAGE +@@ -230,6 +232,7 @@ class ChromeContextMenuItem { R.string.contextmenu_print_page, // Item.PRINT_PAGE + R.string.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE R.string.contextmenu_inspect_element, // Item.INSPECT_ELEMENT + R.string.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB }; @@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -452,6 +452,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -459,6 +459,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } if (mParams.isAnchor()) { ModelList linkGroup = new ModelList(); @@ -138,7 +138,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(mParams.getUrl()) && UrlUtilities.isAcceptedScheme(mParams.getUrl())) { -@@ -1054,6 +1057,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -1066,6 +1069,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { getProfile(), false); }); @@ -150,7 +150,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -374,6 +374,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -401,6 +401,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { mTab.loadUrl(loadUrlParams); } @@ -168,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -433,6 +433,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -444,6 +444,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupParityBottomSheetAndroid, &kTabModelInitFixes, &kTabStorageSqlitePrototype, @@ -179,7 +179,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -507,6 +507,8 @@ public abstract class ChromeFeatureList { +@@ -511,6 +511,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -188,7 +188,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = "NewTabPageCustomizationToolbarButton"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -1035,6 +1037,8 @@ public abstract class ChromeFeatureList { +@@ -1024,6 +1026,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -197,10 +197,10 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPostGetMyMemoryStateToBackground = newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true); -@@ -1289,6 +1293,7 @@ public abstract class ChromeFeatureList { +@@ -1292,6 +1296,7 @@ public abstract class ChromeFeatureList { sTopControlsRefactor, + sTopControlsRefactorV2, sTouchToSearchCallout, - sTraceBinderIpc, + sShowAlwaysContextMenuOnLinks, sUseActivityManagerForTabActivation, sUseChimeAndroidSdk, @@ -208,7 +208,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1554,6 +1554,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1563,6 +1563,12 @@ Your Google account may have other forms of browsing history like searches and a Disable toolbar swipe up @@ -221,7 +221,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3195,6 +3201,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3222,6 +3228,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Open in new Chrome tab @@ -249,7 +249,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java --- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java +++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java -@@ -53,6 +53,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -54,6 +54,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate; private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate; @@ -259,7 +259,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; private ChromeSwitchPreference mPageZoomAlwaysShowPref; -@@ -148,6 +151,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -150,6 +153,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.getValue()); mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this); @@ -272,7 +272,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -229,6 +238,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -244,6 +253,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment } else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) { mDisableToolbarSwipeUpDelegate.setValue((Boolean) newValue); mDelegate.requestRestart(getActivity()); @@ -344,7 +344,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third_party/blink/renderer/core/html/html_anchor_element.cc --- a/third_party/blink/renderer/core/html/html_anchor_element.cc +++ b/third_party/blink/renderer/core/html/html_anchor_element.cc -@@ -67,6 +67,7 @@ +@@ -65,6 +65,7 @@ #include "third_party/blink/renderer/core/loader/render_blocking_resource_manager.h" #include "third_party/blink/renderer/core/navigation_api/navigation_api.h" #include "third_party/blink/renderer/core/page/chrome_client.h" @@ -352,7 +352,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/core/scroll/scroll_into_view_util.h" #include "third_party/blink/renderer/core/speculation_rules/document_speculation_rules.h" -@@ -476,6 +477,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink( +@@ -415,6 +416,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink( bool is_trusted, base::TimeTicks platform_time_stamp, KURL completed_url) { @@ -370,7 +370,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third LocalDOMWindow* window = GetDocument().domWindow(); if (!window) { return; -@@ -566,6 +578,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( +@@ -495,6 +507,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( frame_request.SetImpression(impression); } @@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third Frame* target_frame = frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame; -@@ -601,7 +622,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const { +@@ -531,7 +552,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const { return IsLink(); } @@ -395,7 +395,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third event.SetDefaultHandled(); LocalDOMWindow* window = GetDocument().domWindow(); -@@ -659,13 +680,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { +@@ -583,13 +604,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { return; } @@ -413,7 +413,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( -@@ -675,7 +695,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { +@@ -599,7 +619,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { frame->GetEventHandler().SetDelayedNavigationTaskHandle( std::move(task_handle)); } else { @@ -427,7 +427,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_party/blink/renderer/core/html/html_anchor_element.h --- a/third_party/blink/renderer/core/html/html_anchor_element.h +++ b/third_party/blink/renderer/core/html/html_anchor_element.h -@@ -112,6 +112,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, +@@ -90,6 +90,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, bool IsValidInterestInvoker(Element& target) const override; void Trace(Visitor*) const override; @@ -435,7 +435,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_ protected: HTMLAnchorElementBase(const QualifiedName& tag_name, Document&); -@@ -143,7 +144,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, +@@ -121,7 +122,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, bool is_trusted, base::TimeTicks platform_time_stamp, KURL); @@ -499,12 +499,12 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_p + void DefaultEventHandler(Event&) override; + private: - bool AreAuthorShadowsAllowed() const override { return false; } - + void ParseAttribute(const AttributeModificationParams&) override; + bool IsPresentationAttribute(const QualifiedName&) const override; diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc --- a/third_party/blink/renderer/core/page/context_menu_controller.cc +++ b/third_party/blink/renderer/core/page/context_menu_controller.cc -@@ -200,15 +200,17 @@ void ContextMenuController::DocumentDetached(Document* document) { +@@ -201,15 +201,17 @@ void ContextMenuController::DocumentDetached(Document* document) { } } @@ -525,7 +525,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t mouse_event->SetDefaultHandled(); } -@@ -433,7 +435,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( +@@ -434,7 +436,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( bool ContextMenuController::ShowContextMenu(LocalFrame* frame, const PhysicalOffset& point, WebMenuSourceType source_type, @@ -535,7 +535,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Displaying the context menu in this function is a big hack as we don't // have context, i.e. whether this is being invoked via a script or in // response to user input (Mouse event WM_RBUTTONDOWN, -@@ -456,6 +459,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -457,6 +460,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, if (!result.InnerNodeOrImageMapImage()) return false; @@ -552,7 +552,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Clear any previously set cached results if we are resetting the hit test // result. image_selection_cached_result_ = nullptr; -@@ -836,7 +849,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -838,7 +851,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); @@ -564,7 +564,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/third_party/blink/renderer/core/page/context_menu_controller.h --- a/third_party/blink/renderer/core/page/context_menu_controller.h +++ b/third_party/blink/renderer/core/page/context_menu_controller.h -@@ -58,7 +58,7 @@ class CORE_EXPORT ContextMenuController final +@@ -57,7 +57,7 @@ class CORE_EXPORT ContextMenuController final void DocumentDetached(Document*); @@ -573,7 +573,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/th void ShowContextMenuAtPoint(LocalFrame*, float x, float y, -@@ -125,7 +125,8 @@ class CORE_EXPORT ContextMenuController final +@@ -124,7 +124,8 @@ class CORE_EXPORT ContextMenuController final bool ShowContextMenu(LocalFrame*, const PhysicalOffset&, WebMenuSourceType, diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index e65dfc18..6bf6bb0b 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 -@@ -171,6 +171,7 @@ +@@ -169,6 +169,7 @@ #include "components/sensitive_content/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" @@ -45,7 +45,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" #include "components/webapps/browser/banners/app_banner_settings_helper.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" -@@ -344,6 +345,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( +@@ -345,6 +346,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( // static std::set ImportantSitesUtil::GetInstalledRegisterableDomains( Profile* profile) { @@ -56,7 +56,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ std::set installed_origins = GetOriginsWithInstalledWebApps(profile); std::set registerable_domains; -@@ -358,6 +363,10 @@ std::vector +@@ -359,6 +364,10 @@ std::vector ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile, size_t max_results) { SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime"); @@ -91,7 +91,7 @@ diff --git a/chrome/browser/media/media_engagement_service.cc b/chrome/browser/m diff --git a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc --- a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc +++ b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc -@@ -42,7 +42,7 @@ AutoPictureInPictureTabHelper::AutoPictureInPictureTabHelper( +@@ -46,7 +46,7 @@ AutoPictureInPictureTabHelper::AutoPictureInPictureTabHelper( Profile::FromBrowserContext(web_contents->GetBrowserContext()))), auto_blocker_(PermissionDecisionAutoBlockerFactory::GetForProfile( Profile::FromBrowserContext(web_contents->GetBrowserContext()))), diff --git a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch index fde685d2..c3bba809 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 -@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +@@ -60,6 +60,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; @@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; import org.chromium.components.browser_ui.settings.PreferenceUpdateObserver; -@@ -733,8 +734,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -797,8 +798,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity finishCurrentSettings(mainFragment); return true; } else if (item.getItemId() == R.id.menu_id_general_help) { diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 1972e4fc..3d9de760 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -206,7 +206,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -115,6 +115,8 @@ enum ReasonForCallingCanExecuteScripts { +@@ -114,6 +114,8 @@ enum ReasonForCallingCanExecuteScripts { enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag }; @@ -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 -@@ -1959,6 +1959,8 @@ class MODULES_EXPORT WebGLRenderingContextBase +@@ -1958,6 +1958,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 fe0202fd..7fd3e4a3 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -187,7 +187,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -47,6 +47,7 @@ +@@ -49,6 +49,7 @@ #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/task_type.h" @@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/public/web/web_document.h" -@@ -989,6 +990,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -1053,6 +1054,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // |request_multiple_routes|. Whether local IP addresses could be // collected depends on if mic/camera permission is granted for this // origin. diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index 0dcdb80a..070155dd 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/patches/Allow-building-without-enable_reporting.patch @@ -25,8 +25,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../blink/renderer/core/frame/local_frame.h | 3 +++ .../renderer/core/frame/reporting_context.cc | 9 +++++++++ .../renderer/core/frame/reporting_context.h | 7 +++++-- - .../renderer/core/frame/reporting_observer.cc | 3 +-- - 22 files changed, 64 insertions(+), 25 deletions(-) + .../renderer/core/frame/reporting_observer.cc | 4 +--- + 22 files changed, 64 insertions(+), 26 deletions(-) create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Allow-building-without-enable_reporting.inc diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chrome_report_sender.cc @@ -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 -@@ -1520,6 +1520,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1511,6 +1511,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( -@@ -1533,6 +1534,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1524,6 +1525,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -126,7 +126,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -16264,12 +16264,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -16439,12 +16439,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 -@@ -506,14 +506,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -508,14 +508,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, @@ -329,7 +329,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/public/cpp/parsed_headers.cc --- a/services/network/public/cpp/parsed_headers.cc +++ b/services/network/public/cpp/parsed_headers.cc -@@ -133,6 +133,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders( +@@ -140,6 +140,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders( } #if BUILDFLAG(ENABLE_REPORTING) @@ -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 -@@ -1793,7 +1793,6 @@ mojom("mojom") { +@@ -1826,7 +1826,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 -@@ -1303,6 +1303,7 @@ interface NetworkContext { +@@ -1305,6 +1305,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, -@@ -1310,6 +1311,7 @@ interface NetworkContext { +@@ -1312,6 +1313,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, -@@ -1320,6 +1322,7 @@ interface NetworkContext { +@@ -1322,6 +1324,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`. @@ -405,7 +405,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c 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 -@@ -48,6 +48,7 @@ +@@ -49,6 +49,7 @@ #include "build/build_config.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "mojo/public/cpp/system/message_pipe.h" @@ -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" -@@ -2851,9 +2852,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2854,9 +2855,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -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 || -@@ -263,6 +271,7 @@ void ReportingContext::SendToReportingAPI(Report* report, +@@ -268,6 +276,7 @@ void ReportingContext::SendToReportingAPI(Report* report, url, endpoint, body->featureId(), body->disposition(), body->message(), body->sourceFile(), line_number, column_number); } @@ -547,12 +547,13 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p diff --git a/third_party/blink/renderer/core/frame/reporting_observer.cc b/third_party/blink/renderer/core/frame/reporting_observer.cc --- a/third_party/blink/renderer/core/frame/reporting_observer.cc +++ b/third_party/blink/renderer/core/frame/reporting_observer.cc -@@ -61,8 +61,7 @@ void ReportingObserver::QueueReport(Report* report) { +@@ -61,9 +61,7 @@ void ReportingObserver::QueueReport(Report* report) { } bool ReportingObserver::ObservedType(const String& type) { -- return !options_->hasTypesNonNull() || options_->typesNonNull().empty() || -- options_->typesNonNull().Find(type) != kNotFound; +- return !options_->hasTypes() || !options_->types() || +- options_->types()->empty() || +- options_->types()->Find(type) != kNotFound; + return false; } diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 0e303a10..7de62873 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -24,14 +24,14 @@ 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 -@@ -826,7 +826,6 @@ if (_is_default_toolchain) { +@@ -828,7 +828,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", - "//components/supervised_user/core/browser:supervised_user_utils_enum_javagen", + "//components/touch_to_search/core/browser:quick_action_category_enum_javagen", ] - # From java_sources.gni. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java --- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java @@ -89,7 +89,7 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -683,10 +683,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -680,10 +680,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1632,6 +1628,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1627,6 +1623,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -111,7 +111,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1191,10 +1191,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1194,10 +1194,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kProfileName, profile_name); } @@ -122,7 +122,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile } void ProfileManager::RegisterTestingProfile(std::unique_ptr profile, -@@ -1956,9 +1952,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -1976,9 +1972,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); @@ -135,7 +135,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile diff --git a/chrome/browser/supervised_user/supervised_user_browser_utils.cc b/chrome/browser/supervised_user/supervised_user_browser_utils.cc --- a/chrome/browser/supervised_user/supervised_user_browser_utils.cc +++ b/chrome/browser/supervised_user/supervised_user_browser_utils.cc -@@ -99,6 +99,7 @@ bool SupervisedUserCanSkipExtensionParentApprovals(const Profile* profile) { +@@ -98,6 +98,7 @@ bool SupervisedUserCanSkipExtensionParentApprovals(const Profile* profile) { } bool AreExtensionsPermissionsEnabled(Profile* profile) { diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index 1967106e..08b2f2be 100644 --- a/build/patches/Allow-playing-audio-in-background.patch +++ b/build/patches/Allow-playing-audio-in-background.patch @@ -4,14 +4,26 @@ Subject: Allow playing audio in background License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + .../renderer/render_frame_media_playback_options.cc | 1 + .../renderer/platform/media/web_media_player_impl.cc | 11 ++++++++++- .../renderer/platform/media/web_media_player_impl.h | 3 +++ - 2 files changed, 13 insertions(+), 1 deletion(-) + 3 files changed, 14 insertions(+), 1 deletion(-) +diff --git a/content/public/renderer/render_frame_media_playback_options.cc b/content/public/renderer/render_frame_media_playback_options.cc +--- a/content/public/renderer/render_frame_media_playback_options.cc ++++ b/content/public/renderer/render_frame_media_playback_options.cc +@@ -14,6 +14,7 @@ + + namespace content { + bool IsBackgroundMediaSuspendEnabled() { ++ if ((true)) return false; + #if BUILDFLAG(IS_ANDROID) + // For Android devices, do not suspend background media for devices with large + // displays. Exception is for Webview. 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 -@@ -1309,6 +1309,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1311,6 +1311,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -24,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()); -@@ -3645,7 +3651,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3678,7 +3684,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { const bool preserve_audio = HasUnmutedAudio() || audio_source_provider_->IsAudioBeingCaptured(); // Audio only stream is allowed to play when in background. @@ -39,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 -@@ -212,6 +212,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl +@@ -211,6 +211,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/patches/Always-allow-inspect-fallback.patch b/build/patches/Always-allow-inspect-fallback.patch index 5f70762b..b27e3d0c 100644 --- a/build/patches/Always-allow-inspect-fallback.patch +++ b/build/patches/Always-allow-inspect-fallback.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/resources/inspect/inspect.js b/chrome/browser/resources/inspect/inspect.js --- a/chrome/browser/resources/inspect/inspect.js +++ b/chrome/browser/resources/inspect/inspect.js -@@ -45,6 +45,7 @@ if ('browser-inspector' in queryParamsObject) { +@@ -46,6 +46,7 @@ if ('browser-inspector' in queryParamsObject) { })(); function isVersionNewerThanHost(version) { @@ -20,7 +20,7 @@ diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resour if (!HOST_CHROME_VERSION) { return false; } -@@ -590,7 +591,7 @@ function formatValue(data, property) { +@@ -597,7 +598,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 9a782d7a..f9b66b88 100644 --- a/build/patches/Always-open-browser-controls-in-new-tab.patch +++ b/build/patches/Always-open-browser-controls-in-new-tab.patch @@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpenerImpl; -@@ -42,6 +43,7 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -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; @@ -26,7 +26,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -@@ -308,6 +310,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -335,6 +337,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()); -@@ -328,6 +331,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -355,6 +358,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 336a8f39..e24090ff 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 @@ -19,10 +19,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -159,10 +159,6 @@ public class HomepageManager +@@ -164,10 +164,6 @@ public class HomepageManager * tab page if the homepage button is force enabled via flag. */ - public GURL getDefaultHomepageGurl() { + public GURL getDefaultHomepageGurl(boolean isIncognito) { - if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) { - return assumeNonNull(PartnerBrowserCustomizations.getInstance().getHomePageUrl()); - } diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index 1355d81c..2b70ab27 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -28,7 +28,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/app/ChromeActivity.java | 23 ++++++++- .../compositor/CompositorViewHolder.java | 4 +- .../bottombar/OverlayPanelContent.java | 2 +- - .../chromium/chrome/browser/tab/TabImpl.java | 4 +- + .../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 ++- @@ -109,7 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/display/mojom/screen_info_mojom_traits.h | 4 ++ ui/display/screen_info.h | 1 + ui/events/blink/blink_event_util.cc | 2 +- - 99 files changed, 534 insertions(+), 140 deletions(-) + 99 files changed, 533 insertions(+), 139 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 @@ -131,7 +131,7 @@ diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw diff --git a/cc/input/input_handler.cc b/cc/input/input_handler.cc --- a/cc/input/input_handler.cc +++ b/cc/input/input_handler.cc -@@ -686,7 +686,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( +@@ -695,7 +695,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( return result; } @@ -143,7 +143,7 @@ diff --git a/cc/input/input_handler.cc b/cc/input/input_handler.cc diff --git a/cc/input/scrollbar_controller.cc b/cc/input/scrollbar_controller.cc --- a/cc/input/scrollbar_controller.cc +++ b/cc/input/scrollbar_controller.cc -@@ -658,7 +658,7 @@ InputHandlerPointerResult ScrollbarController::HandlePointerUp( +@@ -671,7 +671,7 @@ InputHandlerPointerResult ScrollbarController::HandlePointerUp( } // Returns the layer that is hit by the position_in_widget. @@ -176,7 +176,7 @@ 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 -@@ -1293,7 +1293,7 @@ void VizLayerContext::SetVisible(bool visible) { +@@ -1301,7 +1301,7 @@ void VizLayerContext::SetVisible(bool visible) { service_->SetVisible(visible); } @@ -184,7 +184,7 @@ diff --git a/cc/mojo_embedder/viz_layer_context.cc b/cc/mojo_embedder/viz_layer_ +base::TimeTicks VizLayerContext::UpdateDisplayTreeFrom( // POI LayerTreeImpl& tree, viz::ClientResourceProvider& resource_provider, - viz::RasterContextProvider& context_provider, + gpu::SharedImageInterface* shared_image_interface, 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 @@ -199,7 +199,7 @@ 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 -@@ -94,6 +94,7 @@ struct CC_EXPORT CommitState { +@@ -95,6 +95,7 @@ struct CC_EXPORT CommitState { float load_progress = 0.f; float max_page_scale_factor = 1.f; float min_page_scale_factor = 1.f; @@ -210,7 +210,7 @@ diff --git a/cc/trees/commit_state.h b/cc/trees/commit_state.h diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc -@@ -1354,7 +1354,7 @@ void LayerTreeHost::SetEventListenerProperties( +@@ -1389,7 +1389,7 @@ void LayerTreeHost::SetEventListenerProperties( SetNeedsCommit(); } @@ -219,7 +219,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc const gfx::Rect& device_viewport_rect, float device_scale_factor, const viz::LocalSurfaceId& local_surface_id_from_parent) { -@@ -1474,9 +1474,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { +@@ -1509,9 +1509,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, @@ -231,7 +231,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc pending_commit_state()->max_page_scale_factor == max_page_scale_factor) return; DCHECK_GE(page_scale_factor, min_page_scale_factor); -@@ -1492,6 +1494,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, +@@ -1527,6 +1529,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, pending_commit_state()->page_scale_factor = page_scale_factor; pending_commit_state()->min_page_scale_factor = min_page_scale_factor; @@ -242,7 +242,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h --- a/cc/trees/layer_tree_host.h +++ b/cc/trees/layer_tree_host.h -@@ -566,6 +566,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { +@@ -567,6 +567,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { void SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, @@ -250,7 +250,7 @@ diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h float max_page_scale_factor); float page_scale_factor() const { return pending_commit_state()->page_scale_factor; -@@ -573,6 +574,9 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { +@@ -574,6 +575,9 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { float min_page_scale_factor() const { return pending_commit_state()->min_page_scale_factor; } @@ -263,7 +263,7 @@ diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -2498,7 +2498,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { +@@ -2585,7 +2585,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { return bounds; } @@ -272,7 +272,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc viz::CompositorFrameMetadata metadata; if (settings().trees_in_viz_in_viz_process) { // In TreesInViz mode, this function is called in client process already, -@@ -2665,7 +2665,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +@@ -2752,7 +2752,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { return metadata; } @@ -284,7 +284,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc -@@ -161,6 +161,7 @@ LayerTreeImpl::LayerTreeImpl( +@@ -162,6 +162,7 @@ LayerTreeImpl::LayerTreeImpl( background_color_(SkColors::kTransparent), page_scale_factor_(page_scale_factor), min_page_scale_factor_(0), @@ -292,7 +292,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_(0), external_page_scale_factor_(1.f), device_scale_factor_(1.f), -@@ -450,7 +451,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( +@@ -449,7 +450,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( } } @@ -301,7 +301,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (!InnerViewportScrollNode()) return; -@@ -520,8 +521,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { +@@ -519,8 +520,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { // Adjust the outer viewport container as well, since adjusting only the // inner may cause its bounds to exceed those of the outer, causing scroll // clamping. @@ -317,7 +317,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc property_trees->SetOuterViewportContainerBoundsDelta(scaled_bounds_delta); // outer_viewport_container_bounds_delta and -@@ -817,6 +823,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { +@@ -818,6 +824,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { PushPageScaleFromMainThread(commit_state.page_scale_factor, commit_state.min_page_scale_factor, @@ -325,7 +325,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc commit_state.max_page_scale_factor); SetBrowserControlsParams(commit_state.browser_controls_params); -@@ -926,6 +933,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { +@@ -927,6 +934,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { // Active tree already shares the page_scale_factor object with pending // tree so only the limits need to be provided. target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), @@ -333,7 +333,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor()); target_tree->SetExternalPageScaleFactor(external_page_scale_factor_); -@@ -1307,19 +1315,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { +@@ -1343,19 +1351,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, @@ -357,7 +357,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (changed_page_scale) { DidUpdatePageScale(); -@@ -1328,12 +1338,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( +@@ -1364,12 +1374,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -372,7 +372,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (page_scale_factor) { DCHECK(!IsActiveTree() || !host_impl_->pending_tree()); -@@ -1450,12 +1461,15 @@ void LayerTreeImpl::PushBrowserControls( +@@ -1486,12 +1497,15 @@ void LayerTreeImpl::PushBrowserControls( } bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, @@ -388,7 +388,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_ = max_page_scale_factor; return true; -@@ -2361,7 +2375,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { +@@ -2392,7 +2406,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { return scrollbars; } @@ -397,7 +397,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc const gfx::PointF& screen_space_point, const gfx::Transform& local_space_to_screen_space_transform, const gfx::Rect& local_space_rect, -@@ -2972,7 +2986,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( +@@ -3003,7 +3017,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( return viewport_bound; } @@ -409,7 +409,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h --- a/cc/trees/layer_tree_impl.h +++ b/cc/trees/layer_tree_impl.h -@@ -378,6 +378,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -383,6 +383,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleOnActiveTree(float active_page_scale); void PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, @@ -417,7 +417,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); const LayerSelection& selection() const { return selection_; } float current_page_scale_factor() const { -@@ -385,7 +386,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -390,7 +391,7 @@ class CC_EXPORT LayerTreeImpl { } float min_page_scale_factor() const { return min_page_scale_factor_; } float max_page_scale_factor() const { return max_page_scale_factor_; } @@ -426,7 +426,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float page_scale_delta() const { return page_scale_factor()->Delta(); } SyncedScale* page_scale_factor(); -@@ -844,6 +845,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -845,6 +846,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleFactorAndLimitsForDisplayTree(float page_scale_factor, float min_page_scale_factor, @@ -434,7 +434,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); LayerTreeHostImpl* host_impl() { return host_impl_; } -@@ -868,8 +870,10 @@ class CC_EXPORT LayerTreeImpl { +@@ -869,8 +871,10 @@ class CC_EXPORT LayerTreeImpl { float ClampPageScaleFactorToLimits(float page_scale_factor) const; void PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -445,7 +445,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); void DidUpdatePageScale(); void PushBrowserControls(const float* top_controls_shown_ratio, -@@ -908,6 +912,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -909,6 +913,7 @@ class CC_EXPORT LayerTreeImpl { scoped_refptr page_scale_factor_; float min_page_scale_factor_; @@ -456,7 +456,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc --- a/cc/trees/property_tree.cc +++ b/cc/trees/property_tree.cc -@@ -1598,7 +1598,7 @@ void ScrollTree::clear() { +@@ -1602,7 +1602,7 @@ void ScrollTree::clear() { #endif } @@ -465,7 +465,7 @@ diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc const ScrollNode* scroll_node = Node(scroll_node_id); gfx::SizeF scroll_bounds = this->scroll_bounds(scroll_node_id); -@@ -2117,7 +2117,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, +@@ -2121,7 +2121,7 @@ gfx::Vector2dF ScrollTree::ScrollBy(const ScrollNode& scroll_node, return old_offset + scroll - new_offset; } @@ -511,7 +511,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; -@@ -533,7 +536,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -540,7 +543,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Ensure that mConfig is initialized before tablet mode changes. mConfig = getResources().getConfiguration(); @@ -541,7 +541,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java -@@ -979,7 +979,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -977,7 +977,7 @@ public class CompositorViewHolder extends FrameLayout int viewportInsets = controlsInsets + keyboardInset; if (isAttachedToWindow(view)) { @@ -550,7 +550,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp // Dispatch the geometrychange JavaScript event to the page. // TODO(bokan): This doesn't belong in updateWebContentsSize. Ideally the content/ layer -@@ -999,7 +999,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -997,7 +997,7 @@ public class CompositorViewHolder extends FrameLayout MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); @@ -574,24 +574,15 @@ 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 -@@ -1871,7 +1871,7 @@ class TabImpl implements Tab { - // so that next onShow() call won't send a resize message with zero size - // to the renderer process. This prevents the size fluttering that may confuse - // Blink and break rendered result (see http://crbug.com/340987). -- webContents.setSize(original.width(), original.height()); -+ webContents.setSize(original.width(), original.height(), 0); - - if (bounds != null) { - assert mNativeTabAndroid != 0; -@@ -2246,7 +2246,7 @@ class TabImpl implements Tab { +@@ -2370,7 +2370,7 @@ class TabImpl implements Tab { Supplier compositorViewHolderSupplier = assumeNonNull(getActivity()).getCompositorViewHolderSupplier(); View compositorView = compositorViewHolderSupplier.get(); - webContents.setSize(compositorView.getWidth(), compositorView.getHeight()); + webContents.setSize(compositorView.getWidth(), compositorView.getHeight(), 0); + mWebContentsState.destroy(); mWebContentsState = null; - initWebContents(webContents); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java @@ -640,16 +631,16 @@ diff --git a/chrome/browser/android/bottombar/overlay_panel_content.cc b/chrome/ 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 -@@ -26,6 +26,7 @@ - #include "chrome/browser/android/compositor/layer/thumbnail_layer.h" +@@ -27,6 +27,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" +#include "content/public/common/content_features.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_view_host.h" -@@ -74,7 +75,10 @@ class TabContentManager::TabReadbackRequest { - std::move(result_callback).Run(SkBitmap()); +@@ -76,7 +77,10 @@ class TabContentManager::TabReadbackRequest { + std::move(result_callback).Run(viz::CopyOutputBitmapWithMetadata()); return; } - gfx::Rect source_rect = gfx::Rect(view_size_in_pixels); @@ -776,7 +767,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 -@@ -655,7 +655,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { +@@ -618,7 +618,7 @@ bool InputRouterImpl::IsAutoscrollInProgress() { return client_->IsAutoscrollInProgress(); } @@ -870,7 +861,7 @@ diff --git a/components/thin_webview/internal/thin_webview.cc b/components/thin_ 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 -@@ -407,7 +407,7 @@ const DisplayHitTestQueryMap& InputManager::GetDisplayHitTestQuery() const { +@@ -408,7 +408,7 @@ const DisplayHitTestQueryMap& InputManager::GetDisplayHitTestQuery() const { return frame_sink_manager_->GetDisplayHitTestQuery(); } @@ -906,7 +897,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 -@@ -1842,7 +1842,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( +@@ -1841,7 +1841,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( return base::unexpected("Invalid page scale factors"); } layers.SetPageScaleFactorAndLimitsForDisplayTree( @@ -948,7 +939,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co #include "third_party/blink/public/common/frame/frame_visual_properties.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom.h" -@@ -223,9 +224,12 @@ void CrossProcessFrameConnector::SynchronizeVisualProperties( +@@ -220,9 +221,12 @@ void CrossProcessFrameConnector::SynchronizeVisualProperties( render_widget_host->SetAutoResize(visual_properties.auto_resize_enabled, visual_properties.min_size_for_auto_resize, visual_properties.max_size_for_auto_resize); @@ -962,7 +953,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co visual_properties.is_pinch_gesture_active, visual_properties.visible_viewport_size, visual_properties.compositor_viewport, -@@ -478,7 +482,7 @@ void CrossProcessFrameConnector::SetVisibilityForChildViews( +@@ -475,7 +479,7 @@ void CrossProcessFrameConnector::SetVisibilityForChildViews( current_child_frame_host()->SetVisibilityForChildViews(visible); } @@ -971,7 +962,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co const gfx::Size& local_frame_size) { has_size_ = true; const float dsf = screen_infos_.current().device_scale_factor; -@@ -487,7 +491,7 @@ void CrossProcessFrameConnector::SetLocalFrameSize( +@@ -484,7 +488,7 @@ void CrossProcessFrameConnector::SetLocalFrameSize( gfx::ScaleToRoundedSize(local_frame_size, 1.f / dsf); } @@ -983,7 +974,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 -@@ -183,7 +183,7 @@ void DelegatedFrameHost::CopyFromCompositingSurfaceAsTexture( +@@ -187,7 +187,7 @@ void DelegatedFrameHost::CopyFromCompositingSurfaceAsTexture( std::move(callback)); } @@ -1007,7 +998,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 -@@ -9306,7 +9306,7 @@ void RenderFrameHostImpl::ShowPopupMenu( +@@ -9396,7 +9396,7 @@ void RenderFrameHostImpl::ShowPopupMenu( #endif } @@ -1019,7 +1010,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 -@@ -1048,7 +1048,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1049,7 +1049,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { blink::VisualProperties visual_properties; visual_properties.screen_infos = GetScreenInfos(); auto& current_screen_info = visual_properties.screen_infos.mutable_current(); @@ -1041,7 +1032,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 -@@ -1153,6 +1166,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1154,6 +1167,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { visual_properties.compositing_scale_factor = properties_from_parent_local_root_.compositing_scale_factor; @@ -1055,7 +1046,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 = -@@ -1333,8 +1353,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( +@@ -1334,8 +1354,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( } } @@ -1068,7 +1059,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 -@@ -3983,7 +4005,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( +@@ -3990,7 +4012,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( // porting drag-and-drop calls to Mojo, so that RenderWidgetHostImpl bypasses // RenderWidget to talk the the WebFrameWidget and needs to perform the scale // operation itself. @@ -1080,7 +1071,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc -@@ -86,6 +86,7 @@ +@@ -89,6 +89,7 @@ #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" @@ -1088,7 +1079,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ #include "third_party/blink/public/mojom/input/input_handler.mojom.h" #include "third_party/perfetto/include/perfetto/tracing/track.h" #include "third_party/skia/include/core/SkBitmap.h" -@@ -972,7 +973,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -989,7 +990,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( ? SK_ColorTRANSPARENT : metadata.root_background_color.toSkColor()); @@ -1097,7 +1088,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ overscroll_controller_->OnFrameMetadataUpdated( metadata.page_scale_factor, metadata.device_scale_factor, metadata.scrollable_viewport_size, metadata.root_layer_size, -@@ -1274,6 +1275,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { +@@ -1292,6 +1293,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { default_bounds_dip_.height() * scale_factor); } @@ -1110,7 +1101,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ const float scale_factor = GetDeviceScaleFactor() / view_.GetDipScale(); return gfx::ScaleToCeiledSize(view_.GetSizeDevicePx(), scale_factor); } -@@ -1299,6 +1306,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { +@@ -1317,6 +1324,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { NOTREACHED(); } @@ -1121,7 +1112,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()) { -@@ -1434,7 +1445,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { +@@ -1452,7 +1463,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { : viz::SurfaceId(); } @@ -1130,7 +1121,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) { -@@ -1850,7 +1861,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { +@@ -1868,7 +1879,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { return delegated_frame_host_->HasFallbackSurface(); } @@ -1138,11 +1129,11 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ +void RenderWidgetHostViewAndroid::CopyFromSurface( // POI const gfx::Rect& src_subrect, const gfx::Size& output_size, - base::OnceCallback callback) { + base::OnceCallback 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 +@@ -172,6 +172,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid gfx::Size GetRequestedRendererSizeDevicePx() override; gfx::Size GetVisibleViewportSize() override; gfx::Size GetVisibleViewportSizeDevicePx() override; @@ -1153,7 +1144,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/c diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc -@@ -110,6 +110,10 @@ gfx::Size RenderWidgetHostViewBase::GetCompositorViewportPixelSize() { +@@ -113,6 +113,10 @@ gfx::Size RenderWidgetHostViewBase::GetCompositorViewportPixelSize() { GetDeviceScaleFactor()); } @@ -1164,7 +1155,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/con void RenderWidgetHostViewBase::SelectionBoundsChanged( const gfx::Rect& anchor_rect, base::i18n::TextDirection anchor_dir, -@@ -581,7 +585,7 @@ display::ScreenInfos RenderWidgetHostViewBase::GetScreenInfos() const { +@@ -605,7 +609,7 @@ display::ScreenInfos RenderWidgetHostViewBase::GetScreenInfos() const { void RenderWidgetHostViewBase::ResetGestureDetection() {} @@ -1176,7 +1167,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 -@@ -278,6 +278,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -286,6 +286,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // The size of the view's backing surface in non-DPI-adjusted pixels. virtual gfx::Size GetCompositorViewportPixelSize(); @@ -1188,7 +1179,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 -@@ -440,6 +440,10 @@ void RenderWidgetHostViewChildFrame::RequestInputBackForDragAndDrop( +@@ -442,6 +442,10 @@ void RenderWidgetHostViewChildFrame::RequestInputBackForDragAndDrop( } #endif @@ -1202,7 +1193,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 -@@ -117,6 +117,7 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame +@@ -122,6 +122,7 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame RenderWidgetHostViewBase* GetRootView() override; uint32_t GetCaptureSequenceNumber() const override; gfx::Size GetCompositorViewportPixelSize() override; @@ -1213,7 +1204,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -826,8 +826,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { +@@ -834,8 +834,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { return Java_WebContentsImpl_createSize(env, size.width(), size.height()); } @@ -1230,7 +1221,7 @@ diff --git a/content/browser/web_contents/web_contents_android.cc b/content/brow diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h --- a/content/browser/web_contents/web_contents_android.h +++ b/content/browser/web_contents/web_contents_android.h -@@ -185,7 +185,7 @@ class CONTENT_EXPORT WebContentsAndroid { +@@ -188,7 +188,7 @@ class CONTENT_EXPORT WebContentsAndroid { base::android::ScopedJavaLocalRef GetFullscreenVideoSize( JNIEnv* env); @@ -1242,7 +1233,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 -@@ -529,7 +529,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -531,7 +531,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise)); // CAUTION: Only add custom enabling logic here if it cannot // be covered by the other functions. @@ -1258,7 +1249,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 +@@ -533,7 +533,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper boolean shouldSuggest, int sourceType, RenderFrameHost renderFrameHost, @@ -1268,7 +1259,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 +@@ -543,6 +544,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper mXDip = xDip; mYDip = yDip; mSelectionRect.set(left, top, right, offsetBottom); @@ -1280,7 +1271,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/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java -@@ -978,9 +978,9 @@ public class WebContentsImpl +@@ -987,9 +987,9 @@ public class WebContentsImpl } @Override @@ -1292,7 +1283,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon } @Override -@@ -1452,7 +1452,7 @@ public class WebContentsImpl +@@ -1469,7 +1469,7 @@ public class WebContentsImpl Rect getFullscreenVideoSize(long nativeWebContentsAndroid); @@ -1304,7 +1295,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java --- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java +++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java -@@ -538,7 +538,7 @@ public interface WebContents extends Parcelable { +@@ -547,7 +547,7 @@ public interface WebContents extends Parcelable { * @param width The width of the view. * @param height The height of the view. */ @@ -1330,7 +1321,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java --- a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java +++ b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java -@@ -338,7 +338,7 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa +@@ -341,7 +341,7 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa public void setHasPersistentVideo(boolean value) {} @Override @@ -1482,24 +1473,24 @@ diff --git a/third_party/blink/renderer/core/canvas_interventions/canvas_interve diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/blink/renderer/core/css/media_values.cc --- a/third_party/blink/renderer/core/css/media_values.cc +++ b/third_party/blink/renderer/core/css/media_values.cc -@@ -164,7 +164,7 @@ double MediaValues::CalculateDynamicViewportHeight(LocalFrame* frame) { +@@ -162,7 +162,7 @@ double MediaValues::CalculateDynamicViewportHeight(LocalFrame* frame) { return frame->View()->DynamicViewportSizeForViewportUnits().height(); } -int MediaValues::CalculateDeviceWidth(LocalFrame* frame) { +int MediaValues::CalculateDeviceWidth(LocalFrame* frame) { // POI DCHECK(frame && frame->View() && frame->GetSettings() && frame->GetPage()); - - if (frame->DomWindow() && -@@ -182,7 +182,7 @@ int MediaValues::CalculateDeviceWidth(LocalFrame* frame) { + const display::ScreenInfo& screen_info = + frame->GetPage()->GetChromeClient().GetScreenInfo(*frame); +@@ -174,7 +174,7 @@ int MediaValues::CalculateDeviceWidth(LocalFrame* frame) { return device_width; } -int MediaValues::CalculateDeviceHeight(LocalFrame* frame) { +int MediaValues::CalculateDeviceHeight(LocalFrame* frame) { // POI DCHECK(frame && frame->View() && frame->GetSettings() && frame->GetPage()); - - if (frame->DomWindow() && + const display::ScreenInfo& screen_info = + frame->GetPage()->GetChromeClient().GetScreenInfo(*frame); 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 @@ -1565,7 +1556,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) -@@ -2114,7 +2133,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { +@@ -2118,7 +2137,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { web_preferences_.prefers_reduced_motion); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1574,7 +1565,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_ = -@@ -2922,7 +2941,7 @@ void WebViewImpl::RefreshPageScaleFactor() { +@@ -2934,7 +2953,7 @@ void WebViewImpl::RefreshPageScaleFactor() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1583,7 +1574,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -2999,7 +3018,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( +@@ -3011,7 +3030,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( TextAutosizer::UpdatePageInfoInAllFrames(GetPage()->MainFrame()); } @@ -1592,7 +1583,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (should_auto_resize_ || !MainFrameImpl()) return; -@@ -3233,6 +3252,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { +@@ -3245,6 +3264,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().minimum_scale; } @@ -1603,7 +1594,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; } -@@ -3284,7 +3307,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { +@@ -3295,7 +3318,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1612,7 +1603,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -3833,7 +3856,7 @@ void WebViewImpl::PageScaleFactorChanged() { +@@ -3844,7 +3867,7 @@ void WebViewImpl::PageScaleFactorChanged() { DCHECK(viewport.IsActiveViewport()); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1632,7 +1623,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa float MaximumPageScaleFactor() const override; void SetDefaultPageScaleLimits(float min_scale, float max_scale) override; void SetInitialPageScaleOverride(float) override; -@@ -285,6 +286,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -284,6 +285,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // includes all browser controls params such as the min heights. void ResizeWithBrowserControls(const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1653,7 +1644,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 -@@ -1732,8 +1732,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { +@@ -1740,8 +1740,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { } float LocalFrameView::InputEventsScaleFactor() const { @@ -1794,7 +1785,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 -@@ -1879,6 +1879,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1873,6 +1873,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. @@ -1804,7 +1795,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 -@@ -1886,7 +1889,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1880,7 +1883,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 * @@ -1813,7 +1804,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); -@@ -1899,7 +1902,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1893,7 +1896,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( @@ -1822,7 +1813,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th /*is_pinch_gesture_active=*/false); } -@@ -1943,6 +1946,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1937,6 +1940,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( new_compositor_viewport_pixel_rect, device_scale_factor_for_testing_ / non_testing_device_scale_factor_); } @@ -1841,7 +1832,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ForMainFrame()) { if (size_ != new_size) { -@@ -1960,6 +1975,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1954,6 +1969,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( size_.value(), widget_base_->DIPsToCeiledBlinkSpace( widget_base_->VisibleViewportSize()), @@ -1850,7 +1841,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); return; } -@@ -1993,6 +2010,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1987,6 +2004,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( View()->ResizeWithBrowserControls( size_.value(), widget_base_->VisibleViewportSize(), @@ -1859,7 +1850,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); } -@@ -2374,6 +2393,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); @@ -1868,7 +1859,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()) { -@@ -3420,6 +3441,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { +@@ -3421,6 +3442,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { // be needed in setting the raster scale. SetPageScaleStateAndLimits(1.f, false /* is_pinch_gesture_active */, View()->MinimumPageScaleFactor(), @@ -1876,7 +1867,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th View()->MaximumPageScaleFactor()); } -@@ -4795,9 +4817,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( +@@ -4796,9 +4818,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1888,7 +1879,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()) { -@@ -4921,7 +4944,10 @@ void WebFrameWidgetImpl::OrientationChanged() { +@@ -4922,7 +4945,10 @@ void WebFrameWidgetImpl::OrientationChanged() { void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen( const display::ScreenInfos& previous_original_screen_infos) { display::ScreenInfo screen_info = widget_base_->GetScreenInfo(); @@ -1900,7 +1891,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 -@@ -5120,7 +5146,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { +@@ -5121,7 +5147,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { if (!device_scale_factor_for_testing_) { non_testing_device_scale_factor_ = @@ -1912,7 +1903,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 -@@ -656,6 +656,7 @@ class CORE_EXPORT WebFrameWidgetImpl +@@ -659,6 +659,7 @@ class CORE_EXPORT WebFrameWidgetImpl void SetPageScaleStateAndLimits(float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1923,7 +1914,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 -@@ -2560,7 +2560,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { +@@ -2564,7 +2564,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { dev_tools_agent_->PaintOverlays(context); } @@ -1932,7 +1923,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 -@@ -3035,7 +3035,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( +@@ -3042,7 +3042,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( std::move(context_menu_client), params); } @@ -1944,7 +1935,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 -@@ -1534,6 +1534,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, +@@ -1506,6 +1506,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, } bool HTMLCanvasElement::ShouldAccelerate() const { @@ -1967,7 +1958,7 @@ diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_part diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc -@@ -1076,7 +1076,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( +@@ -1071,7 +1071,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( // Ensure the override is applied immediately without having to wait for // `WebFrameWidgetImpl::UpdateVisualProperties()` to be called. GetWebViewImpl()->ResizeWithBrowserControls( @@ -1980,7 +1971,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc --- a/third_party/blink/renderer/core/page/page.cc +++ b/third_party/blink/renderer/core/page/page.cc -@@ -1328,6 +1328,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { +@@ -1332,6 +1332,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { || disable_screen_emulated_) { isEnabled = false; } @@ -2006,7 +1997,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 -@@ -471,16 +471,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -470,16 +470,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( } } @@ -2029,7 +2020,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 -@@ -5998,6 +5998,10 @@ +@@ -6000,6 +6000,10 @@ // If enabled, the `getDisplayMedia()` family of APIs will ask for NV12 // frames, which should trigger a zero-copy path in the tab capture code. name: "ZeroCopyTabCapture", @@ -2084,7 +2075,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox scroll_state_data.delta_x_hint = -event.data.scroll_begin.delta_x_hint; scroll_state_data.delta_y_hint = -event.data.scroll_begin.delta_y_hint; scroll_state_data.is_beginning = true; -@@ -870,7 +885,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -877,7 +892,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( const WebGestureEvent& gesture_event = static_cast(event); input_handler_->PinchGestureBegin( @@ -2093,7 +2084,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox GestureScrollInputType(gesture_event.SourceDevice())); gesture_pinch_in_progress_ = true; return DID_HANDLE; -@@ -882,7 +897,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -889,7 +904,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( const WebGestureEvent& gesture_event = static_cast(event); input_handler_->PinchGestureEnd( @@ -2102,7 +2093,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_HANDLE; } -@@ -892,7 +907,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -899,7 +914,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( static_cast(event); input_handler_->PinchGestureUpdate( gesture_event.data.pinch_update.scale, @@ -2111,7 +2102,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_HANDLE; } -@@ -915,7 +930,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -922,7 +937,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( // TODO(arakeri): Pass in the modifier instead of a bool once the // refactor (crbug.com/1022097) is done. For details, see // crbug.com/1016955. @@ -2120,7 +2111,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox } return DID_NOT_HANDLE; -@@ -926,7 +941,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -933,7 +948,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( static_cast(event); CHECK(input_handler_); if (mouse_event.button == WebMouseEvent::Button::kLeft) @@ -2129,7 +2120,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return DID_NOT_HANDLE; } case WebInputEvent::Type::kMouseMove: { -@@ -941,7 +956,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( +@@ -948,7 +963,7 @@ InputHandlerProxy::RouteToTypeSpecificHandler( (mouse_event.button == WebPointerProperties::Button::kNoButton && !(mouse_event.GetModifiers() & WebInputEvent::Modifiers::kRelativeMotionEvent)); @@ -2138,7 +2129,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox should_cancel_scrollbar_drag); return DID_NOT_HANDLE; } -@@ -980,12 +995,14 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( +@@ -987,12 +1002,14 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( // to check pointer lock state gfx::PointF point = static_cast(event).PositionInWidget(); @@ -2153,7 +2144,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox return WebInputEventAttribution( WebInputEventAttribution::kTargetedFrame, input_handler_->FindFrameElementIdAtPoint(point)); -@@ -1000,6 +1017,7 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( +@@ -1007,6 +1024,7 @@ WebInputEventAttribution InputHandlerProxy::PerformEventAttribution( // how the renderer host performs touch event dispatch. // https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_input_event_router.cc?l=808&rcl=10fe9d0a725d4ed7b69266a5936c525f0a5b26d3 gfx::PointF point = touch_event.touches[0].PositionInWidget(); @@ -2161,7 +2152,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox const cc::ElementId targeted_element = input_handler_->FindFrameElementIdAtPoint(point); -@@ -1101,7 +1119,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( +@@ -1108,7 +1126,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( } } @@ -2170,16 +2161,16 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox if (input_handler_->HasBlockingWheelEventHandlerAt( gfx::Point(position_in_widget.x(), position_in_widget.y()))) { result = DID_NOT_HANDLE; -@@ -1273,7 +1291,7 @@ InputHandlerProxy::HandleGestureScrollUpdate( +@@ -1280,7 +1298,7 @@ InputHandlerProxy::HandleGestureScrollUpdate( scroll_data->set_unused_delta_y(scroll_result.unused_scroll_delta.y()); }); -- HandleOverscroll(gesture_event.PositionInWidget(), scroll_result); -+ HandleOverscroll(ScalePoint(gesture_event.PositionInWidget()), scroll_result); +- HandleOverscroll(gesture_event.PositionInWidget(), scroll_result, ++ HandleOverscroll(ScalePoint(gesture_event.PositionInWidget()), scroll_result, + gesture_event.SourceDevice()); if (elastic_overscroll_controller_) - HandleScrollElasticityOverscroll(gesture_event, scroll_result); -@@ -1359,8 +1377,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( +@@ -1367,8 +1385,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HitTestTouchEvent( } cc::TouchAction touch_action = cc::TouchAction::kAuto; @@ -2190,7 +2181,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. -@@ -1475,7 +1493,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( +@@ -1483,7 +1501,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart( touch_event.touches_length == 1) { DCHECK(touch_event.touches[0].state == WebTouchPoint::State::kStatePressed); cc::InputHandlerPointerResult pointer_result = HandlePointerDown( @@ -2199,7 +2190,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; -@@ -1538,7 +1556,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( +@@ -1546,7 +1564,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchMove( touch_event.touch_start_or_first_touch_move); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerMove( @@ -2208,7 +2199,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; -@@ -1581,7 +1599,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( +@@ -1589,7 +1607,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchEnd( touch_event.touches_length); if (touch_event.touches_length == 1) { cc::InputHandlerPointerResult pointer_result = HandlePointerUp( @@ -2231,7 +2222,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p return client_->GetOriginalScreenInfos().current().device_scale_factor; } -@@ -1727,7 +1729,7 @@ void WidgetBase::UpdateSurfaceAndScreenInfo( +@@ -1719,7 +1721,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, @@ -2240,7 +2231,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. -@@ -1857,56 +1859,56 @@ void WidgetBase::CountDroppedPointerDownForEventTiming(unsigned count) { +@@ -1849,56 +1851,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? @@ -2317,12 +2308,12 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.h b/third_pa - float GetOriginalDeviceScaleFactor() const; + float GetOriginalDeviceScaleFactor(bool real) const; - // Requests that the callback be invoked after the next frame is generated and - // presented in the display compositor. Returns true if the callback was + private: + static void AssertAreCompatible(const WidgetBase& a, const WidgetBase& b); 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 -@@ -188,7 +188,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { +@@ -190,7 +190,7 @@ const viz::FrameSinkId& DelegatedFrameHostAndroid::GetFrameSinkId() const { return frame_sink_id_; } @@ -2330,7 +2321,7 @@ diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_f +void DelegatedFrameHostAndroid::CopyFromCompositingSurface( // POI const gfx::Rect& src_subrect, const gfx::Size& output_size, - base::OnceCallback callback, + base::OnceCallback callback, diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc --- a/ui/android/event_forwarder.cc +++ b/ui/android/event_forwarder.cc @@ -2400,9 +2391,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 -@@ -53,6 +53,12 @@ public class UiAndroidFeatureList { - /* defaultValue= */ false, - /* defaultValueInTests= */ false); +@@ -59,6 +59,12 @@ public class UiAndroidFeatureList { + /* defaultValue= */ true, + /* defaultValueInTests= */ true); + public static final CachedFlag sPixelPerfect = + newCachedFlag( @@ -2416,18 +2407,18 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java diff --git a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java b/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java --- a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java +++ b/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java -@@ -34,6 +34,7 @@ import org.chromium.base.ThreadUtils; - import org.chromium.build.annotations.EnsuresNonNull; +@@ -35,6 +35,7 @@ import org.chromium.base.StrictModeContext; + import org.chromium.base.ThreadUtils; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; +import org.chromium.ui.base.UiAndroidFeatureList; - import org.chromium.ui.util.XrUtils; import java.util.Arrays; -@@ -380,6 +381,15 @@ import java.util.function.Consumer; + import java.util.List; +@@ -401,6 +402,15 @@ import java.util.function.Consumer; + float xdpi, float ydpi, Display display) { - if (hasForcedDIPScale()) density = sForcedDIPScale.floatValue(); + if (UiAndroidFeatureList.sPixelPerfect.isEnabled()) { + if (bounds.right < bounds.bottom) { + density = (float)(Math.round(bounds.right / 412.0 * 1000.0) / 1000.0); diff --git a/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch b/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch index 7650e8f7..c96d03bb 100644 --- a/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch +++ b/build/patches/Android-Toolbar-Scroll-Ablation-setting.patch @@ -19,7 +19,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java @@ -41,6 +41,7 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro - private final Supplier mPersistentFullscreenMode; + private final ObservableSupplier mPersistentFullscreenMode; private long mCurrentShowingStartTime; + private int temporaryToken; @@ -53,7 +53,7 @@ new file mode 100644 diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml -@@ -74,6 +74,12 @@ found in the LICENSE file. +@@ -79,6 +79,12 @@ found in the LICENSE file. android:key="disable_toolbar_swipeup" android:title="@string/disable_toolbar_swipe_up" /> diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index 9c49ee57..646c79ff 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../fonts_pack_component_installer.cc | 96 + .../fonts_pack_component_installer.h | 60 + components/services/font/BUILD.gn | 10 + - components/services/font/font_service_app.cc | 44 + + components/services/font/font_service_app.cc | 46 + components/services/font/font_service_app.h | 1 + .../services/font/public/cpp/font_loader.cc | 11 + .../services/font/public/cpp/font_loader.h | 1 + @@ -42,7 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../skia/src/ports/SkFontMgr_android_data.cpp | 1640 +++++++++++++++++ .../src/ports/SkFontMgr_android_parser.cpp | 49 +- .../skia/src/ports/SkFontMgr_android_parser.h | 5 +- - 36 files changed, 2414 insertions(+), 76 deletions(-) + 36 files changed, 2416 insertions(+), 76 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h @@ -54,7 +54,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java -@@ -1009,6 +1009,9 @@ public final class ProductionSupportedFlagList { +@@ -970,6 +970,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."), @@ -67,8 +67,8 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/common/Produc diff --git a/android_webview/nonembedded/component_updater/registration.cc b/android_webview/nonembedded/component_updater/registration.cc --- a/android_webview/nonembedded/component_updater/registration.cc +++ b/android_webview/nonembedded/component_updater/registration.cc -@@ -26,6 +26,9 @@ - #include "components/privacy_sandbox/masked_domain_list/masked_domain_list.pb.h" +@@ -20,6 +20,9 @@ + #include "components/component_updater/installer_policies/origin_trials_component_installer.h" #include "components/update_client/update_client.h" +#include "third_party/blink/public/common/features.h" @@ -77,7 +77,7 @@ diff --git a/android_webview/nonembedded/component_updater/registration.cc b/and namespace android_webview { void RegisterComponentsForUpdate( -@@ -42,6 +45,12 @@ void RegisterComponentsForUpdate( +@@ -36,6 +39,12 @@ void RegisterComponentsForUpdate( std::vector> component_installer_list_cromite; @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -8022,6 +8022,13 @@ static_library("browser") { +@@ -8015,6 +8015,13 @@ static_library("browser") { ] } @@ -123,7 +123,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 -@@ -115,10 +115,20 @@ +@@ -116,10 +116,20 @@ #include "chrome/browser/component_updater/file_type_policies_component_installer.h" #endif @@ -161,7 +161,7 @@ new file mode 100644 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -270,6 +270,10 @@ static_library("renderer") { +@@ -269,6 +269,10 @@ static_library("renderer") { deps += [ "//components/strings" ] } @@ -175,7 +175,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 -@@ -38,6 +38,13 @@ static_library("installer_policies_no_content_deps") { +@@ -36,6 +36,13 @@ static_library("installer_policies_no_content_deps") { "trust_token_key_commitments_component_installer_policy.h", ] @@ -358,7 +358,7 @@ new file mode 100644 diff --git a/components/services/font/BUILD.gn b/components/services/font/BUILD.gn --- a/components/services/font/BUILD.gn +++ b/components/services/font/BUILD.gn -@@ -24,6 +24,16 @@ source_set("lib") { +@@ -23,6 +23,16 @@ source_set("lib") { "//ui/gfx", ] @@ -378,7 +378,17 @@ diff --git a/components/services/font/BUILD.gn b/components/services/font/BUILD. diff --git a/components/services/font/font_service_app.cc b/components/services/font/font_service_app.cc --- a/components/services/font/font_service_app.cc +++ b/components/services/font/font_service_app.cc -@@ -20,6 +20,12 @@ +@@ -4,7 +4,9 @@ + + #include "components/services/font/font_service_app.h" + ++#if !BUILDFLAG(IS_ANDROID) + #include ++#endif + + #include + #include +@@ -25,6 +27,12 @@ #include "ui/gfx/font_fallback_linux.h" #include "ui/gfx/font_render_params.h" @@ -391,7 +401,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 -@@ -95,6 +101,7 @@ void FontServiceApp::BindReceiver( +@@ -100,6 +108,7 @@ void FontServiceApp::BindReceiver( void FontServiceApp::MatchFamilyName(const std::string& family_name, mojom::TypefaceStylePtr requested_style, MatchFamilyNameCallback callback) { @@ -399,7 +409,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ TRACE_EVENT0("fonts", "FontServiceApp::MatchFamilyName"); SkFontConfigInterface::FontIdentity result_identity; -@@ -155,6 +162,7 @@ void FontServiceApp::MatchFamilyName(const std::string& family_name, +@@ -160,6 +169,7 @@ void FontServiceApp::MatchFamilyName(const std::string& family_name, std::move(callback).Run(std::move(identity), result_family_cppstring, std::move(style)); @@ -407,7 +417,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ } void FontServiceApp::OpenStream(uint32_t id_number, -@@ -169,12 +177,43 @@ void FontServiceApp::OpenStream(uint32_t id_number, +@@ -174,12 +184,43 @@ void FontServiceApp::OpenStream(uint32_t id_number, std::move(callback).Run(std::move(file)); } @@ -451,7 +461,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); -@@ -189,6 +228,7 @@ void FontServiceApp::FallbackFontForCharacter( +@@ -194,6 +235,7 @@ void FontServiceApp::FallbackFontForCharacter( } else { std::move(callback).Run(nullptr, "", false, false); } @@ -459,7 +469,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ } void FontServiceApp::FontRenderStyleForStrike( -@@ -232,6 +272,9 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( +@@ -237,6 +279,9 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( TRACE_EVENT0("fonts", "FontServiceApp::MatchFontByPostscriptNameOrFullFontName"); @@ -469,7 +479,7 @@ diff --git a/components/services/font/font_service_app.cc b/components/services/ std::optional match_result = FontConfigLocalMatching::FindFontByPostscriptNameOrFullFontName(family); if (match_result) { -@@ -243,6 +286,7 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( +@@ -248,6 +293,7 @@ void FontServiceApp::MatchFontByPostscriptNameOrFullFontName( return; } std::move(callback).Run(nullptr); @@ -512,7 +522,7 @@ diff --git a/components/services/font/public/cpp/font_loader.cc b/components/ser diff --git a/components/services/font/public/cpp/font_loader.h b/components/services/font/public/cpp/font_loader.h --- a/components/services/font/public/cpp/font_loader.h +++ b/components/services/font/public/cpp/font_loader.h -@@ -54,6 +54,7 @@ class FontLoader : public SkFontConfigInterface, +@@ -56,6 +56,7 @@ class FontLoader : public SkFontConfigInterface, SkFontStyle* out_style) override; SkStreamAsset* openStream(const FontIdentity& identity) override LOCKS_EXCLUDED(mapped_font_files_lock_); @@ -523,7 +533,7 @@ diff --git a/components/services/font/public/cpp/font_loader.h b/components/serv diff --git a/components/services/font/public/cpp/font_service_thread.cc b/components/services/font/public/cpp/font_service_thread.cc --- a/components/services/font/public/cpp/font_service_thread.cc +++ b/components/services/font/public/cpp/font_service_thread.cc -@@ -247,6 +247,54 @@ void FontServiceThread::OpenStreamImpl(base::WaitableEvent* done_event, +@@ -258,6 +258,54 @@ void FontServiceThread::OpenStreamImpl(base::WaitableEvent* done_event, done_event, output_file)); } @@ -581,7 +591,7 @@ diff --git a/components/services/font/public/cpp/font_service_thread.cc b/compon diff --git a/components/services/font/public/cpp/font_service_thread.h b/components/services/font/public/cpp/font_service_thread.h --- a/components/services/font/public/cpp/font_service_thread.h +++ b/components/services/font/public/cpp/font_service_thread.h -@@ -55,6 +55,8 @@ class FontServiceThread : public base::RefCountedThreadSafe { +@@ -57,6 +57,8 @@ class FontServiceThread : public base::RefCountedThreadSafe { SkFontStyle* out_style); scoped_refptr OpenStream( const SkFontConfigInterface::FontIdentity& identity); @@ -590,7 +600,7 @@ diff --git a/components/services/font/public/cpp/font_service_thread.h b/compone bool FallbackFontForCharacter( uint32_t character, -@@ -118,6 +120,9 @@ class FontServiceThread : public base::RefCountedThreadSafe { +@@ -121,6 +123,9 @@ class FontServiceThread : public base::RefCountedThreadSafe { void OpenStreamImpl(base::WaitableEvent* done_event, base::File* output_file, const uint32_t id_number); @@ -679,7 +689,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl_receiver_bin diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn -@@ -136,6 +136,13 @@ target(link_target_type, "child") { +@@ -135,6 +135,13 @@ target(link_target_type, "child") { ] } @@ -696,7 +706,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn -@@ -347,6 +347,10 @@ target(link_target_type, "renderer") { +@@ -349,6 +349,10 @@ target(link_target_type, "renderer") { deps += [ "//services/screen_ai/public/mojom" ] } @@ -710,7 +720,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 -@@ -137,6 +137,23 @@ +@@ -138,6 +138,23 @@ #include "content/common/android/sync_compositor_statics.h" #endif @@ -734,7 +744,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer using blink::Platform; using blink::WebAudioDevice; using blink::WebAudioLatencyHint; -@@ -187,6 +204,37 @@ viz::command_buffer_metrics::ContextType ToVizContextType( +@@ -188,6 +205,37 @@ viz::command_buffer_metrics::ContextType ToVizContextType( NOTREACHED(); } @@ -772,7 +782,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer } // namespace //------------------------------------------------------------------------------ -@@ -200,18 +248,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +@@ -201,18 +249,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( is_locked_to_site_(false), main_thread_scheduler_(main_thread_scheduler), next_frame_sink_id_(uint32_t{std::numeric_limits::max()} + 1) { @@ -838,7 +848,7 @@ new file mode 100644 diff --git a/skia/BUILD.gn b/skia/BUILD.gn --- a/skia/BUILD.gn +++ b/skia/BUILD.gn -@@ -465,6 +465,18 @@ component("skia") { +@@ -460,6 +460,18 @@ component("skia") { sources += skia_ports_fci_sources } diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index 589cd06b..8450bb8d 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -284,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1465,7 +1465,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1441,7 +1441,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mActivity, mStatusIndicatorCoordinator, isUrlBarFocusedSupplier, @@ -299,7 +299,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java -@@ -199,6 +199,13 @@ public abstract class TabModelSelectorBase +@@ -201,6 +201,13 @@ public abstract class TabModelSelectorBase return null; } @@ -353,7 +353,7 @@ new file mode 100644 diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java -@@ -149,6 +149,8 @@ public interface TabModelSelector { +@@ -150,6 +150,8 @@ public interface TabModelSelector { /** Get total pinned tab count across all tab models */ int getTotalPinnedTabCount(); @@ -419,7 +419,7 @@ diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java --- a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java +++ b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java -@@ -551,6 +551,16 @@ public class TabWindowManagerImpl implements TabWindowManager { +@@ -566,6 +566,16 @@ public class TabWindowManagerImpl implements TabWindowManager { return tabGroupModelFilter.getTabsInGroup(tabGroupId); } @@ -497,7 +497,7 @@ diff --git a/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml b/c 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 -@@ -136,6 +136,8 @@ public class Snackbar { +@@ -137,6 +137,8 @@ public class Snackbar { private @Nullable String mTemplateText; private @Nullable String mActionText; private @Nullable Object mActionData; @@ -506,7 +506,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro private int mBackgroundColor; private int mTextApperanceResId; private boolean mDefaultLines = true; -@@ -242,6 +244,20 @@ public class Snackbar { +@@ -243,6 +245,20 @@ public class Snackbar { return this; } @@ -530,7 +530,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 -@@ -327,6 +327,12 @@ public class SnackbarManager +@@ -340,6 +340,12 @@ public class SnackbarManager new SnackbarView( mActivity, this, @@ -584,8 +584,8 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro + mDismissButtonView.setOnClickListener(dismissListener); mProfileImageView = (ImageView) mContainerView.findViewById(R.id.snackbar_profile_image); mEdgeToEdgeSupplier = edgeToEdgeSupplier; - if (SnackbarManager.isFloatingSnackbarEnabled()) { -@@ -429,6 +434,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { + // TODO(crbug/com/451807932): Replace with a custom pad adjuster to account for inset +@@ -431,6 +436,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver { mActionButtonView.setVisibility(View.VISIBLE); mActionButtonView.setContentDescription(snackbar.getActionText()); setViewText(mActionButtonView, snackbar.getActionText(), animate); @@ -601,7 +601,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -903,6 +903,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { +@@ -911,6 +911,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { view->SetFocus(focused); } @@ -627,7 +627,7 @@ diff --git a/content/browser/web_contents/web_contents_android.cc b/content/brow diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h --- a/content/browser/web_contents/web_contents_android.h +++ b/content/browser/web_contents/web_contents_android.h -@@ -196,6 +196,7 @@ class CONTENT_EXPORT WebContentsAndroid { +@@ -199,6 +199,7 @@ class CONTENT_EXPORT WebContentsAndroid { void OnScaleFactorChanged(JNIEnv* env); void SetFocus(JNIEnv* env, jboolean focused); @@ -638,7 +638,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4094,8 +4094,10 @@ void WebContentsImpl::Stop() { +@@ -4151,8 +4151,10 @@ void WebContentsImpl::Stop() { void WebContentsImpl::SetPageFrozen(bool frozen) { TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen); @@ -652,7 +652,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java -@@ -1134,6 +1134,12 @@ public class WebContentsImpl +@@ -1143,6 +1143,12 @@ public class WebContentsImpl WebContentsImplJni.get().setFocus(mNativeWebContentsAndroid, hasFocus); } @@ -665,7 +665,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon @Override public void setDisplayCutoutSafeArea(Rect insets) { if (mNativeWebContentsAndroid == 0) return; -@@ -1463,6 +1469,8 @@ public class WebContentsImpl +@@ -1480,6 +1486,8 @@ public class WebContentsImpl void setFocus(long nativeWebContentsAndroid, boolean focused); @@ -677,7 +677,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java --- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java +++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java -@@ -288,6 +288,8 @@ public interface WebContents extends Parcelable { +@@ -297,6 +297,8 @@ public interface WebContents extends Parcelable { */ void setFocus(boolean hasFocus); @@ -689,7 +689,7 @@ diff --git a/content/public/android/java/src/org/chromium/content_public/browser diff --git a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java --- a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java +++ b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java -@@ -188,6 +188,9 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa +@@ -191,6 +191,9 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa @Override public void setFocus(boolean hasFocus) {} @@ -734,7 +734,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -4654,6 +4654,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { +@@ -4655,6 +4655,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { } void Document::DispatchFreezeEvent() { @@ -745,7 +745,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -3303,6 +3303,7 @@ void LocalFrame::DidFreeze() { +@@ -3306,6 +3306,7 @@ void LocalFrame::DidFreeze() { LoaderFreezeMode freeze_mode = GetLoaderFreezeMode(); GetDocument()->Fetcher()->SetDefersLoading(freeze_mode); Loader().SetDefersLoading(freeze_mode); @@ -753,7 +753,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } void LocalFrame::DidResume() { -@@ -3317,6 +3318,7 @@ void LocalFrame::DidResume() { +@@ -3320,6 +3321,7 @@ void LocalFrame::DidResume() { GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone); Loader().SetDefersLoading(LoaderFreezeMode::kNone); @@ -764,7 +764,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc -@@ -1033,7 +1033,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState( +@@ -1025,7 +1025,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState( if (!parent_page_scheduler_) return SchedulingLifecycleState::kNotThrottled; if (parent_page_scheduler_->IsFrozen()) { @@ -777,7 +777,7 @@ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_sch diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc --- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc -@@ -237,10 +237,12 @@ void PageSchedulerImpl::SetPageFrozen(bool frozen) { +@@ -236,10 +236,12 @@ void PageSchedulerImpl::SetPageFrozen(bool frozen) { // it is desirable to reject the page freeze to prevent the scheduler from // being put in a bad state. See https://crbug.com/873214 for context of how // this can happen on the browser side. @@ -790,7 +790,7 @@ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_sche PolicyUpdater policy_updater; SetPageFrozenImpl(frozen, policy_updater); } -@@ -816,7 +818,12 @@ bool PageSchedulerImpl::IsBackgrounded() const { +@@ -804,7 +806,12 @@ bool PageSchedulerImpl::IsBackgrounded() const { // expire immediately when a page is backgrounded, which is undesirable in // headless mode. To prevent that, a page is never considerer backgrounded // when virtual time is enabled. diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 5b7a36ba..2ccd3c1b 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -76,7 +76,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc b/third diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_party/blink/renderer/modules/webaudio/audio_buffer.h --- a/third_party/blink/renderer/modules/webaudio/audio_buffer.h +++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.h -@@ -116,6 +116,8 @@ class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { +@@ -115,6 +115,8 @@ class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { std::unique_ptr CreateSharedAudioBuffer(); @@ -96,7 +96,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/web_audio_latency_hint.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -@@ -850,7 +851,9 @@ double AudioContext::baseLatency() const { +@@ -863,7 +864,9 @@ double AudioContext::baseLatency() const { DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_); DCHECK(destination()); @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" -@@ -774,6 +775,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -776,6 +777,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -151,7 +151,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc -@@ -374,6 +374,7 @@ void OfflineAudioContext::FireCompletionEvent() { +@@ -395,6 +395,7 @@ void OfflineAudioContext::FireCompletionEvent() { if (!rendered_buffer) { return; } @@ -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 -@@ -608,9 +608,8 @@ +@@ -631,9 +631,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/patches/Backport-v143-android-extensions-changes.patch b/build/patches/Backport-v144-android-extensions-changes.patch similarity index 80% rename from build/patches/Backport-v143-android-extensions-changes.patch rename to build/patches/Backport-v144-android-extensions-changes.patch index 6dc2ca62..4a6bb78f 100644 --- a/build/patches/Backport-v143-android-extensions-changes.patch +++ b/build/patches/Backport-v144-android-extensions-changes.patch @@ -1,13 +1,13 @@ From: uazo Date: Thu, 6 Nov 2025 13:22:24 +0000 -Subject: Backport-v143-android-extensions-changes +Subject: Backport-v144-android-extensions-changes Enable support for anonymous browsing. Backport of bugid 7089957 extensions Use BrowserWindowInterface in ExtensionViewHost https://chromium-review.googlesource.com/c/chromium/src/+/7089957 --- - .../chrome/browser/ChromeTabbedActivity.java | 58 +------- - .../chrome/browser/app/ChromeActivity.java | 76 +++++++++++ + .../chrome/browser/ChromeTabbedActivity.java | 1 + + .../chrome/browser/app/ChromeActivity.java | 12 ++ .../customtabs/BaseCustomTabActivity.java | 1 + .../BaseCustomTabRootUiCoordinator.java | 5 + .../tabbed_mode/TabbedRootUiCoordinator.java | 2 + @@ -26,92 +26,12 @@ https://chromium-review.googlesource.com/c/chromium/src/+/7089957 .../ExtensionActionListMediatorTest.java | 11 +- .../ExtensionToolbarCoordinator.java | 5 + .../ExtensionToolbarCoordinatorImpl.java | 4 + - 20 files changed, 225 insertions(+), 148 deletions(-) + 20 files changed, 160 insertions(+), 92 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -292,12 +292,8 @@ import org.chromium.chrome.browser.ui.IncognitoRestoreAppLaunchDrawBlockerFactor - import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; - import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType; --import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; --import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTracker; --import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFactory; - import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; - import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; --import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; - import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController; -@@ -835,18 +831,7 @@ public class ChromeTabbedActivity extends ChromeActivity { - mTabModelNotificationDotManager.initWithNative(mTabModelSelector); - TabModel currentTabModel = mTabModelSelector.getCurrentModel(); - -- // Initialize ChromeAndroidTask. -- // -- // This needs to be done before any tab is added so that -- // TabModel#associateWithBrowserWindow() can be called in time for each tab to have the -- // same native SessionID as the native AndroidBrowserWindow managed by -- // ChromeAndroidTask. -- ChromeAndroidTask chromeAndroidTask = initializeChromeAndroidTask(currentTabModel); -- if (chromeAndroidTask != null) { -- currentTabModel.associateWithBrowserWindow( -- chromeAndroidTask.getOrCreateNativeBrowserWindowPtr()); -- initializeExtensionWindowControllerBridge(chromeAndroidTask); -- } -+ initializeChromeAndroidTask(BrowserWindowType.NORMAL, currentTabModel); - - // For saving non-incognito tab closures for Recent Tabs. - boolean alwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -@@ -1346,46 +1331,6 @@ public class ChromeTabbedActivity extends ChromeActivity { - } - } - -- @Nullable -- private ChromeAndroidTask initializeChromeAndroidTask(TabModel currentTabModel) { -- try (TraceEvent e = TraceEvent.scoped("ChromeTabbedActivity.initializeChromeAndroidTask")) { -- var chromeAndroidTaskTracker = ChromeAndroidTaskTrackerFactory.getInstance(); -- if (chromeAndroidTaskTracker == null) { -- return null; -- } -- -- var activityWindowAndroid = getWindowAndroid(); -- assert activityWindowAndroid != null -- : "ChromeAndroidTask must be initialized after Java WindowAndroid is created."; -- -- int pendingIdExtraValue = -- IntentUtils.safeGetIntExtra( -- getIntent(), -- ChromeAndroidTaskTracker.EXTRA_PENDING_BROWSER_WINDOW_TASK_ID, -- /* defaultValue= */ -1); -- OptionalInt pendingId = -- pendingIdExtraValue == -1 -- ? OptionalInt.empty() -- : OptionalInt.of(pendingIdExtraValue); -- -- return chromeAndroidTaskTracker.obtainTask( -- BrowserWindowType.NORMAL, activityWindowAndroid, currentTabModel, pendingId); -- } -- } -- -- private void initializeExtensionWindowControllerBridge( -- @Nullable ChromeAndroidTask chromeAndroidTask) { -- if (chromeAndroidTask == null) { -- return; -- } -- -- var extensionWindowControllerBridge = -- ExtensionWindowControllerBridgeFactory.create(chromeAndroidTask); -- if (extensionWindowControllerBridge != null) { -- chromeAndroidTask.addFeature(extensionWindowControllerBridge); -- } -- } -- - private void maybeCreateIncognitoTabSnapshotController() { - try (TraceEvent e = - TraceEvent.scoped( -@@ -2976,6 +2921,7 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2937,6 +2937,7 @@ public class ChromeTabbedActivity extends ChromeActivity { mLayoutStateProviderSupplier, getBrowserControlsManager(), getWindowAndroid(), @@ -122,15 +42,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 -@@ -52,6 +52,7 @@ import org.chromium.base.CommandLine; - import org.chromium.base.ContextUtils; - import org.chromium.base.DeviceInfo; - import org.chromium.base.InputHintChecker; -+import org.chromium.base.IntentUtils; - import org.chromium.base.Log; - import org.chromium.base.PowerMonitor; - import org.chromium.base.TraceEvent; -@@ -61,6 +62,7 @@ import org.chromium.base.metrics.RecordUserAction; +@@ -62,6 +62,7 @@ import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.shared_preferences.SharedPreferencesManager; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; @@ -138,31 +50,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.supplier.UnownedUserDataSupplier; import org.chromium.chrome.R; -@@ -203,9 +205,15 @@ import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; - import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; - import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; -+import org.chromium.chrome.browser.ui.browser_window.BrowserWindowType; -+import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; -+import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskFeature; -+import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTracker; -+import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFactory; - 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; -+import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; - import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; -@@ -272,6 +280,7 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient; - import java.util.ArrayList; - import java.util.List; - import java.util.function.Supplier; -+import java.util.OptionalInt; - - /** - * A {@link AsyncInitializationActivity} that builds and manages a {@link CompositorViewHolder} and -@@ -440,6 +449,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -447,6 +448,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity private @Nullable TabStateThemeResourceProvider mThemeResourceProvider; @@ -172,69 +60,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv protected ChromeActivity() { mManualFillingComponentSupplier.set(ManualFillingComponentFactory.createComponent()); sNextActivityId++; -@@ -1018,6 +1030,70 @@ public abstract class ChromeActivity extends AsyncInitializationActivity - TraceEvent.end("ChromeActivity:CompositorInitialization"); - } - -+ /** -+ * Initializes {@link ChromeAndroidTask} and adds {@link ChromeAndroidTaskFeature}s. -+ * -+ *

This method is for a subclass of {@link ChromeActivity} that needs windowing support on -+ * Java and/or native side(s). -+ * -+ *

If a subclass of {@link ChromeActivity} needs {@link ChromeAndroidTask}, it should call -+ * this method as early as possible (after the native library is loaded). For example, this -+ * method should be called before any tab is added so that {@link -+ * TabModel#associateWithBrowserWindow} can be called in time for each tab to have the same -+ * native SessionID as the native {@code AndroidBrowserWindow}. -+ * -+ * @param browserWindowType Type of the browser window (normal, popup, etc.) -+ * @param currentTabModel The current {@link TabModel} for this {@code Activity}. -+ */ -+ protected final void initializeChromeAndroidTask( -+ @BrowserWindowType int browserWindowType, TabModel currentTabModel) { -+ try (TraceEvent e = TraceEvent.scoped("ChromeActivity.initializeChromeAndroidTask")) { -+ // 1. Obtain a ChromeAndroidTask that represents the Task (window) for this Activity. -+ var chromeAndroidTaskTracker = ChromeAndroidTaskTrackerFactory.getInstance(); -+ if (chromeAndroidTaskTracker == null) { -+ return; -+ } -+ -+ var activityWindowAndroid = getWindowAndroid(); -+ assert activityWindowAndroid != null -+ : "ChromeAndroidTask must be initialized after Java WindowAndroid is created."; -+ -+ int pendingIdExtraValue = -+ IntentUtils.safeGetIntExtra( -+ getIntent(), -+ ChromeAndroidTaskTracker.EXTRA_PENDING_BROWSER_WINDOW_TASK_ID, -+ /* defaultValue= */ -1); -+ OptionalInt pendingId = -+ pendingIdExtraValue == -1 -+ ? OptionalInt.empty() -+ : OptionalInt.of(pendingIdExtraValue); -+ -+ var chromeAndroidTask = -+ chromeAndroidTaskTracker.obtainTask( -+ browserWindowType, activityWindowAndroid, currentTabModel, pendingId); -+ -+ // 2. Associate the current TabModel with ChromeAndroidTask's underlying native -+ // AndroidBrowserWindow object. -+ currentTabModel.associateWithBrowserWindow( -+ chromeAndroidTask.getOrCreateNativeBrowserWindowPtr()); -+ -+ // 3. Add windowing features. -+ ChromeAndroidTaskFeature extensionWindowControllerBridge = -+ ExtensionWindowControllerBridgeFactory.create(chromeAndroidTask); -+ if (extensionWindowControllerBridge != null) { -+ chromeAndroidTask.addFeature(extensionWindowControllerBridge); -+ } +@@ -1093,9 +1097,17 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + if (extensionWindowControllerBridge != null) { + chromeAndroidTask.addFeature(extensionWindowControllerBridge); + } + + // 4. Make the ChromeAndroidTask available via OneshotSupplier. + mChromeAndroidTaskSupplier.set(chromeAndroidTask); -+ } -+ } -+ + } + } + + /** Returns an {@link OneshotSupplier} for {@link ChromeAndroidTask}. */ + protected final OneshotSupplier getChromeAndroidTaskSupplier() { + return mChromeAndroidTaskSupplier; @@ -246,7 +81,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/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 -@@ -361,6 +361,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { +@@ -364,6 +364,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { getTabModelSelectorSupplier(), getBrowserControlsManager(), getWindowAndroid(), @@ -265,15 +100,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.supplier.SupplierUtils; import org.chromium.chrome.R; -@@ -98,6 +99,7 @@ import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; +@@ -96,6 +97,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; + import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler; +import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; import org.chromium.chrome.browser.ui.google_bottom_bar.GoogleBottomBarCoordinator; -@@ -164,6 +166,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -160,6 +162,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { * @param tabModelSelectorSupplier Supplies the {@link TabModelSelector}. * @param browserControlsManager Manages the browser controls. * @param windowAndroid The current {@link WindowAndroid}. @@ -281,7 +116,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base * @param activityLifecycleDispatcher Allows observation of the activity lifecycle. * @param layoutManagerSupplier Supplies the {@link LayoutManager}. * @param menuOrKeyboardActionController Controls the menu or keyboard action controller. -@@ -204,6 +207,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -200,6 +203,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { @NonNull ObservableSupplier tabModelSelectorSupplier, @NonNull BrowserControlsManager browserControlsManager, @NonNull ActivityWindowAndroid windowAndroid, @@ -289,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base @NonNull ActivityLifecycleDispatcher activityLifecycleDispatcher, @NonNull ObservableSupplier layoutManagerSupplier, @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController, -@@ -249,6 +253,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -245,6 +249,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { new OneshotSupplierImpl<>(), browserControlsManager, windowAndroid, @@ -319,7 +154,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 -@@ -173,6 +173,7 @@ import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoord +@@ -184,6 +184,7 @@ import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoord import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; import org.chromium.chrome.browser.ui.appmenu.MenuButtonDelegate; @@ -327,7 +162,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.native_page.NativePage; import org.chromium.chrome.browser.ui.system.StatusBarColorController; -@@ -732,6 +733,7 @@ public class ToolbarManager +@@ -748,6 +749,7 @@ public class ToolbarManager * @param omniboxFocusStateSupplier Supplier to access the focus state of the omnibox. * @param promoShownOneshotSupplier Supplier for whether a promo was shown on startup. * @param windowAndroid The {@link WindowAndroid} associated with the ToolbarManager. @@ -335,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar * @param isInOverviewModeSupplier Supplies whether the app is currently in overview mode. * @param modalDialogManagerSupplier Supplies the {@link ModalDialogManager}. * @param statusBarColorController The {@link StatusBarColorController} for the app. -@@ -783,6 +785,7 @@ public class ToolbarManager +@@ -800,6 +802,7 @@ public class ToolbarManager ObservableSupplier omniboxFocusStateSupplier, OneshotSupplier promoShownOneshotSupplier, WindowAndroid windowAndroid, @@ -343,18 +178,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar Supplier isInOverviewModeSupplier, Supplier modalDialogManagerSupplier, StatusBarColorController statusBarColorController, -@@ -1103,6 +1106,7 @@ public class ToolbarManager +@@ -1127,6 +1130,7 @@ public class ToolbarManager mActivity, extensionToolbarStub, windowAndroid, + chromeAndroidTaskSupplier, - profileSupplier, - tabProvider, + (ObservableSupplier) profileSupplier, + (ObservableSupplier) tabProvider, mTabCreatorManager.getTabCreator(false), 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 -@@ -151,6 +151,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinatorFactory; +@@ -166,6 +166,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuCoordinatorFactory; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler; import org.chromium.chrome.browser.ui.appmenu.AppMenuObserver; @@ -362,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerCreator; -@@ -245,6 +246,7 @@ public class RootUiCoordinator +@@ -262,6 +263,7 @@ public class RootUiCoordinator protected @Nullable AppMenuCoordinator mAppMenuCoordinator; private final MenuOrKeyboardActionController mMenuOrKeyboardActionController; protected final ActivityWindowAndroid mWindowAndroid; @@ -370,7 +205,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi protected final ActivityTabProvider mActivityTabProvider; protected ObservableSupplier mShareDelegateSupplier; -@@ -382,6 +384,7 @@ public class RootUiCoordinator +@@ -401,6 +403,7 @@ public class RootUiCoordinator * @param layoutStateProviderOneshotSupplier Supplier of the {@link LayoutStateProvider}. * @param browserControlsManager Manages the browser controls. * @param windowAndroid The current {@link WindowAndroid}. @@ -378,7 +213,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi * @param activityLifecycleDispatcher Allows observation of the activity lifecycle. * @param layoutManagerSupplier Supplies the {@link LayoutManager}. * @param menuOrKeyboardActionController Controls the menu or keyboard action controller. -@@ -427,6 +430,7 @@ public class RootUiCoordinator +@@ -446,6 +449,7 @@ public class RootUiCoordinator @NonNull OneshotSupplier layoutStateProviderOneshotSupplier, @NonNull BrowserControlsManager browserControlsManager, @NonNull ActivityWindowAndroid windowAndroid, @@ -386,7 +221,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi @NonNull ActivityLifecycleDispatcher activityLifecycleDispatcher, @NonNull ObservableSupplier layoutManagerSupplier, @NonNull MenuOrKeyboardActionController menuOrKeyboardActionController, -@@ -459,6 +463,7 @@ public class RootUiCoordinator +@@ -478,6 +482,7 @@ public class RootUiCoordinator mCallbackController = new CallbackController(); mActivity = activity; mWindowAndroid = windowAndroid; @@ -394,7 +229,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi setupUnownedUserDataSuppliers(); mOnOmniboxFocusChangedListener = onOmniboxFocusChangedListener; mBrowserControlsManager = browserControlsManager; -@@ -1642,6 +1647,7 @@ public class RootUiCoordinator +@@ -1715,6 +1720,7 @@ public class RootUiCoordinator mOmniboxFocusStateSupplier, mPromoShownOneshotSupplier, mWindowAndroid, @@ -405,7 +240,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/android/junit/BUILD.gn b/chrome/android/junit/BUILD.gn --- a/chrome/android/junit/BUILD.gn +++ b/chrome/android/junit/BUILD.gn -@@ -207,6 +207,7 @@ if (is_android) { +@@ -205,6 +205,7 @@ if (is_android) { "//chrome/browser/ui/android/signin:java", "//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/toolbar:java", @@ -765,15 +600,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b 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 -@@ -188,6 +188,7 @@ android_library("java") { +@@ -189,6 +189,7 @@ android_library("java") { "//chrome/browser/ui/android/omnibox:java_resources", "//chrome/browser/ui/android/pdf:java", "//chrome/browser/ui/android/theme:java", + "//chrome/browser/ui/browser_window/public/android:java", + "//chrome/browser/url_constants/android:java", "//chrome/browser/user_education:java", "//chrome/browser/util:java", - "//components/browser_ui/bottomsheet/android:java", -@@ -474,6 +475,7 @@ robolectric_library("junit") { +@@ -478,6 +479,7 @@ robolectric_library("junit") { "//chrome/browser/ui/android/omnibox:java_resources", "//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/toolbar:java_resources", diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index f5335965..ff90f965 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -398,6 +398,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -391,6 +391,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space); HeapObserverList& ContextLifecycleObserverSet(); diff --git a/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch b/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch index 92fbe294..3b7f2296 100644 --- a/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch +++ b/build/patches/Block-leakage-of-urls-in-sandbox-iframes.patch @@ -25,7 +25,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -5151,7 +5151,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( +@@ -5180,7 +5180,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( } void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) { @@ -82,7 +82,7 @@ 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" -@@ -126,8 +127,20 @@ DOMStringList* Location::ancestorOrigins() const { +@@ -127,8 +128,20 @@ DOMStringList* Location::ancestorOrigins() const { auto* origins = MakeGarbageCollected(); if (!IsAttached()) return origins; @@ -106,7 +106,7 @@ diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/bli 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 -@@ -836,6 +836,11 @@ WebString DocumentLoader::HttpMethod() const { +@@ -835,6 +835,11 @@ WebString DocumentLoader::HttpMethod() const { } const AtomicString& DocumentLoader::GetReferrer() const { @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p return referrer_; } -@@ -2916,6 +2921,13 @@ void DocumentLoader::CommitNavigation() { +@@ -2903,6 +2908,13 @@ void DocumentLoader::CommitNavigation() { response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly)); } diff --git a/build/patches/Block-qjz9zk-or-trk-requests.patch b/build/patches/Block-qjz9zk-or-trk-requests.patch index c7d34b52..2771f753 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -49,7 +49,7 @@ diff --git a/chrome/browser/history/history_utils.cc b/chrome/browser/history/hi diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc --- a/chrome/browser/ui/singleton_tabs.cc +++ b/chrome/browser/ui/singleton_tabs.cc -@@ -141,6 +141,11 @@ int GetIndexOfExistingTab(BrowserWindowInterface* browser, +@@ -144,6 +144,11 @@ int GetIndexOfExistingTab(BrowserWindowInterface* browser, continue; } @@ -80,7 +80,7 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib return url::FindAndCompareScheme(utf8_input, scheme, nullptr); } -@@ -578,7 +583,8 @@ void AutocompleteInput::ParseForEmphasizeComponents( +@@ -580,7 +585,8 @@ void AutocompleteInput::ParseForEmphasizeComponents( // For the view-source and blob schemes, we should emphasize the host of the // URL qualified by the view-source or blob prefix. if ((base::EqualsCaseInsensitiveASCII(scheme_str, kViewSourceScheme) || @@ -118,7 +118,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1142,6 +1142,8 @@ component("net") { +@@ -1147,6 +1147,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 88a9ee6a..04b688ba 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -42,12 +42,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/compare/cluster_server_proxy.cc | 2 +- .../product_specifications_server_proxy.cc | 2 +- .../subscriptions_server_proxy.cc | 2 +- + .../internal/composebox_query_controller.cc | 2 +- .../data_sharing_network_loader_impl.cc | 2 +- .../internal/preview_server_proxy.cc | 2 +- .../endpoint_fetcher/endpoint_fetcher.cc | 127 ++++++-- .../endpoint_fetcher/endpoint_fetcher.h | 28 +- components/manta/base_provider.cc | 4 +- - .../composebox/composebox_query_controller.cc | 2 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + 42 files changed, 1154 insertions(+), 106 deletions(-) @@ -79,7 +79,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 -@@ -1952,6 +1952,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1959,6 +1959,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -92,7 +92,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 -@@ -848,6 +848,8 @@ chrome_java_sources = [ +@@ -858,6 +858,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", @@ -686,7 +686,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 -@@ -2669,6 +2669,12 @@ static_library("browser") { +@@ -2660,6 +2660,12 @@ static_library("browser") { } if (is_android) { @@ -1004,18 +1004,18 @@ new file mode 100644 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -375,6 +375,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -386,6 +386,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, + &kInlineUpdateFlow, - &kOmahaMinSdkVersionAndroid, - &kShortCircuitUnfocusAnimation, - &kShowHomeButtonPolicyAndroid, + &kQuickDeleteAndroidSurvey, + &kReadAloud, + &kReadAloudAudioOverviews, 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 -@@ -464,6 +464,7 @@ public abstract class ChromeFeatureList { +@@ -469,6 +469,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"; @@ -1026,9 +1026,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc b/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc --- a/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc +++ b/chrome/browser/media/router/discovery/access_code/access_code_cast_discovery_interface.cc -@@ -270,7 +270,7 @@ AccessCodeCastDiscoveryInterface::CreateEndpointFetcher( - .SetOauthScopes(discovery_scopes) - .SetOauthConsumerName(kDiscoveryOAuthConsumerName) +@@ -266,7 +266,7 @@ AccessCodeCastDiscoveryInterface::CreateEndpointFetcher( + .SetTimeout(kTimeout) + .SetUrl(GURL(base::StrCat({GetDiscoveryUrl(), "/", access_code}))) .SetPostData(kEmptyPostData) - .Build()); + .Build(), kTrafficAnnotation); @@ -1605,7 +1605,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/save_to_drive/drive_uploader.cc b/chrome/browser/save_to_drive/drive_uploader.cc --- a/chrome/browser/save_to_drive/drive_uploader.cc +++ b/chrome/browser/save_to_drive/drive_uploader.cc -@@ -288,7 +288,7 @@ DriveUploader::CreateEndpointFetcher( +@@ -290,7 +290,7 @@ DriveUploader::CreateEndpointFetcher( return std::make_unique( /*url_loader_factory=*/url_loader_factory_.get(), /*identity_manager=*/identity_manager_, @@ -1617,7 +1617,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 -@@ -2279,6 +2279,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2306,6 +2306,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 @@ -1630,7 +1630,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4255,7 +4261,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4315,7 +4321,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1642,7 +1642,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4266,6 +4275,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4326,6 +4335,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1664,7 +1664,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/browser/ui/lens/lens_overlay_query_controller.cc --- a/chrome/browser/ui/lens/lens_overlay_query_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_query_controller.cc -@@ -726,7 +726,7 @@ LensOverlayQueryController::CreateEndpointFetcher( +@@ -742,7 +742,7 @@ LensOverlayQueryController::CreateEndpointFetcher( .SetTimeout(timeout) .SetUrl(fetch_url) .SetUploadProgressCallback(std::move(upload_progress_callback)) @@ -1676,7 +1676,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 -@@ -331,7 +331,7 @@ std::unique_ptr AccountChecker::CreateEndpointFetcher( +@@ -327,7 +327,7 @@ std::unique_ptr AccountChecker::CreateEndpointFetcher( .SetPostData(post_data); MaybeUseAlternateShoppingServer(request_params); return std::make_unique( @@ -1688,7 +1688,7 @@ diff --git a/components/commerce/core/account_checker.cc b/components/commerce/c diff --git a/components/commerce/core/compare/cluster_server_proxy.cc b/components/commerce/core/compare/cluster_server_proxy.cc --- a/components/commerce/core/compare/cluster_server_proxy.cc +++ b/components/commerce/core/compare/cluster_server_proxy.cc -@@ -158,7 +158,7 @@ std::unique_ptr ClusterServerProxy::CreateEndpointFetcher( +@@ -156,7 +156,7 @@ std::unique_ptr ClusterServerProxy::CreateEndpointFetcher( .SetPostData(post_data); commerce::MaybeUseAlternateShoppingServer(request_params); return std::make_unique( @@ -1700,7 +1700,7 @@ diff --git a/components/commerce/core/compare/cluster_server_proxy.cc b/componen diff --git a/components/commerce/core/compare/product_specifications_server_proxy.cc b/components/commerce/core/compare/product_specifications_server_proxy.cc --- a/components/commerce/core/compare/product_specifications_server_proxy.cc +++ b/components/commerce/core/compare/product_specifications_server_proxy.cc -@@ -298,7 +298,7 @@ ProductSpecificationsServerProxy::CreateEndpointFetcher( +@@ -296,7 +296,7 @@ ProductSpecificationsServerProxy::CreateEndpointFetcher( .SetPostData(post_data); MaybeUseAlternateShoppingServer(request_params); return std::make_unique( @@ -1712,7 +1712,7 @@ diff --git a/components/commerce/core/compare/product_specifications_server_prox diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy.cc b/components/commerce/core/subscriptions/subscriptions_server_proxy.cc --- a/components/commerce/core/subscriptions/subscriptions_server_proxy.cc +++ b/components/commerce/core/subscriptions/subscriptions_server_proxy.cc -@@ -304,7 +304,7 @@ SubscriptionsServerProxy::CreateEndpointFetcher( +@@ -302,7 +302,7 @@ SubscriptionsServerProxy::CreateEndpointFetcher( .SetPostData(post_data); MaybeUseAlternateShoppingServer(request_params); return std::make_unique( @@ -1721,12 +1721,24 @@ diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy.c } void SubscriptionsServerProxy::HandleManageSubscriptionsResponses( +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 +@@ -525,7 +525,7 @@ ComposeboxQueryController::CreateEndpointFetcher( + .SetTimeout(timeout) + .SetUploadProgressCallback(std::move(upload_progress_callback)) + .SetUrl(fetch_url) +- .Build()); ++ .Build(), kTrafficAnnotationTag); + } + + lens::LensOverlayClientContext ComposeboxQueryController::CreateClientContext() diff --git a/components/data_sharing/internal/data_sharing_network_loader_impl.cc b/components/data_sharing/internal/data_sharing_network_loader_impl.cc --- a/components/data_sharing/internal/data_sharing_network_loader_impl.cc +++ b/components/data_sharing/internal/data_sharing_network_loader_impl.cc -@@ -78,7 +78,7 @@ DataSharingNetworkLoaderImpl::CreateEndpointFetcher( - .SetOauthScopes(scopes) - .SetOauthConsumerName(kOauthConsumerName) +@@ -63,7 +63,7 @@ DataSharingNetworkLoaderImpl::CreateEndpointFetcher( + .SetUrl(url) + .SetOAuthConsumerId(signin::OAuthConsumerId::kDataSharingAndroid) .SetPostData(post_data) - .Build()); + .Build(), annotation_tag); @@ -1736,10 +1748,10 @@ diff --git a/components/data_sharing/internal/data_sharing_network_loader_impl.c diff --git a/components/data_sharing/internal/preview_server_proxy.cc b/components/data_sharing/internal/preview_server_proxy.cc --- a/components/data_sharing/internal/preview_server_proxy.cc +++ b/components/data_sharing/internal/preview_server_proxy.cc -@@ -351,7 +351,7 @@ std::unique_ptr PreviewServerProxy::CreateEndpointFetcher( +@@ -346,7 +346,7 @@ std::unique_ptr PreviewServerProxy::CreateEndpointFetcher( + .SetContentType(kContentType) + .SetTimeout(kTimeout) .SetUrl(url) - .SetOauthScopes(std::vector{kOAuthScope}) - .SetOauthConsumerName(kOAuthName) - .Build()); + .Build(), kGetSharedDataPreviewTrafficAnnotation); } @@ -1783,7 +1795,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi } // namespace EndpointResponse::EndpointResponse() = default; -@@ -108,9 +122,11 @@ EndpointFetcher::RequestParams::Builder::Build() { +@@ -105,9 +119,11 @@ EndpointFetcher::RequestParams::Builder::Build() { EndpointFetcher::EndpointFetcher( const scoped_refptr& url_loader_factory, signin::IdentityManager* identity_manager, @@ -1796,7 +1808,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi request_params_(std::move(request_params)) { if (request_params_.auth_type() == OAUTH) { DCHECK(identity_manager_) -@@ -123,12 +139,32 @@ EndpointFetcher::EndpointFetcher( +@@ -120,12 +136,32 @@ EndpointFetcher::EndpointFetcher( EndpointFetcher::EndpointFetcher( const net::NetworkTrafficAnnotationTag& annotation_tag) : identity_manager_(nullptr), @@ -1829,7 +1841,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi EndpointFetcher::~EndpointFetcher() = default; void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) { -@@ -211,13 +247,10 @@ void EndpointFetcher::PerformHttpRequest( +@@ -208,13 +244,10 @@ void EndpointFetcher::PerformHttpRequest( auto resource_request = std::make_unique(); resource_request->method = GetHttpMethodString(request_params_.http_method()); resource_request->url = request_params_.url(); @@ -1846,7 +1858,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi // Add Content-Type header if post data is present. bool has_body_content = (request_params_.http_method() == HttpMethod::kPost || request_params_.http_method() == HttpMethod::kPut) && -@@ -258,8 +291,23 @@ void EndpointFetcher::PerformHttpRequest( +@@ -255,8 +288,23 @@ void EndpointFetcher::PerformHttpRequest( break; } @@ -1870,7 +1882,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi if (has_body_content) { simple_url_loader_->AttachStringForUpload( -@@ -272,9 +320,18 @@ void EndpointFetcher::PerformHttpRequest( +@@ -269,9 +317,18 @@ void EndpointFetcher::PerformHttpRequest( simple_url_loader_->SetRetryOptions(GetMaxRetries(), network::SimpleURLLoader::RETRY_ON_5XX); @@ -1892,7 +1904,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi network::SimpleURLLoader::BodyAsStringCallbackDeprecated body_as_string_callback = base::BindOnce( &EndpointFetcher::OnResponseFetched, weak_ptr_factory_.GetWeakPtr(), -@@ -333,21 +390,6 @@ void EndpointFetcher::OnResponseFetched( +@@ -330,21 +387,6 @@ void EndpointFetcher::OnResponseFetched( std::move(endpoint_fetcher_callback).Run(std::move(response)); } @@ -1914,7 +1926,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi int EndpointFetcher::GetMaxRetries() const { return request_params_.max_retries.value_or(kNumRetries); } -@@ -365,4 +407,39 @@ std::string EndpointFetcher::GetUrlForTesting() { +@@ -362,4 +404,39 @@ std::string EndpointFetcher::GetUrlForTesting() { return request_params_.url().spec(); } @@ -1984,7 +1996,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin int http_status_code{-1}; std::optional error_type; scoped_refptr headers; -@@ -314,7 +320,16 @@ class EndpointFetcher { +@@ -301,7 +307,16 @@ class EndpointFetcher { EndpointFetcher( const scoped_refptr& url_loader_factory, signin::IdentityManager* identity_manager, @@ -2002,7 +2014,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin EndpointFetcher(const EndpointFetcher& endpoint_fetcher) = delete; EndpointFetcher& operator=(const EndpointFetcher& endpoint_fetcher) = delete; -@@ -347,11 +362,17 @@ class EndpointFetcher { +@@ -334,11 +349,17 @@ class EndpointFetcher { void OnResponseFetched(EndpointFetcherCallback callback, std::unique_ptr response_body); @@ -2020,7 +2032,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Members set in constructor const scoped_refptr url_loader_factory_; -@@ -359,6 +380,8 @@ class EndpointFetcher { +@@ -346,6 +367,8 @@ class EndpointFetcher { // this case, callers should invoke `PerformRequest` directly). const raw_ptr identity_manager_; @@ -2029,7 +2041,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // The complete definition of the specific network request to be performed. // Contains authentication details and response handling preferences. const RequestParams request_params_; -@@ -368,6 +391,9 @@ class EndpointFetcher { +@@ -355,6 +378,9 @@ class EndpointFetcher { access_token_fetcher_; std::unique_ptr simple_url_loader_; @@ -2042,16 +2054,16 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin diff --git a/components/manta/base_provider.cc b/components/manta/base_provider.cc --- a/components/manta/base_provider.cc +++ b/components/manta/base_provider.cc -@@ -145,7 +145,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcher( - .SetOauthScopes(scopes) - .SetOauthConsumerName(oauth_consumer_name) +@@ -140,7 +140,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcher( + .SetUrl(url) + .SetOAuthConsumerId(signin::OAuthConsumerId::kManta) .SetPostData(post_data) - .Build()); + .Build(), annotation_tag); } std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( -@@ -163,7 +163,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( +@@ -158,7 +158,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( .SetTimeout(timeout) .SetPostData(post_data) .SetChannel(version_info::Channel::STABLE) @@ -2060,18 +2072,6 @@ diff --git a/components/manta/base_provider.cc b/components/manta/base_provider. } } // namespace manta -diff --git a/components/omnibox/composebox/composebox_query_controller.cc b/components/omnibox/composebox/composebox_query_controller.cc ---- a/components/omnibox/composebox/composebox_query_controller.cc -+++ b/components/omnibox/composebox/composebox_query_controller.cc -@@ -524,7 +524,7 @@ ComposeboxQueryController::CreateEndpointFetcher( - .SetTimeout(timeout) - .SetUploadProgressCallback(std::move(upload_progress_callback)) - .SetUrl(fetch_url) -- .Build()); -+ .Build(), kTrafficAnnotationTag); - } - - lens::LensOverlayClientContext ComposeboxQueryController::CreateClientContext() diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index f8e1538e..45a1aefe 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -33,7 +33,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../flags/android/adblock_native_gateway.cc | 31 ++ .../browser/flags/AdBlockNativeGateway.java | 30 ++ .../net/system_network_context_manager.cc | 4 + - .../sessions/session_restore_android.cc | 7 +- .../strings/android_chrome_strings.grd | 14 + chrome/common/pref_names.h | 5 + .../strings/android/site_settings.grdp | 3 + @@ -51,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/subresource_filter_features.cc | 118 +------- .../core/browser/verified_ruleset_dealer.cc | 4 + .../core/common/indexed_ruleset.cc | 5 +- - 39 files changed, 1287 insertions(+), 129 deletions(-) + 38 files changed, 1282 insertions(+), 127 deletions(-) create mode 100644 chrome/android/java/res/layout/adblock_editor.xml create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java @@ -66,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 -@@ -324,6 +324,7 @@ if (_is_default_toolchain) { +@@ -325,6 +325,7 @@ if (_is_default_toolchain) { "//chrome/android/features/tab_ui/public:ui_java_resources", "//chrome/android/modules/stack_unwinder/provider:java", "//chrome/android/webapk/libs/client:client_java", @@ -77,7 +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 = [ +@@ -439,6 +439,7 @@ chrome_java_resources = [ "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", "java/res/layout/app_history_filter.xml", @@ -85,7 +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", -@@ -627,6 +628,7 @@ chrome_java_resources = [ +@@ -639,6 +640,7 @@ chrome_java_resources = [ "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", "java/res/xml/appearance_preferences.xml", @@ -96,7 +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 -@@ -918,6 +918,8 @@ chrome_java_sources = [ +@@ -929,6 +929,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/permissions/PermissionBlockedDialog.java", "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java", @@ -180,7 +179,7 @@ new file mode 100644 diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml --- a/chrome/android/java/res/values/styles.xml +++ b/chrome/android/java/res/values/styles.xml -@@ -312,6 +312,24 @@ found in the LICENSE file. +@@ -317,6 +317,24 @@ found in the LICENSE file. @@ -442,7 +441,7 @@ new file mode 100644 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 -@@ -88,6 +88,8 @@ import java.util.HashMap; +@@ -87,6 +87,8 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -451,7 +450,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin /** * The Chrome settings activity. * -@@ -948,6 +950,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -1016,6 +1018,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (!MAIN_FRAGMENT_TAG.equals(fragment.getTag())) { return; } @@ -462,7 +461,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -17103,6 +17103,16 @@ Please help our engineers fix this problem. Tell us what happened right before y +@@ -17255,6 +17255,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Never show this again. @@ -533,7 +532,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 -@@ -1270,6 +1270,34 @@ BrowserProcessImpl::component_updater() { +@@ -1285,6 +1285,34 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -571,7 +570,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 -@@ -212,6 +212,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -211,6 +211,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -579,7 +578,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc MediaFileSystemRegistry* media_file_system_registry() override; WebRtcLogUploader* webrtc_log_uploader() override; network_time::NetworkTimeTracker* network_time_tracker() override; -@@ -429,6 +430,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -428,6 +429,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -590,7 +589,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 -@@ -390,6 +390,9 @@ StartupProfileInfo CreateInitialProfile( +@@ -429,6 +429,9 @@ StartupProfileInfo CreateInitialProfile( // missing code in the above test. CHECK(profile_info.profile) << "Cannot get default profile."; @@ -712,23 +711,6 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows // Static auth params registry->RegisterStringPref(prefs::kAuthSchemes, "basic,digest,ntlm,negotiate"); -diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc ---- a/chrome/browser/sessions/session_restore_android.cc -+++ b/chrome/browser/sessions/session_restore_android.cc -@@ -58,8 +58,11 @@ content::WebContents* SessionRestore::RestoreForeignSessionTab( - DCHECK(current_tab); - // If swapped, return the current tab's most up-to-date web contents. - if (disposition == WindowOpenDisposition::CURRENT_TAB) { -- current_tab->SwapWebContents(std::move(new_web_contents), false, false); -- return current_tab->web_contents(); -+ int active_tab_index = tab_model->GetActiveIndex(); -+ tab_model->CreateTab(current_tab, new_web_contents.release(), -+ disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB); -+ tab_model->CloseTabAt(active_tab_index); -+ return raw_new_web_contents; - } - DCHECK(disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB || - disposition == WindowOpenDisposition::NEW_BACKGROUND_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 @@ -756,7 +738,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 -@@ -2931,6 +2931,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2942,6 +2942,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -771,7 +753,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -406,6 +406,9 @@ +@@ -421,6 +421,9 @@ This site shows intrusive or misleading ads @@ -1613,7 +1595,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f web_contents_helper_(web_contents_helper) {} ContentSubresourceFilterThrottleManager:: -@@ -629,6 +633,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -628,6 +632,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } diff --git a/build/patches/Bubble-Locking-on-UI-DevTools.patch b/build/patches/Bubble-Locking-on-UI-DevTools.patch index 49b9b49d..a91e5acf 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 -@@ -225,6 +225,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) { +@@ -274,6 +274,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 -@@ -1465,6 +1465,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1468,6 +1468,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. -@@ -1505,13 +1518,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1508,13 +1521,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, void set_widget_closed() { widget_closed_ = true; } private: @@ -67,7 +67,7 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h class PaintAsActiveLockImpl; friend class ButtonTest; -@@ -1522,11 +1528,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1525,11 +1531,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 59c168c6..d4d00b3f 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -129,7 +129,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a diff --git a/chrome/browser/extensions/api/developer_private/developer_private_functions_shared.cc b/chrome/browser/extensions/api/developer_private/developer_private_functions_shared.cc --- a/chrome/browser/extensions/api/developer_private/developer_private_functions_shared.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_functions_shared.cc -@@ -364,6 +364,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { +@@ -375,6 +375,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { ExtensionUpdater::CheckParams params; params.fetch_priority = DownloadFetchPriority::kForeground; params.install_immediately = true; @@ -137,7 +137,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_f params.callback = base::BindOnce(&DeveloperPrivateAutoUpdateFunction::OnComplete, this); updater->CheckNow(std::move(params)); -@@ -500,7 +501,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -511,7 +512,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { const developer::ProfileConfigurationUpdate& update = params->update; @@ -146,7 +146,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_f Profile* profile = Profile::FromBrowserContext(browser_context()); CHECK(profile); if (supervised_user::AreExtensionsPermissionsEnabled(profile)) { -@@ -514,6 +515,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -525,6 +526,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { ->MarkNoticeAsAcknowledgedGlobally(); } @@ -243,7 +243,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 -@@ -95,6 +95,7 @@ UninstallPingSender::FilterResult ShouldSendUninstallPing( +@@ -96,6 +96,7 @@ UninstallPingSender::FilterResult ShouldSendUninstallPing( Profile* profile, const Extension* extension, UninstallReason reason) { @@ -267,7 +267,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 -@@ -431,6 +431,7 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy( +@@ -436,6 +436,7 @@ bool ExtensionManagement::IsExemptFromMV2DeprecationByPolicy( bool ExtensionManagement::IsAllowedByUnpublishedAvailabilityPolicy( const Extension* extension) { @@ -291,7 +291,7 @@ 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 -@@ -247,8 +247,6 @@ ExtensionService::ExtensionService( +@@ -248,8 +248,6 @@ ExtensionService::ExtensionService( UpgradeDetector::GetInstance()->AddObserver(this); #endif @@ -300,7 +300,7 @@ diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/ext ExtensionManagementFactory::GetForBrowserContext(profile_)->AddObserver(this); if (autoupdate_enabled) { -@@ -763,7 +761,7 @@ void ExtensionService::OnExtensionManagementSettingsChanged() { +@@ -764,7 +762,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. @@ -374,7 +374,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro CHECK(enabled_); if (params.ids.empty()) { // Checking all extensions. Cancel pending DoCheckSoon() call if there's -@@ -442,7 +454,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -450,7 +462,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { int request_id = next_request_id_++; @@ -383,7 +383,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro if (params.ids.empty()) { NotifyStarted(); } -@@ -512,7 +524,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -519,7 +531,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { update_check_params.update_info[pending_id] = GetExtensionUpdateData(pending_id); } else if (!Manifest::IsAutoUpdateableLocation(info->install_source())) { @@ -392,7 +392,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro continue; } // We have to mark high-priority extensions (such as policy-forced -@@ -522,7 +534,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -529,7 +541,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { // See https://crbug.com/904600 and https://crbug.com/965686. const bool is_high_priority_extension_pending = pending_extension_manager->HasHighPriorityPendingExtension(); @@ -401,7 +401,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro update_check_params.update_info[pending_id] = GetExtensionUpdateData(pending_id); update_check_params.update_info[pending_id].is_corrupt_reinstall = -@@ -545,6 +557,8 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -552,6 +564,8 @@ void ExtensionUpdater::CheckNow(CheckParams params) { LOG(WARNING) << "Corrupt extension with id " << pending_id << " will be reinstalled with ExtensionDownloader."; } @@ -410,7 +410,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro } else { InstallStageTracker::Get(profile_)->ReportFailure( pending_id, -@@ -557,13 +571,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -564,13 +578,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) { AddToDownloader(®istry_->disabled_extensions(), pending_ids, request_id, params.fetch_priority, &update_check_params); ExtensionSet remotely_disabled_extensions; @@ -424,7 +424,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro AddToDownloader(&remotely_disabled_extensions, pending_ids, request_id, params.fetch_priority, &update_check_params); } else { -@@ -571,7 +578,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -578,7 +585,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { const Extension* extension = registry_->GetExtensionById(id, ExtensionRegistry::EVERYTHING); if (extension) { @@ -433,7 +433,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro update_check_params.update_info[id] = GetExtensionUpdateData(id); } else if (AddExtensionToDownloader(*extension, request_id, params.fetch_priority)) { -@@ -715,7 +722,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( +@@ -722,7 +729,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( file.extension_id, InstallStageTracker::Stage::INSTALLING); UpdatePingData(file.extension_id, ping); @@ -442,7 +442,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)); -@@ -726,6 +733,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( +@@ -733,6 +740,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( bool ExtensionUpdater::GetPingDataForExtension(const ExtensionId& id, DownloadPingData* ping_data) { @@ -450,7 +450,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)); -@@ -845,7 +853,7 @@ bool ExtensionUpdater::CanUseUpdateService( +@@ -852,7 +860,7 @@ bool ExtensionUpdater::CanUseUpdateService( void ExtensionUpdater::InstallCRXFile(FetchedCRXFile crx_file) { std::set request_ids; @@ -459,7 +459,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 -@@ -1054,7 +1062,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { +@@ -1061,7 +1069,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { if (!request.in_progress_ids.empty() || request.awaiting_update_service) { return; // This request is not done yet. } @@ -504,7 +504,7 @@ diff --git a/chrome/browser/extensions/webstore_install_helper.cc b/chrome/brows 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 -@@ -594,7 +594,7 @@ void WebstoreInstaller::StartDownload( +@@ -595,7 +595,7 @@ void WebstoreInstaller::StartDownload( traffic_annotation)); params->set_file_path(file); params->set_initiator(render_frame_host->GetLastCommittedOrigin()); @@ -556,7 +556,7 @@ diff --git a/chrome/browser/resources/extensions/manager.ts b/chrome/browser/res diff --git a/chrome/browser/resources/extensions/service.ts b/chrome/browser/resources/extensions/service.ts --- a/chrome/browser/resources/extensions/service.ts +++ b/chrome/browser/resources/extensions/service.ts -@@ -342,6 +342,11 @@ export class Service implements ServiceInterface { +@@ -356,6 +356,11 @@ export class Service implements ServiceInterface { {inDeveloperMode: inDevMode}); } @@ -1201,8 +1201,8 @@ diff --git a/extensions/browser/updater/safe_manifest_parser.cc b/extensions/bro 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 -@@ -172,4 +172,11 @@ BASE_FEATURE(kRuntimeOnMessageWebExtensionPolyfillSupport, - "RuntimeOnMessageWebExtensionPolyfillSupport", +@@ -182,4 +182,11 @@ BASE_FEATURE(kEnableShouldShowPromotion, base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kEnableWebRequestCollapsedListeners, base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kEnableExtensionAutoupdate, @@ -1216,9 +1216,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 -@@ -287,6 +287,16 @@ BASE_DECLARE_FEATURE(kContentVerifyJobUseJobVersionForHashing); - // during execution) the error is passed back to the sender. - BASE_DECLARE_FEATURE(kRuntimeOnMessageWebExtensionPolyfillSupport); +@@ -300,6 +300,16 @@ BASE_DECLARE_FEATURE(kEnableShouldShowPromotion); + // Enables the "collapsed listeners" strategy for webRequest lazy listeners. + BASE_DECLARE_FEATURE(kEnableWebRequestCollapsedListeners); +// 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 88636bb7..84514312 100644 --- a/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch +++ b/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch @@ -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 -@@ -752,6 +752,10 @@ void PreflightController::ClearCorsPreflightCache( +@@ -755,6 +755,10 @@ void PreflightController::ClearCorsPreflightCache( cache_.ClearCache(std::move(url_filter)); } @@ -55,7 +55,7 @@ diff --git a/services/network/cors/preflight_controller.cc b/services/network/co diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h --- a/services/network/cors/preflight_controller.h +++ b/services/network/cors/preflight_controller.h -@@ -151,6 +151,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final { +@@ -152,6 +152,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final { url_loader_network_service_observer, const PreflightMode& preflight_mode); @@ -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 -@@ -1372,6 +1372,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time, +@@ -1373,6 +1373,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 6c55ae48..af8007ba 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -63,7 +63,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd std::string brand_version = output_version_type == blink::UserAgentBrandVersionType::kFullVersion -@@ -698,6 +696,7 @@ blink::UserAgentMetadata GetUserAgentMetadata(const PrefService* pref_service, +@@ -693,6 +691,7 @@ blink::UserAgentMetadata GetUserAgentMetadata(bool only_low_entropy_ch) { } // High entropy client hints. @@ -270,7 +270,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 -@@ -569,6 +569,11 @@ +@@ -592,6 +592,11 @@ name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, @@ -282,7 +282,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 { name: "AriaRowColIndexText", status: "stable", -@@ -976,8 +981,7 @@ +@@ -1019,8 +1024,7 @@ // Allows top-level sites to restrict collection of high-entropy UA client // hints (from 3Ps, or itself) via the getHighEntropyValues API. // crbug.com/385161047 diff --git a/build/patches/Close-Sessions-On-Ip-Change.patch b/build/patches/Close-Sessions-On-Ip-Change.patch index fbce7cbc..256bbe55 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 -@@ -509,7 +509,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT); +@@ -511,7 +511,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 ef077093..f60bdcf4 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 -@@ -677,6 +677,7 @@ template("chrome_common_apk_or_module_tmpl") { +@@ -674,6 +674,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 0514c821..efe25dbc 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -24,8 +24,8 @@ Require: bromite-build-utils.patch .../site_details_permission.html | 8 +- .../site_settings/site_details_permission.ts | 44 ++ .../site_settings/site_settings_mixin.ts | 20 +- + .../site_settings/site_settings_page.ts | 30 +- .../site_settings/site_settings_util.ts | 55 +++ - .../site_settings_page/site_settings_page.ts | 30 +- chrome/browser/ui/BUILD.gn | 2 + .../controls/rich_controls_container_view.h | 7 + .../views/page_info/page_info_bubble_view.cc | 2 +- @@ -38,16 +38,16 @@ Require: bromite-build-utils.patch .../ui/webui/settings/site_settings_helper.cc | 46 +- .../browser_ui/settings/android/BUILD.gn | 1 + .../preference_spinner_single_widget.xml | 92 ++++ - .../settings/SpinnerPreference.java | 24 + + .../settings/SpinnerPreference.java | 25 ++ .../browser_ui/site_settings/android/BUILD.gn | 18 + .../res/xml/site_settings_preferences.xml | 7 + .../site_settings/AllSiteSettings.java | 5 +- .../BromiteCustomContentSetting.java | 155 +++++++ .../BromiteCustomContentSettingImpl.java | 415 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + - .../ContentSettingsResources.java | 39 +- + .../ContentSettingsResources.java | 32 +- .../site_settings/SingleCategorySettings.java | 57 ++- - .../site_settings/SingleWebsiteSettings.java | 54 ++- + .../site_settings/SingleWebsiteSettings.java | 50 ++- .../site_settings/SiteSettings.java | 33 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + @@ -85,7 +85,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 13 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 74 files changed, 1972 insertions(+), 108 deletions(-) + 74 files changed, 1964 insertions(+), 106 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -99,7 +99,7 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -69,6 +69,10 @@ import org.chromium.url.GURL; +@@ -70,6 +70,10 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Set; @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ @NullMarked public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { -@@ -242,7 +246,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -239,7 +243,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -380,6 +384,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -377,6 +381,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -152,7 +152,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -353,6 +353,7 @@ build_webui("build") { +@@ -358,6 +358,7 @@ build_webui("build") { "privacy_sandbox/privacy_sandbox_browser_proxy.ts", "relaunch_mixin.ts", "reset_page/reset_browser_proxy.ts", @@ -160,10 +160,10 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "route.ts", "router.ts", "safety_hub/safety_hub_browser_proxy.ts", -@@ -366,7 +367,6 @@ build_webui("build") { +@@ -371,7 +372,6 @@ build_webui("build") { "site_settings/constants.ts", "site_settings/site_settings_mixin.ts", - "site_settings/site_settings_prefs_browser_proxy.ts", + "site_settings/site_settings_browser_proxy.ts", - "site_settings/site_settings_util.ts", "site_settings/website_usage_browser_proxy.ts", "time.ts", @@ -171,7 +171,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html -@@ -572,4 +572,5 @@ +@@ -623,4 +623,5 @@ @@ -395,7 +395,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 -@@ -332,5 +332,6 @@ +@@ -334,5 +334,6 @@ label="$i18n{siteSettingsLocalNetworkAccess}"> @@ -405,7 +405,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 -@@ -69,8 +69,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { +@@ -71,8 +71,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { return 'site-details'; } @@ -449,7 +449,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/c diff --git a/chrome/browser/resources/settings/site_settings/site_details_permission.html b/chrome/browser/resources/settings/site_settings/site_details_permission.html --- a/chrome/browser/resources/settings/site_settings/site_details_permission.html +++ b/chrome/browser/resources/settings/site_settings/site_details_permission.html -@@ -57,7 +57,9 @@ +@@ -58,7 +58,9 @@