diff --git a/build/RELEASE b/build/RELEASE index f7c12494..517d8a39 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -137.0.7151.104 \ No newline at end of file +138.0.7204.50 \ No newline at end of file diff --git a/build/cromite.gn_args b/build/cromite.gn_args index f827aae4..982fb748 100644 --- a/build/cromite.gn_args +++ b/build/cromite.gn_args @@ -140,6 +140,10 @@ if (target_os == "android") { # Disable static analysis android_static_analysis = "off" + + # Turns off all V8 debug features. Disables running V8 in a pseudo debug mode + # bypass build error -5 in clang_x64/mksnapshot + v8_enable_debugging_features = false } else { generate_linker_map = true } diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index 2276e291..4d7bbc8a 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -31,8 +31,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + gpu/ipc/service/gpu_init.cc | 8 ++++++++ - gpu/ipc/service/stream_texture_android.cc | 10 +++++++++- - 12 files changed, 87 insertions(+), 1 deletion(-) + media/gpu/android/video_frame_factory_impl.cc | 4 +++- + 12 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc @@ -90,7 +90,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i 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 -@@ -3479,6 +3479,10 @@ +@@ -3509,6 +3509,10 @@ "chrome-signin-team@google.com" ], "expiry_milestone": 138 @@ -119,7 +119,7 @@ new file mode 100644 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json -@@ -2597,6 +2597,22 @@ +@@ -2613,6 +2613,22 @@ "no_downscaled_overlay_promotion" ] }, @@ -215,7 +215,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc #endif #if BUILDFLAG(ENABLE_VULKAN) -@@ -684,6 +685,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -687,6 +688,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) @@ -229,24 +229,21 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc if (gpu_feature_info_.status_values[GPU_FEATURE_TYPE_VULKAN] != kGpuFeatureStatusEnabled || !InitializeVulkan()) { -diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc ---- a/gpu/ipc/service/stream_texture_android.cc -+++ b/gpu/ipc/service/stream_texture_android.cc -@@ -50,7 +50,15 @@ std::unique_ptr MakeCurrent( - } +diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc +--- a/media/gpu/android/video_frame_factory_impl.cc ++++ b/media/gpu/android/video_frame_factory_impl.cc +@@ -35,10 +35,12 @@ namespace { - TextureOwner::Mode GetTextureOwnerMode() { -- return base::android::EnableAndroidImageReader() -+ const bool a_image_reader_supported = -+ base::android::AndroidImageReader::GetInstance().IsSupported(); -+ -+ // TODO(vikassoni) : Currently we have 2 different flags to enable/disable -+ // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2 -+ // flags into a single flag. Keeping the 2 flags separate for now since finch -+ // experiment using this flag is in progress. -+ return a_image_reader_supported && base::android::EnableAndroidImageReader() && -+ base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer) - ? TextureOwner::Mode::kAImageReaderInsecure - : TextureOwner::Mode::kSurfaceTextureInsecure; - } + gpu::TextureOwner::Mode GetTextureOwnerMode( + VideoFrameFactory::OverlayMode overlay_mode) { ++ const bool enabled = base::android::EnableAndroidImageReader() && ++ base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer); + switch (overlay_mode) { + case VideoFrameFactory::OverlayMode::kDontRequestPromotionHints: + case VideoFrameFactory::OverlayMode::kRequestPromotionHints: +- return base::android::EnableAndroidImageReader() ++ return enabled + ? gpu::TextureOwner::Mode::kAImageReaderInsecure + : gpu::TextureOwner::Mode::kSurfaceTextureInsecure; + case VideoFrameFactory::OverlayMode::kSurfaceControlSecure: -- diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index ceada304..a4e93a06 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 -@@ -229,6 +229,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -233,6 +233,7 @@ import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.common.ContentSwitches; @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -977,6 +978,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -981,6 +982,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier()); @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -170,6 +170,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -169,6 +169,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, @@ -51,15 +51,15 @@ 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 -@@ -160,6 +160,7 @@ public abstract class ChromeFeatureList { - public static final String ACT_USER_BYPASS_UX = "ActUserBypassUx"; +@@ -162,6 +162,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_NEW_INCOGNITO_TAB_INTENTS = "AllowNewIncognitoTabIntents"; -@@ -649,6 +650,8 @@ public abstract class ChromeFeatureList { + public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = +@@ -679,6 +680,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidWindowPopupLargeScreen = newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); @@ -68,9 +68,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sAsyncNotificationManager = newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true); public static final CachedFlag sAsyncNotificationManagerForDownload = -@@ -862,6 +865,7 @@ public abstract class ChromeFeatureList { - public static final List sFlagsCachedFullBrowserChromium = - List.of( +@@ -940,6 +943,7 @@ public abstract class ChromeFeatureList { + sAccountForSuppressedKeyboardInsets, + sAllowTabClosingUponMinimization, sAndroidAppIntegration, + sAllowUserCertificates, sAndroidAppIntegrationModule, diff --git a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index e4eae079..4ae4cb70 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 -@@ -830,6 +830,11 @@ public class KeyboardShortcuts { +@@ -839,6 +839,11 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_B, (KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)); } diff --git a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch index 718d27e2..3fb10d4f 100644 --- a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch +++ b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch @@ -14,8 +14,8 @@ 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 -@@ -133,6 +133,10 @@ BASE_FEATURE(kPostGetMyMemoryStateToBackground, - FEATURE_ENABLED_BY_DEFAULT); +@@ -126,6 +126,10 @@ BASE_FEATURE(kUseSharedRebindServiceConnection, + FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) 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 ff8140f8..8c9be8af 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 -@@ -8162,9 +8162,9 @@ +@@ -8356,9 +8356,9 @@ "expiry_milestone": 140 }, { @@ -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 -@@ -257,6 +257,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { +@@ -253,6 +253,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { {wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)}, {wf::EnablePeriodicBackgroundSync, raw_ref(features::kPeriodicBackgroundSync)}, diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index b5245fdd..98224260 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -78,7 +78,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -100,6 +100,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -101,6 +101,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -363,6 +363,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -372,6 +372,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); @@ -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 -@@ -202,6 +202,8 @@ +@@ -204,6 +204,8 @@ #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/extensions/background_mode_manager.h" #endif -@@ -1578,6 +1580,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1613,6 +1615,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -661,7 +661,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -226,6 +226,8 @@ static_library("ui") { +@@ -204,6 +204,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -673,7 +673,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -55,6 +55,9 @@ +@@ -57,6 +57,9 @@ #include "extensions/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" @@ -683,7 +683,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_NACL) #include "chrome/browser/ui/webui/nacl_ui.h" #endif -@@ -406,7 +409,7 @@ void RegisterChromeWebUIConfigs() { +@@ -422,7 +425,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 -@@ -163,6 +163,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -179,6 +179,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer"; diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 2d32429c..41e4e984 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -101,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -648,6 +648,7 @@ chrome_java_resources = [ +@@ -646,6 +646,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences_legacy.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", @@ -247,7 +247,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -73,6 +73,10 @@ import org.chromium.base.task.TaskTraits; +@@ -74,6 +74,10 @@ import org.chromium.base.task.TaskTraits; import org.chromium.build.annotations.UsedByReflection; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; @@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.ExternalAppId; import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; -@@ -720,14 +724,19 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -726,14 +730,19 @@ public class ChromeTabbedActivity extends ChromeActivity { Profile profile = mTabModelSelector.getCurrentModel().getProfile(); // For saving non-incognito tab closures for Recent Tabs. @@ -285,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( -@@ -2798,8 +2807,9 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2876,8 +2885,9 @@ public class ChromeTabbedActivity extends ChromeActivity { // We determine the model as soon as possible so every systems get initialized coherently. boolean startIncognito = @@ -300,7 +300,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH +@@ -96,6 +96,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; @@ -308,7 +308,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; -@@ -1967,6 +1968,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -1980,6 +1981,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -321,16 +321,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -89,6 +89,8 @@ import java.util.ArrayList; +@@ -88,6 +88,8 @@ import java.lang.annotation.Retention; + import java.lang.annotation.RetentionPolicy; import java.util.Iterator; - import java.util.List; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -494,8 +496,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -496,8 +498,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !isNativePage && !isFileScheme && !isContentScheme @@ -363,7 +363,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List> groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -417,7 +421,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -415,7 +419,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -424,15 +424,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -22,6 +22,7 @@ import org.chromium.base.supplier.ObservableSupplier; +@@ -21,6 +21,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; - import org.chromium.chrome.browser.app.appmenu.DividerLineMenuItemViewBinder; -@@ -224,6 +225,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat + import org.chromium.chrome.browser.bookmarks.BookmarkModel; +@@ -200,6 +201,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat openInChromeItemVisible = false; tryAddingReadAloud = false; } @@ -445,7 +445,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -93,6 +93,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -98,6 +98,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -455,7 +455,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; -@@ -1197,6 +1200,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1250,6 +1253,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid return getInitialActivityWidth() > 0; } @@ -491,7 +491,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo /** A class containing some utility static methods. */ public class DownloadUtils { private static final String TAG = "download"; -@@ -302,7 +307,13 @@ public class DownloadUtils { +@@ -303,7 +308,13 @@ public class DownloadUtils { public static boolean isAllowedToDownloadPage(Tab tab) { if (tab == null) return false; @@ -887,16 +887,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java -@@ -29,6 +29,8 @@ import java.util.HashMap; +@@ -32,6 +32,8 @@ import java.util.HashMap; import java.util.List; import java.util.Set; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** A tab model observer for managing bulk closures. */ + @NullMarked public class HistoricalTabModelObserver implements TabModelObserver { - private final TabGroupModelFilter mTabGroupModelFilter; -@@ -77,9 +79,10 @@ public class HistoricalTabModelObserver implements TabModelObserver { +@@ -81,9 +83,10 @@ public class HistoricalTabModelObserver implements TabModelObserver { if (tabs.isEmpty() || !canRestore) return; if (tabs.size() == 1) { @@ -911,7 +911,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java -@@ -32,7 +32,7 @@ public interface HistoricalTabSaver { +@@ -34,7 +34,7 @@ public interface HistoricalTabSaver { * * @param tab The {@link Tab} to create an entry for. */ @@ -923,16 +923,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java -@@ -29,6 +29,8 @@ import java.util.Arrays; +@@ -30,6 +30,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** Creates historical entries in TabRestoreService. */ + @NullMarked @JNINamespace("historical_tab_saver") - public class HistoricalTabSaverImpl implements HistoricalTabSaver { -@@ -85,10 +87,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -87,10 +89,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { } @Override @@ -945,7 +945,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore } @Override -@@ -149,7 +151,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -151,7 +153,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { // If there is only a single valid tab remaining save it individually. if (validEntries.size() == 1 && validEntries.get(0).isSingleTab()) { @@ -954,7 +954,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore return; } -@@ -189,14 +191,15 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -191,14 +193,15 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { CollectionUtil.integerCollectionToIntArray(savedStateVersions)); } @@ -972,7 +972,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore } /** -@@ -204,7 +207,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -206,7 +209,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { * internal Chrome scheme, about:blank, or a native page and it cannot be incognito. */ private boolean shouldSave(Tab tab) { @@ -993,7 +993,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -24,6 +24,7 @@ import org.chromium.base.supplier.Supplier; +@@ -26,6 +26,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.build.BuildConfig; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -1001,7 +1001,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; -@@ -316,6 +317,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -371,6 +372,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -1015,7 +1015,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // We have to iterate all menu items since same menu item ID may be associated with more // than one menu items. boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; -@@ -375,7 +383,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -430,7 +438,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } if (item.getItemId() == R.id.recent_tabs_menu_id) { @@ -1034,7 +1034,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -207,6 +207,8 @@ import org.chromium.ui.InsetObserver; +@@ -214,6 +214,8 @@ import org.chromium.ui.InsetObserver; import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1042,8 +1042,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.base.LocalizationUtils; - import org.chromium.ui.dragdrop.DragDropGlobalState; -@@ -1182,7 +1184,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { + import org.chromium.ui.display.DisplayUtil; +@@ -1212,7 +1214,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1055,7 +1055,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 -@@ -49,6 +49,10 @@ import org.chromium.ui.base.PageTransition; +@@ -48,6 +48,10 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1066,7 +1066,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ public class ChromeTabCreator extends TabCreator implements NeedsTabModel, NeedsTabModelOrderController { -@@ -523,7 +527,6 @@ public class ChromeTabCreator extends TabCreator +@@ -545,7 +549,6 @@ public class ChromeTabCreator extends TabCreator // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. public Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { @@ -1123,7 +1123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -47,6 +47,7 @@ import org.chromium.base.supplier.Supplier; +@@ -49,6 +49,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -1131,7 +1131,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -807,7 +808,7 @@ public class ToolbarManager +@@ -828,7 +829,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } @@ -1152,16 +1152,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI /** Stores info about a web app. */ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider { private final Drawable mCloseButtonIcon; -@@ -45,6 +47,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider - private final ColorProviderImpl mColorProvider; +@@ -46,6 +48,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider private final ColorProviderImpl mDarkColorProvider; + private @DisplayMode.EnumType int mResolvedDisplayMode = DisplayMode.UNDEFINED; + private boolean mIsIncognito = false; + /** Returns the toolbar color to use if a custom color is not specified by the webapp. */ public static int getDefaultToolbarColor() { return Color.WHITE; -@@ -80,6 +84,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -81,6 +85,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider mWebappExtras = webappExtras; mWebApkExtras = webApkExtras; mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP; @@ -1172,7 +1172,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI } @Override -@@ -175,6 +183,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider +@@ -176,6 +184,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider return mWebApkExtras; } @@ -1255,7 +1255,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -409,6 +409,15 @@ ChromeAutocompleteProviderClient::GetTabGroupSyncService() const { +@@ -418,6 +418,15 @@ ChromeAutocompleteProviderClient::GetTabGroupSyncService() const { return tab_groups::TabGroupSyncServiceFactory::GetForProfile(profile_); } @@ -1310,15 +1310,15 @@ diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -35,6 +35,7 @@ - #include "base/numerics/safe_conversions.h" +@@ -37,6 +37,7 @@ + #include "base/strings/strcat.h" #include "base/strings/utf_string_conversions.h" #include "base/uuid.h" +#include "chrome/common/pref_names.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" #include "chrome/browser/commerce/shopping_service_factory.h" -@@ -215,6 +216,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( +@@ -264,6 +265,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( if (!profile) return nullptr; @@ -1710,7 +1710,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/offline_pages/recent_tab_helper.h --- a/chrome/browser/offline_pages/recent_tab_helper.h +++ b/chrome/browser/offline_pages/recent_tab_helper.h -@@ -106,8 +106,10 @@ class RecentTabHelper +@@ -105,8 +105,10 @@ class RecentTabHelper bool EnsureInitialized(); void ContinueSnapshotWithIdsToPurge(SnapshotProgressInfo* snapshot_info, @@ -1721,7 +1721,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/o OfflinePageModel::DeletePageResult result); void SavePageCallback(SnapshotProgressInfo* snapshot_info, OfflinePageModel::SavePageResult result, -@@ -129,6 +131,9 @@ class RecentTabHelper +@@ -128,6 +130,9 @@ class RecentTabHelper // Not page-specific. bool snapshots_enabled_ = false; @@ -1755,7 +1755,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 -@@ -252,6 +252,7 @@ +@@ -254,6 +254,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1763,7 +1763,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" -@@ -2033,6 +2034,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2068,6 +2069,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1936,7 +1936,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; import java.util.function.BooleanSupplier; -@@ -1223,10 +1228,13 @@ class LocationBarMediator +@@ -1232,10 +1237,13 @@ class LocationBarMediator } Tab tab = mLocationBarDataProvider.getTab(); if (tab == null) return false; @@ -1954,7 +1954,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 -@@ -6647,6 +6647,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6682,6 +6682,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -1989,7 +1989,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java -@@ -163,6 +163,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro +@@ -164,6 +164,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro protected GURL mVisibleGurl = GURL.emptyGURL(); protected String mFormattedFullUrl; protected String mUrlForDisplay; @@ -1997,7 +1997,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow // notifyUrlChanged and notifySecurityStateChanged are usually called 3 times across a same // document navigation. The first call is usually necessary, which updates the UrlBar to reflect -@@ -186,7 +187,9 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro +@@ -187,7 +188,9 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro Context context, NewTabPageDelegate newTabPageDelegate, UrlFormatter urlFormatter, @@ -2078,7 +2078,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 -@@ -4102,6 +4102,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4106,6 +4106,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2094,7 +2094,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 -@@ -114,10 +114,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -111,10 +111,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -2107,7 +2107,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -140,11 +142,13 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -137,11 +139,13 @@ PrefProvider::PrefProvider(PrefService* prefs, WebsiteSettingsRegistry* website_settings = WebsiteSettingsRegistry::GetInstance(); for (const WebsiteSettingsInfo* info : *website_settings) { @@ -2144,7 +2144,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 -@@ -268,6 +268,7 @@ struct ContentSettingEntry { +@@ -269,6 +269,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2152,7 +2152,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -277,6 +278,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -278,6 +279,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2160,7 +2160,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()) { -@@ -290,7 +292,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -291,7 +293,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2180,7 +2180,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -505,6 +506,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -511,6 +512,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2192,7 +2192,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc --- a/components/omnibox/browser/autocomplete_provider_client.cc +++ b/components/omnibox/browser/autocomplete_provider_client.cc -@@ -53,3 +53,7 @@ base::WeakPtr +@@ -65,3 +65,7 @@ base::WeakPtr AutocompleteProviderClient::GetWeakPtr() { return nullptr; } @@ -2214,7 +2214,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -392,7 +392,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( +@@ -413,7 +413,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( // Don't make a suggest request if in incognito mode; unless for the Lens // searchboxes. @@ -2226,7 +2226,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 -@@ -913,7 +913,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -912,7 +912,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 2059b5d9..c1106313 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../app/bookmarks/BookmarkActivity.java | 31 ++ .../native_page/NativePageFactory.java | 9 +- chrome/browser/BUILD.gn | 11 +- - .../bookmarks/android/bookmark_bridge.cc | 267 +++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 266 ++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/BookmarkBridge.java | 39 +++ .../browser/bookmarks/BookmarkDelegate.java | 10 + @@ -52,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 41 files changed, 906 insertions(+), 29 deletions(-) + 41 files changed, 905 insertions(+), 29 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -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 -@@ -219,6 +219,8 @@ static_library("browser") { +@@ -222,6 +222,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -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", -@@ -3583,8 +3592,6 @@ static_library("browser") { +@@ -3639,8 +3648,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -282,7 +282,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -66,6 +66,28 @@ +@@ -68,6 +68,27 @@ #include "content/public/browser/web_contents.h" #include "url/gurl.h" @@ -294,8 +294,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/chrome_select_file_policy.h" -+#include "chrome/common/importer/imported_bookmark_entry.h" -+#include "chrome/common/importer/importer_data_types.h" ++#include "components/user_data_importer/common/imported_bookmark_entry.h" +#include "chrome/common/url_constants.h" +#include "components/favicon_base/favicon_usage_data.h" +#include "components/search_engines/template_url.h" @@ -311,7 +310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/browser/bookmarks/android/jni_headers/BookmarkBridge_jni.h" -@@ -84,6 +106,57 @@ using bookmarks::android::JavaBookmarkIdGetType; +@@ -86,6 +107,57 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; @@ -369,7 +368,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse namespace { // The key used to connect the instance of the bookmark bridge to the bookmark // model. -@@ -231,6 +304,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -296,6 +368,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -380,7 +379,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { -@@ -782,6 +859,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -847,6 +923,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -533,8 +532,8 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return; + + // the following import logic comes from BookmarksFileImporter class -+ std::vector bookmarks; -+ std::vector search_engines; ++ std::vector bookmarks; ++ std::vector search_engines; + favicon_base::FaviconUsageDataList favicons; + + bookmark_html_reader::ImportBookmarksFile( @@ -655,9 +654,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser // Information about the Partner bookmarks (must check for IsLoaded()). // This is owned by profile. -@@ -435,6 +459,10 @@ class BookmarkBridge : public ProfileObserver, - - bool suppress_observer_notifications_ = false; +@@ -437,6 +461,10 @@ class BookmarkBridge : public ProfileObserver, + base::TimeTicks load_start_time_; + bool loading_notification_sent_ = false; + const std::string FileSelectedImpl(const base::FilePath& path); + void FileSelectedImplOnUIThread(const base::FilePath& path, @@ -679,7 +678,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Provides the communication channel for Android to fetch and manipulate the bookmark model stored * in native. -@@ -52,6 +55,9 @@ class BookmarkBridge { +@@ -53,6 +56,9 @@ class BookmarkBridge { private boolean mIsNativeBookmarkModelLoaded; private boolean mInitializedPartnerBookmarks; @@ -689,7 +688,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows // Lazily set pseudo-constants. These should never change at runtime. Used to avoid crossing // JNI to fetch information. private @Nullable BookmarkId mRootFolderId; -@@ -499,6 +505,35 @@ class BookmarkBridge { +@@ -500,6 +506,35 @@ class BookmarkBridge { .getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType()); } @@ -725,7 +724,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Synchronously gets a list of bookmarks that match the specified search query. * -@@ -1121,6 +1156,10 @@ class BookmarkBridge { +@@ -1124,6 +1159,10 @@ class BookmarkBridge { void getChildIds( long nativeBookmarkBridge, long id, int type, List bookmarksList); @@ -739,7 +738,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java -@@ -65,6 +65,16 @@ public interface BookmarkDelegate { +@@ -67,6 +67,16 @@ public interface BookmarkDelegate { /** Shows the search UI. */ void openSearchUi(); @@ -1139,7 +1138,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/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 -@@ -98,6 +98,17 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -102,6 +102,17 @@ public class BookmarkToolbar extends SelectableListToolbar setOnMenuItemClickListener(dragEnabled ? null : this); } @@ -1157,7 +1156,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows void setEditButtonVisible(boolean visible) { mEditButtonVisible = visible; getMenu().findItem(R.id.edit_menu_id).setVisible(visible); -@@ -174,6 +185,12 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -178,6 +189,12 @@ public class BookmarkToolbar extends SelectableListToolbar void setCurrentFolder(BookmarkId folder) { mCurrentFolder = mBookmarkModel.getBookmarkById(folder); @@ -1170,7 +1169,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows } void setNavigateBackRunnable(Runnable navigateBackRunnable) { -@@ -197,6 +214,13 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -202,6 +219,13 @@ public class BookmarkToolbar extends SelectableListToolbar @Override public boolean onMenuItemClick(MenuItem menuItem) { hideOverflowMenu(); @@ -1181,10 +1180,10 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + mExportBookmarkRunnable.run(); + return true; + } - return mMenuIdClickedFunction.apply(menuItem.getItemId()); + return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId()); } -@@ -217,6 +241,9 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -222,6 +246,9 @@ public class BookmarkToolbar extends SelectableListToolbar protected void showNormalView() { super.showNormalView(); @@ -1197,7 +1196,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java -@@ -135,6 +135,10 @@ class BookmarkToolbarMediator +@@ -140,6 +140,10 @@ class BookmarkToolbarMediator mBookmarkDelegate = bookmarkDelegate; mModel.set( BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE, this::onNavigateBack); @@ -1211,7 +1210,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java -@@ -84,6 +84,10 @@ class BookmarkToolbarProperties { +@@ -86,6 +86,10 @@ class BookmarkToolbarProperties { static final WritableObjectPropertyKey NEXT_FOCUSABLE_VIEW = new WritableObjectPropertyKey<>(); @@ -1222,7 +1221,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows static final PropertyKey[] ALL_KEYS = { SELECTION_DELEGATE, -@@ -112,6 +116,8 @@ class BookmarkToolbarProperties { +@@ -114,6 +118,8 @@ class BookmarkToolbarProperties { SELECTION_MODE_SHOW_MOVE, SELECTION_MODE_SHOW_MARK_READ, SELECTION_MODE_SHOW_MARK_UNREAD, @@ -1235,7 +1234,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java -@@ -54,6 +54,12 @@ class BookmarkToolbarViewBinder { +@@ -56,6 +56,12 @@ class BookmarkToolbarViewBinder { model.get(BookmarkToolbarProperties.CHECKED_VIEW_MENU_ID)); } else if (key == BookmarkToolbarProperties.CURRENT_FOLDER) { bookmarkToolbar.setCurrentFolder(model.get(BookmarkToolbarProperties.CURRENT_FOLDER)); @@ -1328,18 +1327,18 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -218,6 +218,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kBackgroundThreadPool, +@@ -223,6 +223,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kBatchTabRestore, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, + &kBookmarksExportUseSaf, &kBottomBrowserControlsRefactor, &kTabClosureMethodRefactor, - &kBrowserControlsEarlyResize, + &kBrowserControlsDebugging, 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 -@@ -604,6 +604,7 @@ public abstract class ChromeFeatureList { +@@ -624,6 +624,7 @@ public abstract class ChromeFeatureList { public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1359,7 +1358,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer + +void ProfileWriter::AddBookmarksWithModel( + BookmarkModel* model, -+ const std::vector& bookmarks, ++ const std::vector& bookmarks, + const std::u16string& top_level_folder_name) { + if (bookmarks.empty()) + return; @@ -1378,13 +1377,13 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/ #include "components/favicon_base/favicon_usage_data.h" #include "components/history/core/browser/history_types.h" #include "components/search_engines/template_url_service.h" -@@ -71,6 +72,11 @@ class ProfileWriter : public base::RefCountedThreadSafe { - virtual void AddBookmarks(const std::vector& bookmarks, - const std::u16string& top_level_folder_name); +@@ -75,6 +76,11 @@ class ProfileWriter : public base::RefCountedThreadSafe { + const std::vector& bookmarks, + const std::u16string& top_level_folder_name); + virtual void AddBookmarksWithModel( + bookmarks::BookmarkModel* model, -+ const std::vector& bookmarks, ++ const std::vector& bookmarks, + const std::u16string& top_level_folder_name); + virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons); @@ -1393,7 +1392,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/ 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 -@@ -144,6 +144,8 @@ public final class ChromePreferenceKeys { +@@ -140,6 +140,8 @@ public final class ChromePreferenceKeys { "enhanced_bookmark_last_used_parent_folder"; public static final String BOOKMARKS_SORT_ORDER = "Chrome.Bookmarks.BookmarkRowSortOrder"; public static final String BOOKMARKS_VISUALS_PREF = "Chrome.Bookmarks.BookmarkRowDisplay"; @@ -1402,7 +1401,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"; -@@ -995,6 +997,7 @@ public final class ChromePreferenceKeys { +@@ -999,6 +1001,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1441,13 +1440,13 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -351,6 +351,9 @@ static_library("common_lib") { +@@ -352,6 +352,9 @@ static_library("common_lib") { sources += [ "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", + ## Bromite dependencies for bookmark import functionality -+ "importer/imported_bookmark_entry.cc", -+ "importer/imported_bookmark_entry.h", ++ "//components/user_data_importer/common/imported_bookmark_entry.cc", ++ "//components/user_data_importer/common/imported_bookmark_entry.h", ] } else { # Non-Android. @@ -1463,7 +1462,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn "importer/bookmarks_file_importer.cc", "importer/bookmarks_file_importer.h", "importer/external_process_importer_bridge.cc", -@@ -221,6 +219,11 @@ static_library("utility") { +@@ -222,6 +220,11 @@ static_library("utility") { deps += [ "//chrome/services/pdf:lib" ] } @@ -1478,16 +1477,16 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc --- a/chrome/utility/importer/bookmark_html_reader.cc +++ b/chrome/utility/importer/bookmark_html_reader.cc -@@ -17,7 +17,9 @@ +@@ -16,7 +16,9 @@ + #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" - #include "chrome/common/importer/imported_bookmark_entry.h" +#if !BUILDFLAG(IS_ANDROID) #include "chrome/utility/importer/favicon_reencode.h" +#endif #include "components/search_engines/search_terms_data.h" #include "components/search_engines/template_url.h" - #include "net/base/data_url.h" + #include "components/user_data_importer/common/imported_bookmark_entry.h" @@ -55,6 +57,7 @@ bool GetAttribute(const std::string& attribute_list, return true; } @@ -1513,8 +1512,8 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im + const base::RepeatingCallback cancellation_callback, + const base::RepeatingCallback valid_url_callback, const base::FilePath& file_path, - std::vector* bookmarks, - std::vector* search_engines, + std::vector* bookmarks, + std::vector* search_engines, favicon_base::FaviconUsageDataList* favicons) { std::string content; - base::ReadFileToString(file_path, &content); @@ -1531,8 +1530,8 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im + base::RepeatingCallback cancellation_callback, + base::RepeatingCallback valid_url_callback, + const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, ++ std::vector* bookmarks, ++ std::vector* search_engines, + favicon_base::FaviconUsageDataList* favicons) { std::vector lines = base::SplitString( content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); @@ -1561,16 +1560,16 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h --- a/chrome/utility/importer/bookmark_html_reader.h +++ b/chrome/utility/importer/bookmark_html_reader.h -@@ -50,6 +50,14 @@ void ImportBookmarksFile( - std::vector* search_engines, +@@ -53,6 +53,14 @@ void ImportBookmarksFile( + std::vector* search_engines, favicon_base::FaviconUsageDataList* favicons); +void ImportBookmarksFile( + const base::RepeatingCallback cancellation_callback, + const base::RepeatingCallback valid_url_callback, + const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, ++ std::vector* bookmarks, ++ std::vector* search_engines, + favicon_base::FaviconUsageDataList* favicons); + // Returns true if |url| should be imported as a search engine, i.e. because it diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index e53aac19..6723bf82 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -144,7 +144,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 -@@ -177,6 +177,8 @@ use_epoll = is_linux || is_chromeos || is_android +@@ -178,6 +178,8 @@ use_epoll = is_linux || is_chromeos || is_android # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -153,7 +153,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1033,7 +1035,7 @@ component("base") { +@@ -1036,7 +1038,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -451,24 +451,24 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -37,7 +37,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -38,7 +38,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); @Override -- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { -+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) { +- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { ++ public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mHomepageManager = HomepageManager.getInstance(); mPageTitle.set(getString(R.string.options_homepage_title)); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -126,7 +126,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -127,7 +127,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } @Override -- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { -+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) { +- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { ++ public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences); @@ -553,10 +553,10 @@ 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; -@@ -87,6 +92,40 @@ import java.util.Locale; - */ - public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -89,6 +94,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable { + private static final String TAG = "SettingsActivity"; + + private static class RequestRestartDelegate implements ChromeBaseSettingsFragment.RequireRestartDelegate { + private OneshotSupplier mSnackbarManagerSupplier; + private Activity mActivity; @@ -594,7 +594,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) public static final String EXTRA_SHOW_FRAGMENT = "show_fragment"; -@@ -153,7 +192,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -155,7 +194,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, @@ -633,7 +633,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -405,6 +405,10 @@ using flags_ui::kOsLinux; +@@ -406,6 +406,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -644,9 +644,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4592,6 +4596,10 @@ const FeatureEntry::FeatureVariation - {"(retroactive)", kInvalidateChoiceOnRestoreIsRetroactiveOption, - std::size(kInvalidateChoiceOnRestoreIsRetroactiveOption), nullptr}}; +@@ -4705,6 +4709,10 @@ const FeatureEntry::FeatureVariation kHistorySyncOptinExpansionPillVariations[] + nullptr}}; + #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -655,7 +655,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. -@@ -4618,6 +4626,9 @@ const FeatureEntry::FeatureVariation +@@ -4731,6 +4739,9 @@ const FeatureEntry::FeatureVariation kHistorySyncOptinExpansionPillVariations[] const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -668,7 +668,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 -@@ -349,4 +349,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, +@@ -359,4 +359,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, "RemovalOfIWAsFromTabCapture", base::FEATURE_ENABLED_BY_DEFAULT); @@ -677,7 +677,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 -@@ -133,6 +133,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -135,6 +135,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -727,7 +727,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1262,5 +1262,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1345,5 +1345,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -737,7 +737,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 -@@ -263,6 +263,7 @@ constexpr base::FeatureParam kQuickDeleteAndroidSurveyTriggerId( +@@ -285,6 +285,7 @@ constexpr base::FeatureParam kQuickDeleteAndroidSurveyTriggerId( "trigger_id", /*default_value=*/""); @@ -759,16 +759,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -847,7 +851,7 @@ public abstract class ChromeFeatureList { +@@ -923,7 +927,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sWebApkMinShellApkVersion = newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); - public static final List sFlagsCachedFullBrowser = + public static final List sFlagsCachedFullBrowserChromium = List.of( - sAndroidAppIntegration, - sAndroidAppIntegrationModule, -@@ -952,6 +956,13 @@ public abstract class ChromeFeatureList { + sAccountForSuppressedKeyboardInsets, + sAllowTabClosingUponMinimization, +@@ -1047,6 +1051,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sWebApkMinShellApkVersion); @@ -958,9 +958,9 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -397,4 +397,5 @@ BASE_FEATURE(kTabStripBrowserApi, - "TabStripBrowserApi", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -500,4 +500,5 @@ bool HasTabSearchToolbarButton() { + return has_tab_search_toolbar_button; + } +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" } // namespace features @@ -999,7 +999,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 -@@ -1733,4 +1733,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, +@@ -1795,4 +1795,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, "DisableShortcutsEnableDiy", base::FEATURE_ENABLED_BY_DEFAULT); @@ -1032,7 +1032,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 -@@ -29,9 +29,11 @@ import org.chromium.components.omnibox.OmniboxFeatures; +@@ -28,9 +28,11 @@ import org.chromium.components.omnibox.OmniboxFeatures; import org.chromium.content_public.browser.ContentFeatureList; import org.chromium.content_public.browser.ContentFeatureMap; @@ -1045,7 +1045,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 = -@@ -70,7 +72,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -69,7 +71,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat } @Override @@ -1150,8 +1150,8 @@ 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 -@@ -163,5 +163,6 @@ BASE_FEATURE(kContentSettingsPartitioning, - "ContentSettingsPartitioning", +@@ -167,5 +167,6 @@ BASE_FEATURE(kForceAllowStorageAccess, + "ForceAllowStorageAccess", base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/components_content_settings_core_common_features_cc.inc" @@ -1186,7 +1186,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc --- a/components/password_manager/core/browser/features/password_features.cc +++ b/components/password_manager/core/browser/features/password_features.cc -@@ -175,4 +175,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, +@@ -183,4 +183,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, "ImprovedPasswordChangeService", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1195,7 +1195,7 @@ diff --git a/components/password_manager/core/browser/features/password_features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -133,6 +133,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -146,6 +146,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, "OsAdditionalSecurityPermissionKillSwitch", base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -1249,7 +1249,7 @@ diff --git a/components/variations/synthetic_trials_active_group_id_provider.h b diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flags_state.cc --- a/components/webui/flags/flags_state.cc +++ b/components/webui/flags/flags_state.cc -@@ -377,6 +377,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( +@@ -376,6 +376,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); @@ -1268,10 +1268,10 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag + } + NOTREACHED(); + } - CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130); + CHECK(entry_it != name_to_switch_map.end()); const SwitchEntry& entry = entry_it->second; -@@ -710,6 +725,27 @@ void FlagsState::GetFlagFeatureEntries( +@@ -709,6 +724,27 @@ void FlagsState::GetFlagFeatureEntries( data.Set("links", std::move(links)); } @@ -1299,7 +1299,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag switch (entry.type) { case FeatureEntry::SINGLE_VALUE: case FeatureEntry::SINGLE_DISABLE_VALUE: -@@ -837,6 +873,16 @@ void FlagsState::AddSwitchesToCommandLine( +@@ -836,6 +872,16 @@ void FlagsState::AddSwitchesToCommandLine( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); if (entry_it == name_to_switch_map.end()) { @@ -1316,7 +1316,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag NOTREACHED(); } -@@ -1093,6 +1139,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( +@@ -1092,6 +1138,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( bool FlagsState::IsSupportedFeature(const FlagsStorage* storage, const std::string& name, int platform_mask) const { @@ -1331,7 +1331,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag for (const auto& entry : feature_entries_) { DCHECK(entry.IsValid()); if (!(entry.supported_platforms & platform_mask)) { -@@ -1131,6 +1185,11 @@ void FlagsState::SetFlags( +@@ -1130,6 +1184,11 @@ void FlagsState::SetFlags( FindFeatureEntryByName(feature_internal_name); // Since this flag is currently enabled, we know for sure that we can find // its feature entry using its internal name. @@ -1628,7 +1628,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 -@@ -549,4 +549,5 @@ BASE_FEATURE(kLimitCrossOriginNonActivatedPaintHolding, +@@ -596,4 +596,5 @@ BASE_FEATURE(kDisallowRasterInterfaceWithoutSkiaBackend, // Please keep features in alphabetical order. @@ -1637,7 +1637,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 -@@ -1506,4 +1506,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1521,4 +1521,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1646,7 +1646,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 -@@ -357,6 +357,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -359,6 +359,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -1992,7 +1992,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 -@@ -1830,5 +1830,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1843,5 +1843,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2002,7 +2002,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 -@@ -570,5 +570,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -569,5 +569,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2012,7 +2012,7 @@ 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 -@@ -779,4 +779,5 @@ BASE_FEATURE(kRestrictAbusePortsOnLocalhost, +@@ -784,4 +784,5 @@ BASE_FEATURE(kRestrictAbusePortsOnLocalhost, "RestrictAbusePortsOnLocalhost", base::FEATURE_DISABLED_BY_DEFAULT); @@ -2032,18 +2032,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 -@@ -614,4 +614,5 @@ BASE_FEATURE(kDeviceBoundSessionAccessObserverSharedRemote, - - BASE_FEATURE(kCSPScriptSrcV2, "ScriptSrcV2", base::FEATURE_DISABLED_BY_DEFAULT); +@@ -617,4 +617,5 @@ BASE_FEATURE_PARAM(size_t, + /*name=*/"max_size", + 1'000'000); +#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 -@@ -329,6 +329,7 @@ BASE_DECLARE_FEATURE(kDeviceBoundSessionAccessObserverSharedRemote); +@@ -340,6 +340,7 @@ BASE_DECLARE_FEATURE_PARAM(size_t, kSharedDictionaryCacheSize); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) - BASE_DECLARE_FEATURE(kCSPScriptSrcV2); + BASE_DECLARE_FEATURE_PARAM(size_t, kSharedDictionaryCacheMaxSizeBytes); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace network::features @@ -2052,7 +2052,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 -@@ -2931,4 +2931,5 @@ bool IsLinkPreviewTriggerTypeEnabled(LinkPreviewTriggerType type) { +@@ -2912,4 +2912,5 @@ bool IsLinkPreviewTriggerTypeEnabled(LinkPreviewTriggerType type) { // // DO NOT ADD NEW FEATURES HERE. @@ -2061,7 +2061,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 -@@ -1910,6 +1910,7 @@ BLINK_COMMON_EXPORT bool IsUpdateComplexSafaAreaConstraintsEnabled(); +@@ -1896,6 +1896,7 @@ BLINK_COMMON_EXPORT bool IsUpdateComplexSafaAreaConstraintsEnabled(); // // DO NOT ADD NEW FEATURES HERE. @@ -2072,18 +2072,18 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc -@@ -472,4 +472,5 @@ BASE_FEATURE(kClipboardChangeEvent, - "ClipboardChangeEvent", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -506,4 +506,5 @@ bool IsPixelCanvasRecordingEnabled() { + return base::FeatureList::IsEnabled(features::kEnablePixelCanvasRecording); + } +#include "cromite_flags/ui_base_features_cc.inc" } // namespace features diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h -@@ -240,6 +240,7 @@ BASE_DECLARE_FEATURE(kAsyncFullscreenWindowState); - COMPONENT_EXPORT(UI_BASE_FEATURES) - BASE_DECLARE_FEATURE(kClipboardChangeEvent); +@@ -252,6 +252,7 @@ BASE_DECLARE_FEATURE(kEnablePixelCanvasRecording); + + bool COMPONENT_EXPORT(UI_BASE_FEATURES) IsPixelCanvasRecordingEnabled(); +#include "cromite_flags/ui_base_features_h.inc" } // namespace features diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 0032d282..886e7f4b 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -65,6 +65,9 @@ import java.lang.annotation.Retention; +@@ -61,6 +61,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. -@@ -306,6 +309,9 @@ public class LaunchIntentDispatcher { +@@ -263,6 +266,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() = " -@@ -334,6 +340,10 @@ public class LaunchIntentDispatcher { +@@ -291,6 +297,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()); -@@ -530,6 +540,17 @@ public class LaunchIntentDispatcher { +@@ -483,6 +493,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -109,7 +109,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -1204,7 +1204,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1257,7 +1257,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() ? CustomTabProfileType.INCOGNITO @@ -123,7 +123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java -@@ -979,6 +979,7 @@ public class CustomTabsConnection { +@@ -968,6 +968,7 @@ public class CustomTabsConnection { PostTask.postTask( TaskTraits.UI_DEFAULT, () -> { @@ -144,7 +144,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco /** * A model class that parses the incoming intent for incognito Custom Tabs specific customization * data. -@@ -118,6 +121,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD +@@ -121,6 +124,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD } private static boolean isIntentFromThirdPartyAllowed() { @@ -154,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled(); } -@@ -217,6 +223,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD +@@ -220,6 +226,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD } public static boolean isValidIncognitoIntent(Intent intent, boolean recordMetrics) { @@ -165,7 +165,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco if (!isIncognitoRequested(intent)) return false; var session = SessionHolder.getSessionHolderFromIntent(intent); if (isIntentFromThirdPartyAllowed() -@@ -326,6 +336,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD +@@ -329,6 +339,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD @Override public @CustomTabProfileType int getCustomTabMode() { @@ -179,7 +179,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -79,6 +79,15 @@ import org.chromium.ui.text.SpanApplier; +@@ -80,6 +80,15 @@ import org.chromium.ui.text.SpanApplier; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import androidx.preference.PreferenceCategory; import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.base.shared_preferences.SharedPreferencesManager; -@@ -148,6 +157,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -149,6 +158,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment startTag, endTag, new ChromeClickableSpan(context, onClickCallback)); } @@ -203,9 +203,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting + private ChromeSwitchPreference openExternalLinksPref; + @Override - public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) { + public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); -@@ -379,6 +391,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -376,6 +388,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -215,7 +215,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -399,6 +414,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -396,6 +411,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -247,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -431,6 +471,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -428,6 +468,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -267,7 +267,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -956,7 +956,7 @@ BASE_FEATURE(kMagicStackAndroid, +@@ -1017,7 +1017,7 @@ BASE_FEATURE(kMagicStackAndroid, // Enables an experimental feature which forces mayLaunchUrl to use a different // storage partition. This may reduce performance. This should not be enabled by // default. @@ -279,8 +279,8 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -773,6 +773,8 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, false); +@@ -824,6 +824,8 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sMiniOriginBar = newCachedFlag(MINI_ORIGIN_BAR, false, true); public static final CachedFlag sMostVisitedTilesCustomization = newCachedFlag(MOST_VISITED_TILES_CUSTOMIZATION, false); + public static final CachedFlag sMayLaunchurlUsesSeparateStoragePartition = @@ -288,14 +288,14 @@ 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 = -@@ -925,6 +927,7 @@ public abstract class ChromeFeatureList { +@@ -1012,6 +1014,7 @@ public abstract class ChromeFeatureList { sMagicStackAndroid, sMiniOriginBar, sMostVisitedTilesCustomization, + sMayLaunchurlUsesSeparateStoragePartition, sMostVisitedTilesReselect, sMultiInstanceApplicationStatusCleanup, - sNavBarColorAnimation, + sMvcUpdateViewWhenModelChanged, diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index f82f333e..f8007a65 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re 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 -@@ -323,6 +323,8 @@ import java.util.Map; +@@ -326,6 +326,8 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; @@ -48,19 +48,19 @@ 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. -@@ -3283,6 +3285,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3361,6 +3363,8 @@ public class ChromeTabbedActivity extends ChromeActivity { .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); + } else if (id == R.id.exit_id) { + ApplicationLifetime.terminate(false); } else if (id == R.id.close_all_tabs_menu_id) { - // Close both incognito and normal tabs. - Runnable closeAllTabsRunnable = + boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -59,6 +59,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; +@@ -60,6 +60,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ActivityUtils; @@ -68,7 +68,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; -@@ -2406,6 +2407,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2419,6 +2420,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return true; } @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife 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 -@@ -4420,6 +4420,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4436,6 +4436,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 3d1ef6c2..11ef9097 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -26,7 +26,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -545,6 +546,15 @@ AutocompleteController::AutocompleteController( +@@ -565,6 +566,15 @@ AutocompleteController::AutocompleteController( provider_client_->GetOmniboxTriggeredFeatureService()), steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION) { @@ -45,7 +45,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc --- a/components/omnibox/browser/history_url_provider.cc +++ b/components/omnibox/browser/history_url_provider.cc -@@ -489,6 +489,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, +@@ -488,6 +488,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY) matches_.push_back(what_you_typed_match); @@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ #include "base/functional/callback.h" #include "base/i18n/break_iterator.h" #include "base/i18n/case_conversion.h" -@@ -629,6 +630,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -628,6 +629,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index 498f708b..a72f0690 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,7 +45,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1138,6 +1138,7 @@ component("net") { +@@ -1145,6 +1145,7 @@ component("net") { ":net_deps", "//components/miracle_parameter/common", "//components/network_time/time_tracker", @@ -56,7 +56,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -116,6 +116,7 @@ +@@ -115,6 +115,7 @@ #include "net/log/net_log_event_type.h" #include "net/log/net_log_source.h" #include "net/log/net_log_source_type.h" @@ -64,7 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" -@@ -1490,6 +1491,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1489,6 +1490,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( return OK; } diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index eb938508..e6a86663 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java -@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; +@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.init.ChromeActivityNativeDelegate; -@@ -127,6 +128,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { +@@ -126,6 +127,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { @Override public boolean shouldDisableAllExternalIntents() { @@ -141,17 +141,17 @@ new file mode 100644 diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc --- a/components/external_intents/android/external_intents_features.cc +++ b/components/external_intents/android/external_intents_features.cc -@@ -27,7 +27,6 @@ namespace { - const base::Feature* const kFeaturesExposedToJava[] = { - &kExternalNavigationDebugLogs, &kBlockFrameRenavigations, - &kBlockIntentsToSelf}; +@@ -28,7 +28,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kExternalNavigationDebugLogs, &kBlockIntentsToSelf, + &kNavigationCaptureRefactorAndroid, &kAuxiliaryNavigationStaysInBrowser, + &kReparentTopLevelNavigationFromPWA, &kReparentAuxiliaryNavigationFromPWA}; - } // namespace // Alphabetical: -@@ -44,7 +43,13 @@ BASE_FEATURE(kBlockIntentsToSelf, - "BlockIntentsToSelf", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -57,7 +56,13 @@ BASE_FEATURE(kReparentAuxiliaryNavigationFromPWA, + "ReparentAuxiliaryNavigationFromPWA", + base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture, + "IntentBlockExternalFormRedirectsNoGesture", @@ -177,23 +177,23 @@ diff --git a/components/external_intents/android/external_intents_features.h b/c diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java -@@ -20,6 +20,12 @@ import org.chromium.build.annotations.NullMarked; +@@ -19,6 +19,12 @@ import org.chromium.build.annotations.NullMarked; @JNINamespace("external_intents") @NullMarked - public class ExternalIntentsFeatures extends Features { + public class ExternalIntentsFeatures { + public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME = + "IntentBlockExternalFormRedirectsNoGesture"; + -+ public static final ExternalIntentsFeatures INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE = -+ new ExternalIntentsFeatures(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME); ++ public static final ExternalIntentsFeature INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE = ++ new ExternalIntentsFeature(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME); + public static final String EXTERNAL_NAVIGATION_DEBUG_LOGS_NAME = "ExternalNavigationDebugLogs"; - public static final String BLOCK_FRAME_RENAVIGATIONS_NAME = "BlockFrameRenavigations3"; public static final String BLOCK_INTENTS_TO_SELF_NAME = "BlockIntentsToSelf"; + public static final String NAVIGATION_CAPTURE_REFACTOR_ANDROID_NAME = 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 -@@ -1537,6 +1537,12 @@ public class ExternalNavigationHandler { +@@ -1560,6 +1560,12 @@ public class ExternalNavigationHandler { || ignoreBackForwardNav(params); } @@ -206,7 +206,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1593,6 +1599,21 @@ public class ExternalNavigationHandler { +@@ -1617,6 +1623,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 e63ab7d0..683ffdb2 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -943,6 +943,10 @@ +@@ -987,6 +987,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 70a0f9ec..45abbddc 100644 --- a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +++ b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch @@ -14,16 +14,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -634,7 +634,7 @@ config("compiler") { - - # TODO(crbug.com/413427035): Remove once - # https://github.com/llvm/llvm-project/pull/136867/ is landed. -- if (!is_win && !llvm_android_mainline && -+ if (!is_win && !llvm_android_mainline && !skip_clangd_unsupported_options && +@@ -640,7 +640,7 @@ config("compiler") { + # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF + # (excluding toolchains that use an older version of LLVM). + # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds. +- if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" && ++ if (is_linux && !skip_clangd_unsupported_options && use_lld && !llvm_android_mainline && current_cpu != "arm" && default_toolchain != "//build/toolchain/cros:target") { - cflags += [ "-fextend-variable-liveness=none" ] + cflags += [ "-Wa,--crel,--allow-experimental-crel" ] } -@@ -1728,7 +1728,7 @@ config("clang_revision") { +@@ -1784,7 +1784,7 @@ config("clang_revision") { config("clang_warning_suppression") { # Some build configs use older versions of clang that don't support WSMs if (!is_nacl && default_toolchain != "//build/toolchain/cros:target" && @@ -32,7 +32,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn clang_warning_suppression_file != "") { from_build_root = rebase_path(clang_warning_suppression_file, root_build_dir) -@@ -2065,7 +2065,6 @@ config("default_warnings") { +@@ -2146,7 +2146,6 @@ config("default_warnings") { # TODO(crbug.com/376641662): Fix and re-enable. "-Wno-nontrivial-memcall", ] @@ -40,7 +40,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags_cc += [ # TODO(crbug.com/328490295): Fix and re-enable for C flags. "-Wenum-compare-conditional", -@@ -2104,6 +2103,15 @@ config("default_warnings") { +@@ -2187,6 +2186,15 @@ config("default_warnings") { ] } diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 3c65e990..6b0c81de 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -80,17 +80,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permission_prompt_android.cc | 8 +- .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ - .../geolocation_permission_context_android.cc | 34 ++++++-- - .../geolocation_permission_context_android.h | 13 ++- + .../geolocation_permission_context_android.cc | 32 ++++++-- + .../geolocation_permission_context_android.h | 11 ++- .../embedded_permission_prompt_flow_model.cc | 2 +- - .../permissions/permission_context_base.cc | 52 ++++++++++-- - .../permissions/permission_context_base.h | 23 +++++- + .../permissions/permission_context_base.cc | 49 +++++++++-- + .../permissions/permission_context_base.h | 20 ++++- components/permissions/permission_prompt.h | 3 +- - components/permissions/permission_request.cc | 30 ++++++- - components/permissions/permission_request.h | 16 +++- + components/permissions/permission_request.cc | 32 +++++++- + components/permissions/permission_request.h | 18 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 38 files changed, 493 insertions(+), 71 deletions(-) + 38 files changed, 487 insertions(+), 71 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 @@ -256,7 +256,7 @@ diff --git a/chrome/browser/ui/views/permissions/exclusive_access_permission_pro diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc -@@ -281,7 +281,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { +@@ -297,7 +297,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { delegate_->Accept(); return; case PermissionDialogButton::kAcceptOnce: @@ -264,18 +264,18 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v + delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME); return; case PermissionDialogButton::kDeny: - delegate_->Deny(); + #if BUILDFLAG(IS_CHROMEOS) diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -@@ -10,6 +10,7 @@ import org.chromium.components.content_settings.ContentSettingValues; - import org.chromium.components.content_settings.ContentSettingsType; - import org.chromium.components.content_settings.SessionModel; +@@ -12,6 +12,7 @@ import org.chromium.components.content_settings.SessionModel; + import org.chromium.components.permissions.PermissionsAndroidFeatureList; + import org.chromium.components.permissions.PermissionsAndroidFeatureMap; import org.chromium.content_public.browser.BrowserContextHandle; +import org.chromium.components.content_settings.SessionModel; import java.io.Serializable; - + import java.util.Objects; diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java @@ -291,7 +291,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(); -@@ -1286,6 +1291,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1290,6 +1295,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } @@ -317,7 +317,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -643,6 +643,11 @@ +@@ -637,6 +637,11 @@ URL truncated @@ -398,7 +398,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/content_settings_utils.h b/components/content_settings/core/browser/content_settings_utils.h --- a/components/content_settings/core/browser/content_settings_utils.h +++ b/components/content_settings/core/browser/content_settings_utils.h -@@ -74,6 +74,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); +@@ -73,6 +73,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); // Returns whether the given type supports tracking last_visit timestamps. bool CanTrackLastVisit(ContentSettingsType type); @@ -532,7 +532,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 -@@ -1220,6 +1220,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1234,6 +1234,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); @@ -544,7 +544,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h --- a/components/page_info/page_info.h +++ b/components/page_info/page_info.h -@@ -149,6 +149,7 @@ class PageInfo : private content_settings::CookieControlsObserver, +@@ -150,6 +150,7 @@ class PageInfo : private content_settings::CookieControlsObserver, content_settings::SettingSource::kNone; // Whether the permission is a one-time grant. bool is_one_time = false; @@ -555,15 +555,15 @@ diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java -@@ -15,6 +15,7 @@ import org.jni_zero.NativeMethods; - import org.chromium.build.annotations.NullMarked; +@@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; + import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.ui.base.WindowAndroid; +import org.chromium.components.content_settings.LifetimeMode; import java.util.ArrayList; - import java.util.List; -@@ -66,6 +67,9 @@ public class PermissionDialogDelegate { + import java.util.Arrays; +@@ -72,6 +73,9 @@ public class PermissionDialogDelegate { // Prompt(screen) variant we want to display on the dialog. private @EmbeddedPromptVariant int mEmbeddedPromptVariant; @@ -573,7 +573,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** * Defines a (potentially empty) list of ranges represented as pairs of , * which shall be used by the UI to format the specified ranges as bold text. -@@ -135,6 +139,15 @@ public class PermissionDialogDelegate { +@@ -145,6 +149,15 @@ public class PermissionDialogDelegate { .acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this); } @@ -691,7 +691,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc -@@ -117,7 +117,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { +@@ -119,7 +119,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { delegate()->FinalizeCurrentRequests(); } @@ -716,7 +716,7 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -137,6 +137,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { +@@ -139,6 +139,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { static_cast(permission_prompt_->GetEmbeddedPromptVariant())); } @@ -728,7 +728,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static std::unique_ptr PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -166,6 +171,13 @@ PermissionDialogDelegate::CreateForTesting( +@@ -168,6 +173,13 @@ PermissionDialogDelegate::CreateForTesting( void PermissionDialogDelegate::Accept(JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); @@ -742,7 +742,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } -@@ -173,7 +185,10 @@ void PermissionDialogDelegate::AcceptThisTime( +@@ -175,7 +187,10 @@ void PermissionDialogDelegate::AcceptThisTime( JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); @@ -754,7 +754,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ } void PermissionDialogDelegate::Acknowledge(JNIEnv* env, -@@ -185,6 +200,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env, +@@ -187,6 +202,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env, void PermissionDialogDelegate::Deny(JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); @@ -782,7 +782,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -76,8 +76,12 @@ void PermissionPromptAndroid::Accept() { +@@ -83,8 +83,12 @@ void PermissionPromptAndroid::Accept() { delegate_->Accept(); } @@ -800,7 +800,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h --- a/components/permissions/android/permission_prompt/permission_prompt_android.h +++ b/components/permissions/android/permission_prompt/permission_prompt_android.h -@@ -54,9 +54,10 @@ class PermissionPromptAndroid : public PermissionPrompt { +@@ -55,9 +55,10 @@ class PermissionPromptAndroid : public PermissionPrompt { const; virtual void Closing(); virtual void Accept(); @@ -842,30 +842,28 @@ 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 -@@ -168,7 +168,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -193,7 +193,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( bool is_one_time, bool is_final_decision) { DCHECK(is_final_decision); -+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, ++ NotifyPermissionSetWithLifetime(request_data, + std::move(callback), persist, content_setting, is_one_time, is_final_decision, + content_settings::mojom::LifetimeMode::ALWAYS); +} +void GeolocationPermissionContextAndroid::NotifyPermissionSetWithLifetime( -+ const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, ++ const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, + bool is_one_time, bool is_final_decision, + content_settings::mojom::LifetimeMode lifetime_option) { - bool is_default_search = IsRequestingOriginDSE(requesting_origin); + bool is_default_search = + IsRequestingOriginDSE(request_data.requesting_origin); if (content_setting == CONTENT_SETTING_ALLOW && - !location_settings_->IsSystemLocationSettingEnabled()) { -@@ -181,7 +194,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( - if (IsInLocationSettingsBackOff(is_default_search)) { - FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, +@@ -208,7 +219,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( + FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, + request_data.embedding_origin, std::move(callback), false /* persist */, - CONTENT_SETTING_BLOCK, is_one_time); + CONTENT_SETTING_BLOCK, @@ -873,9 +871,9 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr return; } -@@ -199,7 +213,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( - !location_settings_dialog_callback_.is_null()) { - FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, +@@ -228,7 +240,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( + FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, + request_data.embedding_origin, std::move(callback), false /* persist */, - CONTENT_SETTING_BLOCK, is_one_time); + CONTENT_SETTING_BLOCK, @@ -883,23 +881,23 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr return; } -@@ -211,13 +226,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( - base::BindOnce( +@@ -241,13 +254,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, - weak_factory_.GetWeakPtr(), requesting_origin, embedding_origin, -- persist, content_setting, is_one_time)); -+ persist, content_setting, is_one_time, lifetime_option)); + weak_factory_.GetWeakPtr(), request_data.requesting_origin, + request_data.embedding_origin, persist, content_setting, +- is_one_time)); ++ is_one_time, lifetime_option)); return; } - FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, - std::move(callback), persist, content_setting, -- is_one_time); -+ is_one_time, lifetime_option); + FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, + request_data.embedding_origin, std::move(callback), +- persist, content_setting, is_one_time); ++ persist, content_setting, is_one_time, lifetime_option); } content::PermissionResult -@@ -390,7 +405,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -425,7 +438,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& embedding_origin, bool persist, ContentSetting content_setting, @@ -908,7 +906,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (prompt_outcome == GRANTED) { -@@ -409,7 +424,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -444,7 +457,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( FinishNotifyPermissionSet(location_settings_dialog_request_id_, requesting_origin, embedding_origin, std::move(location_settings_dialog_callback_), @@ -918,7 +916,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -423,10 +439,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -458,8 +472,8 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( BrowserPermissionCallback callback, bool persist, ContentSetting content_setting, @@ -926,22 +924,26 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr - GeolocationPermissionContext::NotifyPermissionSet( + bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { + GeolocationPermissionContext::NotifyPermissionSetWithLifetime( - id, requesting_origin, embedding_origin, std::move(callback), persist, -- content_setting, is_one_time, /*is_final_decision=*/true); -+ content_setting, is_one_time, /*is_final_decision=*/true, lifetime_option); + PermissionRequestData(this, id, + content::PermissionRequestDescription( + content::PermissionDescriptorUtil:: +@@ -467,7 +481,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( + blink::PermissionType::GEOLOCATION)), + requesting_origin), + std::move(callback), persist, content_setting, is_one_time, +- /*is_final_decision=*/true); ++ /*is_final_decision=*/true, lifetime_option); } void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting( diff --git a/components/permissions/contexts/geolocation_permission_context_android.h b/components/permissions/contexts/geolocation_permission_context_android.h --- a/components/permissions/contexts/geolocation_permission_context_android.h +++ b/components/permissions/contexts/geolocation_permission_context_android.h -@@ -89,6 +89,15 @@ class GeolocationPermissionContextAndroid +@@ -93,6 +93,13 @@ class GeolocationPermissionContextAndroid ContentSetting content_setting, bool is_one_time, bool is_final_decision) override; -+ void NotifyPermissionSetWithLifetime(const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, ++ void NotifyPermissionSetWithLifetime(const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, @@ -951,7 +953,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr content::PermissionResult UpdatePermissionStatusWithDeviceStatus( content::WebContents* web_contents, content::PermissionResult result, -@@ -134,6 +143,7 @@ class GeolocationPermissionContextAndroid +@@ -138,6 +145,7 @@ class GeolocationPermissionContextAndroid bool persist, ContentSetting content_setting, bool is_one_time, @@ -959,7 +961,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr LocationSettingsDialogOutcome prompt_outcome); void FinishNotifyPermissionSet(const PermissionRequestID& id, -@@ -142,7 +152,8 @@ class GeolocationPermissionContextAndroid +@@ -146,7 +154,8 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, ContentSetting content_setting, @@ -984,67 +986,64 @@ 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 -@@ -271,6 +271,17 @@ GURL PermissionContextBase::GetEffectiveEmbedderOrigin( - return PermissionUtil::GetLastCommittedOriginAsURL(rfh->GetMainFrame()); +@@ -253,6 +253,17 @@ PermissionContextBase::CreatePermissionRequest( + std::move(request_finished_callback), UsesAutomaticEmbargo()); } +std::unique_ptr +PermissionContextBase::CreatePermissionRequest( + content::WebContents* web_contents, -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) const { ++ base::OnceClosure request_finished_callback) const { + return std::make_unique( + std::move(request_data), std::move(permission_decided_callback), -+ std::move(delete_callback)); ++ std::move(request_finished_callback), UsesAutomaticEmbargo()); +} + - content::PermissionResult PermissionContextBase::GetPermissionStatus( - content::RenderFrameHost* render_frame_host, - const GURL& requesting_origin, -@@ -530,7 +541,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, - const GURL& embedding_origin, - ContentSetting content_setting, - bool is_one_time, -- bool is_final_decision) { -+ bool is_final_decision, -+ content_settings::mojom::LifetimeMode lifetime_option) { + bool PermissionContextBase::UsesAutomaticEmbargo() const { + return true; + } +@@ -540,7 +551,8 @@ void PermissionContextBase::PermissionDecided( + ContentSetting content_setting, + bool is_one_time, + bool is_final_decision, +- const PermissionRequestData& request_data) { ++ const PermissionRequestData& request_data, ++ content_settings::mojom::LifetimeMode lifetime_option) { DCHECK(content_setting == CONTENT_SETTING_ALLOW || content_setting == CONTENT_SETTING_BLOCK || content_setting == CONTENT_SETTING_DEFAULT); -@@ -545,13 +557,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, +@@ -556,12 +568,13 @@ void PermissionContextBase::PermissionDecided( // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { -- NotifyPermissionSet(id, requesting_origin, embedding_origin, -+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, - std::move(request->second.second), persist, -- content_setting, is_one_time, is_final_decision); -+ content_setting, is_one_time, is_final_decision, +- NotifyPermissionSet(request_data, std::move(request->second.second), ++ NotifyPermissionSetWithLifetime(request_data, std::move(request->second.second), + persist, content_setting, is_one_time, +- is_final_decision); ++ is_final_decision, + lifetime_option); } else { -- NotifyPermissionSet(id, requesting_origin, embedding_origin, -+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, - base::DoNothing(), persist, content_setting, -- is_one_time, is_final_decision); -+ is_one_time, is_final_decision, lifetime_option); +- NotifyPermissionSet(request_data, base::DoNothing(), persist, +- content_setting, is_one_time, is_final_decision); ++ NotifyPermissionSetWithLifetime(request_data, base::DoNothing(), persist, ++ content_setting, is_one_time, is_final_decision, lifetime_option); } } -@@ -632,11 +645,27 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -652,10 +665,24 @@ void PermissionContextBase::NotifyPermissionSet( ContentSetting content_setting, bool is_one_time, bool is_final_decision) { + DCHECK(is_one_time == false); -+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, std::move(callback), ++ NotifyPermissionSetWithLifetime(request_data, std::move(callback), + persist, content_setting, is_one_time, is_final_decision, + content_settings::mojom::LifetimeMode::ALWAYS); +} + +void PermissionContextBase::NotifyPermissionSetWithLifetime( -+ const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, ++ const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, @@ -1054,29 +1053,27 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (persist) { - UpdateContentSetting(requesting_origin, embedding_origin, content_setting, -- is_one_time); -+ is_one_time, lifetime_option); +- UpdateContentSetting(request_data, content_setting, is_one_time); ++ UpdateContentSetting(request_data, content_setting, is_one_time, lifetime_option); } if (is_final_decision) { -@@ -677,6 +706,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, - const GURL& embedding_origin, - ContentSetting content_setting, - bool is_one_time) { -+ UpdateContentSetting(requesting_origin, embedding_origin, content_setting, +@@ -696,6 +723,14 @@ void PermissionContextBase::UpdateContentSetting( + const PermissionRequestData& request_data, + ContentSetting content_setting, + bool is_one_time) { ++ UpdateContentSetting(request_data, content_setting, + is_one_time, content_settings::mojom::LifetimeMode::ALWAYS); +} + -+void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, -+ const GURL& embedding_origin, ++void PermissionContextBase::UpdateContentSetting(const PermissionRequestData& request_data, + ContentSetting content_setting, + bool is_one_time, + content_settings::mojom::LifetimeMode lifetime_option) { - DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); - DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); - DCHECK(content_setting == CONTENT_SETTING_ALLOW || -@@ -686,6 +724,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, + DCHECK_EQ(request_data.requesting_origin, + request_data.requesting_origin.DeprecatedGetOriginAsURL()); + DCHECK_EQ(request_data.embedding_origin, +@@ -707,6 +742,8 @@ void PermissionContextBase::UpdateContentSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1088,53 +1085,50 @@ 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 -@@ -169,6 +169,15 @@ class PermissionContextBase : public content_settings::Observer { +@@ -188,6 +188,13 @@ class PermissionContextBase : public content_settings::Observer { // Updates stored content setting if persist is set, updates tab indicators // and runs the callback to finish the request. -+ virtual void NotifyPermissionSetWithLifetime(const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, -+ BrowserPermissionCallback callback, -+ bool persist, -+ ContentSetting content_setting, -+ bool is_one_time, -+ bool is_final_decision, -+ content_settings::mojom::LifetimeMode lifetime_option); - virtual void NotifyPermissionSet(const PermissionRequestID& id, - const GURL& requesting_origin, - const GURL& embedding_origin, -@@ -190,6 +199,11 @@ class PermissionContextBase : public content_settings::Observer { ++ virtual void NotifyPermissionSetWithLifetime(const PermissionRequestData& request_data, ++ BrowserPermissionCallback callback, ++ bool persist, ++ ContentSetting content_setting, ++ bool is_one_time, ++ bool is_final_decision, ++ content_settings::mojom::LifetimeMode lifetime_option); + virtual void NotifyPermissionSet(const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, +@@ -207,6 +214,10 @@ class PermissionContextBase : public content_settings::Observer { // Store the decided permission as a content setting. // virtual since the permission might be stored with different restrictions // (for example for desktop notifications). -+ void UpdateContentSetting(const GURL& requesting_origin, -+ const GURL& embedding_origin, -+ ContentSetting content_setting, -+ bool is_one_time, -+ content_settings::mojom::LifetimeMode lifetime_option); - virtual void UpdateContentSetting(const GURL& requesting_origin, - const GURL& embedding_origin, ++ void UpdateContentSetting(const PermissionRequestData& request_data, ++ ContentSetting content_setting, ++ bool is_one_time, ++ content_settings::mojom::LifetimeMode lifetime_option); + virtual void UpdateContentSetting(const PermissionRequestData& request_data, ContentSetting content_setting, -@@ -220,6 +234,12 @@ class PermissionContextBase : public content_settings::Observer { + bool is_one_time); +@@ -236,6 +247,12 @@ class PermissionContextBase : public content_settings::Observer { PermissionRequest::PermissionDecidedCallback permission_decided_callback, - base::OnceClosure delete_callback) const; + base::OnceClosure request_finished_callback) const; + virtual std::unique_ptr CreatePermissionRequest( + content::WebContents* web_contents, -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) const; ++ base::OnceClosure request_finished_callback) const; + // Implementors can override this method to avoid using automatic embargo. virtual bool UsesAutomaticEmbargo() const; -@@ -256,7 +276,8 @@ class PermissionContextBase : public content_settings::Observer { - const GURL& embedding_origin, - ContentSetting content_setting, +@@ -270,7 +287,8 @@ class PermissionContextBase : public content_settings::Observer { + void PermissionDecided(ContentSetting content_setting, bool is_one_time, -- bool is_final_decision); -+ bool is_final_decision, + bool is_final_decision, +- const PermissionRequestData& request_data); ++ const PermissionRequestData& request_data, + content_settings::mojom::LifetimeMode lifetime_option); void NotifyObservers(const ContentSettingsPattern& primary_pattern, @@ -1156,22 +1150,24 @@ 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 -@@ -43,6 +43,14 @@ PermissionRequest::PermissionRequest( - delete_callback_(std::move(delete_callback)), +@@ -32,6 +32,16 @@ PermissionRequest::PermissionRequest( + request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} +PermissionRequest::PermissionRequest( -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) ++ base::OnceClosure request_finished_callback, ++ bool uses_automatic_embargo) + : data_(std::move(request_data)), + permission_decided_callback_withlifetime_(std::move(permission_decided_callback)), -+ delete_callback_(std::move(delete_callback)) {} ++ request_finished_callback_(std::move(request_finished_callback)), ++ uses_automatic_embargo_(uses_automatic_embargo) {} + PermissionRequest::~PermissionRequest() { - DCHECK(delete_callback_.is_null()); + std::move(request_finished_callback_).Run(); } -@@ -423,19 +431,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -412,19 +422,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1180,12 +1176,12 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio + content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_ALLOW, is_one_time, /*is_final_decision=*/true, lifetime_option); ++ .Run(CONTENT_SETTING_ALLOW, is_one_time, /*is_final_decision=*/true, *data_, lifetime_option); + return; + } std::move(permission_decided_callback_) .Run(CONTENT_SETTING_ALLOW, is_one_time, - /*is_final_decision=*/true); + /*is_final_decision=*/true, /*request_data=*/*data_); } -void PermissionRequest::PermissionDenied() { @@ -1193,51 +1189,53 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio + content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_BLOCK, is_one_time, /*is_final_decision=*/true, lifetime_option); ++ .Run(CONTENT_SETTING_BLOCK, is_one_time, /*is_final_decision=*/true, *data_, lifetime_option); + return; + } std::move(permission_decided_callback_) .Run(CONTENT_SETTING_BLOCK, /*is_one_time=*/false, - /*is_final_decision=*/true); + /*is_final_decision=*/true, /*request_data=*/*data_); } void PermissionRequest::Cancelled(bool is_final_decision) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_DEFAULT, false, is_final_decision, ++ .Run(CONTENT_SETTING_DEFAULT, false, is_final_decision, *data_, + content_settings::mojom::LifetimeMode::ALWAYS); + return; + } if (permission_decided_callback_) { permission_decided_callback_.Run(CONTENT_SETTING_DEFAULT, - /*is_one_time=*/false, is_final_decision); + /*is_one_time=*/false, is_final_decision, diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h -@@ -44,6 +44,11 @@ class PermissionRequest { - bool /*is_one_time*/, - bool /*is_final_decision*/)>; +@@ -47,6 +47,12 @@ class PermissionRequest { + bool /*is_final_decision*/, + const PermissionRequestData& /*request_data*/)>; -+ using PermissionDecidedCallbackWithLifetime = -+ base::OnceCallback; ++ using PermissionDecidedCallbackWithLifetime = base::RepeatingCallback; + // `permission_decided_callback` is called when the permission request is // resolved by the user (see comment on PermissionDecidedCallback above). - // `delete_callback` is called when the permission request is no longer needed -@@ -64,6 +69,10 @@ class PermissionRequest { - base::OnceClosure delete_callback, - bool uses_automatic_embargo); + // `request_finished_callback` is called when the permission request is being +@@ -61,6 +67,11 @@ class PermissionRequest { + base::OnceClosure request_finished_callback = base::DoNothing(), + bool uses_automatic_embargo = true); -+ PermissionRequest(PermissionRequestData request_data, ++ PermissionRequest(std::unique_ptr request_data, + PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback); ++ base::OnceClosure request_finished_callback = base::DoNothing(), ++ bool uses_automatic_embargo = true); + PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -170,10 +179,10 @@ class PermissionRequest { +@@ -167,10 +178,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. @@ -1250,67 +1248,67 @@ 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 -@@ -235,6 +244,9 @@ class PermissionRequest { +@@ -224,6 +235,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; + // Called once a decision is made about the permission (with lifetime option). + PermissionDecidedCallbackWithLifetime permission_decided_callback_withlifetime_; + - // Called when the request is no longer in use so it can be deleted by the - // caller. - base::OnceClosure delete_callback_; + // Called when the request is finished to perform bookkeeping tasks. + base::OnceClosure request_finished_callback_; + 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 -@@ -173,7 +173,7 @@ void PermissionRequestManager::AddRequest( +@@ -189,7 +189,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { - request->PermissionDenied(); + request->PermissionDenied(/*is_one_time*/false, content_settings::mojom::LifetimeMode::ALWAYS); - request->RequestFinished(); return; } -@@ -248,7 +248,7 @@ void PermissionRequestManager::AddRequest( + +@@ -258,7 +258,7 @@ void PermissionRequestManager::AddRequest( if (should_auto_approve_request) { if (should_auto_approve_request == PermissionAction::GRANTED) { - request->PermissionGranted(/*is_one_time=*/true); + request->PermissionGranted(/*is_one_time=*/true, content_settings::mojom::LifetimeMode::UNTIL_ORIGIN_CLOSED); } - request->RequestFinished(); return; -@@ -611,7 +611,8 @@ void PermissionRequestManager::Accept() { + } +@@ -623,7 +623,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); - PermissionGrantedIncludingDuplicates(*requests_iter, + PermissionGrantedIncludingDuplicates(requests_iter->get(), - /*is_one_time=*/false); + /*is_one_time=*/false, + content_settings::mojom::LifetimeMode::ALWAYS); #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -629,7 +630,7 @@ void PermissionRequestManager::Accept() { +@@ -641,7 +642,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } -void PermissionRequestManager::AcceptThisTime() { +void PermissionRequestManager::AcceptThisTime(content_settings::mojom::LifetimeMode mode) { - if (ignore_callbacks_from_prompt_) + if (ignore_callbacks_from_prompt_) { return; - DCHECK(view_); -@@ -642,7 +643,8 @@ void PermissionRequestManager::AcceptThisTime() { + } +@@ -655,7 +656,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); - PermissionGrantedIncludingDuplicates(*requests_iter, + PermissionGrantedIncludingDuplicates(requests_iter->get(), - /*is_one_time=*/true); + /*is_one_time=*/true, + mode); } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -650,6 +652,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -663,6 +665,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1323,26 +1321,26 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p + +void PermissionRequestManager::Deny_(bool is_one_time, + content_settings::mojom::LifetimeMode lifetime_option) { - if (ignore_callbacks_from_prompt_) + if (ignore_callbacks_from_prompt_) { return; - DCHECK(view_); -@@ -672,7 +683,7 @@ void PermissionRequestManager::Deny() { + } +@@ -685,7 +696,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); -- PermissionDeniedIncludingDuplicates(*requests_iter); -+ PermissionDeniedIncludingDuplicates(*requests_iter, is_one_time, lifetime_option); +- PermissionDeniedIncludingDuplicates(requests_iter->get()); ++ PermissionDeniedIncludingDuplicates(requests_iter->get(), is_one_time, lifetime_option); } NotifyRequestDecided(PermissionAction::DENIED); -@@ -1271,32 +1282,32 @@ PermissionRequestManager::VisitDuplicateRequests( +@@ -1300,32 +1311,32 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, - bool is_one_time) { + bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { - DCHECK_EQ(1ul, std::ranges::count(requests_, request) + - pending_permission_requests_.Count(request)) + CHECK(RequestExistsExactlyOnce(request, pending_permission_requests_, + requests_)) << "Only requests in [pending_permission_]requests_ can have duplicates"; - request->PermissionGranted(is_one_time); + request->PermissionGranted(is_one_time, lifetime_option); @@ -1350,9 +1348,9 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p base::BindRepeating( - [](bool is_one_time, + [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, - const base::WeakPtr& weak_request) { -- weak_request->PermissionGranted(is_one_time); -+ weak_request->PermissionGranted(is_one_time, lifetime_option); + const std::unique_ptr& request) { +- request->PermissionGranted(is_one_time); ++ request->PermissionGranted(is_one_time, lifetime_option); }, - is_one_time), + is_one_time, lifetime_option), @@ -1362,23 +1360,23 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p void PermissionRequestManager::PermissionDeniedIncludingDuplicates( - PermissionRequest* request) { + PermissionRequest* request, bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option) { - DCHECK_EQ(1ul, std::ranges::count(requests_, request) + - pending_permission_requests_.Count(request)) + CHECK(RequestExistsExactlyOnce(request, pending_permission_requests_, + requests_)) << "Only requests in [pending_permission_]requests_ can have duplicates"; - request->PermissionDenied(); + request->PermissionDenied(is_one_time, lifetime_option); VisitDuplicateRequests( base::BindRepeating( -- [](const base::WeakPtr& weak_request) { -- weak_request->PermissionDenied(); +- [](const std::unique_ptr& request) { +- request->PermissionDenied(); - }), -+ [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, const base::WeakPtr& weak_request) { -+ weak_request->PermissionDenied(is_one_time, lifetime_option); ++ [](bool is_one_time, content_settings::mojom::LifetimeMode lifetime_option, const std::unique_ptr& request) { ++ request->PermissionDenied(is_one_time, lifetime_option); + }, is_one_time, lifetime_option), request); } -@@ -1566,7 +1577,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1596,7 +1607,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { } switch (auto_response_for_test_) { case ACCEPT_ONCE: @@ -1402,7 +1400,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -383,9 +385,12 @@ class PermissionRequestManager +@@ -394,9 +396,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 ce8c4274..c8fa1d95 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -18,19 +18,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmark_bar_strings.grdp | 6 +++ .../bookmarks/browser/bookmark_codec.cc | 20 +++++++-- components/bookmarks/browser/bookmark_codec.h | 7 ++- - .../browser/bookmark_load_details.cc | 14 ++++-- + .../browser/bookmark_load_details.cc | 15 +++++-- .../bookmarks/browser/bookmark_load_details.h | 2 + .../bookmarks/browser/bookmark_model.cc | 3 +- components/bookmarks/browser/bookmark_model.h | 7 +++ - components/bookmarks/browser/bookmark_node.cc | 11 +++++ - components/bookmarks/browser/bookmark_node.h | 3 ++ + components/bookmarks/browser/bookmark_node.cc | 13 ++++++ + components/bookmarks/browser/bookmark_node.h | 4 ++ .../bookmarks/browser/bookmark_storage.cc | 2 + .../bookmarks/browser/bookmark_uuids.cc | 3 ++ components/bookmarks/browser/bookmark_uuids.h | 1 + - components/bookmarks/browser/model_loader.cc | 8 +++- + components/bookmarks/browser/model_loader.cc | 9 +++- ...ookmark_model_merger_comparison_metrics.cc | 4 ++ .../bookmark_specifics_conversions.cc | 1 + - 26 files changed, 245 insertions(+), 14 deletions(-) + 26 files changed, 250 insertions(+), 14 deletions(-) diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml @@ -59,7 +59,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re 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 -@@ -102,6 +102,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane; +@@ -103,6 +103,7 @@ import org.chromium.chrome.browser.bookmarks.BookmarkPane; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.compositor.CompositorViewHolder; @@ -67,17 +67,17 @@ 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; -@@ -273,6 +274,9 @@ import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; +@@ -275,6 +276,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; + import org.chromium.chrome.browser.ui.extensions.ExtensionKeybindingRegistry; +import org.chromium.chrome.browser.ui.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; -@@ -282,6 +286,8 @@ import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController; +@@ -284,6 +288,8 @@ import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController; import org.chromium.chrome.browser.usage_stats.UsageStatsService; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; import org.chromium.chrome.browser.xr.XrLayoutStateObserver; @@ -86,16 +86,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.edge_to_edge.SystemBarColorHelper; import org.chromium.components.browser_ui.edge_to_edge.TabbedSystemBarColorHelper; -@@ -3316,6 +3322,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3394,6 +3400,8 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModelSelectorSupplier().get(), closeAllTabsRunnable); RecordUserAction.record("MobileMenuCloseAllTabs"); + } else if (id == R.id.bookmark_all_tabs_menu_id) { + bookmarkAllTabs(); } else if (id == R.id.close_all_incognito_tabs_menu_id) { - // Close only incognito tabs - Runnable closeAllTabsRunnable = -@@ -3418,6 +3426,41 @@ public class ChromeTabbedActivity extends ChromeActivity { + boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); + +@@ -3502,6 +3510,41 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus); } @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -326,6 +326,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { +@@ -390,6 +390,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { return bookmark_model_->account_mobile_node() != nullptr; } @@ -174,7 +174,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url) { -@@ -438,6 +465,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -502,6 +529,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -182,7 +182,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -546,6 +574,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -610,6 +638,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(other_node); } @@ -192,7 +192,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse const BookmarkNode* reading_list_node = local_or_syncable_reading_list_manager_->GetRoot(); if (IsPermanentFolderVisible( -@@ -1273,6 +1304,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1337,6 +1368,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -238,7 +238,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java -@@ -18,6 +18,7 @@ import org.jni_zero.JniType; +@@ -16,6 +16,7 @@ import org.jni_zero.JniType; import org.jni_zero.NativeMethods; import org.chromium.base.ContextUtils; @@ -254,15 +254,15 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.bookmarks.BookmarkType; -@@ -46,6 +48,7 @@ import java.util.function.BiConsumer; +@@ -47,6 +49,7 @@ import java.util.function.BiConsumer; class BookmarkBridge { - private static OneshotSupplierImpl + private static final OneshotSupplierImpl sPartnerBookmarkIteratorSupplier = new OneshotSupplierImpl<>(); + private static final String TAG = "BookmarkBridge"; private final ObserverList mObservers = new ObserverList<>(); private final Profile mProfile; -@@ -384,6 +387,16 @@ class BookmarkBridge { +@@ -385,6 +388,16 @@ class BookmarkBridge { return mMobileFolderId; } @@ -277,9 +277,9 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + } + /** Returns Id representing the special "other" folder from bookmark model. */ - public BookmarkId getOtherFolderId() { + public @Nullable BookmarkId getOtherFolderId() { ThreadUtils.assertOnUiThread(); -@@ -895,6 +908,29 @@ class BookmarkBridge { +@@ -898,6 +911,29 @@ class BookmarkBridge { .addToReadingList(mNativeBookmarkBridge, parentId, title, url); } @@ -309,7 +309,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Helper method to mark an item as read. * -@@ -1112,6 +1148,9 @@ class BookmarkBridge { +@@ -1115,6 +1151,9 @@ class BookmarkBridge { BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl( long nativeBookmarkBridge, @JniType("GURL") GURL url); @@ -319,7 +319,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type); void getTopLevelFolderIds( -@@ -1133,6 +1172,8 @@ class BookmarkBridge { +@@ -1136,6 +1175,8 @@ class BookmarkBridge { BookmarkId getRootFolderId(long nativeBookmarkBridge); @@ -331,7 +331,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc --- a/chrome/browser/bookmarks/bookmark_html_writer.cc +++ b/chrome/browser/bookmarks/bookmark_html_writer.cc -@@ -173,14 +173,15 @@ class Writer : public base::RefCountedThreadSafe { +@@ -169,14 +169,15 @@ class Writer : public base::RefCountedThreadSafe { BookmarkCodec codec; local_bookmarks_ = codec.Encode(model->bookmark_bar_node(), model->other_node(), @@ -349,7 +349,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b } else { CHECK(!model->account_other_node()); CHECK(!model->account_mobile_node()); -@@ -214,6 +215,9 @@ class Writer : public base::RefCountedThreadSafe { +@@ -210,6 +211,9 @@ class Writer : public base::RefCountedThreadSafe { base::Value::Dict* mobile_folder_value = local_permanent_folders->FindDict( BookmarkCodec::kMobileBookmarkFolderNameKey); CHECK(mobile_folder_value); @@ -359,7 +359,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b base::Value::Dict* account_permanent_folders = account_bookmarks_.FindDict(BookmarkCodec::kRootsKey); -@@ -289,6 +293,10 @@ class Writer : public base::RefCountedThreadSafe { +@@ -285,6 +289,10 @@ class Writer : public base::RefCountedThreadSafe { return bookmark_html_writer::Result::kCouldNotWriteNodes; } @@ -370,7 +370,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b DecrementIndent(); if (!Write(kFolderChildrenEnd) || !Write(kNewline)) { -@@ -435,6 +443,7 @@ class Writer : public base::RefCountedThreadSafe { +@@ -431,6 +439,7 @@ class Writer : public base::RefCountedThreadSafe { case BookmarkNode::URL: case BookmarkNode::OTHER_NODE: case BookmarkNode::MOBILE: @@ -378,7 +378,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b NOTREACHED(); } -@@ -563,6 +572,7 @@ void BookmarkFaviconFetcher::ExportBookmarks() { +@@ -559,6 +568,7 @@ void BookmarkFaviconFetcher::ExportBookmarks() { ExtractUrls(model->bookmark_bar_node()); ExtractUrls(model->other_node()); ExtractUrls(model->mobile_node()); @@ -440,7 +440,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 -@@ -4525,6 +4525,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4541,6 +4541,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs @@ -646,16 +646,17 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ void UpdateUserFolderStatsRecursively(const BookmarkNode& node, bool top_level, -@@ -60,6 +60,8 @@ BookmarkLoadDetails::BookmarkLoadDetails() - root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks(/*id=*/0))); +@@ -63,6 +63,9 @@ BookmarkLoadDetails::BookmarkLoadDetails() mobile_folder_node_ = static_cast( - root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(/*id=*/0))); + root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks( + /*id=*/0, /*is_account_node=*/false))); + tabs_collection_folder_node_ = static_cast( -+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(/*id=*/0))); ++ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks( ++ /*id=*/0, /*is_account_node=*/false))); - CHECK_EQ(kNumDefaultTopLevelPermanentFolders, root_node_->children().size()); - } -@@ -106,6 +108,10 @@ void BookmarkLoadDetails::PopulateNodeIdsForLocalOrSyncablePermanentNodes() { + // Set the nodes' `date_added` to the same time so that there is no inherent + // hierarchy in terms of their added time between them. This is relevant for +@@ -119,6 +122,10 @@ void BookmarkLoadDetails::PopulateNodeIdsForLocalOrSyncablePermanentNodes() { if (mobile_folder_node_->id() == 0) { mobile_folder_node_->set_id(max_id_++); } @@ -666,7 +667,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ } void BookmarkLoadDetails::AddManagedNode( -@@ -118,6 +124,7 @@ void BookmarkLoadDetails::AddManagedNode( +@@ -131,6 +138,7 @@ void BookmarkLoadDetails::AddManagedNode( CHECK_NE(bb_node_->id(), 0); CHECK_NE(other_folder_node_->id(), 0); CHECK_NE(mobile_folder_node_->id(), 0); @@ -674,7 +675,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ has_managed_node_ = true; root_node_->Add(std::move(managed_node)); -@@ -125,8 +132,8 @@ void BookmarkLoadDetails::AddManagedNode( +@@ -138,8 +146,8 @@ void BookmarkLoadDetails::AddManagedNode( void BookmarkLoadDetails::CreateIndices() { local_or_syncable_uuid_index_.insert(root_node_.get()); @@ -685,7 +686,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ for (const auto& child : root_node_->children()) { if (child.get() == account_bb_node_ || child.get() == account_other_folder_node_ || -@@ -145,6 +152,7 @@ void BookmarkLoadDetails::ResetPermanentNodePointers() { +@@ -158,6 +166,7 @@ void BookmarkLoadDetails::ResetPermanentNodePointers() { bb_node_ = nullptr; other_folder_node_ = nullptr; mobile_folder_node_ = nullptr; @@ -715,16 +716,16 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc -@@ -890,7 +890,7 @@ bool BookmarkModel::HasBookmarks() const { - bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return bookmark_bar_node_->children().empty() && -- other_node_->children().empty() && mobile_node_->children().empty(); -+ other_node_->children().empty() && mobile_node_->children().empty() && tabs_collection_node_->children().empty(); +@@ -908,7 +908,7 @@ bool BookmarkModel::HasUserCreatedBookmarksOrFolders() const { + (account_bookmark_bar_node_ && + !account_bookmark_bar_node_->children().empty()) || + (account_other_node_ && !account_other_node_->children().empty()) || +- (account_mobile_node_ && !account_mobile_node_->children().empty()); ++ (account_mobile_node_ && !account_mobile_node_->children().empty() && tabs_collection_node_->children().empty()); } bool BookmarkModel::IsBookmarked(const GURL& url) const { -@@ -1222,6 +1222,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { +@@ -1240,6 +1240,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { bookmark_bar_node_ = details->bb_node(); other_node_ = details->other_folder_node(); mobile_node_ = details->mobile_folder_node(); @@ -748,7 +749,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark bool is_root_node(const BookmarkNode* node) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return node == root_; -@@ -611,6 +617,7 @@ class BookmarkModel : public BookmarkUndoProvider, +@@ -628,6 +634,7 @@ class BookmarkModel : public BookmarkUndoProvider, raw_ptr account_bookmark_bar_node_ = nullptr; raw_ptr account_other_node_ = nullptr; raw_ptr account_mobile_node_ = nullptr; @@ -768,17 +769,19 @@ diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmark case BookmarkNode::URL: NOTREACHED(); case BookmarkNode::FOLDER: -@@ -211,6 +213,15 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) { - l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME))); +@@ -213,6 +215,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id, + is_account_node)); } +// static +std::unique_ptr -+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id) { ++BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id, ++ bool is_account_node) { + // base::WrapUnique() used because the constructor is private. + return base::WrapUnique(new BookmarkPermanentNode( + id, TABS_COLLECTION, base::Uuid::ParseLowercase(kTabsCollectionBookmarksNodeUuid), -+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME))); ++ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME), ++ is_account_node)); +} + BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, @@ -795,12 +798,13 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks MOBILE }; -@@ -247,6 +248,8 @@ class BookmarkPermanentNode : public BookmarkNode { - int64_t id); +@@ -249,6 +250,9 @@ class BookmarkPermanentNode : public BookmarkNode { static std::unique_ptr CreateMobileBookmarks( - int64_t id); + int64_t id, + bool is_account_node); + static std::unique_ptr CreateTabsCollectionBookmarks( -+ int64_t id); ++ int64_t id, ++ bool is_account_node); // Returns whether the permanent node of type `type` should be visible even // when it is empty (i.e. no children). @@ -850,16 +854,17 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc --- a/components/bookmarks/browser/model_loader.cc +++ b/components/bookmarks/browser/model_loader.cc -@@ -71,6 +71,8 @@ std::unique_ptr LoadBookmarks( - BookmarkPermanentNode::CreateOtherBookmarks(0); +@@ -74,6 +74,9 @@ std::unique_ptr LoadBookmarks( std::unique_ptr account_mobile_folder_node = - BookmarkPermanentNode::CreateMobileBookmarks(0); + BookmarkPermanentNode::CreateMobileBookmarks( + 0, /*is_account_node=*/true); + std::unique_ptr tabs_collection_folder_node = -+ BookmarkPermanentNode::CreateTabsCollectionBookmarks(0); ++ BookmarkPermanentNode::CreateTabsCollectionBookmarks( ++ 0, /*is_account_node=*/true); std::optional root_dict = LoadFileToDict(account_file_path); -@@ -78,7 +80,8 @@ std::unique_ptr LoadBookmarks( +@@ -81,7 +84,8 @@ std::unique_ptr LoadBookmarks( if (root_dict.has_value() && codec.Decode(*root_dict, /*already_assigned_ids=*/{}, account_bb_node.get(), account_other_folder_node.get(), @@ -869,7 +874,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks &sync_metadata_str)) { ids_assigned_to_account_nodes = codec.release_assigned_ids(); -@@ -120,7 +123,8 @@ std::unique_ptr LoadBookmarks( +@@ -123,7 +127,8 @@ std::unique_ptr LoadBookmarks( if (root_dict.has_value() && codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes), details->bb_node(), details->other_folder_node(), diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index f2af3d95..037d6ca1 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -9,15 +9,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ChromeTabbedActivity.java | 2 ++ .../chrome/browser/app/ChromeActivity.java | 5 +++++ .../appmenu/AppMenuPropertiesDelegateImpl.java | 17 +++++++++++++++++ - .../CustomTabAppMenuPropertiesDelegate.java | 1 + + .../CustomTabAppMenuPropertiesDelegate.java | 2 +- .../TabbedAppMenuPropertiesDelegate.java | 6 +++--- .../android/strings/android_chrome_strings.grd | 4 ++++ - 8 files changed, 38 insertions(+), 3 deletions(-) + 8 files changed, 38 insertions(+), 4 deletions(-) diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml --- a/chrome/android/java/res/menu/custom_tabs_menu.xml +++ b/chrome/android/java/res/menu/custom_tabs_menu.xml -@@ -69,6 +69,9 @@ found in the LICENSE file. +@@ -73,6 +73,9 @@ found in the LICENSE file. @@ -43,7 +43,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re 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 -@@ -3356,6 +3356,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3434,6 +3434,8 @@ public class ChromeTabbedActivity extends ChromeActivity { NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER); } RecordUserAction.record("MobileMenuDownloadManager"); @@ -55,7 +55,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 -@@ -2563,6 +2563,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2576,6 +2576,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return doOpenWebApk(currentTab); } @@ -70,7 +70,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 -@@ -862,6 +862,23 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -864,6 +864,23 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties } } @@ -97,18 +97,19 @@ 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 -@@ -320,6 +320,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat - +@@ -331,7 +331,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat + // --- Request Desktop Site --- updateRequestDesktopSiteMenuItem( menu, currentTab, requestDesktopSiteVisible, isNativePage); +- + updateViewSourceMenuItem(menu, currentTab); - prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible); - } - } + // --- Translate --- + prepareTranslateMenuItem(menu, currentTab); + 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 -@@ -133,7 +133,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -173,7 +173,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm if (menuGroup == MenuGroup.PAGE_MENU) { preparePageMenu(menu, currentTab, handler, isIncognito); } @@ -117,7 +118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab } private void setMenuGroupVisibility(@MenuGroup int menuGroup, Menu menu) { -@@ -296,7 +296,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -338,7 +338,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm isNativePage, isFileScheme, isContentScheme, isIncognito, url)); updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isNativePage); @@ -126,8 +127,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab updateAutoDarkMenuItem(menu, currentTab, isNativePage); // Only display reader mode settings menu option if the current page is in reader mode. -@@ -316,7 +316,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm - .setVisible(ChromeFeatureList.sNewTabPageCustomization.isEnabled()); +@@ -371,7 +371,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm + && UrlUtilities.isNtpUrl(currentTab.getUrl()); } - private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index b037b0d1..621f12aa 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 -@@ -403,7 +403,12 @@ class TabGridViewBinder { +@@ -457,7 +457,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) { -@@ -444,6 +449,7 @@ class TabGridViewBinder { +@@ -498,6 +503,7 @@ class TabGridViewBinder { */ private static void setFavicon( ImageView faviconView, PropertyModel model, TabListFaviconProvider.TabFavicon favicon) { @@ -40,7 +40,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java -@@ -81,6 +81,9 @@ public class TabProperties { +@@ -85,6 +85,9 @@ public class TabProperties { public static final WritableBooleanPropertyKey FAVICON_FETCHED = new WritableBooleanPropertyKey(); @@ -50,7 +50,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** Property for lazily fetching favicons when required by an item in a UI. */ public static final WritableObjectPropertyKey FAVICON_FETCHER = new WritableObjectPropertyKey<>(); -@@ -165,6 +168,7 @@ public class TabProperties { +@@ -174,6 +177,7 @@ public class TabProperties { CARD_TYPE, CONTENT_DESCRIPTION_TEXT_RESOLVER, ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER, @@ -58,7 +58,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser QUICK_DELETE_ANIMATION_STATUS, TAB_GROUP_COLOR_VIEW_PROVIDER, VISIBILITY, -@@ -204,6 +208,7 @@ public class TabProperties { +@@ -210,6 +214,7 @@ public class TabProperties { TAB_ACTION_BUTTON_DATA, FAVICON_FETCHED, FAVICON_FETCHER, @@ -84,7 +84,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -144,6 +144,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -145,6 +145,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory; import org.chromium.chrome.browser.printing.TabPrinter; @@ -92,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.profiles.ProfileProvider; -@@ -633,7 +634,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -637,7 +638,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -113,7 +113,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.build.annotations.Nullable; -@@ -97,12 +98,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -98,12 +99,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; -@@ -205,6 +220,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -206,6 +221,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } } @@ -163,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); // Record the launch of PG from the S&P link-row entry point privacyGuidePreference.setOnPreferenceClickListener( -@@ -435,6 +465,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -432,6 +462,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito"; @@ -171,7 +171,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { -@@ -481,6 +512,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -478,6 +509,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -185,7 +185,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -531,6 +569,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -528,6 +566,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -199,7 +199,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 -@@ -6166,6 +6166,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6198,6 +6198,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 c93f737f..2953685a 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java -@@ -62,6 +62,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting +@@ -65,6 +65,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting } } @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -783,7 +783,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -787,7 +787,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Inflate the correct toolbar layout for the device. int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -184,15 +184,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -117,6 +117,7 @@ import org.chromium.components.tab_group_sync.SavedTabGroup; - import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -120,6 +120,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; +import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; - import org.chromium.ui.modaldialog.ModalDialogManager; -@@ -4264,8 +4265,13 @@ public class StripLayoutHelper + import org.chromium.ui.util.ColorUtils; +@@ -4472,8 +4473,13 @@ public class StripLayoutHelper mCloseButtonMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the close button menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -211,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -97,6 +97,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -98,6 +98,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,10 +219,10 @@ 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; -@@ -468,7 +469,10 @@ public class StripLayoutHelperManager - +@@ -467,7 +468,10 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = - ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(true); + ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled( + /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); - mScrollableStripHeight = res.getDimension(R.dimen.tab_strip_height) / mDensity; + mScrollableStripHeight = + (DeviceFormFactor.isForceTabletUI() @@ -271,7 +271,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -697,7 +697,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -725,7 +725,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public int getControlContainerHeightResource() { @@ -294,7 +294,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; -@@ -1625,7 +1627,9 @@ public class RootUiCoordinator +@@ -1645,7 +1647,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -319,7 +319,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -314,6 +314,7 @@ public final class ChromePreferenceKeys { +@@ -313,6 +313,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"; @@ -359,7 +359,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java -@@ -57,6 +57,7 @@ public class LegacyChromePreferenceKeys { +@@ -56,6 +56,7 @@ public class LegacyChromePreferenceKeys { ChromePreferenceKeys.FIRST_RUN_FLOW_COMPLETE, ChromePreferenceKeys.FIRST_RUN_FLOW_SIGNIN_SETUP, ChromePreferenceKeys.FIRST_RUN_LIGHTWEIGHT_FLOW_COMPLETE, @@ -378,10 +378,10 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c import org.chromium.ui.InsetObserver; import org.chromium.ui.InsetObserver.WindowInsetsConsumer; import org.chromium.ui.InsetsRectProvider; -@@ -260,6 +261,7 @@ public class AppHeaderCoordinator - private static @DesktopWindowHeuristicResult int checkIsInDesktopWindow( +@@ -267,6 +268,7 @@ public class AppHeaderCoordinator InsetsRectProvider insetsRectProvider, - @DesktopWindowHeuristicResult int currentResult) { + @DesktopWindowHeuristicResult int currentResult, + boolean isOnExternalDisplay) { + if (DeviceFormFactor.isForceTabletUI()) return DesktopWindowHeuristicResult.IN_DESKTOP_WINDOW; @DesktopWindowHeuristicResult int newResult; @@ -389,7 +389,7 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -847,7 +847,7 @@ public class LocationBarCoordinator +@@ -857,7 +857,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -401,7 +401,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1660,6 +1660,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1654,6 +1654,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -498,7 +498,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml b/chro 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 { +@@ -27,7 +27,7 @@ public interface ControlContainer { * * @param toolbarLayoutId The ID of the toolbar layout to use. */ @@ -518,7 +518,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import android.graphics.Canvas; import android.graphics.Color; import android.graphics.PorterDuff; -@@ -154,8 +155,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -157,8 +158,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout @Override @Initializer @@ -542,13 +542,13 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow + if (view != null) + ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height; + } - mToolbarContainer = - (ToolbarViewResourceFrameLayout) findViewById(R.id.toolbar_container); + mToolbarContainer = findViewById(R.id.toolbar_container); 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 -@@ -65,6 +65,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp; +@@ -68,6 +68,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp; import org.chromium.components.feature_engagement.Tracker; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.util.MotionEventUtils; @@ -556,7 +556,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; -@@ -571,7 +572,9 @@ public abstract class ToolbarLayout extends FrameLayout +@@ -586,7 +587,9 @@ public abstract class ToolbarLayout extends FrameLayout * not have a tab strip. */ protected int getTabStripHeightFromResource() { @@ -627,7 +627,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 -@@ -30,6 +30,7 @@ import org.chromium.content_public.browser.ContentFeatureList; +@@ -29,6 +29,7 @@ import org.chromium.content_public.browser.ContentFeatureList; import org.chromium.content_public.browser.ContentFeatureMap; import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; @@ -635,7 +635,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c /** Fragment to keep track of all the accessibility related preferences. */ @NullMarked -@@ -45,6 +46,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -44,6 +45,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment public static final String PREF_ZOOM_INFO = "zoom_info"; public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions"; @@ -645,7 +645,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; private ChromeSwitchPreference mPageZoomAlwaysShowPref; -@@ -112,6 +116,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -108,6 +112,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment mDelegate.getReaderAccessibilityDelegate().getValue()); readerForAccessibilityPref.setOnPreferenceChangeListener(this); @@ -658,7 +658,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -171,6 +181,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -167,6 +177,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); @@ -683,7 +683,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java --- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java +++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java -@@ -69,6 +69,14 @@ public class DeviceFormFactor { +@@ -83,6 +83,14 @@ public class DeviceFormFactor { return BuildConfig.IS_DESKTOP_ANDROID; } @@ -698,7 +698,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui /** * Each activity could be on a different display, and this will just tell you whether the * display associated with the application context is "tablet sized". Use {@link -@@ -77,6 +85,7 @@ public class DeviceFormFactor { +@@ -91,6 +99,7 @@ public class DeviceFormFactor { @CalledByNative @Deprecated public static boolean isTablet() { @@ -706,7 +706,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui if (sIsTabletForTesting != null) { return sIsTabletForTesting; } -@@ -107,6 +116,7 @@ public class DeviceFormFactor { +@@ -121,6 +130,7 @@ public class DeviceFormFactor { * E.g. http://developer.samsung.com/samsung-dex/testing */ public static boolean isNonMultiDisplayContextOnTablet(Context context) { @@ -714,7 +714,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET; } -@@ -142,6 +152,7 @@ public class DeviceFormFactor { +@@ -156,6 +166,7 @@ public class DeviceFormFactor { * @return The screen width bucket the device is in (see constants at the top of this class). */ private static int detectScreenWidthBucket(Context context) { @@ -722,7 +722,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -149,6 +160,7 @@ public class DeviceFormFactor { +@@ -163,6 +174,7 @@ public class DeviceFormFactor { ThreadUtils.assertOnUiThread(); Context context = windowAndroid.getContext().get(); if (context == null) return 0; @@ -730,7 +730,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -158,6 +170,7 @@ public class DeviceFormFactor { +@@ -172,6 +184,7 @@ public class DeviceFormFactor { */ @UiThread public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) { @@ -738,7 +738,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context)); } -@@ -166,6 +179,7 @@ public class DeviceFormFactor { +@@ -180,6 +193,7 @@ public class DeviceFormFactor { * layout. */ public static int getMinimumTabletWidthPx(DisplayAndroid display) { 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 c55d564d..d5caee1d 100644 --- a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.base.IntentUtils; import org.chromium.base.Log; import org.chromium.base.MemoryPressureListener; -@@ -1798,8 +1799,10 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -1849,8 +1850,10 @@ public class ChromeTabbedActivity extends ChromeActivity { boolean hadCipherData = CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()); @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.base.IntentUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; -@@ -112,6 +115,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -113,6 +116,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private final SharedPreferencesManager mSharedPreferencesManager = ChromeSharedPreferences.getInstance(); @@ -78,7 +78,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private ManagedPreferenceDelegate mManagedPreferenceDelegate; @VisibleForTesting static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies"; @VisibleForTesting static final String PREF_TRACKING_PROTECTION = "tracking_protection"; -@@ -376,7 +381,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -373,7 +378,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting UserPrefs.get(getProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); } else if (PREF_HTTPS_FIRST_MODE_LEGACY.equals(key)) { -@@ -436,6 +445,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -433,6 +442,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment getContext(), getProfile())); } @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -5691,6 +5691,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -5714,6 +5714,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d IMAGE 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 a40fcabb..f61088a4 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 -@@ -112,6 +112,9 @@ import java.util.Objects; +@@ -114,6 +114,9 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -34,7 +34,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * A mediator for the TabGridDialog component, responsible for communicating with the components' * coordinator as well as managing the business logic for dialog show/hide. -@@ -1030,9 +1033,15 @@ public class TabGridDialogMediator +@@ -1028,9 +1031,15 @@ public class TabGridDialogMediator return; } @@ -97,7 +97,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java -@@ -66,6 +66,9 @@ import org.chromium.ui.text.EmptyTextWatcher; +@@ -71,6 +71,9 @@ import org.chromium.ui.text.EmptyTextWatcher; import org.chromium.ui.widget.AnchoredPopupWindow.HorizontalOrientation; import org.chromium.ui.widget.RectProvider; @@ -107,9 +107,9 @@ 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. -@@ -200,9 +203,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina +@@ -208,9 +211,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina /* didCloseCallback= */ null); - recordUserAction("DeleteGroup"); + RecordUserAction.record("MobileToolbarTabGroupMenu.DeleteGroup"); } else if (menuId == org.chromium.chrome.R.id.open_new_tab_in_group) { + String url = UrlConstants.NTP_URL; + if (UrlConstants.NTP_URL.equals(url) @@ -123,11 +123,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over + url, tabId, TabLaunchType.FROM_TAB_GROUP_UI); - recordUserAction("NewTabInGroup"); + RecordUserAction.record("MobileToolbarTabGroupMenu.NewTabInGroup"); 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 -@@ -237,6 +237,22 @@ public class HomepageManager +@@ -231,6 +231,22 @@ public class HomepageManager notifyHomepageUpdated(); } @@ -153,7 +153,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -24,6 +24,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; +@@ -25,6 +25,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.url_formatter.UrlFormatter; import org.chromium.url.GURL; @@ -161,7 +161,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin /** Fragment that allows the user to configure homepage related preferences. */ public class HomepageSettings extends ChromeBaseSettingsFragment { -@@ -32,6 +33,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -33,6 +34,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { @VisibleForTesting public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group"; @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin private HomepageManager mHomepageManager; private RadioButtonGroupHomepagePreference mRadioButtons; private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); -@@ -67,6 +70,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -69,6 +72,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { }); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); @@ -200,15 +200,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; +@@ -23,6 +23,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFact + import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager; +import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -508,6 +509,13 @@ public class ChromeTabCreator extends TabCreator +@@ -530,6 +531,13 @@ public class ChromeTabCreator extends TabCreator * @return the created tab. */ public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) { @@ -225,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -327,6 +327,7 @@ public final class ChromePreferenceKeys { +@@ -326,6 +326,7 @@ public final class ChromePreferenceKeys { public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; @@ -236,7 +236,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java -@@ -61,6 +61,7 @@ public class LegacyChromePreferenceKeys { +@@ -60,6 +60,7 @@ public class LegacyChromePreferenceKeys { ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO, ChromePreferenceKeys.HOMEPAGE_ENABLED, ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI, @@ -247,7 +247,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1489,6 +1489,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1480,6 +1480,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -260,7 +260,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -91,6 +91,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -107,6 +107,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 10b7697d..752b62e8 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -9,7 +9,6 @@ Add DuckDuckGo Lite License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../search_engine_choice/default_favicon.png | Bin 0 -> 903 bytes - ...search_engine_choice_scaled_resources.grdp | 1 + components/search_engines/BUILD.gn | 3 ++ components/search_engines/cromite/BUILD.gn | 12 ++++++ .../cromite/cromite_prepopulated_engines.json | 37 ++++++++++++++++++ @@ -21,7 +20,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html tools/json_to_struct/json_to_struct.py | 26 ++++++++---- tools/json_to_struct/struct_generator.py | 10 +++-- tools/variations/fieldtrial_to_struct.py | 4 +- - 13 files changed, 114 insertions(+), 28 deletions(-) + 12 files changed, 113 insertions(+), 28 deletions(-) create mode 100644 components/resources/default_100_percent/search_engine_choice/default_favicon.png create mode 100644 components/search_engines/cromite/BUILD.gn create mode 100644 components/search_engines/cromite/cromite_prepopulated_engines.json @@ -53,17 +52,6 @@ d#;kFnu^?NN9uE_uZ002ovPDHLkV1m60sc!%P literal 0 HcmV?d00001 -diff --git a/components/resources/search_engine_choice_scaled_resources.grdp b/components/resources/search_engine_choice_scaled_resources.grdp ---- a/components/resources/search_engine_choice_scaled_resources.grdp -+++ b/components/resources/search_engine_choice_scaled_resources.grdp -@@ -5,6 +5,7 @@ - - - -+ - - - diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn --- a/components/search_engines/BUILD.gn +++ b/components/search_engines/BUILD.gn @@ -75,7 +63,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ -@@ -158,6 +159,7 @@ source_set("search_engine_utils") { +@@ -163,6 +164,7 @@ source_set("search_engine_utils") { ":search_engine_type", "//components/google/core/common", "//third_party/search_engines_data:prepopulated_engines", @@ -83,7 +71,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ "//url" ] -@@ -246,6 +248,7 @@ source_set("unit_tests") { +@@ -252,6 +254,7 @@ source_set("unit_tests") { "//testing/gmock", "//testing/gtest", "//third_party/search_engines_data:prepopulated_engines", @@ -153,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 -@@ -187,10 +187,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -182,10 +182,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -296,7 +284,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. -@@ -139,11 +139,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): +@@ -147,11 +147,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): f.write(u'#include "%s"\n' % header) f.write(u'\n') @@ -313,7 +301,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') -@@ -170,7 +174,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): +@@ -176,7 +180,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description): f.write(u'#endif // %s\n' % header_guard) @@ -322,7 +310,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. -@@ -205,7 +209,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description): +@@ -211,7 +215,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description): f.write(element_generator.GenerateElements(schema['type_name'], schema['schema'], description)) @@ -331,7 +319,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) -@@ -292,7 +296,7 @@ def GenerateClass(basepath, +@@ -298,7 +302,7 @@ def GenerateClass(basepath, def GenerateStruct(basepath, output_root, namespace, schema, description, @@ -340,7 +328,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: -@@ -311,8 +315,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description, +@@ -317,8 +321,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) @@ -351,7 +339,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_ if __name__ == '__main__': parser = optparse.OptionParser( -@@ -327,11 +331,17 @@ if __name__ == '__main__': +@@ -333,11 +337,17 @@ if __name__ == '__main__': parser.add_option('-s', '--schema', help='path to the schema file, ' 'mandatory.') parser.add_option('-o', '--output', help='output filename, ') @@ -369,7 +357,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] -@@ -348,4 +358,4 @@ if __name__ == '__main__': +@@ -354,4 +364,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 4981bf60..058273a8 100644 --- a/build/patches/Add-setting-to-clear-data-on-exit.patch +++ b/build/patches/Add-setting-to-clear-data-on-exit.patch @@ -48,7 +48,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -260,6 +260,7 @@ chrome_java_sources = [ +@@ -257,6 +257,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; -@@ -1803,7 +1804,11 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -1854,7 +1855,11 @@ public class ChromeTabbedActivity extends ChromeActivity { Intent intent = getIntent(); boolean hadCipherData = @@ -136,10 +136,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -@@ -163,6 +163,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -161,6 +161,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment + assert mCheckbox == preference; mParent.updateButtonState(); - mShouldAnnounceCounterResult = true; + + BrowsingDataBridge.getForProfile(mParent.getProfile()) + .setBrowsingDataDeletionPreference( @@ -149,7 +149,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C return true; } -@@ -255,7 +261,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -242,7 +248,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment private @TimePeriod int mLastSelectedTimePeriod; private boolean mShouldShowPostDeleteFeedback; @@ -158,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C /** * @return All available {@link DialogOption} entries. -@@ -361,7 +367,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -348,7 +354,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment } /** Called when browsing data is about to be cleared. */ @@ -167,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C RecordUserAction.record("ClearBrowsingData_AdvancedTab"); if (ChromeFeatureList.sClearBrowsingDataAndroidSurvey.isEnabled()) { -@@ -451,6 +457,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -438,6 +444,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment BrowsingDataBridge.getForProfile(getProfile()) .setBrowsingDataDeletionPreference( ClearBrowsingDataFragment.getDataType(item.getOption()), @@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C item.isSelected()); } -@@ -458,8 +465,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -445,8 +452,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment .setBrowsingDataDeletionTimePeriod(mLastSelectedTimePeriod); } @@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C String referrer = fragmentArgs.getString( ClearBrowsingDataFragment.CLEAR_BROWSING_DATA_REFERRER, null); -@@ -485,6 +496,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -472,6 +483,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment DialogOption.CLEAR_SITE_SETTINGS); } @@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C /** * Decides whether a given dialog option should be selected when the dialog is initialized. * -@@ -493,7 +508,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -480,7 +495,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment */ private boolean isOptionSelectedByDefault(@DialogOption int option) { return BrowsingDataBridge.getForProfile(getProfile()) @@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } /** -@@ -561,6 +576,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -548,6 +563,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment * options. */ private void onClearButtonClicked() { @@ -217,7 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C if (shouldShowImportantSitesDialog()) { showImportantDialogThenClear(); return; -@@ -591,6 +607,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -577,6 +593,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment Button clearButton = (Button) getView().findViewById(R.id.clear_button); boolean isEnabled = !getSelectedOptions().isEmpty(); clearButton.setEnabled(isEnabled); @@ -225,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } private int getSpinnerIndex( -@@ -666,7 +683,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -652,7 +669,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment .getBoolean(Pref.ALLOW_DELETING_BROWSER_HISTORY)) { enabled = false; browsingDataBridge.setBrowsingDataDeletionPreference( @@ -234,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } // Disable tabs closure if the user is in multi-window mode. -@@ -696,8 +713,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -682,8 +699,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment mSigninManager.addSignInStateObserver(this); setHasOptionsMenu(true); @@ -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 -@@ -2227,6 +2227,16 @@ +@@ -1973,6 +1973,16 @@ Delete browsing data @@ -354,7 +354,7 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -104,6 +104,7 @@ +@@ -105,6 +105,7 @@ #include "components/enterprise/data_controls/core/browser/features.h" #include "components/enterprise/obfuscation/core/utils.h" #include "components/error_page/common/error_page_switches.h" @@ -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 -@@ -358,6 +358,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -359,6 +359,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()); -@@ -465,6 +466,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -466,6 +467,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(); -@@ -573,6 +577,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -574,6 +578,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() -@@ -601,9 +610,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -602,9 +611,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_); -@@ -1308,6 +1321,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -1324,6 +1337,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (should_clear_zero_suggest_and_session_token && template_url_service) template_url_service->ClearSessionToken(); @@ -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 -@@ -1442,6 +1442,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, +@@ -1446,6 +1446,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info, } } @@ -594,7 +594,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile void ProfileManager::DoFinalInitForServices(Profile* profile, bool go_off_the_record) { if (!do_final_services_init_ || -@@ -2119,7 +2132,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { +@@ -2122,7 +2135,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) { Profile* original_profile = profile->GetOriginalProfile(); // Do nothing if the closed window is not the last window of the same profile. for (Browser* browser_iter : *BrowserList::GetInstance()) { @@ -680,7 +680,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_ ], }, -@@ -335,6 +336,7 @@ export class SettingsClearBrowsingDataDialogElement extends +@@ -336,6 +337,7 @@ export class SettingsClearBrowsingDataDialogElement extends } this.clearButtonDisabled_ = this.getSelectedDataTypes_(page as HTMLElement).length === 0; @@ -691,7 +691,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1581,6 +1581,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1575,6 +1575,9 @@ Your Google account may have other forms of browsing history like searches and a Some of your history might not show up here. To see all your Chrome history, open full Chrome history. Also, your Google Account may have other forms of browsing history at <link>myactivity.google.com</link>. @@ -718,7 +718,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -1945,6 +1945,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -1922,6 +1922,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 +938,7 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co // Description of database tables: // // icon_mapping -@@ -508,6 +512,11 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, +@@ -507,6 +511,11 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, bool FaviconDatabase::SetFaviconsOutOfDateBetween(base::Time begin, base::Time end) { @@ -965,7 +965,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 -@@ -893,6 +893,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween( +@@ -885,6 +885,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 +988,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 -@@ -1511,6 +1511,7 @@ void StoragePartitionImpl::Initialize( +@@ -1514,6 +1514,7 @@ void StoragePartitionImpl::Initialize( .AppendASCII("Code Cache"); } DCHECK_GE(settings.size_in_bytes(), 0); 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 c96e630e..017fb9ec 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 @@ -70,7 +70,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/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java -@@ -162,6 +162,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting +@@ -165,6 +165,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting mSnackbarManagerSupplier.get().showSnackbar(mSnackbar); } @@ -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 -@@ -127,8 +127,9 @@ class ChromeContextMenuItem { - int RELOAD = 40; +@@ -123,8 +123,9 @@ class ChromeContextMenuItem { + int PRINT_PAGE = 38; // Developer Group - int INSPECT_ELEMENT = 41; -+ int FOLLOW_LINK = 42; + int INSPECT_ELEMENT = 39; ++ int FOLLOW_LINK = 40; // ALWAYS UPDATE! -- int NUM_ENTRIES = 42; -+ int NUM_ENTRIES = 43; +- int NUM_ENTRIES = 40; ++ int NUM_ENTRIES = 41; } /** Mapping from {@link Item} to the ID found in the ids.xml. */ -@@ -175,6 +176,7 @@ class ChromeContextMenuItem { - R.id.contextmenu_forward, // Item.FORWARD - R.id.contextmenu_reload, // Item.RELOAD +@@ -169,6 +170,7 @@ class ChromeContextMenuItem { + R.id.contextmenu_share_page, // Item.SHARE_PAGE + R.id.contextmenu_print_page, // Item.PRINT_PAGE R.id.contextmenu_inspect_element, // Item.INSPECT_ELEMENT + 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. */ -@@ -221,6 +223,7 @@ class ChromeContextMenuItem { - R.string.contextmenu_forward, // Item.FORWARD - R.string.contextmenu_reload, // Item.RELOAD +@@ -213,6 +215,7 @@ class ChromeContextMenuItem { + R.string.contextmenu_share_page, // Item.SHARE_PAGE + R.string.contextmenu_print_page, // Item.PRINT_PAGE R.string.contextmenu_inspect_element, // Item.INSPECT_ELEMENT + 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 -@@ -380,6 +380,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -369,6 +369,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())) { -@@ -817,6 +820,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -834,6 +837,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { getProfile(), false); }); @@ -168,27 +168,27 @@ 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 -@@ -367,6 +367,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kTabGroupEntryPointsAndroid, +@@ -381,6 +381,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupParityBottomSheetAndroid, + &kTabletTabStripAnimation, &kToolbarPhoneCleanup, + &blink::features::kShowAlwaysContextMenuOnLinks, &kTabStateFlatBuffer, &kTabStripContextMenuAndroid, - &kTabStripGroupDragDropAndroid, + &kTabStripDensityChangeAndroid, 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 -@@ -438,6 +438,8 @@ public abstract class ChromeFeatureList { +@@ -454,6 +454,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; + public static final String SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS = + "ShowAlwaysContextMenuOnLinks"; - public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid"; + public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = + "NewTabPageCustomizationToolbarButton"; public static final String NOTIFICATION_ONE_TAP_UNSUBSCRIBE = "NotificationOneTapUnsubscribe"; - public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = -@@ -809,6 +811,8 @@ public abstract class ChromeFeatureList { +@@ -867,6 +869,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -197,18 +197,18 @@ 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); -@@ -978,6 +982,7 @@ public abstract class ChromeFeatureList { +@@ -1071,6 +1075,7 @@ public abstract class ChromeFeatureList { sTabWindowManagerReportIndicesMismatch, + sTopControlsRefactor, sTraceBinderIpc, - sUseChimeAndroidSdk, + sShowAlwaysContextMenuOnLinks, + sUseChimeAndroidSdk, + sUseActivityManagerForTabActivation, sUseLibunwindstackNativeUnwinderAndroid, - sWebApkMinShellApkVersion); - 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 -@@ -1725,6 +1725,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1719,6 +1719,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 -@@ -3326,6 +3332,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3330,6 +3336,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 -@@ -54,6 +54,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -53,6 +53,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; -@@ -143,6 +146,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -139,6 +142,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 -> { -@@ -224,6 +233,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -220,6 +229,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment } else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) { mDisableToolbarSwipeUpDelegate.setValue((Boolean) newValue); mDelegate.requestRestart(getActivity()); @@ -467,7 +467,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_ #include "third_party/blink/renderer/core/paint/timing/paint_timing.h" #include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h" -@@ -794,6 +796,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate( +@@ -815,6 +817,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate( } } @@ -504,7 +504,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_p diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc --- a/third_party/blink/renderer/core/page/context_menu_controller.cc +++ b/third_party/blink/renderer/core/page/context_menu_controller.cc -@@ -198,14 +198,16 @@ void ContextMenuController::DocumentDetached(Document* document) { +@@ -200,14 +200,16 @@ void ContextMenuController::DocumentDetached(Document* document) { } } @@ -524,7 +524,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t mouse_event->SetDefaultHandled(); } -@@ -430,7 +432,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( +@@ -432,7 +434,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch( bool ContextMenuController::ShowContextMenu(LocalFrame* frame, const PhysicalOffset& point, WebMenuSourceType source_type, @@ -534,7 +534,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, -@@ -453,6 +456,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -455,6 +458,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, if (!result.InnerNodeOrImageMapImage()) return false; @@ -551,7 +551,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; -@@ -816,11 +829,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -830,11 +843,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index b92919da..22444d6f 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -35,7 +35,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc --- a/chrome/browser/engagement/important_sites_util.cc +++ b/chrome/browser/engagement/important_sites_util.cc -@@ -32,6 +32,7 @@ +@@ -31,6 +31,7 @@ #include "components/prefs/scoped_user_pref_update.h" #include "components/site_engagement/content/site_engagement_score.h" #include "components/site_engagement/content/site_engagement_service.h" @@ -43,7 +43,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" -@@ -349,6 +350,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( +@@ -344,6 +345,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( // static std::set ImportantSitesUtil::GetInstalledRegisterableDomains( Profile* profile) { @@ -54,7 +54,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ std::set installed_origins = GetOriginsWithInstalledWebApps(profile); std::set registerable_domains; -@@ -363,6 +368,10 @@ std::vector +@@ -358,6 +363,10 @@ std::vector ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile, size_t max_results) { SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime"); diff --git a/build/patches/Add-support-for-writing-URIs.patch b/build/patches/Add-support-for-writing-URIs.patch index 4b184814..e1041e0d 100644 --- a/build/patches/Add-support-for-writing-URIs.patch +++ b/build/patches/Add-support-for-writing-URIs.patch @@ -9,13 +9,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- base/android/content_uri_utils.cc | 10 ++++++ base/android/content_uri_utils.h | 4 +++ - .../org/chromium/base/ContentUriUtils.java | 34 +++++++++++++++++++ - 3 files changed, 48 insertions(+) + .../org/chromium/base/ContentUriUtils.java | 33 +++++++++++++++++++ + 3 files changed, 47 insertions(+) diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc --- a/base/android/content_uri_utils.cc +++ b/base/android/content_uri_utils.cc -@@ -119,6 +119,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, +@@ -134,6 +134,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, Time::FromMillisecondsSinceUnixEpoch(last_modified)); } @@ -35,9 +35,9 @@ diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils. diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h --- a/base/android/content_uri_utils.h +++ b/base/android/content_uri_utils.h -@@ -33,6 +33,10 @@ BASE_EXPORT std::optional TranslateOpenFlagsToJavaMode( - // Returns -1 if the URI is invalid. - int OpenContentUri(const FilePath& content_uri, uint32_t open_flags); +@@ -46,6 +46,10 @@ int ContentUriGetFd( + void ContentUriClose( + const base::android::JavaRef& java_parcel_file_descriptor); +// Opens a content URI for write and returns the file descriptor to the caller. +// Returns -1 if the URI is invalid. @@ -49,15 +49,7 @@ diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base/android/java/src/org/chromium/base/ContentUriUtils.java --- a/base/android/java/src/org/chromium/base/ContentUriUtils.java +++ b/base/android/java/src/org/chromium/base/ContentUriUtils.java -@@ -12,6 +12,7 @@ import android.content.res.AssetFileDescriptor; - import android.database.Cursor; - import android.net.Uri; - import android.os.Build; -+import android.os.ParcelFileDescriptor; - import android.provider.DocumentsContract; - import android.provider.MediaStore; - import android.text.TextUtils; -@@ -30,6 +31,9 @@ import org.chromium.build.annotations.Nullable; +@@ -31,6 +31,9 @@ import org.chromium.build.annotations.Nullable; import java.io.IOException; import java.util.List; @@ -67,8 +59,8 @@ diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base /** This class provides methods to access content URI schemes. */ @JNINamespace("base") @NullMarked -@@ -64,6 +68,36 @@ public abstract class ContentUriUtils { - return -1; +@@ -72,6 +75,36 @@ public abstract class ContentUriUtils { + StreamUtil.closeQuietly(parcelFileDescriptor); } + @CalledByNative diff --git a/build/patches/Add-support-to-jxl.patch b/build/patches/Add-support-to-jxl.patch index bf9482b4..8403ec3c 100644 --- a/build/patches/Add-support-to-jxl.patch +++ b/build/patches/Add-support-to-jxl.patch @@ -84,7 +84,7 @@ Enabled by default diff --git a/DEPS b/DEPS --- a/DEPS +++ b/DEPS -@@ -511,6 +511,10 @@ vars = { +@@ -507,6 +507,10 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -95,7 +95,7 @@ diff --git a/DEPS b/DEPS 'highway_revision': '00fe003dac355b979f36157f9407c7c46448958e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ffmpeg -@@ -1889,6 +1893,9 @@ deps = { +@@ -1902,6 +1906,9 @@ deps = { 'src/third_party/dawn': Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'), @@ -316,7 +316,7 @@ diff --git a/media/BUILD.gn b/media/BUILD.gn diff --git a/media/media_options.gni b/media/media_options.gni --- a/media/media_options.gni +++ b/media/media_options.gni -@@ -141,6 +141,9 @@ declare_args() { +@@ -140,6 +140,9 @@ declare_args() { # `enable_libaom` should likely also be overriddent to false. enable_av1_decoder = enable_dav1d_decoder @@ -464,7 +464,7 @@ diff --git a/third_party/blink/common/mime_util/mime_util_unittest.cc b/third_pa diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl -@@ -4823,6 +4823,7 @@ domain Emulation +@@ -4856,6 +4856,7 @@ domain Emulation experimental type DisabledImageType extends string enum avif @@ -605,7 +605,7 @@ diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.c diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -2431,6 +2431,10 @@ source_set("blink_platform_unittests_sources") { +@@ -2433,6 +2433,10 @@ source_set("blink_platform_unittests_sources") { sources += [ "text/locale_icu_test.cc" ] } @@ -616,7 +616,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re sources += [ "testing/run_all_tests.cc" ] configs += [ -@@ -2476,6 +2480,7 @@ source_set("blink_platform_unittests_sources") { +@@ -2479,6 +2483,7 @@ source_set("blink_platform_unittests_sources") { "//third_party/blink/renderer/platform/wtf", "//third_party/dawn/src/dawn/native", "//third_party/dawn/src/dawn/wire", @@ -2215,7 +2215,7 @@ diff --git a/third_party/blink/tools/commit_stats/git-dirs.txt b/third_party/bli diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations -@@ -5434,6 +5434,12 @@ crbug.com/1199522 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fai +@@ -5720,6 +5720,12 @@ crbug.com/40761284 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fa # Started failing after rolling new version of check-layout-th.js css3/flexbox/perpendicular-writing-modes-inside-flex-item.html [ Failure ] @@ -2226,12 +2226,12 @@ diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/we +crbug.com/1358616 virtual/jxl-enabled/images/jxl/progressive.html [ Crash Failure Pass Timeout ] + # Sheriff 2021-11-15 - crbug.com/1270362 http/tests/devtools/sources/debugger-ui/debugger-inline-values.js [ Failure Pass Timeout ] + crbug.com/40205355 http/tests/devtools/sources/debugger-ui/debugger-inline-values.js [ Failure Pass Timeout ] diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites -@@ -478,6 +478,15 @@ +@@ -491,6 +491,15 @@ "args": ["--enable-blink-features=FractionalScrollOffsets"], "expires": "Jun 1, 2025" }, @@ -2646,7 +2646,7 @@ new file mode 100644 diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml -@@ -14849,6 +14849,7 @@ from previous Chrome versions. +@@ -14417,6 +14417,7 @@ from previous Chrome versions. diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 21a532b5..615e1671 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -189,7 +189,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc -@@ -85,6 +85,13 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor( +@@ -86,6 +86,13 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor( return settings; } @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -336,6 +336,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( +@@ -339,6 +339,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( } } @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() { base::AutoLock locker(WebGLContextLimitLock()); DCHECK(webgl_context_limits_initialized_); -@@ -605,25 +612,6 @@ static String ExtractWebGLContextCreationError( +@@ -608,25 +615,6 @@ static String ExtractWebGLContextCreationError( const Platform::GraphicsInfo& info) { StringBuilder builder; builder.Append("Could not create a WebGL context"); @@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(), builder); builder.Append('.'); -@@ -683,6 +671,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -686,6 +674,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( const CanvasContextCreationAttributesCore& attributes, Platform::ContextType context_type, Platform::GraphicsInfo* graphics_info) { @@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h -@@ -1950,6 +1950,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public ScriptWrappable, +@@ -1932,6 +1932,8 @@ class MODULES_EXPORT WebGLRenderingContextBase DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index efe24a7d..9c00afe7 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/patches/Allow-building-without-enable_reporting.patch @@ -43,7 +43,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc -@@ -1482,6 +1482,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1484,6 +1484,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( -@@ -1495,6 +1496,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1497,6 +1498,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -108,7 +108,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse #include "content/browser/service_worker/service_worker_host.h" #include "content/browser/worker_host/dedicated_worker_host.h" #include "content/browser/worker_host/shared_worker_host.h" -@@ -226,12 +227,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy { +@@ -240,12 +241,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy { const std::string& group, const std::string& type, base::Value::Dict body) { @@ -126,14 +126,14 @@ 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 -@@ -15967,12 +15967,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -15928,12 +15928,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( } } } - - // Send the crash report to the Reporting API. - GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport( -- /*type=*/"crash", /*group=*/"default", last_committed_url_, +- /*type=*/"crash", crash_reporting_group_, last_committed_url_, - GetReportingSource(), isolation_info_.network_anonymization_key(), - std::move(body)); } @@ -177,7 +177,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) { switch (coop_value) { case network::mojom::CrossOriginOpenerPolicyValue::kUnsafeNone: -@@ -64,6 +57,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) { +@@ -59,6 +52,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) { return "noopener-allow-popups"; } } @@ -185,7 +185,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c FrameTreeNode* TopLevelOpener(FrameTreeNode* frame) { FrameTreeNode* opener = -@@ -235,6 +229,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport( +@@ -230,6 +224,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport( network::mojom::SourceLocationPtr source_location, const std::string& reported_window_url, const std::string& initial_popup_url) const { @@ -193,7 +193,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c // Cross-Origin-Opener-Policy-Report-Only is not required to provide // endpoints. if (!coop_.report_only_reporting_endpoint) -@@ -282,12 +277,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport( +@@ -277,12 +272,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport( storage_partition_->GetNetworkContext()->QueueReport( "coop", endpoint, context_url_, reporting_source_, network_anonymization_key_, std::move(body)); @@ -208,7 +208,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c body.Set(kDisposition, is_report_only ? kDispositionReporting : kDispositionEnforce); body.Set(kEffectivePolicy, -@@ -295,6 +292,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport( +@@ -290,6 +287,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport( storage_partition_->GetNetworkContext()->QueueReport( "coop", endpoint, context_url_, reporting_source_, network_anonymization_key_, std::move(body)); @@ -303,12 +303,12 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic +#error Attempting to build with enable_reporting +#endif DCHECK(initialized_); - context_->cache()->AddReport(reporting_source, network_anonymization_key, - sanitized_url, user_agent, group, type, + context_->cache()->AddReport( + reporting_source, network_anonymization_key, sanitized_url, user_agent, 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 -@@ -485,14 +485,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -486,14 +486,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 -@@ -115,6 +115,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders( +@@ -125,6 +125,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders( } #if BUILDFLAG(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 -@@ -1230,6 +1230,7 @@ interface NetworkContext { +@@ -1234,6 +1234,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, -@@ -1237,6 +1238,7 @@ interface NetworkContext { +@@ -1241,6 +1242,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, -@@ -1247,6 +1249,7 @@ interface NetworkContext { +@@ -1251,6 +1253,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // `network_anonymization_key`. @@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" #include "base/feature_list.h" -@@ -1303,6 +1304,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1260,6 +1261,7 @@ void ContentSecurityPolicy::ReportViolation( return; } @@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c PostViolationReport(violation_data, context_frame, report_endpoints, use_reporting_api); -@@ -1310,6 +1312,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1267,6 +1269,7 @@ void ContentSecurityPolicy::ReportViolation( // `context_frame` (i.e. we're not processing 'frame-ancestors'). if (delegate_ && !context_frame) delegate_->DispatchViolationEvent(*violation_data, element); @@ -413,7 +413,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/source_location.mojom-blink.h" -@@ -2772,9 +2773,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2740,9 +2741,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -435,8 +435,8 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b +#include "net/net_buildflags.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h" - #include "services/metrics/public/cpp/ukm_source_id.h" -@@ -662,7 +663,9 @@ class CORE_EXPORT LocalFrame final + #include "net/storage_access_api/status.h" +@@ -667,7 +668,9 @@ class CORE_EXPORT LocalFrame final return client_hints_preferences_; } @@ -457,7 +457,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/task_type.h" -@@ -58,7 +59,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext"; +@@ -59,7 +60,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext"; ReportingContext::ReportingContext(ExecutionContext& context) : Supplement(context), execution_context_(context), @@ -467,7 +467,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ receivers_(this, &context) {} // static -@@ -125,7 +128,9 @@ void ReportingContext::Trace(Visitor* visitor) const { +@@ -126,7 +129,9 @@ void ReportingContext::Trace(Visitor* visitor) const { visitor->Trace(observers_); visitor->Trace(report_buffer_); visitor->Trace(execution_context_); @@ -477,7 +477,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ visitor->Trace(receivers_); Supplement::Trace(visitor); } -@@ -148,6 +153,7 @@ void ReportingContext::CountReport(Report* report) { +@@ -149,6 +154,7 @@ void ReportingContext::CountReport(Report* report) { UseCounter::Count(execution_context_, feature); } @@ -485,7 +485,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ const HeapMojoRemote& ReportingContext::GetReportingService() const { if (!reporting_service_.is_bound()) { -@@ -157,6 +163,7 @@ ReportingContext::GetReportingService() const { +@@ -158,6 +164,7 @@ ReportingContext::GetReportingService() const { } return reporting_service_; } @@ -493,7 +493,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_ void ReportingContext::NotifyInternal(Report* report) { if (!ShouldReportBeVisibleToObservers(report)) { -@@ -183,6 +190,7 @@ void ReportingContext::NotifyInternal(Report* report) { +@@ -184,6 +191,7 @@ void ReportingContext::NotifyInternal(Report* report) { void ReportingContext::SendToReportingAPI(Report* report, const String& endpoint) const { @@ -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 || -@@ -255,6 +263,7 @@ void ReportingContext::SendToReportingAPI(Report* report, +@@ -263,6 +271,7 @@ void ReportingContext::SendToReportingAPI(Report* report, url, endpoint, body->featureId(), body->disposition(), body->message(), body->sourceFile(), line_number, column_number); } diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 7417decf..07b977a9 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -16,15 +16,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ui/webui/management/management_ui_handler.cc | 4 ---- .../core/browser/supervised_user_pref_store.cc | 1 + .../core/browser/supervised_user_preferences.cc | 6 +++++- - .../core/browser/supervised_user_service.cc | 5 +---- + .../core/browser/supervised_user_service.cc | 1 + components/supervised_user/core/common/features.cc | 2 +- extensions/browser/api/management/management_api.cc | 1 + - 15 files changed, 13 insertions(+), 31 deletions(-) + 15 files changed, 13 insertions(+), 27 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -803,7 +803,6 @@ if (_is_default_toolchain) { +@@ -805,7 +805,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", @@ -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 -@@ -675,10 +675,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -674,10 +674,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1624,6 +1620,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1619,6 +1615,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -122,7 +122,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile #if !BUILDFLAG(IS_ANDROID) if (profile->IsNewProfile()) { profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false); -@@ -1975,9 +1971,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -1978,9 +1974,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); @@ -174,7 +174,7 @@ diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrom diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc --- a/components/supervised_user/core/browser/supervised_user_pref_store.cc +++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc -@@ -126,6 +126,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() = default; +@@ -142,6 +142,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() = default; void SupervisedUserPrefStore::OnNewSettingsAvailable( const base::Value::Dict& settings) { @@ -185,7 +185,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_pref_store. diff --git a/components/supervised_user/core/browser/supervised_user_preferences.cc b/components/supervised_user/core/browser/supervised_user_preferences.cc --- a/components/supervised_user/core/browser/supervised_user_preferences.cc +++ b/components/supervised_user/core/browser/supervised_user_preferences.cc -@@ -158,6 +158,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -164,6 +164,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { } void EnableParentalControls(PrefService& pref_service) { @@ -196,7 +196,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences pref_service.SetString(prefs::kSupervisedUserId, supervised_user::kChildAccountSUID); #if BUILDFLAG(IS_CHROMEOS) -@@ -186,7 +190,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { +@@ -197,7 +201,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { } bool IsSubjectToParentalControls(const PrefService& pref_service) { @@ -208,25 +208,14 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc --- a/components/supervised_user/core/browser/supervised_user_service.cc +++ b/components/supervised_user/core/browser/supervised_user_service.cc -@@ -92,10 +92,6 @@ void SupervisedUserService::Init() { - DCHECK(settings_service_->IsReady()); - - pref_change_registrar_.Init(&user_prefs_.get()); -- pref_change_registrar_.Add( -- prefs::kSupervisedUserId, -- base::BindRepeating(&SupervisedUserService::OnSupervisedUserIdChanged, -- base::Unretained(this))); - pref_change_registrar_.Add( - policy::policy_prefs::kIncognitoModeAvailability, - base::BindRepeating( -@@ -183,6 +179,7 @@ void SupervisedUserService::SetSettingsServiceActive(bool active) { +@@ -168,6 +168,7 @@ SupervisedUserService::SupervisedUserService( } - void SupervisedUserService::SetActive(bool active) { + void SupervisedUserService::SetSettingsServiceActive(bool active) { + active = false; - if (active_ == active) { - return; - } + settings_service_->SetActive(active); + + // Trigger a sync reconfig to enable/disable the right SU data types. diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc --- a/components/supervised_user/core/common/features.cc +++ b/components/supervised_user/core/common/features.cc @@ -238,9 +227,9 @@ diff --git a/components/supervised_user/core/common/features.cc b/components/sup #if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_WIN) const int kLocalWebApprovalBottomSheetLoadTimeoutDefaultValueMs = 5000; -@@ -141,4 +140,5 @@ BASE_FEATURE(kWaitUntilAccessTokenAvailableForClassifyUrl, - #endif - ); +@@ -148,4 +147,5 @@ BASE_FEATURE(kDecoupleSafeSitesFromMainSwitch, + "DecoupleSafeSitesFromMainSwitch", + base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals); } // namespace supervised_user diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index 384a858e..16b671d4 100644 --- a/build/patches/Allow-playing-audio-in-background.patch +++ b/build/patches/Allow-playing-audio-in-background.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -1336,6 +1336,12 @@ void WebMediaPlayerImpl::OnSelectedVideoTrackChanged( +@@ -1340,6 +1340,12 @@ void WebMediaPlayerImpl::OnSelectedVideoTrackChanged( pipeline_controller_->OnSelectedVideoTrackChanged(selected); } @@ -24,7 +24,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( const std::vector& enabled_track_ids) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3697,7 +3703,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3710,7 +3716,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { : HasAudio(); // Audio only stream is allowed to play when in background. 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 f20ce291..ffc6d882 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -7,18 +7,19 @@ Ignore any partner-provided home page. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ---- + .../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 1 + .../partnerbookmarks/PartnerBookmarksProviderIterator.java | 1 + .../partnercustomizations/PartnerBrowserCustomizations.java | 2 +- .../org/chromium/components/search_engines/TemplateUrl.java | 1 + .../search_engines/android/template_url_service_android.cc | 1 + - .../always-use-new-tab-page-for-default-home-page.inc | 2 ++ - 6 files changed, 6 insertions(+), 5 deletions(-) + .../always-use-new-tab-page-for-default-home-page.inc | 1 + + 7 files changed, 6 insertions(+), 5 deletions(-) create mode 100755 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -155,10 +155,6 @@ public class HomepageManager +@@ -148,10 +148,6 @@ public class HomepageManager * tab page if the homepage button is force enabled via flag. */ public GURL getDefaultHomepageGurl() { @@ -29,6 +30,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa String homepagePartnerDefaultGurlSerialized = ChromeSharedPreferences.getInstance() .readString( +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java +@@ -54,6 +54,7 @@ public class DseNewTabUrlManager { + + /** Returns whether the feature NewTabSearchEngineUrlAndroid is enabled. */ + public static boolean isNewTabSearchEngineUrlAndroidEnabled() { ++ if ((true)) return false; + return ChromeSharedPreferences.getInstance() + .readBoolean(ChromePreferenceKeys.IS_EEA_CHOICE_COUNTRY, false) + || (OmniboxFeatures.sOmniboxMobileParityUpdate.isEnabled() diff --git a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java --- a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java +++ b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java @@ -55,7 +67,7 @@ diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/b diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java +++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java -@@ -72,6 +72,7 @@ public class TemplateUrl { +@@ -85,6 +85,7 @@ public class TemplateUrl { * prepopulated_engines.json. */ public String getNewTabURL() { @@ -66,19 +78,18 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/ diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -404,6 +404,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -403,6 +403,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( jimage_translate_source_language_param_key, const base::android::JavaParamRef& jimage_translate_target_language_param_key) { + if ((true)) return false; // The function is scheduled to run only when the service is loaded, see // `TemplateUrlService#runWhenLoaded()`. - CHECK(template_url_service_->loaded(), base::NotFatalUntil::M128); + CHECK(template_url_service_->loaded()); diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc new file mode 100755 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc -@@ -0,0 +1,2 @@ -+SET_CROMITE_FEATURE_DISABLED(kNewTabSearchEngineUrlAndroid); +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kPartnerCustomizationsUma); -- diff --git a/build/patches/Android-Import-Passwords.patch b/build/patches/Android-Import-Passwords.patch index d5ea213f..a225d98d 100644 --- a/build/patches/Android-Import-Passwords.patch +++ b/build/patches/Android-Import-Passwords.patch @@ -50,7 +50,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage @@ -151,6 +154,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment /** For controlling the UX flow of exporting passwords. */ - private ExportFlow mExportFlow = new ExportFlow(PasswordAccessLossWarningType.NONE); + private final ExportFlow mExportFlow = new ExportFlow(PasswordAccessLossWarningType.NONE); + private ActivityWindowAndroid mWindowAndroid; + private IntentRequestTracker mIntentRequestTracker; @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage if (id == R.id.export_passwords) { RecordHistogram.recordEnumeratedHistogram( mExportFlow.getExportEventHistogramName(), -@@ -501,6 +525,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -506,6 +530,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); @@ -97,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage if (requestCode != PASSWORD_EXPORT_INTENT_REQUEST_CODE) return; if (resultCode != Activity.RESULT_OK) return; if (intent == null || intent.getData() == null) return; -@@ -512,12 +537,21 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -517,12 +542,21 @@ public class PasswordSettings extends ChromeBaseSettingsFragment public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mExportFlow.onSaveInstanceState(outState); diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index 30d252b9..8a59c549 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -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 -@@ -1081,6 +1081,9 @@ public final class ProductionSupportedFlagList { +@@ -1046,6 +1046,9 @@ public final class ProductionSupportedFlagList { "Hides user preference on the system keyboard by setting the standard " + "eng layout and removing the layout information from the " + "javascript keyboard events."), @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7790,6 +7790,13 @@ static_library("browser") { +@@ -7888,6 +7888,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 -@@ -122,10 +122,20 @@ +@@ -123,10 +123,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 -@@ -294,6 +294,9 @@ static_library("renderer") { +@@ -292,6 +292,9 @@ static_library("renderer") { "//ppapi/shared_impl", ] @@ -614,7 +614,7 @@ diff --git a/components/services/font/public/mojom/font_service.mojom b/componen diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -2572,6 +2572,17 @@ source_set("browser") { +@@ -2581,6 +2581,17 @@ source_set("browser") { ] } @@ -632,7 +632,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn if (is_linux || is_chromeos) { sources -= [ "file_system_access/file_path_watcher/file_path_watcher_stub.cc" ] -@@ -2614,6 +2625,13 @@ source_set("browser") { +@@ -2626,6 +2637,13 @@ source_set("browser") { ] } @@ -649,7 +649,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn diff --git a/content/browser/renderer_host/render_process_host_impl_receiver_bindings.cc b/content/browser/renderer_host/render_process_host_impl_receiver_bindings.cc --- a/content/browser/renderer_host/render_process_host_impl_receiver_bindings.cc +++ b/content/browser/renderer_host/render_process_host_impl_receiver_bindings.cc -@@ -50,6 +50,11 @@ +@@ -51,6 +51,11 @@ #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h" #endif @@ -661,7 +661,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl_receiver_bin #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck #include "content/browser/font_service.h" // nogncheck -@@ -332,6 +337,13 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHostReceiver( +@@ -336,6 +341,13 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHostReceiver( } #endif @@ -695,7 +695,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 -@@ -353,6 +353,10 @@ target(link_target_type, "renderer") { +@@ -347,6 +347,10 @@ target(link_target_type, "renderer") { deps += [ "//services/screen_ai/public/mojom" ] } @@ -709,7 +709,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 @@ +@@ -136,6 +136,23 @@ #include "content/common/android/sync_compositor_statics.h" #endif @@ -733,7 +733,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer using blink::Platform; using blink::WebAudioDevice; using blink::WebAudioLatencyHint; -@@ -179,6 +196,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { +@@ -178,6 +195,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { NOTREACHED(); } @@ -771,7 +771,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer } // namespace //------------------------------------------------------------------------------ -@@ -192,18 +240,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +@@ -191,18 +239,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) { @@ -837,7 +837,7 @@ new file mode 100644 diff --git a/skia/BUILD.gn b/skia/BUILD.gn --- a/skia/BUILD.gn +++ b/skia/BUILD.gn -@@ -441,6 +441,18 @@ component("skia") { +@@ -457,6 +457,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 bbc84a9a..7420e89a 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -282,7 +282,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1343,7 +1343,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1373,7 +1373,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mActivity, mStatusIndicatorCoordinator, isUrlBarFocusedSupplier, @@ -416,7 +416,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 -@@ -552,6 +552,16 @@ public class TabWindowManagerImpl implements TabWindowManager { +@@ -555,6 +555,16 @@ public class TabWindowManagerImpl implements TabWindowManager { return tabGroupModelFilter.getTabsInGroup(tabGroupId); } @@ -494,7 +494,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 -@@ -135,6 +135,8 @@ public class Snackbar { +@@ -136,6 +136,8 @@ public class Snackbar { private @Nullable String mTemplateText; private @Nullable String mActionText; private @Nullable Object mActionData; @@ -503,7 +503,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro private int mBackgroundColor; private int mTextApperanceResId; private boolean mSingleLine = true; -@@ -240,6 +242,20 @@ public class Snackbar { +@@ -241,6 +243,20 @@ public class Snackbar { return this; } @@ -635,7 +635,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 -@@ -3865,8 +3865,10 @@ void WebContentsImpl::Stop() { +@@ -3991,8 +3991,10 @@ void WebContentsImpl::Stop() { void WebContentsImpl::SetPageFrozen(bool frozen) { TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen); @@ -649,7 +649,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 -@@ -1131,6 +1131,12 @@ public class WebContentsImpl +@@ -1130,6 +1130,12 @@ public class WebContentsImpl WebContentsImplJni.get().setFocus(mNativeWebContentsAndroid, hasFocus); } @@ -662,7 +662,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon @Override public void setDisplayCutoutSafeArea(Rect insets) { if (mNativeWebContentsAndroid == 0) return; -@@ -1435,6 +1441,8 @@ public class WebContentsImpl +@@ -1450,6 +1456,8 @@ public class WebContentsImpl void setFocus(long nativeWebContentsAndroid, boolean focused); @@ -674,7 +674,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 -@@ -290,6 +290,8 @@ public interface WebContents extends Parcelable { +@@ -283,6 +283,8 @@ public interface WebContents extends Parcelable { */ void setFocus(boolean hasFocus); @@ -731,7 +731,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 -@@ -4380,6 +4380,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { +@@ -4387,6 +4387,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { } void Document::DispatchFreezeEvent() { @@ -742,7 +742,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 -@@ -3206,6 +3206,7 @@ void LocalFrame::DidFreeze() { +@@ -3178,6 +3178,7 @@ void LocalFrame::DidFreeze() { LoaderFreezeMode freeze_mode = GetLoaderFreezeMode(); GetDocument()->Fetcher()->SetDefersLoading(freeze_mode); Loader().SetDefersLoading(freeze_mode); @@ -750,7 +750,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } void LocalFrame::DidResume() { -@@ -3220,6 +3221,7 @@ void LocalFrame::DidResume() { +@@ -3192,6 +3193,7 @@ void LocalFrame::DidResume() { GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone); Loader().SetDefersLoading(LoaderFreezeMode::kNone); diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 995d638d..b28a2a8d 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -207,7 +207,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 -@@ -545,9 +545,8 @@ +@@ -562,9 +562,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index aa2b0690..57389321 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -24,7 +24,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.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc -@@ -707,6 +707,21 @@ void ExecutionContext::WriteIntoTrace( +@@ -713,6 +713,21 @@ void ExecutionContext::WriteIntoTrace( proto->set_world_type(GetWorldType(*this)); } @@ -71,7 +71,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -1007,6 +1007,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { +@@ -1033,6 +1033,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { return should_block_request; } @@ -101,7 +101,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/third_party/blink/renderer/core/loader/frame_fetch_context.h --- a/third_party/blink/renderer/core/loader/frame_fetch_context.h +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h -@@ -183,6 +183,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext, +@@ -184,6 +184,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext, bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override; std::unique_ptr CreateWebSocketHandshakeThrottle() override; @@ -176,7 +176,7 @@ diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.c diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc --- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc +++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc -@@ -102,6 +102,30 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) { +@@ -103,6 +103,30 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) { request_url.ProtocolIsInHTTPFamily(); } @@ -207,7 +207,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc scoped_refptr ExtractBlobHandle( Request* request, ExceptionState& exception_state) { -@@ -189,6 +213,13 @@ ScriptPromise BackgroundFetchManager::fetch( +@@ -190,6 +214,13 @@ ScriptPromise BackgroundFetchManager::fetch( exception_state); } 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 052c3403..542b35f8 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 -@@ -5104,7 +5104,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( +@@ -5023,7 +5023,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" -@@ -125,8 +126,20 @@ DOMStringList* Location::ancestorOrigins() const { +@@ -126,8 +127,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 -@@ -834,6 +834,11 @@ WebString DocumentLoader::HttpMethod() const { +@@ -832,6 +832,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_; } -@@ -2939,6 +2944,13 @@ void DocumentLoader::CommitNavigation() { +@@ -2897,6 +2902,13 @@ void DocumentLoader::CommitNavigation() { response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly)); } @@ -135,7 +135,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h --- a/third_party/blink/renderer/core/loader/document_loader.h +++ b/third_party/blink/renderer/core/loader/document_loader.h -@@ -782,7 +782,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected, +@@ -775,7 +775,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected, // |archive_|, but won't have |loading_main_document_from_mhtml_archive_| set. bool loading_main_document_from_mhtml_archive_ = false; const bool loading_srcdoc_ = false; diff --git a/build/patches/Block-qjz9zk-or-trk-requests.patch b/build/patches/Block-qjz9zk-or-trk-requests.patch index 0753c335..5ce968cc 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -64,7 +64,7 @@ diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_t diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc --- a/components/omnibox/browser/autocomplete_input.cc +++ b/components/omnibox/browser/autocomplete_input.cc -@@ -96,10 +96,15 @@ void OffsetComponentsExcludingScheme(url::Parsed* parts, int offset) { +@@ -92,10 +92,15 @@ void OffsetComponentsExcludingScheme(url::Parsed* parts, int offset) { bool HasScheme(const std::u16string& input, const char* scheme) { std::string utf8_input(base::UTF16ToUTF8(input)); url::Component view_source_scheme; @@ -80,7 +80,7 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib return url::FindAndCompareScheme(utf8_input, scheme, nullptr); } -@@ -582,7 +587,8 @@ void AutocompleteInput::ParseForEmphasizeComponents( +@@ -578,7 +583,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) || @@ -107,7 +107,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc -@@ -951,6 +951,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() +@@ -950,6 +950,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() RegisterPseudoScheme(url::kJavaScriptScheme); RegisterPseudoScheme(kViewSourceScheme); RegisterPseudoScheme(kGoogleChromeScheme); @@ -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 -@@ -1108,6 +1108,8 @@ component("net") { +@@ -1115,6 +1115,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/Bookmarks-select-all-menu-entry.patch b/build/patches/Bookmarks-select-all-menu-entry.patch index faf57ee1..7b81a2c4 100644 --- a/build/patches/Bookmarks-select-all-menu-entry.patch +++ b/build/patches/Bookmarks-select-all-menu-entry.patch @@ -31,7 +31,7 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c 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 -@@ -25,6 +25,7 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelega +@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelega import java.util.ArrayList; import java.util.List; import java.util.function.Function; @@ -39,7 +39,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Main toolbar of bookmark UI. It is responsible for displaying title and buttons associated with -@@ -186,6 +187,11 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -190,6 +191,11 @@ public class BookmarkToolbar extends SelectableListToolbar void setCurrentFolder(BookmarkId folder) { mCurrentFolder = mBookmarkModel.getBookmarkById(folder); enableImportExportMenu(); @@ -51,7 +51,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows } void enableImportExportMenu() { -@@ -221,6 +227,17 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -226,6 +232,17 @@ public class BookmarkToolbar extends SelectableListToolbar mExportBookmarkRunnable.run(); return true; } @@ -66,10 +66,10 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + } + return true; + } - return mMenuIdClickedFunction.apply(menuItem.getItemId()); + return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId()); } -@@ -243,6 +260,7 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -248,6 +265,7 @@ public class BookmarkToolbar extends SelectableListToolbar getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null); getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null); diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index aec9f039..28d25df9 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -36,12 +36,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../safety_hub/SafetyHubFetchService.java | 5 - .../strings/android_chrome_strings.grd | 23 +- .../ui/lens/lens_overlay_query_controller.cc | 1 + - .../endpoint_fetcher/endpoint_fetcher.cc | 133 ++++++-- + .../endpoint_fetcher/endpoint_fetcher.cc | 132 ++++++-- .../endpoint_fetcher/endpoint_fetcher.h | 24 ++ components/manta/base_provider.cc | 1 + .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 33 files changed, 1240 insertions(+), 95 deletions(-) + 33 files changed, 1239 insertions(+), 95 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/CromiteUpdateStatusProvider.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/browser/endpoint_fetcher/BUILD.gn @@ -70,7 +70,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 -@@ -1938,6 +1938,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1936,6 +1936,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/res/xml/about_chrome_preferences.xml b/chrome/a diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java -@@ -25,12 +25,18 @@ import org.chromium.ui.widget.Toast; +@@ -29,13 +29,19 @@ import org.chromium.ui.widget.Toast; import java.util.Calendar; @@ -119,6 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; + /** Settings fragment that displays information about Chrome. */ + @NullMarked public class AboutChromeSettings extends PreferenceFragmentCompat - implements EmbeddableSettingsPage, Preference.OnPreferenceClickListener { + implements EmbeddableSettingsPage, Preference.OnPreferenceClickListener, @@ -130,8 +131,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ private static final String PREF_OS_VERSION = "os_version"; private static final String PREF_LEGAL_INFORMATION = "legal_information"; -@@ -64,6 +70,13 @@ public class AboutChromeSettings extends PreferenceFragmentCompat - p = findPreference(PREF_LEGAL_INFORMATION); +@@ -72,6 +78,13 @@ public class AboutChromeSettings extends PreferenceFragmentCompat + assumeNonNull(p); int currentYear = Calendar.getInstance().get(Calendar.YEAR); p.setSummary(getString(R.string.legal_information_summary, currentYear)); + @@ -144,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/ } @Override -@@ -134,6 +147,19 @@ public class AboutChromeSettings extends PreferenceFragmentCompat +@@ -142,6 +155,19 @@ public class AboutChromeSettings extends PreferenceFragmentCompat return true; } @@ -676,7 +677,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 -@@ -2580,6 +2580,12 @@ static_library("browser") { +@@ -2620,6 +2620,12 @@ static_library("browser") { } if (is_android) { @@ -770,8 +771,8 @@ new file mode 100644 + // Passing the endpoint_fetcher ensures the endpoint_fetcher's + // lifetime extends to the callback and is not destroyed + // prematurely (which would result in cancellation of the request). -+ std::unique_ptr endpoint_fetcher, -+ std::unique_ptr endpoint_response) { ++ std::unique_ptr endpoint_fetcher, ++ std::unique_ptr endpoint_response) { + base::android::RunObjectCallbackAndroid( + jcaller, Java_EndpointResponse_createEndpointResponse( + base::android::AttachCurrentThread(), @@ -785,8 +786,8 @@ new file mode 100644 + // Passing the endpoint_fetcher ensures the endpoint_fetcher's + // lifetime extends to the callback and is not destroyed + // prematurely (which would result in cancellation of the request). -+ std::unique_ptr endpoint_fetcher, -+ std::unique_ptr endpoint_response) { ++ std::unique_ptr endpoint_fetcher, ++ std::unique_ptr endpoint_response) { + base::android::RunObjectCallbackAndroid( + jcaller, Java_EndpointHeaderResponse_createEndpointResponse( + base::android::AttachCurrentThread(), @@ -816,7 +817,7 @@ new file mode 100644 + const base::android::JavaParamRef& jcallback) { + std::vector scopes; + base::android::AppendJavaStringArrayToStringVector(env, jscopes, &scopes); -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), @@ -848,7 +849,7 @@ new file mode 100644 + jlong jtimeout, jboolean intercept_redirect, + jint jannotation_hash_code, + const base::android::JavaParamRef& jcallback) { -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), @@ -875,7 +876,7 @@ new file mode 100644 + jlong jtimeout, jboolean intercept_redirect, + jint jannotation_hash_code, + const base::android::JavaParamRef& jcallback) { -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), @@ -1089,25 +1090,25 @@ 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 -@@ -324,6 +324,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -335,6 +335,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, + &kInlineUpdateFlow, &kOmahaMinSdkVersionAndroid, &kShortCircuitUnfocusAnimation, - &kShowNewTabAnimations, + &kShowHomeButtonPolicyAndroid, 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 -@@ -401,6 +401,7 @@ public abstract class ChromeFeatureList { - public static final String HISTORY_PANE_ANDROID = "HistoryPaneAndroid"; +@@ -416,6 +416,7 @@ public abstract class ChromeFeatureList { + "HomepageIsNewTabPagePolicyAndroid"; public static final String HTTPS_FIRST_BALANCED_MODE = "HttpsFirstBalancedMode"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; + public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; + public static final String INSTANCE_SWITCHER_V2 = "InstanceSwitcherV2"; public static final String IP_PROTECTION_UX = "IpProtectionUx"; - public static final String KEYBOARD_ESC_BACK_NAVIGAION = "KeyboardEscBackNavigation"; - public static final String LEGACY_TAB_STATE_DEPRECATION = "LegacyTabStateDeprecation"; + public static final String KEYBOARD_ESC_BACK_NAVIGATION = "KeyboardEscBackNavigation"; diff --git a/chrome/browser/omaha/android/BUILD.gn b/chrome/browser/omaha/android/BUILD.gn --- a/chrome/browser/omaha/android/BUILD.gn +++ b/chrome/browser/omaha/android/BUILD.gn @@ -1656,7 +1657,7 @@ new file mode 100644 diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubFetchService.java b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubFetchService.java --- a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubFetchService.java +++ b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubFetchService.java -@@ -82,9 +82,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, +@@ -84,9 +84,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, mLocalPasswordsFetchService = new SafetyHubPasswordsFetchService(passwordManagerHelper, prefService, null); @@ -1666,7 +1667,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow recordMetricForUnusedSitePermissionsSettingState(); } -@@ -113,8 +110,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, +@@ -115,8 +112,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, if (mSigninManager != null) { mSigninManager.removeSignInStateObserver(this); } @@ -1678,7 +1679,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -2410,6 +2410,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2420,6 +2420,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 @@ -1691,7 +1692,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4361,7 +4367,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4383,7 +4389,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1703,7 +1704,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4372,6 +4381,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4394,6 +4403,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1725,8 +1726,8 @@ 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 -@@ -924,6 +924,7 @@ LensOverlayQueryController::CreateEndpointFetcher( - /*post_data=*/request_string, +@@ -923,6 +923,7 @@ LensOverlayQueryController::CreateEndpointFetcher( + /*post_data=*/std::move(request_string), /*headers=*/request_headers, /*cors_exempt_headers=*/cors_exempt_headers, chrome::GetChannel(), + kTrafficAnnotationTag, @@ -1745,10 +1746,10 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi +#include "net/http/http_status_code.h" +#include "services/network/public/cpp/resource_request.h" + + namespace endpoint_fetcher { + namespace { - const char kContentTypeKey[] = "Content-Type"; - const char kDeveloperKey[] = "X-Developer-Key"; -@@ -35,6 +40,8 @@ std::string GetHttpMethodString(const HttpMethod& http_method) { +@@ -37,6 +42,8 @@ std::string GetHttpMethodString(const HttpMethod& http_method) { return "POST"; case HttpMethod::kDelete: return "DELETE"; @@ -1757,7 +1758,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi default: DCHECK(0) << base::StringPrintf("Unknown HttpMethod %d\n", static_cast(http_method)); -@@ -49,6 +56,8 @@ HttpMethod GetHttpMethod(const std::string& http_method_string) { +@@ -51,6 +58,8 @@ HttpMethod GetHttpMethod(const std::string& http_method_string) { return HttpMethod::kPost; } else if (http_method_string == "DELETE") { return HttpMethod::kDelete; @@ -1766,7 +1767,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi } return HttpMethod::kUndefined; } -@@ -115,9 +124,11 @@ EndpointFetcher::EndpointFetcher( +@@ -117,9 +126,11 @@ EndpointFetcher::EndpointFetcher( const std::vector& headers, const std::vector& cors_exempt_headers, version_info::Channel channel, @@ -1778,7 +1779,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi consent_level_(std::nullopt), sanitize_response_(true), channel_(channel), -@@ -137,6 +148,7 @@ EndpointFetcher::EndpointFetcher( +@@ -139,6 +150,7 @@ EndpointFetcher::EndpointFetcher( const net::NetworkTrafficAnnotationTag& annotation_tag) : url_loader_factory_(url_loader_factory), identity_manager_(nullptr), @@ -1786,7 +1787,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi consent_level_(std::nullopt), sanitize_response_(false), request_params_(EndpointFetcher::RequestParams::Builder(HttpMethod::kGet, -@@ -161,6 +173,7 @@ EndpointFetcher::EndpointFetcher( +@@ -163,6 +175,7 @@ EndpointFetcher::EndpointFetcher( : oauth_consumer_name_(oauth_consumer_name), url_loader_factory_(url_loader_factory), identity_manager_(identity_manager), @@ -1794,15 +1795,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi consent_level_(consent_level), sanitize_response_(true), request_params_( -@@ -190,6 +203,7 @@ EndpointFetcher::EndpointFetcher( - bool is_oauth_fetch) - : url_loader_factory_(url_loader_factory), - identity_manager_(nullptr), -+ intercept_redirect_(false), - consent_level_(std::nullopt), - sanitize_response_(true), - request_params_( -@@ -207,6 +221,7 @@ EndpointFetcher::EndpointFetcher( +@@ -182,6 +195,7 @@ EndpointFetcher::EndpointFetcher( EndpointFetcher::EndpointFetcher( const net::NetworkTrafficAnnotationTag& annotation_tag) : identity_manager_(nullptr), @@ -1810,7 +1803,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi consent_level_(std::nullopt), sanitize_response_(true), request_params_( -@@ -215,6 +230,27 @@ EndpointFetcher::EndpointFetcher( +@@ -190,6 +204,27 @@ EndpointFetcher::EndpointFetcher( .SetTimeout(kDefaultTimeOut) .Build()) {} @@ -1838,7 +1831,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi EndpointFetcher::~EndpointFetcher() = default; void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) { -@@ -272,12 +308,9 @@ void EndpointFetcher::PerformRequest( +@@ -247,12 +282,9 @@ void EndpointFetcher::PerformRequest( auto resource_request = std::make_unique(); resource_request->method = GetHttpMethodString(request_params_.http_method()); resource_request->url = request_params_.url(); @@ -1854,7 +1847,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi if (request_params_.http_method() == HttpMethod::kPost) { resource_request->headers.SetHeader(kContentTypeKey, request_params_.content_type()); -@@ -305,10 +338,26 @@ void EndpointFetcher::PerformRequest( +@@ -280,10 +312,26 @@ void EndpointFetcher::PerformRequest( default: break; } @@ -1881,7 +1874,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi if (request_params_.http_method() == HttpMethod::kPost) { simple_url_loader_->AttachStringForUpload( -@@ -320,15 +369,25 @@ void EndpointFetcher::PerformRequest( +@@ -295,15 +343,25 @@ void EndpointFetcher::PerformRequest( } simple_url_loader_->SetRetryOptions(GetMaxRetries(), network::SimpleURLLoader::RETRY_ON_5XX); @@ -1913,7 +1906,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi } void EndpointFetcher::OnResponseFetched( -@@ -406,21 +465,6 @@ void EndpointFetcher::OnSanitizationResult( +@@ -381,21 +439,6 @@ void EndpointFetcher::OnSanitizationResult( std::move(endpoint_fetcher_callback).Run(std::move(response)); } @@ -1935,11 +1928,10 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi int EndpointFetcher::GetMaxRetries() const { if (!request_params_.max_retries.has_value()) { return kNumRetries; -@@ -445,3 +489,38 @@ UploadProgressCallback EndpointFetcher::GetUploadProgressCallback() const { - std::string EndpointFetcher::GetUrlForTesting() { +@@ -421,4 +464,39 @@ std::string EndpointFetcher::GetUrlForTesting() { return request_params_.url().spec(); } -+ + +void EndpointFetcher::OnSimpleLoaderRedirect( + const GURL& url_before_redirect, + const net::RedirectInfo& redirect_info, @@ -1974,10 +1966,12 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi + response_->response = net_error; + std::move(endpoint_fetcher_callback_).Run(std::move(response_)); +} ++ + } // namespace endpoint_fetcher diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoint_fetcher/endpoint_fetcher.h --- a/components/endpoint_fetcher/endpoint_fetcher.h +++ b/components/endpoint_fetcher/endpoint_fetcher.h -@@ -32,6 +32,8 @@ class EndpointFetcherTest; +@@ -21,6 +21,8 @@ namespace base { class TimeDelta; } // namespace base @@ -1986,7 +1980,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin namespace network { struct ResourceRequest; -@@ -61,6 +63,7 @@ enum class HttpMethod { +@@ -59,6 +61,7 @@ enum class HttpMethod { kGet = 0, kPost = 1, kDelete = 2, @@ -1994,7 +1988,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin }; enum AuthType { -@@ -76,6 +79,8 @@ enum AuthType { +@@ -74,6 +77,8 @@ enum AuthType { struct EndpointResponse { std::string response; @@ -2003,7 +1997,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin int http_status_code{-1}; std::optional error_type; }; -@@ -296,6 +301,7 @@ class EndpointFetcher { +@@ -294,6 +299,7 @@ class EndpointFetcher { const std::vector& headers, const std::vector& cors_exempt_headers, version_info::Channel channel, @@ -2011,7 +2005,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin const RequestParams request_params); // Constructor if no authentication is needed. -@@ -304,6 +310,14 @@ class EndpointFetcher { +@@ -302,6 +308,14 @@ class EndpointFetcher { const GURL& url, const net::NetworkTrafficAnnotationTag& annotation_tag); @@ -2026,7 +2020,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Used for tests. Can be used if caller constructs their own // url_loader_factory and identity_manager. EndpointFetcher( -@@ -360,6 +374,11 @@ class EndpointFetcher { +@@ -344,6 +358,11 @@ class EndpointFetcher { void OnSanitizationResult(std::unique_ptr response, EndpointFetcherCallback endpoint_fetcher_callback, data_decoder::JsonSanitizer::Result result); @@ -2038,7 +2032,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin network::mojom::CredentialsMode GetCredentialsMode() const; int GetMaxRetries() const; -@@ -370,12 +389,14 @@ class EndpointFetcher { +@@ -354,12 +373,14 @@ class EndpointFetcher { // network::SimpleURLLoader. const std::string oauth_consumer_name_; signin::ScopeSet oauth_scopes_; @@ -2053,7 +2047,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // `consent_level_` is used together with `identity_manager_`, so it can be // null if `identity_manager_` is null. const std::optional consent_level_; -@@ -388,6 +409,9 @@ class EndpointFetcher { +@@ -372,6 +393,9 @@ class EndpointFetcher { access_token_fetcher_; std::unique_ptr simple_url_loader_; @@ -2066,7 +2060,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin diff --git a/components/manta/base_provider.cc b/components/manta/base_provider.cc --- a/components/manta/base_provider.cc +++ b/components/manta/base_provider.cc -@@ -160,6 +160,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( +@@ -163,6 +163,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( /*cors_exempt_headers=*/std::vector(), // ChromeOS always uses the stable channel API key version_info::Channel::STABLE, diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index 1424f0d0..9ec8640b 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -77,7 +77,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -441,6 +441,7 @@ chrome_java_resources = [ +@@ -440,6 +440,7 @@ chrome_java_resources = [ "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", "java/res/layout/app_history_filter.xml", @@ -85,7 +85,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_name_and_number.xml", -@@ -636,6 +637,7 @@ chrome_java_resources = [ +@@ -634,6 +635,7 @@ chrome_java_resources = [ "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", "java/res/xml/appearance_preferences.xml", @@ -426,7 +426,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java -@@ -928,9 +928,7 @@ public class TabModelImpl extends TabModelJniBridge { +@@ -942,9 +942,7 @@ public class TabModelImpl extends TabModelJniBridge { .createTabWithWebContents( parent, webContents, @@ -440,7 +440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod 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 -@@ -16665,6 +16665,16 @@ Please help our engineers fix this problem. Tell us what happened right before y +@@ -16713,6 +16713,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Never show this again. @@ -511,7 +511,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() { +@@ -1271,6 +1271,34 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -679,7 +679,7 @@ new file mode 100755 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -642,6 +642,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -653,6 +653,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { StubResolverConfigReader::RegisterPrefs(registry); DefaultDnsOverHttpsConfigSource::RegisterPrefs(registry); @@ -734,7 +734,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 -@@ -2889,6 +2889,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2895,6 +2895,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -1573,7 +1573,7 @@ new file mode 100644 diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc -@@ -19,6 +19,9 @@ +@@ -18,6 +18,9 @@ #include "base/trace_event/trace_event.h" #include "base/trace_event/traced_value.h" #include "base/tracing/protos/chrome_track_event.pbzero.h" @@ -1583,7 +1583,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f #include "components/subresource_filter/content/browser/ad_tagging_utils.h" #include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h" #include "components/subresource_filter/content/browser/profile_interaction_manager.h" -@@ -115,6 +118,7 @@ ContentSubresourceFilterThrottleManager:: +@@ -114,6 +117,7 @@ ContentSubresourceFilterThrottleManager:: profile_interaction_manager_( std::make_unique( profile_context)), @@ -1591,17 +1591,17 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f web_contents_helper_(web_contents_helper) {} ContentSubresourceFilterThrottleManager:: -@@ -637,6 +641,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -628,6 +632,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } + -+ const GURL& url(navigation_handle->GetURL()); ++ const GURL& url(navigation_handle.GetURL()); + if (profile_context_->settings_manager()->GetSitePermission(url) != CONTENT_SETTING_ALLOW) { + subresource_filter::ActivationDecision ignored_decision; + mojom::ActivationState ad_filtering_state; + ad_filtering_state.activation_level = profile_interaction_manager_->OnPageActivationComputed( -+ navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision); ++ &navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision); + throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), + ad_filtering_state); + } @@ -1612,7 +1612,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h -@@ -405,6 +405,8 @@ class ContentSubresourceFilterThrottleManager +@@ -403,6 +403,8 @@ class ContentSubresourceFilterThrottleManager std::unique_ptr profile_interaction_manager_; @@ -1624,7 +1624,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f diff --git a/components/subresource_filter/content/shared/browser/ruleset_service.cc b/components/subresource_filter/content/shared/browser/ruleset_service.cc --- a/components/subresource_filter/content/shared/browser/ruleset_service.cc +++ b/components/subresource_filter/content/shared/browser/ruleset_service.cc -@@ -51,12 +51,7 @@ namespace { +@@ -50,12 +50,7 @@ namespace { void RecordIndexAndWriteRulesetResult( std::string_view uma_tag, RulesetService::IndexAndWriteRulesetResult result) { @@ -1638,7 +1638,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic } // Implements operations on a `sentinel file`, which is used as a safeguard to -@@ -240,11 +235,13 @@ RulesetService::RulesetService( +@@ -237,11 +232,13 @@ RulesetService::RulesetService( RulesetService::~RulesetService() = default; void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( @@ -1653,7 +1653,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic // Trying to store a ruleset with the same version for a second time would // not only be futile, but would fail on Windows due to "File System // Tunneling" as long as the previously stored copy of the rules is still -@@ -254,13 +251,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( +@@ -251,13 +248,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded( if (most_recently_indexed_version.IsCurrentFormatVersion() && most_recently_indexed_version.content_version == unindexed_ruleset_info.content_version) { @@ -1670,7 +1670,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic return; } -@@ -280,6 +280,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -277,6 +277,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( const RulesetConfig& config, const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info) { @@ -1694,7 +1694,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); -@@ -287,6 +304,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -284,6 +301,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( unindexed_ruleset_info); if (!unindexed_ruleset_stream_generator.ruleset_stream()) { @@ -1702,7 +1702,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedOpeningUnindexedRuleset); -@@ -301,6 +319,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -298,6 +316,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( indexed_ruleset_base_dir, indexed_version); if (!base::CreateDirectory(indexed_ruleset_version_dir)) { @@ -1710,7 +1710,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingVersionDir); return IndexedRulesetVersion(config.filter_tag); -@@ -308,13 +327,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -305,13 +324,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( SentinelFile sentinel_file(indexed_ruleset_version_dir); if (sentinel_file.IsPresent()) { @@ -1726,7 +1726,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingSentinelFile); -@@ -329,6 +346,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -326,6 +343,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( RulesetIndexer indexer; if (!(*g_index_ruleset_func)(config, &unindexed_ruleset_stream_generator, &indexer)) { @@ -1734,7 +1734,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic RecordIndexAndWriteRulesetResult( config.uma_tag, IndexAndWriteRulesetResult::kFailedParsingUnindexedRuleset); -@@ -349,9 +367,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -346,9 +364,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( unindexed_ruleset_info.license_path, indexer.data()); RecordIndexAndWriteRulesetResult(config.uma_tag, result); if (result != IndexAndWriteRulesetResult::kSuccess) { @@ -1744,13 +1744,13 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic + LOG(INFO) << "RulesetService: successful parsing."; + - CHECK(indexed_version.IsValid(), base::NotFatalUntil::M129); + CHECK(indexed_version.IsValid()); return indexed_version; } -@@ -477,6 +498,7 @@ void RulesetService::IndexAndStoreRuleset( +@@ -472,6 +493,7 @@ void RulesetService::IndexAndStoreRuleset( void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback, const IndexedRulesetVersion& version) { - CHECK(!result_callback.is_null(), base::NotFatalUntil::M129); + CHECK(!result_callback.is_null()); + LOG(INFO) << "RulesetService: valid version: " << version.IsValid(); if (!version.IsValid()) { return; @@ -1783,7 +1783,7 @@ diff --git a/components/subresource_filter/content/shared/browser/ruleset_servic diff --git a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc --- a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc +++ b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc -@@ -13,6 +13,7 @@ +@@ -12,6 +12,7 @@ #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h" #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h" #include "ui/base/resource/resource_bundle.h" @@ -1791,7 +1791,7 @@ diff --git a/components/subresource_filter/content/shared/browser/unindexed_rule namespace subresource_filter { -@@ -49,6 +50,8 @@ void UnindexedRulesetStreamGenerator::GenerateStreamFromFile( +@@ -46,6 +47,8 @@ void UnindexedRulesetStreamGenerator::GenerateStreamFromFile( ruleset_size_ = unindexed_ruleset_file.GetLength(); @@ -1978,10 +1978,10 @@ diff --git a/components/subresource_filter/core/browser/verified_ruleset_dealer. #include "base/functional/callback_helpers.h" #include "base/location.h" +#include "base/logging.h" - #include "base/not_fatal_until.h" #include "base/notreached.h" #include "base/task/sequenced_task_runner.h" -@@ -40,6 +41,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile( + #include "base/trace_event/trace_event.h" +@@ -39,6 +40,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile( TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"), "VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid", file->IsValid()); @@ -2000,9 +2000,9 @@ diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/comp #include "base/hash/hash.h" +#include "base/logging.h" #include "base/metrics/histogram_functions.h" - #include "base/not_fatal_until.h" #include "base/strings/strcat.h" -@@ -38,7 +39,9 @@ VerifyStatus GetVerifyStatus(base::span buffer, + #include "base/trace_event/trace_event.h" +@@ -37,7 +38,9 @@ VerifyStatus GetVerifyStatus(base::span buffer, // least once. The verifier detects a subset of the errors detected by the // checksum, and is unneeded once expected_checksum is consistently nonzero. flatbuffers::Verifier verifier(buffer.data(), buffer.size()); diff --git a/build/patches/Bubble-Locking-on-UI-DevTools.patch b/build/patches/Bubble-Locking-on-UI-DevTools.patch index 1233d6d7..3f7fd8ad 100644 --- a/build/patches/Bubble-Locking-on-UI-DevTools.patch +++ b/build/patches/Bubble-Locking-on-UI-DevTools.patch @@ -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 -@@ -1402,6 +1402,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1406,6 +1406,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, void UpdateAccessibleNameForRootView(); void UpdateAccessibleURLForRootView(const GURL& url); @@ -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. -@@ -1440,13 +1453,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1444,13 +1457,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, ui::ColorProviderKey GetColorProviderKey() const override; private: @@ -67,7 +67,7 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h class PaintAsActiveLockImpl; friend class ButtonTest; -@@ -1457,11 +1463,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1461,11 +1467,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, friend class ui_devtools::BubbleLocking; friend void DisableActivationChangeHandlingForTests(); diff --git a/build/patches/Change-popup-site-setting.patch b/build/patches/Change-popup-site-setting.patch index d11b7553..56e74ffe 100644 --- a/build/patches/Change-popup-site-setting.patch +++ b/build/patches/Change-popup-site-setting.patch @@ -23,7 +23,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc --- a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc +++ b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc -@@ -142,9 +142,14 @@ TabUnderNavigationThrottle::MaybeBlockNavigation() { +@@ -143,9 +143,14 @@ TabUnderNavigationThrottle::MaybeBlockNavigation() { LogTabUnderAttempt(navigation_handle()); diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index 0bd4b90e..60ba4ab9 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 -@@ -300,6 +300,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { +@@ -301,6 +301,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)); -@@ -438,7 +439,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -439,7 +440,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)) { -@@ -455,6 +456,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -456,6 +457,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { } #endif // !BUILDFLAG(IS_ANDROID) @@ -181,7 +181,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/profile_info_genera diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc -@@ -61,6 +61,7 @@ +@@ -60,6 +60,7 @@ #include "extensions/browser/extension_util.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/common/extension.h" @@ -189,7 +189,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api #include "extensions/common/manifest.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_handlers/permissions_parser.h" -@@ -224,6 +225,8 @@ WebstorePrivateApi::Delegate* test_delegate = nullptr; +@@ -223,6 +224,8 @@ WebstorePrivateApi::Delegate* test_delegate = nullptr; // there was previously stored data, or an empty string otherwise. The Set will // overwrite any previous login. std::string GetWebstoreLogin(Profile* profile) { @@ -198,7 +198,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api if (profile->GetPrefs()->HasPrefPath(kWebstoreLogin)) { return profile->GetPrefs()->GetString(kWebstoreLogin); } -@@ -231,11 +234,15 @@ std::string GetWebstoreLogin(Profile* profile) { +@@ -230,11 +233,15 @@ std::string GetWebstoreLogin(Profile* profile) { } void SetWebstoreLogin(Profile* profile, const std::string& login) { @@ -214,7 +214,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api switch (status) { case kCanRequest: return api::webstore_private::ExtensionInstallStatus::kCanRequest; -@@ -1160,7 +1167,8 @@ ExtensionFunction::ResponseAction +@@ -1157,7 +1164,8 @@ ExtensionFunction::ResponseAction WebstorePrivateIsInIncognitoModeFunction::Run() { Profile* profile = Profile::FromBrowserContext(browser_context()); return RespondNow(ArgumentList(IsInIncognitoMode::Results::Create( @@ -224,7 +224,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api } WebstorePrivateIsPendingCustodianApprovalFunction:: -@@ -1256,11 +1264,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { +@@ -1253,11 +1261,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { request.mutable_referrer_chain_options()->set_recent_navigations_to_collect( recent_navigations_to_collect); @@ -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) { -@@ -772,7 +770,7 @@ void ExtensionService::OnExtensionManagementSettingsChanged() { +@@ -756,7 +754,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. @@ -323,7 +323,7 @@ diff --git a/chrome/browser/extensions/updater/chrome_extension_downloader_facto diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/browser/extensions/updater/extension_updater.cc --- a/chrome/browser/extensions/updater/extension_updater.cc +++ b/chrome/browser/extensions/updater/extension_updater.cc -@@ -56,6 +56,7 @@ +@@ -55,6 +55,7 @@ #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_id.h" @@ -331,7 +331,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro #include "extensions/common/extension_set.h" #include "extensions/common/extension_updater_uma.h" #include "extensions/common/extension_urls.h" -@@ -229,6 +230,10 @@ void ExtensionUpdater::Start() { +@@ -228,6 +229,10 @@ void ExtensionUpdater::Start() { DCHECK(!weak_ptr_factory_.HasWeakPtrs()); DCHECK(registry_); alive_ = true; @@ -342,7 +342,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro // Check soon, and set up the first delayed check. if (!g_skip_scheduled_checks_for_tests) { if (g_should_immediately_update) -@@ -386,7 +391,8 @@ void ExtensionUpdater::AddToDownloader( +@@ -385,7 +390,8 @@ void ExtensionUpdater::AddToDownloader( const Extension& extension = **extension_iter; const ExtensionId& extension_id = extension.id(); if (!Manifest::IsAutoUpdateableLocation(extension.location())) { @@ -352,7 +352,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro continue; } // An extension might be overwritten by policy, and have its update url -@@ -400,7 +406,7 @@ void ExtensionUpdater::AddToDownloader( +@@ -399,7 +405,7 @@ void ExtensionUpdater::AddToDownloader( continue; } @@ -361,7 +361,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro update_check_params->update_info[extension_id] = GetExtensionUpdateData(extension_id); } else if (AddExtensionToDownloader(extension, request_id, -@@ -437,6 +443,12 @@ bool ExtensionUpdater::AddExtensionToDownloader( +@@ -436,6 +442,12 @@ bool ExtensionUpdater::AddExtensionToDownloader( } void ExtensionUpdater::CheckNow(CheckParams params) { @@ -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 -@@ -446,7 +458,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -445,7 +457,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(); -@@ -514,7 +526,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -513,7 +525,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 -@@ -524,7 +536,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -523,7 +535,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 = -@@ -547,6 +559,8 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -546,6 +558,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, -@@ -559,13 +573,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -558,13 +572,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 { -@@ -573,7 +580,7 @@ void ExtensionUpdater::CheckNow(CheckParams params) { +@@ -572,7 +579,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)) { -@@ -717,7 +724,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( +@@ -716,7 +723,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)); -@@ -728,6 +735,7 @@ void ExtensionUpdater::OnExtensionDownloadFinished( +@@ -727,6 +734,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)); -@@ -840,7 +848,7 @@ bool ExtensionUpdater::CanUseUpdateService( +@@ -839,7 +847,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 -@@ -1048,7 +1056,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { +@@ -1046,7 +1054,7 @@ void ExtensionUpdater::NotifyIfFinished(int request_id) { InProgressCheck& request = requests_in_progress_[request_id]; if (!request.in_progress_ids.empty() || request.awaiting_update_service) return; // This request is not done yet. @@ -471,7 +471,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/bro diff --git a/chrome/browser/extensions/updater/extension_updater.h b/chrome/browser/extensions/updater/extension_updater.h --- a/chrome/browser/extensions/updater/extension_updater.h +++ b/chrome/browser/extensions/updater/extension_updater.h -@@ -93,6 +93,8 @@ class ExtensionUpdater : public KeyedService, +@@ -92,6 +92,8 @@ class ExtensionUpdater : public KeyedService, // right away. bool install_immediately = false; @@ -480,7 +480,7 @@ diff --git a/chrome/browser/extensions/updater/extension_updater.h b/chrome/brow // An extension update check can be originated by a user or by a scheduled // task. When the value of |fetch_priority| is FOREGROUND, the update // request was initiated by a user. -@@ -402,6 +404,8 @@ class ExtensionUpdater : public KeyedService, +@@ -401,6 +403,8 @@ class ExtensionUpdater : public KeyedService, base::TimeDelta frequency_; bool will_check_soon_ = false; @@ -1201,7 +1201,7 @@ 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 -@@ -231,4 +231,18 @@ BASE_FEATURE(kExtensionBrowserNamespaceAlternative, +@@ -233,4 +233,18 @@ BASE_FEATURE(kExtensionBrowserNamespaceAlternative, "ExtensionBrowserNamespaceAlternative", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1223,7 +1223,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h -@@ -266,6 +266,8 @@ BASE_DECLARE_FEATURE(kDebuggerAPIRestrictedToDevMode); +@@ -273,6 +273,8 @@ BASE_DECLARE_FEATURE(kDebuggerAPIRestrictedToDevMode); // `loadTimes` , `csi`, etc. or deprecated APIs (e.g. `app`). BASE_DECLARE_FEATURE(kExtensionBrowserNamespaceAlternative); 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 13216d45..63d672f1 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 -@@ -835,6 +835,10 @@ void PreflightController::ClearCorsPreflightCache( +@@ -834,6 +834,10 @@ void PreflightController::ClearCorsPreflightCache( cache_.ClearCache(std::move(url_filter)); } @@ -51,7 +51,7 @@ diff --git a/services/network/cors/preflight_controller.cc b/services/network/co + void PreflightController::RemoveLoader(PreflightLoader* loader) { auto it = loaders_.find(loader); - CHECK(it != loaders_.end(), base::NotFatalUntil::M130); + CHECK(it != loaders_.end()); 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 @@ -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 -@@ -1344,6 +1344,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time, +@@ -1356,6 +1356,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 bd5d6081..0d3f407e 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -90,7 +90,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1376,6 +1376,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1380,6 +1380,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -131,7 +131,7 @@ new file mode 100644 diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc -@@ -107,6 +107,7 @@ const size_t kMaxRestarts = 32; +@@ -111,6 +111,7 @@ const size_t kMaxRestarts = 32; // Returns true when Early Hints are allowed on the given protocol. bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) { @@ -255,7 +255,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -500,6 +500,11 @@ +@@ -517,6 +517,11 @@ name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, @@ -267,7 +267,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 { name: "AriaRowColIndexText", status: "stable", -@@ -871,8 +876,7 @@ +@@ -903,8 +908,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 49075951..a05f9b7a 100644 --- a/build/patches/Close-Sessions-On-Ip-Change.patch +++ b/build/patches/Close-Sessions-On-Ip-Change.patch @@ -87,7 +87,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 -@@ -543,7 +543,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, +@@ -548,7 +548,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, // NetworkChangeNotifier::AreNetworkHandlesSupported). #if BUILDFLAG(IS_ANDROID) inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default = diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index c6849894..c9b599ec 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -44,7 +44,7 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSettingImpl.java | 412 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + .../ContentSettingsResources.java | 37 +- - .../site_settings/SingleCategorySettings.java | 54 ++- + .../site_settings/SingleCategorySettings.java | 60 ++- .../site_settings/SingleWebsiteSettings.java | 58 ++- .../site_settings/SiteSettings.java | 33 +- .../site_settings/SiteSettingsCategory.java | 18 +- @@ -72,7 +72,7 @@ Require: bromite-build-utils.patch .../core/common/content_settings.mojom | 6 + .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 + - .../core/common/content_settings_types.mojom | 2 + + .../core/common/content_settings_types.mojom | 1 + .../renderer/content_settings_agent_impl.cc | 74 ++++ .../renderer/content_settings_agent_impl.h | 9 + .../PageInfoPermissionsController.java | 9 + @@ -84,7 +84,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 + - 73 files changed, 1963 insertions(+), 102 deletions(-) + 73 files changed, 1963 insertions(+), 107 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -118,7 +118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -389,6 +393,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -370,6 +374,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -151,7 +151,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1595,4 +1595,5 @@ +@@ -1345,4 +1345,5 @@ @@ -160,7 +160,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -52,6 +52,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ +@@ -54,6 +54,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_availability_mixin.js'; import {getTemplate} from './privacy_page.html.js'; @@ -168,7 +168,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -75,8 +76,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -77,8 +78,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -263,7 +263,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -172,6 +173,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -164,6 +165,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS = r.SITE_SETTINGS.createChild('localNetworkAccess'); } @@ -710,7 +710,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -1817,6 +1817,7 @@ static_library("ui") { +@@ -1757,6 +1757,7 @@ static_library("ui") { "//components/commerce/core/mojom:mojo_bindings", "//components/commerce/core/webui", "//components/endpoint_fetcher:endpoint_fetcher", @@ -718,10 +718,10 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "//components/enterprise/common:files_scan_data", "//components/feedback/proto", "//components/headless/policy", -@@ -5055,6 +5056,7 @@ static_library("ui") { +@@ -5013,6 +5014,7 @@ static_library("ui") { + "//components/power_bookmarks/core:core", "//components/power_bookmarks/storage", "//components/prefs", - "//components/reading_list/features:flags", + "//components/strings:components_strings_grit", "//components/services/app_service", "//components/soda", @@ -746,15 +746,15 @@ diff --git a/chrome/browser/ui/views/controls/rich_controls_container_view.h b/c diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc -@@ -56,6 +56,7 @@ - #include "ui/views/controls/separator.h" +@@ -59,6 +59,7 @@ #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout.h" + #include "ui/views/vector_icons.h" +#include "ui/views/layout/table_layout.h" #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -258,8 +259,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -284,8 +285,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -777,7 +777,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -274,11 +287,16 @@ void PageInfoMainView::SetPermissionInfo( +@@ -300,11 +313,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -794,7 +794,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b toggle_row->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kStretch); syncable_permission_rows_.emplace(permission.type, toggle_row); -@@ -286,6 +304,8 @@ void PageInfoMainView::SetPermissionInfo( +@@ -312,6 +330,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -803,7 +803,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -296,6 +316,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -322,6 +342,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -817,16 +817,16 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc --- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -27,6 +27,8 @@ - #include "chrome/browser/ui/views/page_info/page_info_permission_content_view.h" +@@ -28,6 +28,8 @@ #include "chrome/browser/ui/views/page_info/page_info_security_content_view.h" #include "components/content_settings/core/common/content_settings_types.h" + #include "components/content_settings/core/common/cookie_controls_state.h" +#include "components/content_settings/core/browser/website_settings_info.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -279,7 +281,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -292,7 +294,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -841,7 +841,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -580,6 +589,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -593,6 +602,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kPrinterIcon; break; default: @@ -862,7 +862,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h --- a/chrome/browser/ui/views/page_info/page_info_view_factory.h +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h -@@ -97,6 +97,11 @@ class PageInfoViewFactory { +@@ -100,6 +100,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); @@ -1187,7 +1187,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3841,6 +3845,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3811,6 +3815,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1256,8 +1256,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_types.h" -@@ -258,13 +260,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::REVOKED_DISRUPTIVE_NOTIFICATION_PERMISSIONS, nullptr}, +@@ -261,13 +263,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< + {ContentSettingsType::SUSPICIOUS_NOTIFICATION_IDS, nullptr}, }); -static_assert( @@ -1277,7 +1277,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b struct SiteSettingSourceStringMapping { SiteSettingSource source; -@@ -526,6 +528,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -529,6 +531,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1291,7 +1291,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -539,11 +548,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { +@@ -542,11 +551,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { return entry.type; } } @@ -1317,7 +1317,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -558,7 +580,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -561,7 +583,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : std::string_view(); } } @@ -1325,7 +1325,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; } -@@ -670,6 +691,13 @@ std::vector GetVisiblePermissionCategories( +@@ -673,6 +694,13 @@ std::vector GetVisiblePermissionCategories( base_types->push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -1450,7 +1450,7 @@ new file mode 100644 diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/SpinnerPreference.java b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/SpinnerPreference.java --- a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/SpinnerPreference.java +++ b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/SpinnerPreference.java -@@ -29,6 +29,7 @@ public class SpinnerPreference extends Preference { +@@ -29,6 +29,7 @@ public class SpinnerPreference extends Preference implements Preference.OnPrefer private @Nullable ArrayAdapter mAdapter; private int mSelectedIndex; private final boolean mSingleLine; @@ -1458,8 +1458,8 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium /** Constructor for inflating from XML. */ public SpinnerPreference(Context context, AttributeSet attrs) { -@@ -43,6 +44,19 @@ public class SpinnerPreference extends Preference { - } +@@ -44,6 +45,19 @@ public class SpinnerPreference extends Preference implements Preference.OnPrefer + setOnPreferenceClickListener(this); } + public SpinnerPreference(Context context, boolean singleLine) { @@ -1478,7 +1478,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium /** * Provides a list of arbitrary objects to be shown in the spinner. Visually, each option will * be presented as its toString() text. Alternative to {@link #setAdapter(ArrayAdapter, int)}. -@@ -62,6 +76,12 @@ public class SpinnerPreference extends Preference { +@@ -63,6 +77,12 @@ public class SpinnerPreference extends Preference implements Preference.OnPrefer mSelectedIndex = selectedIndex; } @@ -1491,7 +1491,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium /** Returns the Spinner instance for introspection during tests. */ public @Nullable Spinner getSpinnerForTesting() { return mSpinner; -@@ -94,6 +114,10 @@ public class SpinnerPreference extends Preference { +@@ -95,6 +115,10 @@ public class SpinnerPreference extends Preference implements Preference.OnPrefer public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); @@ -2222,7 +2222,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -629,6 +650,8 @@ public class ContentSettingsResources { +@@ -624,6 +645,8 @@ public class ContentSettingsResources { R.string.website_settings_vr_ask, R.string.website_settings_vr_block); } @@ -2231,7 +2231,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return assumeNonNull(null); } -@@ -787,6 +810,14 @@ public class ContentSettingsResources { +@@ -782,6 +805,14 @@ public class ContentSettingsResources { return getResourceItem(contentType).getDefaultDisabledValue(); } @@ -2246,7 +2246,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -961,6 +992,8 @@ public class ContentSettingsResources { +@@ -956,6 +987,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { @@ -2308,7 +2308,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -659,6 +673,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -664,6 +678,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -2320,7 +2320,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_RADIO_BUTTON_KEY.equals(preference.getKey()) || BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); -@@ -837,7 +856,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -842,7 +861,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? R.string.website_settings_add_site_description_javascript_optimizer_block : R.string.website_settings_add_site_description_javascript_optimizer_allow; } @@ -2329,7 +2329,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // OnPreferenceClickListener: -@@ -957,10 +976,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -962,21 +981,18 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment default: break; } @@ -2339,12 +2339,24 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + Boolean allow = BromiteCustomContentSettingImpl.allowSpecifyingExceptions(mCategory); + if (allow != null) allowSpecifyingExceptions = (boolean)allow; if (allowSpecifyingExceptions) { +- boolean enableAddExceptionButton = +- (!mCategory.isManaged() +- || mCategory.getType() +- == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES); + int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); + assert exceptionDialogMessageResourceId != 0; getPreferenceScreen() .addPreference( new AddExceptionPreference( -@@ -1145,8 +1165,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + getStyledContext(), + ADD_EXCEPTION_KEY, + getString(exceptionDialogMessageResourceId), +- enableAddExceptionButton, ++ true, + mCategory, + this)); + } +@@ -1155,8 +1171,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2361,7 +2373,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1293,7 +1321,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1303,7 +1327,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (res_id != -1) { infoText.setSummary(res_id); } else { @@ -2374,7 +2386,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1332,6 +1364,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1342,6 +1370,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2382,7 +2394,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c maybeShowReasonToggleDisabled(screen); -@@ -1544,6 +1577,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1554,6 +1583,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType); } triStateToggle.initialize( @@ -2390,7 +2402,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setting, descriptionIds, iconIds, -@@ -1703,6 +1737,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1713,6 +1743,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2449,7 +2461,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1274,20 +1288,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1278,20 +1292,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { @@ -2490,7 +2502,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } -@@ -1512,14 +1538,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1516,14 +1542,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { permission = (Boolean) newValue ? getEnabledValue(type) : ContentSettingValues.BLOCK; } else { @@ -2653,7 +2665,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java -@@ -213,6 +213,8 @@ public interface SiteSettingsDelegate { +@@ -198,6 +198,8 @@ public interface SiteSettingsDelegate { */ String getRelatedWebsiteSetOwner(String memberOrigin); @@ -2712,7 +2724,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -336,7 +336,11 @@ public final class Website implements WebsiteEntry { +@@ -337,7 +337,11 @@ public final class Website implements WebsiteEntry { RecordUserAction.record("SoundContentSetting.UnmuteBy.SiteSettings"); } } @@ -2836,7 +2848,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn -@@ -86,6 +86,13 @@ static_library("browser") { +@@ -77,6 +77,13 @@ static_library("browser") { } configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -2867,7 +2879,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -873,6 +874,7 @@ void ContentSettingsRegistry::Init() { +@@ -864,6 +865,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsRegistry::PLATFORM_ANDROID, ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -2878,7 +2890,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -218,11 +218,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -222,11 +222,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -3005,7 +3017,7 @@ diff --git a/components/content_settings/core/browser/website_settings_registry. diff --git a/components/content_settings/core/common/BUILD.gn b/components/content_settings/core/common/BUILD.gn --- a/components/content_settings/core/common/BUILD.gn +++ b/components/content_settings/core/common/BUILD.gn -@@ -56,6 +56,13 @@ static_library("common") { +@@ -57,6 +57,13 @@ static_library("common") { "//net", "//url", ] @@ -3019,7 +3031,7 @@ diff --git a/components/content_settings/core/common/BUILD.gn b/components/conte } source_set("unit_tests") { -@@ -90,6 +97,7 @@ mojom("content_settings_types") { +@@ -91,6 +98,7 @@ mojom("content_settings_types") { sources = [ "content_settings_types.mojom" ] public_deps = [ "//mojo/public/mojom/base" ] @@ -3213,11 +3225,10 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -483,5 +483,7 @@ enum ContentSettingsType { - // Content setting for whether the site is allowed to make local network - // requests. - LOCAL_NETWORK_ACCESS, -+ +@@ -491,5 +491,6 @@ enum ContentSettingsType { + // site. Used for recovering notification contents from the database if the + // user decides they would like to see all of these notifications. + SUSPICIOUS_NOTIFICATION_IDS, +#include "components/content_settings/core/common/bromite_content_settings.inc" }; // LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue) @@ -3308,7 +3319,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h --- a/components/content_settings/renderer/content_settings_agent_impl.h +++ b/components/content_settings/renderer/content_settings_agent_impl.h -@@ -77,6 +77,13 @@ class ContentSettingsAgentImpl +@@ -76,6 +76,13 @@ class ContentSettingsAgentImpl static mojom::ContentSettingsManager::StorageType ConvertToMojoStorageType( StorageType storage_type); @@ -3322,7 +3333,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h // blink::WebContentSettingsClient: void AllowStorageAccess(StorageType storage_type, base::OnceCallback callback) override; -@@ -129,6 +136,8 @@ class ContentSettingsAgentImpl +@@ -128,6 +135,8 @@ class ContentSettingsAgentImpl // Resets the `content_blocked_` array. void ClearBlockedContentSettings(); @@ -3421,7 +3432,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1281,6 +1282,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1295,6 +1296,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3436,7 +3447,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1397,7 +1406,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1411,7 +1420,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3563,7 +3574,7 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc -@@ -69,6 +69,22 @@ +@@ -70,6 +70,22 @@ namespace blink { diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index 0155b209..1df77f5c 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -9,16 +9,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/android/chrome_java_resources.gni | 2 +- .../android/java/res/xml/main_preferences.xml | 4 +- .../res/xml/privacy_preferences_cromite.xml | 191 ++++++++++++++++++ - .../privacy/settings/PrivacySettings.java | 12 +- + .../privacy/settings/PrivacySettings.java | 6 +- .../Cromite-settings-ui.grdp | 15 ++ - 5 files changed, 216 insertions(+), 8 deletions(-) + 5 files changed, 213 insertions(+), 5 deletions(-) create mode 100644 chrome/android/java/res/xml/privacy_preferences_cromite.xml create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp 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 -@@ -655,7 +655,7 @@ chrome_java_resources = [ +@@ -653,7 +653,7 @@ chrome_java_resources = [ "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", @@ -247,8 +247,8 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -188,7 +188,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment - public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) { +@@ -189,7 +189,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment + public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); - SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences); @@ -256,23 +256,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference incognitoTrackingProtectionsPreference = findPreference(PREF_INCOGNITO_TRACKING_PROTECTIONS); -@@ -279,10 +279,12 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -280,7 +280,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment ChromeSwitchPreference passwordLeakTogglePref = (ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION); -- if (ChromeFeatureList.isEnabled(ChromeFeatureList.PASSWORD_LEAK_TOGGLE_MOVE)) { -- passwordLeakTogglePref.setOnPreferenceChangeListener(this); -- } else { -- passwordLeakTogglePref.setVisible(false); +- passwordLeakTogglePref.setOnPreferenceChangeListener(this); + if (passwordLeakTogglePref != null) { -+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.PASSWORD_LEAK_TOGGLE_MOVE)) { -+ passwordLeakTogglePref.setOnPreferenceChangeListener(this); -+ } else { + passwordLeakTogglePref.setVisible(false); -+ } - } ++ } mSearchSuggestions = (ChromeSwitchPreference) findPreference(PREF_SEARCH_SUGGESTIONS); + mSearchSuggestions.setOnPreferenceChangeListener(this); diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp new file mode 100644 --- /dev/null diff --git a/build/patches/Cromite-Branding.patch b/build/patches/Cromite-Branding.patch index 138a7991..0f8b612e 100644 --- a/build/patches/Cromite-Branding.patch +++ b/build/patches/Cromite-Branding.patch @@ -67,8 +67,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/build/BUILD.gn b/build/BUILD.gn --- a/build/BUILD.gn +++ b/build/BUILD.gn -@@ -54,6 +54,14 @@ buildflag_header("branding_buildflags") { - } +@@ -56,6 +56,14 @@ buildflag_header("branding_buildflags") { + flags += [ "ENABLE_BUILTIN_SEARCH_PROVIDER_ASSETS=$enable_builtin_search_provider_assets" ] } +buildflag_header("cromite_buildflags") { @@ -13158,7 +13158,7 @@ e)fqMZZ`3a)Ds&5H @@ -13270,7 +13270,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html 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 -@@ -2475,7 +2475,7 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2485,7 +2485,7 @@ Your Google account may have other forms of browsing history like searches and a About Chrome @@ -13282,7 +13282,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc b/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc --- a/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc +++ b/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc -@@ -144,6 +144,7 @@ bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model, +@@ -140,6 +140,7 @@ bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model, } bool IsChromeLabsEnabled() { @@ -13326,7 +13326,7 @@ diff --git a/chrome/install_static/chromium_install_modes.cc b/chrome/install_st 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 -@@ -998,7 +998,7 @@ +@@ -992,7 +992,7 @@ @@ -18972,7 +18972,7 @@ diff --git a/components/webui/version/resources/about_version_mobile.css b/compo diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -573,19 +573,22 @@ void ResolveInvalidConfigurations() { +@@ -570,19 +570,22 @@ void ResolveInvalidConfigurations() { base::FeatureList::IsEnabled( features::kPrivacySandboxAdsAPIsM1Override)) && !base::FeatureList::IsEnabled(blink::features::kFencedFrames)) { @@ -18999,7 +18999,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "Fenced frames must be enabled in order to enable local " "unpartitioned " << "data access. Use --" << switches::kEnableFeatures << "=" -@@ -593,12 +596,14 @@ void ResolveInvalidConfigurations() { +@@ -590,12 +593,14 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableFeatureFromString( "FencedFramesLocalUnpartitionedDataAccess", false); } @@ -19015,7 +19015,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "Topics cannot be enabled in this configuration. Use --" << switches::kEnableFeatures << "=" << network::features::kBrowsingTopics.name << " in addition."; -@@ -606,30 +611,23 @@ void ResolveInvalidConfigurations() { +@@ -603,30 +608,23 @@ void ResolveInvalidConfigurations() { WebRuntimeFeatures::EnableTopicsDocumentAPI(false); WebRuntimeFeatures::EnableTopicsImgAPI(false); } else { @@ -19052,7 +19052,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. << "AttributionReporting cannot be enabled in this " "configuration. Use --" << switches::kEnableFeatures << "=" -@@ -637,23 +635,25 @@ void ResolveInvalidConfigurations() { +@@ -634,23 +632,25 @@ void ResolveInvalidConfigurations() { << " in addition."; WebRuntimeFeatures::EnableAttributionReporting(false); } diff --git a/build/patches/Customize-selection-popup.patch b/build/patches/Customize-selection-popup.patch index 272a358f..3082751f 100644 --- a/build/patches/Customize-selection-popup.patch +++ b/build/patches/Customize-selection-popup.patch @@ -37,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -797,10 +797,17 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -803,10 +803,17 @@ public class ChromeTabbedActivity extends ChromeActivity { @TabLaunchType int type, @TabCreationState int creationState, boolean markedForSelection) { @@ -62,7 +62,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/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java -@@ -199,6 +199,14 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat +@@ -202,6 +202,14 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat // Skip opening a new Tab if it doesn't make sense. if (mTab.isClosing()) return false; @@ -77,14 +77,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activit boolean openingPopup = PopupCreator.arePopupsEnabled(mActivity) && (disposition == WindowOpenDisposition.NEW_POPUP); -@@ -207,7 +215,7 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat +@@ -225,7 +233,7 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat tabCreator.createTabWithWebContents( mTab, webContents, - TabLaunchType.FROM_LONGPRESS_FOREGROUND, + tabLaunchType, url, - !openingPopup); + !openingPopup && !willReparentTab); if (tab == null) return false; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.base.TraceEvent; import org.chromium.base.lifetime.Destroyable; import org.chromium.base.metrics.RecordUserAction; -@@ -792,11 +793,16 @@ public class RootUiCoordinator +@@ -795,11 +796,16 @@ public class RootUiCoordinator TrackerFactory.getTrackerForProfile(tab.getProfile()) .notifyEvent(EventConstants.WEB_SEARCH_PERFORMED); diff --git a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch index ec98a949..76633428 100644 --- a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -313,8 +313,17 @@ class LocationBarMediator +@@ -318,8 +318,17 @@ class LocationBarMediator if (!mUrlFocusedWithPastedText && !shouldRetainOmniboxOnFocus && mLocationBarLayout.shouldClearTextOnFocus()) { @@ -66,7 +66,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mPendingScroll; private boolean mIsInCct; -@@ -337,6 +339,28 @@ public class UrlBar extends AutocompleteEditText { +@@ -339,6 +341,28 @@ public class UrlBar extends AutocompleteEditText { fixupTextDirection(); mShouldSendTypingStartedEvent = focused; diff --git a/build/patches/Disable-Accessibility-service-by-default.patch b/build/patches/Disable-Accessibility-service-by-default.patch index 9693b04c..3547a73c 100644 --- a/build/patches/Disable-Accessibility-service-by-default.patch +++ b/build/patches/Disable-Accessibility-service-by-default.patch @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java -@@ -1098,6 +1098,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa +@@ -1101,6 +1101,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa structure.setChildCount(0); return; } diff --git a/build/patches/Disable-Android-AppRestrictions.patch b/build/patches/Disable-Android-AppRestrictions.patch index 76d545e0..40eeaa67 100644 --- a/build/patches/Disable-Android-AppRestrictions.patch +++ b/build/patches/Disable-Android-AppRestrictions.patch @@ -32,7 +32,7 @@ diff --git a/chrome/browser/enterprise/util/BUILD.gn b/chrome/browser/enterprise diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java --- a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java +++ b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java -@@ -27,6 +27,7 @@ import org.chromium.base.task.TaskTraits; +@@ -28,6 +28,7 @@ import org.chromium.build.annotations.MonotonicNonNull; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.flags.ChromeSwitches; diff --git a/build/patches/Disable-Android-Tab-Declutter.patch b/build/patches/Disable-Android-Tab-Declutter.patch index 6cd799de..b42e2745 100644 --- a/build/patches/Disable-Android-Tab-Declutter.patch +++ b/build/patches/Disable-Android-Tab-Declutter.patch @@ -5,36 +5,46 @@ Subject: Disable Android Tab Declutter Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../org/chromium/chrome/browser/flags/ChromeFeatureList.java | 4 ++-- - .../chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc | 1 + - 2 files changed, 3 insertions(+), 2 deletions(-) + chrome/android/java/res/xml/main_preferences.xml | 3 ++- + .../org/chromium/chrome/browser/tab/TabArchiveSettings.java | 3 ++- + .../chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc | 1 + + 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc -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 -@@ -1017,7 +1017,7 @@ public abstract class ChromeFeatureList { - public static final MutableFlagWithSafeDefault sAndroidNativePagesInNewTab = - newMutableFlagWithSafeDefault(ANDROID_NATIVE_PAGES_IN_NEW_TAB, false); - public static final MutableFlagWithSafeDefault sAndroidTabDeclutter = -- newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER, true); -+ newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER, false); - public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveAllButActiveTab = - newMutableFlagWithSafeDefault(ANDROID_TAB_DECLUTTER_ARCHIVE_ALL_BUT_ACTIVE, false); - public static final MutableFlagWithSafeDefault sAndroidTabDeclutterArchiveDuplicateTabs = -@@ -1504,7 +1504,7 @@ public abstract class ChromeFeatureList { - sAndroidNativePagesInNewTab.newBooleanParam( - "android_native_pages_in_new_tab_downloads_enabled", true); - public static final MutableBooleanParamWithSafeDefault sAndroidTabDeclutterArchiveEnabled = -- sAndroidTabDeclutter.newBooleanParam("android_tab_declutter_archive_enabled", true); -+ sAndroidTabDeclutter.newBooleanParam("android_tab_declutter_archive_enabled", false); - public static final MutableIntParamWithSafeDefault sAndroidTabDeclutterArchiveTimeDeltaHours = - sAndroidTabDeclutter.newIntParam( - "android_tab_declutter_archive_time_delta_hours", 21 * 24); +diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml +--- a/chrome/android/java/res/xml/main_preferences.xml ++++ b/chrome/android/java/res/xml/main_preferences.xml +@@ -105,7 +105,8 @@ for the previous order (main_preferences_legacy). --> + android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings" + android:key="tabs" + android:order="18" +- android:title="@string/tabs_settings_title"/> ++ android:title="@string/tabs_settings_title" ++ app:isPreferenceVisible="false"/> + sPendingReferrer; private static int sReferrerId; private static String sPendingIncognitoUrl; -@@ -554,8 +550,6 @@ public class IntentHandler { +@@ -557,8 +553,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (packageName.equals(PACKAGE_WHATSAPP)) { return ExternalAppId.WHATSAPP; @@ -44,29 +55,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j } else if (packageName.equals(ContextUtils.getApplicationContext().getPackageName())) { return ExternalAppId.CHROME; } else if (packageName.startsWith(WEBAPK_PACKAGE_PREFIX)) { -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java -@@ -57,8 +57,6 @@ public class PageContentProviderImpl extends SplitCompatContentProvider.Impl { - - private static final int INVALIDATE_URI_DELAY_MS = 60_000; - private static final int PAGE_EXTRACTION_TIMEOUT_MS = 30_000; -- private static final String[] AUTHORIZED_PACKAGE_NAMES = -- new String[] {GSAUtils.GSA_PACKAGE_NAME}; - - static final class PageContentInvocationState { - -@@ -354,10 +352,6 @@ public class PageContentProviderImpl extends SplitCompatContentProvider.Impl { - } - - private static void grantAccessToUri(Uri uri) { -- for (String packageName : AUTHORIZED_PACKAGE_NAMES) { -- ContextUtils.getApplicationContext() -- .grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); -- } - } - - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java @@ -232,7 +220,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java --- a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java +++ b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java -@@ -253,7 +253,7 @@ public class PdfCoordinator { +@@ -265,7 +265,7 @@ public class PdfCoordinator { } @Nullable String requestAssistContent(String filename, boolean isWorkProfile) { @@ -241,15 +229,6 @@ diff --git a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/ return null; } String structuredData; -@@ -271,8 +271,6 @@ public class PdfCoordinator { - } catch (JSONException e) { - return null; - } -- mActivity.grantUriPermission( -- GSAUtils.GSA_PACKAGE_NAME, mUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); - PdfUtils.recordIsWorkProfile(isWorkProfile); - return structuredData; - } diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Disable-GetInstalledRelatedApps-API.patch b/build/patches/Disable-GetInstalledRelatedApps-API.patch index 2b4a76e8..3db07aeb 100644 --- a/build/patches/Disable-GetInstalledRelatedApps-API.patch +++ b/build/patches/Disable-GetInstalledRelatedApps-API.patch @@ -58,8 +58,8 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2642,9 +2642,8 @@ - name: "InspectorGhostRules", +@@ -2766,9 +2766,8 @@ + status: "stable", }, { - name: "InstalledApp", diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index 7987995d..c7a54eba 100644 --- a/build/patches/Disable-PrivacyGuide.patch +++ b/build/patches/Disable-PrivacyGuide.patch @@ -22,7 +22,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc -@@ -362,8 +362,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -338,8 +338,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // BUILDFLAG(IS_CHROMEOS) bool show_privacy_guide = diff --git a/build/patches/Disable-Real-Box.patch b/build/patches/Disable-Real-Box.patch index c77695d1..0e9b9744 100644 --- a/build/patches/Disable-Real-Box.patch +++ b/build/patches/Disable-Real-Box.patch @@ -4,16 +4,16 @@ Subject: Disable Real Box Real-box is search box in ntp --- - chrome/browser/prefs/browser_prefs.cc | 2 +- - chrome/browser/resources/new_tab_page/app.html | 8 -------- - chrome/browser/ui/webui/searchbox/searchbox_handler.cc | 1 + - components/search/ntp_features.cc | 6 +++--- - 4 files changed, 5 insertions(+), 12 deletions(-) + chrome/browser/prefs/browser_prefs.cc | 2 +- + chrome/browser/resources/new_tab_page/app.html | 10 ---------- + chrome/browser/ui/webui/searchbox/searchbox_handler.cc | 1 + + components/search/ntp_features.cc | 6 +++--- + 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -2241,7 +2241,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2276,7 +2276,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref( prefs::kLensRegionSearchEnabled, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); @@ -25,7 +25,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html --- a/chrome/browser/resources/new_tab_page/app.html +++ b/chrome/browser/resources/new_tab_page/app.html -@@ -19,14 +19,6 @@ +@@ -19,16 +19,6 @@ ?hidden="${!this.logoEnabled_}">
@@ -35,7 +35,9 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res - @open-voice-search="${this.onOpenVoiceSearch_}" ?shown="${this.realboxShown_}" - ?had-secondary-side="${this.realboxHadSecondarySide}" - @had-secondary-side-changed="${this.onRealboxHadSecondarySideChanged_}" -- ?can-show-secondary-side="${this.realboxCanShowSecondarySide}"> +- ?can-show-secondary-side="${this.realboxCanShowSecondarySide}" +- ?compose-button-enabled="${this.composeButtonEnabled}" +- ?composebox-enabled="${this.composeboxEnabled}"> - ${this.showLensUploadDialog_ ? html` SettingOverridesForStorage(), &cookie_settings_metadata); +@@ -126,19 +111,16 @@ content::AllowServiceWorkerResult AllowServiceWorker( + + &cookie_settings_metadata); - if (!allow_cookies && - PartitionedStorageByDefaultAllowed(cookie_settings_metadata)) { @@ -75,9 +75,9 @@ diff --git a/components/embedder_support/content_settings_utils.cc b/components/ return content::AllowServiceWorkerResult::FromPolicy(!allow_javascript, !allow_cookies); -@@ -143,17 +125,16 @@ bool AllowSharedWorker( - worker_url, site_for_cookies, top_frame_origin, - cookie_settings->SettingOverridesForStorage(), &cookie_settings_metadata); +@@ -174,17 +156,16 @@ bool AllowSharedWorker( + net::CookieSettingOverrides(), cookie_partition_key, + &cookie_settings_metadata); - if (!allow && PartitionedStorageByDefaultAllowed(cookie_settings_metadata)) { - allow = true; diff --git a/build/patches/Disable-TLS-resumption.patch b/build/patches/Disable-TLS-resumption.patch index 03d1f944..afcea751 100644 --- a/build/patches/Disable-TLS-resumption.patch +++ b/build/patches/Disable-TLS-resumption.patch @@ -79,7 +79,7 @@ new file mode 100644 diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc -@@ -221,6 +221,7 @@ HttpNetworkSession::HttpNetworkSession(const HttpNetworkSessionParams& params, +@@ -222,6 +222,7 @@ HttpNetworkSession::HttpNetworkSession(const HttpNetworkSessionParams& params, next_protos_.push_back(NextProto::kProtoHTTP11); @@ -137,7 +137,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {} QuicSessionRequest::~QuicSessionRequest() { -@@ -2363,7 +2396,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { +@@ -2365,7 +2398,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { cert_verifier_, transport_security_state_, sct_auditing_delegate_, HostsFromOrigins(params_.origins_to_force_quic_on), key.network_anonymization_key), @@ -149,7 +149,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -285,7 +285,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( +@@ -290,7 +290,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( CHECK(context_); } @@ -183,7 +183,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket Disconnect(); } -@@ -672,6 +698,8 @@ int SSLClientSocketImpl::Init() { +@@ -681,6 +707,8 @@ int SSLClientSocketImpl::Init() { } if (session) SSL_set_session(ssl_.get(), session.get()); @@ -192,7 +192,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket } transport_adapter_ = std::make_unique( -@@ -958,6 +986,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { +@@ -966,6 +994,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { : SSLHandshakeDetails::kTLS13Full; } } @@ -228,7 +228,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket UMA_HISTOGRAM_ENUMERATION("Net.SSLHandshakeDetails", details); // Measure TLS connections that implement the renegotiation_info and EMS -@@ -1567,6 +1624,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { +@@ -1582,6 +1639,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { } bool SSLClientSocketImpl::IsCachingEnabled() const { diff --git a/build/patches/Disable-WebGPU.patch b/build/patches/Disable-WebGPU.patch index bd4ab2ad..579ff1c2 100644 --- a/build/patches/Disable-WebGPU.patch +++ b/build/patches/Disable-WebGPU.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -558,6 +558,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -555,6 +555,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( WebRuntimeFeatures::EnableRemotePlayback(false); @@ -26,7 +26,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc @@ -235,7 +235,7 @@ BASE_FEATURE(kEnableDrDc, // enabled by default on supported platforms. - #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || \ + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || \ BUILDFLAG(IS_ANDROID) -#define WEBGPU_ENABLED base::FEATURE_ENABLED_BY_DEFAULT +#define WEBGPU_ENABLED base::FEATURE_DISABLED_BY_DEFAULT diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 8a9fdf93..ec41a68e 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -13,6 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../optimization_guide_keyed_service.cc | 1 - chrome/browser/permissions/BUILD.gn | 2 -- .../permissions/chrome_permissions_client.cc | 2 -- + .../prediction_model_handler_provider.cc | 2 +- .../predictors/autocomplete_action_predictor.cc | 2 ++ .../predictors/loading_predictor_config.cc | 4 ++-- chrome/browser/predictors/predictors_features.cc | 3 +-- @@ -54,7 +55,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 49 files changed, 123 insertions(+), 48 deletions(-) + 50 files changed, 124 insertions(+), 49 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc @@ -66,7 +67,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -763,8 +763,6 @@ static_library("browser") { +@@ -775,8 +775,6 @@ static_library("browser") { "navigation_predictor/navigation_predictor_keyed_service_factory.h", "navigation_predictor/navigation_predictor_metrics_document_data.cc", "navigation_predictor/navigation_predictor_metrics_document_data.h", @@ -75,7 +76,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "navigation_predictor/preloading_model_keyed_service.cc", "navigation_predictor/preloading_model_keyed_service.h", "navigation_predictor/preloading_model_keyed_service_factory.cc", -@@ -2312,7 +2310,7 @@ static_library("browser") { +@@ -2343,7 +2341,7 @@ static_library("browser") { "//components/resources", "//components/safe_browsing/content/browser", "//components/safe_browsing/content/browser:safe_browsing_service", @@ -187,7 +188,7 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -519,7 +519,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -516,7 +516,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -219,6 +220,21 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br return selectors; } +diff --git a/chrome/browser/permissions/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_model_handler_provider.cc +--- a/chrome/browser/permissions/prediction_model_handler_provider.cc ++++ b/chrome/browser/permissions/prediction_model_handler_provider.cc +@@ -13,10 +13,10 @@ + #include "chrome/browser/permissions/permissions_aiv1_handler.h" + #include "components/optimization_guide/core/optimization_guide_model_provider.h" + #include "components/permissions/features.h" +-#include "components/permissions/prediction_service/permissions_aiv3_handler.h" + #include "components/permissions/request_type.h" + + #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#include "components/permissions/prediction_service/permissions_aiv3_handler.h" + #include "components/permissions/prediction_service/prediction_model_handler.h" + #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) + diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc --- a/chrome/browser/predictors/autocomplete_action_predictor.cc +++ b/chrome/browser/predictors/autocomplete_action_predictor.cc @@ -272,7 +288,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_sett diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc --- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc +++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc -@@ -84,6 +84,7 @@ SearchPrefetchURLLoader::RequestHandler +@@ -85,6 +85,7 @@ SearchPrefetchURLLoader::RequestHandler SearchPrefetchURLLoaderInterceptor::MaybeCreateLoaderForRequest( const network::ResourceRequest& tentative_resource_request, content::FrameTreeNodeId frame_tree_node_id) { @@ -283,7 +299,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1155,7 +1155,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1177,7 +1177,6 @@ void ChromeBrowserMainExtraPartsProfiles:: base::FeatureList::IsEnabled( permissions::features::kPermissionOnDeviceGeolocationPredictions) || base::FeatureList::IsEnabled(permissions::features::kPermissionsAIv1)) { @@ -334,7 +350,7 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -442,7 +442,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -444,7 +444,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } MixedContentSettingsTabHelper::CreateForWebContents(web_contents); NavigationMetricsRecorder::CreateForWebContents(web_contents); @@ -371,7 +387,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc } // namespace -@@ -155,10 +159,13 @@ void ReadAloudAppModel::PreprocessTextForSpeech( +@@ -153,10 +157,13 @@ void ReadAloudAppModel::PreprocessTextForSpeech( } } @@ -385,7 +401,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc void ReadAloudAppModel::CalculatePhrases( a11y::ReadAloudCurrentGranularity& granularity) { if (!features::IsReadAnythingReadAloudPhraseHighlightingEnabled()) { -@@ -215,19 +222,23 @@ void ReadAloudAppModel::CalculatePhrases( +@@ -213,19 +220,23 @@ void ReadAloudAppModel::CalculatePhrases( base::BindOnce(&ReadAloudAppModel::UpdatePhraseBoundaries, weak_ptr_factory_.GetWeakPtr(), phrase_tokens)); } @@ -411,7 +427,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc // Reset the phrase calculation flag, so that the next phrase calculation can // be scheduled, if needed. is_calculating_phrases = false; -@@ -289,6 +300,7 @@ void ReadAloudAppModel::UpdatePhraseBoundaries(std::vector tokens, +@@ -287,6 +298,7 @@ void ReadAloudAppModel::UpdatePhraseBoundaries(std::vector tokens, current_phrase_calculation_index_ = -1; LOG(WARNING) << "All phrases calculated!"; } @@ -433,7 +449,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "ui/accessibility/ax_node_position.h" -@@ -113,8 +116,10 @@ class ReadAloudAppModel { +@@ -116,8 +119,10 @@ class ReadAloudAppModel { bool is_docs, const std::set* current_nodes); @@ -444,7 +460,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h // Increments the processed_granularity_index_, updating ReadAloud's state of // the current granularity to refer to the next granularity. The current -@@ -271,9 +276,11 @@ class ReadAloudAppModel { +@@ -274,9 +279,11 @@ class ReadAloudAppModel { // still needs to be read. bool NoValidTextRemainingInCurrentNode(bool is_pdf, bool is_docs) const; @@ -456,7 +472,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h // Once the phrase segmentation has completed for a given sentence, update the // granularity with the phrase boundaries, and calculate phrases for the next -@@ -335,7 +342,7 @@ class ReadAloudAppModel { +@@ -344,7 +351,7 @@ class ReadAloudAppModel { // Whether a phrase calculation for a sentence is currently underway. (We // do not initiate a second calculation before the first has completed.) @@ -478,7 +494,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "chrome/renderer/accessibility/read_anything/read_anything_app_model.h" #include "chrome/renderer/accessibility/read_anything/read_anything_node_utils.h" -@@ -1562,6 +1564,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1589,6 +1591,7 @@ void ReadAnythingAppController::OnConnected() { render_frame()->GetBrowserInterfaceBroker().GetInterface( std::move(page_handler_factory_receiver)); @@ -486,7 +502,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr // Get the dependency parser model used by phrase-based highlighting. if (read_aloud_model_.GetDependencyParserModel().IsAvailable()) { return; -@@ -1570,6 +1573,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1597,6 +1600,7 @@ void ReadAnythingAppController::OnConnected() { page_handler_->GetDependencyParserModel( base::BindOnce(&ReadAnythingAppController::UpdateDependencyParserModel, weak_ptr_factory_.GetWeakPtr())); @@ -494,7 +510,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::OnCopy() const { -@@ -1787,8 +1791,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { +@@ -1828,8 +1832,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { } void ReadAnythingAppController::PreprocessTextForSpeech() { @@ -505,7 +521,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::MovePositionToNextGranularity() { -@@ -1998,14 +2004,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { +@@ -2044,14 +2050,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { void ReadAnythingAppController::UpdateDependencyParserModel( base::File model_file) { @@ -537,7 +553,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr class ReadAnythingAppControllerTest; class ReadAnythingAppControllerScreen2xDataCollectionModeTest; -@@ -284,7 +286,9 @@ class ReadAnythingAppController +@@ -285,7 +287,9 @@ class ReadAnythingAppController // available. void UpdateDependencyParserModel(base::File model_file); @@ -587,7 +603,7 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -597,7 +597,7 @@ test("components_unittests") { +@@ -600,7 +600,7 @@ test("components_unittests") { "//components/media_router/common/providers/cast/channel:unit_tests", "//components/page_info:unit_tests", "//components/permissions:unit_tests", @@ -628,7 +644,7 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -50,7 +50,9 @@ +@@ -51,7 +51,9 @@ #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" @@ -638,7 +654,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "components/omnibox/browser/autocomplete_scoring_signals_annotator.h" #include "components/omnibox/browser/bookmark_provider.h" #include "components/omnibox/browser/bookmark_scoring_signals_annotator.h" -@@ -123,6 +125,7 @@ using ProviderType = AutocompleteProvider::Type; +@@ -125,6 +127,7 @@ using ProviderType = AutocompleteProvider::Type; constexpr bool is_android = !!BUILDFLAG(IS_ANDROID); @@ -646,7 +662,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ void RecordMlScoreCoverage(size_t matches_with_non_null_scores, size_t total_scored_matches) { int percent_score_coverage = -@@ -231,6 +234,7 @@ void RecordTotalMatchesScored(size_t num_scored) { +@@ -233,6 +236,7 @@ void RecordTotalMatchesScored(size_t num_scored) { base::UmaHistogramCounts1000("Omnibox.URLScoringModelExecuted.Matches", num_scored); } @@ -701,10 +717,10 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op std::optional request_context_metadata) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if ((true)) return; // no consent on bromite - - InsertionOrderedSet urls_to_fetch; - InsertionOrderedSet hosts_to_fetch; -@@ -1409,6 +1411,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization( + if (!on_demand_hints_for_testing_.empty()) { + for (const GURL& url : urls) { + const auto& all_hints = on_demand_hints_for_testing_[url]; +@@ -1425,6 +1427,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization( bool skip_cache, OptimizationMetadata* optimization_metadata) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -729,7 +745,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } // namespace -@@ -453,8 +449,7 @@ size_t MaxURLKeyedHintCacheSize() { +@@ -460,8 +456,7 @@ size_t MaxURLKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -739,7 +755,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -903,5 +898,13 @@ bool IsPrivacyGuideAiSettingsEnabled() { +@@ -904,5 +899,13 @@ bool IsPrivacyGuideAiSettingsEnabled() { return base::FeatureList::IsEnabled(kPrivacyGuideAiSettings); } @@ -840,7 +856,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn --- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn +++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn -@@ -26,6 +26,13 @@ source_set("notification_content_detection") { +@@ -27,6 +27,13 @@ source_set("notification_content_detection") { ] } @@ -868,7 +884,7 @@ diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_ diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc -@@ -518,6 +518,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( +@@ -516,6 +516,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( scoped_refptr context, scoped_refptr version) { @@ -925,19 +941,19 @@ new file mode 100644 diff --git a/services/webnn/features.gni b/services/webnn/features.gni --- a/services/webnn/features.gni +++ b/services/webnn/features.gni -@@ -7,7 +7,7 @@ import("//services/on_device_model/on_device_model.gni") +@@ -9,7 +9,7 @@ assert(use_blink) declare_args() { - # TFLite is used as a fallback option on macOS and Windows. -- webnn_use_tflite = is_android || is_chromeos || is_linux || is_mac || is_win -+ webnn_use_tflite = false #is_android || is_chromeos || is_linux || is_mac || is_win + # TFLite is used as a fallback option on Apple and Windows. +- webnn_use_tflite = is_android || is_chromeos || is_linux || is_apple || is_win ++ webnn_use_tflite = false #is_android || is_chromeos || is_linux || is_apple || is_win # Enable the GPU delegate provided by the Optimization Guide library. webnn_use_chrome_ml_api = enable_ml_internal diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc -@@ -1757,6 +1757,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( +@@ -1798,6 +1798,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( } bool HTMLDocumentParser::ShouldSkipPreloadScan() { @@ -948,7 +964,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc --- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc +++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc -@@ -644,6 +644,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { +@@ -642,6 +642,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { return; } @@ -959,7 +975,7 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3564,7 +3564,7 @@ +@@ -3734,7 +3734,7 @@ // // It also has some feature params defined throughout the codebase. name: "Prerender2", diff --git a/build/patches/Disable-all-promo-dialogs.patch b/build/patches/Disable-all-promo-dialogs.patch index e77c3d53..e92a0c8d 100644 --- a/build/patches/Disable-all-promo-dialogs.patch +++ b/build/patches/Disable-all-promo-dialogs.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/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 -@@ -1656,6 +1656,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1699,6 +1699,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } private boolean maybeShowPromo(Profile profile) { @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -151,7 +151,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -167,7 +167,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled, false); @@ -51,7 +51,7 @@ diff --git a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_contr diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc --- a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc +++ b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc -@@ -61,6 +61,7 @@ ui::ElementContext BrowserFeaturePromoController20::GetAnchorContext() const { +@@ -63,6 +63,7 @@ ui::ElementContext BrowserFeaturePromoController20::GetAnchorContext() const { user_education::FeaturePromoResult BrowserFeaturePromoController20::CanShowPromoForElement( ui::TrackedElement* anchor_element) const { diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index 33403a9f..11968358 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -54,7 +54,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1349,6 +1349,7 @@ network::mojom::AttributionSupport +@@ -1339,6 +1339,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, bool client_os_disabled) { @@ -62,7 +62,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv // WebView only supports OS-level attribution and not web-attribution. switch (state) { case AttributionReportingOsApiState::kDisabled: -@@ -1367,6 +1368,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -1357,6 +1358,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -85,7 +85,7 @@ diff --git a/android_webview/browser/component_updater/trust_token_key_commitmen diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java --- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java +++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java -@@ -172,7 +172,7 @@ public class AwSettings { +@@ -171,7 +171,7 @@ public class AwSettings { private boolean mSpatialNavigationEnabled; // Default depends on device features. private boolean mEnableSupportedHardwareAcceleratedFeatures; private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW; @@ -94,7 +94,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.ja @SpeculativeLoadingAllowedFlags private int mSpeculativeLoadingAllowedFlags = -@@ -1813,7 +1813,7 @@ public class AwSettings { +@@ -1789,7 +1789,7 @@ public class AwSettings { public void setAttributionBehavior(@AttributionBehavior int behavior) { synchronized (mAwSettingsLock) { if (mAttributionBehavior != behavior) { @@ -114,7 +114,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro +@@ -135,6 +121,11 @@ for the previous order (main_preferences_legacy). --> android:key="adblock" android:order="13" android:title="@string/prefs_adblock"/> @@ -214,7 +215,15 @@ diff --git a/chrome/browser/adblock/adblock_chrome_content_browser_client.h b/ch diff --git a/chrome/browser/adblock/android/BUILD.gn b/chrome/browser/adblock/android/BUILD.gn --- a/chrome/browser/adblock/android/BUILD.gn +++ b/chrome/browser/adblock/android/BUILD.gn -@@ -148,7 +148,7 @@ android_resources("java_ui_resources") { +@@ -113,6 +113,7 @@ android_library("adblock_ui_java") { + "//build/android:build_java", + "//chrome/browser/preferences:java", + "//chrome/browser/profiles/android:java", ++ "//chrome/browser/settings:java", + "//components/adblock/android:adblock_controller_java", + "//components/browser_ui/settings/android:java", + "//components/prefs/android:java", +@@ -148,7 +149,7 @@ android_resources("java_ui_resources") { "java/res/layout/adblock_custom_item_settings.xml", "java/res/layout/adblock_filter_lists_list_item.xml", "java/res/xml/adblock_more_options.xml", @@ -550,16 +559,32 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java --- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java +++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java -@@ -33,7 +33,7 @@ import org.chromium.chrome.browser.adblock.R; +@@ -30,10 +30,11 @@ import android.widget.TextView; + import androidx.preference.PreferenceFragmentCompat; + + import org.chromium.chrome.browser.adblock.R; ++import org.chromium.components.browser_ui.settings.SettingsFragment; import java.util.List; -public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat { -+public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat { ++public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat implements SettingsFragment { private EditText mItem; private ImageView mAddButton; private ListView mListView; -@@ -75,7 +75,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -41,6 +42,11 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat + + public AdblockCustomItemFragment() {} + ++ @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } ++ + @Override + public View onCreateView( + LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { +@@ -75,7 +81,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat protected abstract void removeItemImpl(String item); @@ -568,7 +593,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser protected abstract String getCustomItemTextViewText(); -@@ -90,10 +90,12 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -90,10 +96,12 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat // Holder for listview items private class Holder { TextView mItem; @@ -581,7 +606,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mRemoveButton = rootView.findViewById(R.id.fragment_adblock_custom_item_remove); mRemoveButton.setContentDescription( AdblockCustomItemFragment.this.getCustomItemRemoveButtonContentDescription()); -@@ -107,6 +109,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -107,6 +115,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat String item = (String) v.getTag(); removeItemImpl(item); mAdapter.notifyDataSetChanged(); @@ -589,7 +614,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser } }; -@@ -134,16 +137,23 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -134,16 +143,23 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat convertView.setTag(new Holder(convertView)); } @@ -643,10 +668,34 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser return view; } +diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java +--- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java ++++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java +@@ -26,8 +26,9 @@ import androidx.fragment.app.ListFragment; + import org.chromium.chrome.browser.adblock.R; + import org.chromium.chrome.browser.profiles.ProfileManager; + import org.chromium.components.adblock.AdblockController; ++import org.chromium.components.browser_ui.settings.SettingsFragment; + +-public class AdblockFilterListsFragment extends ListFragment { ++public class AdblockFilterListsFragment extends ListFragment implements SettingsFragment { + private AdblockFilterListsAdapter mFilterListsAdapter; + + @Override +@@ -54,4 +55,9 @@ public class AdblockFilterListsFragment extends ListFragment { + super.onStart(); + mFilterListsAdapter.start(); + } ++ ++ @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } + } diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java --- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java +++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java -@@ -13,6 +13,7 @@ +@@ -13,27 +13,46 @@ package org.chromium.chrome.browser.adblock.settings; import android.os.Bundle; @@ -654,20 +703,25 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -@@ -20,20 +21,33 @@ import androidx.preference.PreferenceFragmentCompat; + ++import org.chromium.base.supplier.ObservableSupplier; ++import org.chromium.base.supplier.ObservableSupplierImpl; ++ import org.chromium.build.BuildConfig; import org.chromium.chrome.browser.adblock.R; import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; ++import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; import org.chromium.components.adblock.AdblockController; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; ++import org.chromium.components.browser_ui.settings.SettingsFragment; import org.chromium.components.user_prefs.UserPrefs; -public class AdblockSettingsFragment extends PreferenceFragmentCompat - implements Preference.OnPreferenceChangeListener { +public class AdblockSettingsFragment -+ extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener { ++ extends ChromeBaseSettingsFragment implements Preference.OnPreferenceChangeListener { private ChromeSwitchPreference mAdblockEnabled; private ChromeSwitchPreference mAcceptableAdsEnabled; private ChromeSwitchPreference mAutoInstalledEnabled; @@ -691,9 +745,22 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser private static final String SETTINGS_ENABLED_KEY = "fragment_adblock_settings_enabled_key"; private static final String SETTINGS_FILTER_LISTS_KEY = "fragment_adblock_settings_filter_lists_key"; -@@ -52,9 +66,21 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -51,10 +70,34 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat + private static final int ON_OFF_TOGGLE_COUNT_TIME_WINDOW_MS = 3000; private long mOnOffTogleTimestamp; ++ private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); ++ ++ @Override ++ public @SettingsFragment.AnimationType int getAnimationType() { ++ return SettingsFragment.AnimationType.PROPERTY; ++ } ++ ++ @Override ++ public ObservableSupplier getPageTitle() { ++ return mPageTitle; ++ } ++ private void bindPreferences() { + mStartUpdate = findPreference(START_UPDATE_KEY); + mStartUpdate.setOnPreferenceClickListener(preference -> { @@ -713,7 +780,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mAutoInstalledEnabled = (ChromeSwitchPreference) findPreference(SETTINGS_AUTO_INSTALL_ENABLED_KEY); mAllowedDomains = findPreference(SETTINGS_ALLOWED_DOMAINS_KEY); -@@ -62,35 +88,43 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -62,35 +105,43 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat } private boolean areMoreOptionsEnabled() { @@ -769,7 +836,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mAutoInstalledEnabled.setOnPreferenceChangeListener(this); } -@@ -122,7 +156,7 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -122,7 +173,7 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -778,7 +845,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser bindPreferences(); synchronizePreferences(); } -@@ -137,19 +171,16 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -137,19 +188,16 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference.getKey().equals(SETTINGS_ENABLED_KEY)) { AdblockController.getInstance(ProfileManager.getLastUsedRegularProfile()) @@ -806,7 +873,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -6748,7 +6748,9 @@ ChromeContentBrowserClient:: +@@ -6349,7 +6349,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -817,7 +884,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) if (!frame) { return false; -@@ -6770,9 +6772,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( +@@ -6372,9 +6374,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( @@ -832,7 +899,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h -@@ -703,11 +703,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -720,11 +720,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { CreateURLLoaderHandlerForServiceWorkerNavigationPreload( content::FrameTreeNodeId frame_tree_node_id, const network::ResourceRequest& resource_request) override; @@ -1029,15 +1096,18 @@ diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.h diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc --- a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc +++ b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc -@@ -17,6 +17,7 @@ +@@ -17,8 +17,10 @@ #include "base/containers/flat_map.h" #include "base/i18n/time_formatting.h" +#include "base/strings/utf_string_conversions.h" #include "base/logging.h" #include "base/no_destructor.h" ++#include "base/strings/stringprintf.h" #include "base/values.h" -@@ -30,6 +31,7 @@ + #include "chrome/browser/extensions/extension_tab_util.h" + #include "chrome/browser/profiles/profile.h" +@@ -30,6 +32,7 @@ #include "components/adblock/core/common/adblock_prefs.h" #include "components/adblock/core/common/adblock_utils.h" #include "components/adblock/core/common/content_type.h" @@ -1045,7 +1115,7 @@ diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering #include "components/adblock/core/configuration/filtering_configuration.h" #include "components/adblock/core/configuration/persistent_filtering_configuration.h" #include "components/adblock/core/session_stats.h" -@@ -95,24 +97,6 @@ std::vector CopySessionsStats( +@@ -95,24 +98,6 @@ std::vector CopySessionsStats( return result; } @@ -1070,7 +1140,7 @@ diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering std::vector CopySubscriptions( const std::vector> current_subscriptions) { -@@ -123,12 +107,12 @@ std::vector CopySubscriptions( +@@ -123,12 +108,12 @@ std::vector CopySubscriptions( js_sub.title = sub->GetTitle(); js_sub.current_version = sub->GetCurrentVersion(); js_sub.installation_state = @@ -1119,7 +1189,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -244,7 +244,6 @@ +@@ -247,7 +247,6 @@ #include "chrome/common/buildflags.h" #include "chrome/common/chrome_features.h" #include "components/adblock/content/browser/factories/adblock_request_throttle_factory.h" @@ -1127,7 +1197,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "components/adblock/content/browser/factories/content_security_policy_injector_factory.h" #include "components/adblock/content/browser/factories/element_hider_factory.h" #include "components/adblock/content/browser/factories/resource_classification_runner_factory.h" -@@ -916,7 +915,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -929,7 +928,6 @@ void ChromeBrowserMainExtraPartsProfiles:: // Makes manual testing possible. FakeSmartCardDeviceServiceFactory::GetInstance(); #endif @@ -1146,7 +1216,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "appearance_page/appearance_fonts_page.ts", "appearance_page/appearance_page.ts", "appearance_page/home_url_input.ts", -@@ -378,6 +379,7 @@ build_webui("build") { +@@ -382,6 +383,7 @@ build_webui("build") { ts_definitions = [ "//tools/typescript/definitions/autofill_private.d.ts", "//tools/typescript/definitions/chrome_event.d.ts", @@ -1682,7 +1752,7 @@ new file mode 100644 diff --git a/chrome/browser/resources/settings/basic_page/basic_page.html b/chrome/browser/resources/settings/basic_page/basic_page.html --- a/chrome/browser/resources/settings/basic_page/basic_page.html +++ b/chrome/browser/resources/settings/basic_page/basic_page.html -@@ -57,6 +57,13 @@ +@@ -53,6 +53,13 @@ @@ -1721,7 +1791,7 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts -@@ -251,6 +251,10 @@ function createRoutes(): SettingsRoutes { +@@ -236,6 +236,10 @@ function createRoutes(): SettingsRoutes { r.FONTS = r.APPEARANCE.createChild('/fonts'); } @@ -1757,7 +1827,7 @@ diff --git a/chrome/browser/resources/settings/settings.ts b/chrome/browser/reso diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html b/chrome/browser/resources/settings/settings_menu/settings_menu.html --- a/chrome/browser/resources/settings/settings_menu/settings_menu.html +++ b/chrome/browser/resources/settings/settings_menu/settings_menu.html -@@ -149,6 +149,11 @@ +@@ -148,6 +148,11 @@ $i18n{a11yPageTitle} @@ -1772,7 +1842,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -351,7 +351,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -353,7 +353,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { auto* original_profile = profile->GetOriginalProfile(); adblock::EnsureBackgroundServicesStarted(original_profile); adblock::RegisterAdblockWebContentObserver< @@ -1785,8 +1855,8 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/common/extensions/api/_permission_features.json --- a/chrome/common/extensions/api/_permission_features.json +++ b/chrome/common/extensions/api/_permission_features.json -@@ -66,13 +66,6 @@ - "extension" +@@ -60,13 +60,6 @@ + "5107DE9024C329EEA9C9A72D94C16723790C6422" // Apps Developer Tool Dev. ] }, - "adblockPrivate": { @@ -1799,8 +1869,8 @@ diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/com "autofillPrivate": { "channel": "trunk", "extension_types": ["extension", "platform_app"], -@@ -392,13 +385,6 @@ - "channel": "beta", +@@ -386,13 +379,6 @@ + "channel": "stable", "command_line_switch": "extension-ai-data-collection" }, - "eyeoFilteringPrivate": { @@ -12335,7 +12405,7 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc -@@ -1118,7 +1118,7 @@ void ContentBrowserClient::WillCreateURLLoaderFactory( +@@ -1142,7 +1142,7 @@ void ContentBrowserClient::WillCreateURLLoaderFactory( DCHECK(browser_context); } @@ -12344,7 +12414,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b return false; } -@@ -1127,9 +1127,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { +@@ -1151,9 +1151,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { } void ContentBrowserClient::CreateWebSocket( @@ -12359,7 +12429,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -2076,7 +2076,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2108,7 +2108,7 @@ class CONTENT_EXPORT ContentBrowserClient { scoped_refptr navigation_response_task_runner); // Returns true when the embedder wants to intercept a websocket connection. @@ -12368,7 +12438,7 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br // Returns the WebSocket creation options. virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame); -@@ -2098,9 +2098,11 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2130,9 +2130,11 @@ class CONTENT_EXPORT ContentBrowserClient { // Always called on the UI thread and only when the Network Service is // enabled. virtual void CreateWebSocket( @@ -12432,7 +12502,7 @@ diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/b diff --git a/third_party/blink/renderer/core/css/style_engine.h b/third_party/blink/renderer/core/css/style_engine.h --- a/third_party/blink/renderer/core/css/style_engine.h +++ b/third_party/blink/renderer/core/css/style_engine.h -@@ -281,6 +281,7 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected, +@@ -282,6 +282,7 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected, const ComputedStyle* embedder_style) const; void ViewportStyleSettingChanged(); @@ -12458,7 +12528,7 @@ diff --git a/third_party/blink/renderer/core/dom/events/event_target.cc b/third_ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_party/blink/renderer/core/exported/web_document.cc --- a/third_party/blink/renderer/core/exported/web_document.cc +++ b/third_party/blink/renderer/core/exported/web_document.cc -@@ -292,6 +292,16 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( +@@ -298,6 +298,16 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( Document* document = Unwrap(); DCHECK(document); @@ -12475,7 +12545,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa auto* parsed_sheet = MakeGarbageCollected( MakeGarbageCollected(*document)); parsed_sheet->ParseString(source_code); -@@ -313,9 +323,6 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( +@@ -319,9 +329,6 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( {SchedulingPolicy::DisableBackForwardCache()}); } @@ -12488,7 +12558,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc --- a/third_party/blink/renderer/core/html/html_element.cc +++ b/third_party/blink/renderer/core/html/html_element.cc -@@ -2436,13 +2436,7 @@ void HTMLElement::setSpellcheck(bool enable) { +@@ -2498,13 +2498,7 @@ void HTMLElement::setSpellcheck(bool enable) { } void HTMLElement::click() { diff --git a/build/patches/Fix-chromium-build-bugs.patch b/build/patches/Fix-chromium-build-bugs.patch index a7559718..42c48149 100644 --- a/build/patches/Fix-chromium-build-bugs.patch +++ b/build/patches/Fix-chromium-build-bugs.patch @@ -6,7 +6,6 @@ because of https://bugs.chromium.org/p/chromium/issues/detail?id=1491776#c10 --- BUILD.gn | 1 - - build/config/compiler/BUILD.gn | 6 +++++- .../navigation_predictor_metrics_document_data.h | 2 ++ chrome/browser/safe_browsing/BUILD.gn | 1 + .../component_updater/installer_policies/BUILD.gn | 1 + @@ -17,12 +16,12 @@ https://bugs.chromium.org/p/chromium/issues/detail?id=1491776#c10 content/browser/browser_interface_binders.cc | 1 + net/BUILD.gn | 1 + services/webnn/dml/graph_impl_dml.cc | 2 ++ - 12 files changed, 21 insertions(+), 17 deletions(-) + 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/BUILD.gn b/BUILD.gn --- a/BUILD.gn +++ b/BUILD.gn -@@ -430,7 +430,6 @@ group("gn_all") { +@@ -429,7 +429,6 @@ group("gn_all") { "//android_webview:empty_group", "//android_webview/test", "//android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk", @@ -30,22 +29,6 @@ diff --git a/BUILD.gn b/BUILD.gn "//android_webview/tools/sdk_sandbox", "//android_webview/tools/system_webview_shell", "//chrome/android:chrome_junit_tests", -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 -@@ -1674,7 +1674,11 @@ config("clang_revision") { - _expected_clang_revision = "$_py_revision-$_py_subrevision" - - assert( -- _clang_revision == _expected_clang_revision, -+ filter_include([ _clang_revision ], -+ [ -+ _expected_clang_revision, -+ "$_expected_clang_revision,*", -+ ]) != [], - "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?") - } - } diff --git a/chrome/browser/navigation_predictor/navigation_predictor_metrics_document_data.h b/chrome/browser/navigation_predictor/navigation_predictor_metrics_document_data.h --- a/chrome/browser/navigation_predictor/navigation_predictor_metrics_document_data.h +++ b/chrome/browser/navigation_predictor/navigation_predictor_metrics_document_data.h @@ -61,7 +44,7 @@ diff --git a/chrome/browser/navigation_predictor/navigation_predictor_metrics_do diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -269,6 +269,7 @@ static_library("safe_browsing") { +@@ -271,6 +271,7 @@ static_library("safe_browsing") { "//components/webdata/common", "//content/public/browser", "//services/preferences/public/mojom:mojom", @@ -97,7 +80,7 @@ diff --git a/components/omnibox/browser/autocomplete_classifier.cc b/components/ diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc -@@ -1012,11 +1012,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; +@@ -1007,11 +1007,11 @@ MLConfig& MLConfig::operator=(const MLConfig& other) = default; ScopedMLConfigForTesting::ScopedMLConfigForTesting() : original_config_(std::make_unique(GetMLConfig())) { @@ -160,7 +143,7 @@ diff --git a/content/browser/browser_interface_binders.cc b/content/browser/brow diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1775,6 +1775,7 @@ component("net") { +@@ -1781,6 +1781,7 @@ component("net") { if (!is_cronet_build) { deps += [ "//mojo/public/cpp/bindings:default_construct_tag" ] } @@ -171,7 +154,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn diff --git a/services/webnn/dml/graph_impl_dml.cc b/services/webnn/dml/graph_impl_dml.cc --- a/services/webnn/dml/graph_impl_dml.cc +++ b/services/webnn/dml/graph_impl_dml.cc -@@ -281,6 +281,7 @@ std::optional> CalculateAlignedByteLength( +@@ -281,6 +281,7 @@ std::optional> CalculateAlignedByteLength( } // Same as above, but given a map of names to descriptors. @@ -186,5 +169,5 @@ diff --git a/services/webnn/dml/graph_impl_dml.cc b/services/webnn/dml/graph_imp +[[maybe_unused]] HRESULT MapAndCopyInputDataToBuffer( const base::flat_map& named_inputs, - const std::map& input_name_to_d3d12_range_map, + const absl::flat_hash_map& -- diff --git a/build/patches/Fix-chromium-vanilla.patch b/build/patches/Fix-chromium-vanilla.patch index a5354728..5ef1f570 100644 --- a/build/patches/Fix-chromium-vanilla.patch +++ b/build/patches/Fix-chromium-vanilla.patch @@ -11,7 +11,7 @@ Fixes some crashes in start-up (only chromium vanilla) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java -@@ -181,6 +181,8 @@ public abstract class FirstRunFlowSequencer { +@@ -180,6 +180,8 @@ public abstract class FirstRunFlowSequencer { * @param freProperties Resulting FRE properties bundle. */ public void updateFirstRunProperties(Bundle freProperties) { diff --git a/build/patches/Fonts-fingerprinting-mitigation.patch b/build/patches/Fonts-fingerprinting-mitigation.patch index e77d94ed..9294af95 100644 --- a/build/patches/Fonts-fingerprinting-mitigation.patch +++ b/build/patches/Fonts-fingerprinting-mitigation.patch @@ -120,7 +120,7 @@ diff --git a/skia/ext/skia_utils_win.h b/skia/ext/skia_utils_win.h diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -247,6 +247,10 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(int, +@@ -239,6 +239,10 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE_PARAM(int, BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kLessAggressiveParkableString); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kCombineNewWindowIPCs); @@ -134,7 +134,7 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -797,6 +797,7 @@ component("platform") { +@@ -791,6 +791,7 @@ component("platform") { "fonts/simple_font_data.cc", "fonts/simple_font_data.h", "fonts/skia/font_cache_skia.cc", @@ -145,7 +145,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re diff --git a/third_party/blink/renderer/platform/fonts/font_cache.h b/third_party/blink/renderer/platform/fonts/font_cache.h --- a/third_party/blink/renderer/platform/fonts/font_cache.h +++ b/third_party/blink/renderer/platform/fonts/font_cache.h -@@ -314,7 +314,7 @@ class PLATFORM_EXPORT FontCache final { +@@ -318,7 +318,7 @@ class PLATFORM_EXPORT FontCache final { sk_sp CreateTypeface(const FontDescription&, const FontFaceCreationParams&, diff --git a/build/patches/Force-use-vpython3-for-some-scripts.patch b/build/patches/Force-use-vpython3-for-some-scripts.patch index e3339a0a..486c65e6 100644 --- a/build/patches/Force-use-vpython3-for-some-scripts.patch +++ b/build/patches/Force-use-vpython3-for-some-scripts.patch @@ -9,8 +9,8 @@ required by the chromium build tools. License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- components/metrics/generate_expired_histograms_array.gni | 7 +++++-- - components/search_engines/BUILD.gn | 4 +++- components/variations/field_trial_config/BUILD.gn | 4 +++- + tools/grit/grit_rule.gni | 4 +++- tools/json_to_struct/json_to_struct.gni | 4 +++- tools/metrics/generate_allowlist_from_histograms_file.gni | 5 +++-- 5 files changed, 17 insertions(+), 7 deletions(-) @@ -39,27 +39,6 @@ diff --git a/components/metrics/generate_expired_histograms_array.gni b/componen if (defined(invoker.namespace) && invoker.namespace != "") { args += [ "-n" + invoker.namespace ] -diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn ---- a/components/search_engines/BUILD.gn -+++ b/components/search_engines/BUILD.gn -@@ -298,7 +298,7 @@ component("search_engines_switches") { - - if (!is_android) { - action("generate_search_engine_icons") { -- script = "//tools/search_engine_choice/generate_search_engine_icons.py" -+ script = "//build/gn_run_binary.py" - - inputs = [ - "//tools/search_engine_choice/generate_search_engine_icons_config.json", -@@ -315,6 +315,8 @@ if (!is_android) { - ] - - args = [ -+ rebase_path("//third_party/depot_tools/vpython3"), -+ rebase_path("//tools/search_engine_choice/generate_search_engine_icons.py"), - rebase_path("//", root_build_dir), - rebase_path("$target_gen_dir/generated_search_engine_resource_ids-inc.cc", - root_build_dir), diff --git a/components/variations/field_trial_config/BUILD.gn b/components/variations/field_trial_config/BUILD.gn --- a/components/variations/field_trial_config/BUILD.gn +++ b/components/variations/field_trial_config/BUILD.gn @@ -81,6 +60,27 @@ diff --git a/components/variations/field_trial_config/BUILD.gn b/components/vari rebase_path(source, root_build_dir), "--destbase=" + rebase_path(target_gen_dir, root_build_dir), "--namespace=variations", +diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni +--- a/tools/grit/grit_rule.gni ++++ b/tools/grit/grit_rule.gni +@@ -154,7 +154,7 @@ template("grit") { + + _grit_custom_target = target_name + "_grit" + action(_grit_custom_target) { +- script = "//tools/grit/grit.py" ++ script = "//build/gn_run_binary.py" + inputs = [ invoker.source ] + + testonly = defined(invoker.testonly) && invoker.testonly +@@ -197,6 +197,8 @@ template("grit") { + } + + args = [ ++ rebase_path("//third_party/depot_tools/vpython3"), ++ rebase_path("//tools/grit/grit.py"), + "-i", + _rebased_source_path, + "build", diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni --- a/tools/json_to_struct/json_to_struct.gni +++ b/tools/json_to_struct/json_to_struct.gni diff --git a/build/patches/Guard-for-user-agent-reduction.patch b/build/patches/Guard-for-user-agent-reduction.patch index 39afaf78..aeddd66e 100644 --- a/build/patches/Guard-for-user-agent-reduction.patch +++ b/build/patches/Guard-for-user-agent-reduction.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -1616,7 +1616,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( +@@ -1456,7 +1456,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( registry->RegisterIntegerPref( prefs::kUserAgentReduction, static_cast( @@ -55,7 +55,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3709,9 +3709,9 @@ +@@ -3886,9 +3886,9 @@ // If enabled, the deviceModel will be reduced to "K" and the // androidVersion will be reduced to a static "10" string in android // User-Agent string. @@ -68,7 +68,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 }, // If enabled, the platform version in User-Agent Data will be removed. // This feature is limited to Linux only. -@@ -3723,15 +3723,15 @@ +@@ -3900,15 +3900,15 @@ // This User-Agent Reduction feature has been enabled starting from M101, // but we still keep this flag for future phase tests. { diff --git a/build/patches/Hardening-against-incognito-mode-detection.patch b/build/patches/Hardening-against-incognito-mode-detection.patch index 7878810c..71a4295c 100644 --- a/build/patches/Hardening-against-incognito-mode-detection.patch +++ b/build/patches/Hardening-against-incognito-mode-detection.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/storage/browser/quota/quota_manager_impl.cc b/storage/browser/quota/quota_manager_impl.cc --- a/storage/browser/quota/quota_manager_impl.cc +++ b/storage/browser/quota/quota_manager_impl.cc -@@ -1695,7 +1695,7 @@ int64_t QuotaManagerImpl::GetQuotaForStorageKey( +@@ -1776,7 +1776,7 @@ int64_t QuotaManagerImpl::GetQuotaForStorageKey( return kNoLimit; } diff --git a/build/patches/History-number-of-days-privacy-setting.patch b/build/patches/History-number-of-days-privacy-setting.patch index 90baa3f9..f06d8943 100644 --- a/build/patches/History-number-of-days-privacy-setting.patch +++ b/build/patches/History-number-of-days-privacy-setting.patch @@ -56,15 +56,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/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -61,6 +61,7 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog; - import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +@@ -62,6 +62,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; + import org.chromium.components.browser_ui.settings.SettingsFragment; import org.chromium.components.browser_ui.settings.SettingsNavigation; import org.chromium.components.browser_ui.settings.SettingsUtils; +import org.chromium.components.browser_ui.settings.SpinnerPreference; import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; import org.chromium.components.browser_ui.site_settings.SingleCategorySettings; import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; -@@ -95,6 +96,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -96,6 +97,9 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -74,16 +74,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** Fragment to keep track of the all the privacy related preferences. */ public class PrivacySettings extends ChromeBaseSettingsFragment implements Preference.OnPreferenceChangeListener { -@@ -160,6 +164,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -161,6 +165,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private ChromeSwitchPreference allowCustomTabIntentsPref; private ChromeSwitchPreference openExternalLinksPref; + private static final String PREF_HISTORY_EXPIRE_DAYS_THRESHOLD = "history_expire_days_threshold"; + @Override - public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) { + public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { mPageTitle.set(getString(R.string.prefs_privacy_security)); -@@ -310,6 +316,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -307,6 +313,40 @@ public class PrivacySettings extends ChromeBaseSettingsFragment Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK); syncAndServicesLink.setSummary(buildFooterString()); @@ -124,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference thirdPartyCookies = findPreference(PREF_THIRD_PARTY_COOKIES); if (showTrackingProtectionUi()) { if (thirdPartyCookies != null) thirdPartyCookies.setVisible(false); -@@ -649,6 +689,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -646,6 +686,29 @@ public class PrivacySettings extends ChromeBaseSettingsFragment || ((System.currentTimeMillis() - updateTimeMs) < TimeUnit.DAYS.toMillis(90)); } @@ -190,7 +190,7 @@ diff --git a/chrome/browser/history/history_service_factory.cc b/chrome/browser/ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -382,6 +382,7 @@ std::unique_ptr Profile::CreateProfile(const base::FilePath& path, +@@ -381,6 +381,7 @@ std::unique_ptr Profile::CreateProfile(const base::FilePath& path, void ProfileImpl::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false); @@ -201,7 +201,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -106,6 +106,15 @@ +@@ -104,6 +104,15 @@ sub-label="$i18n{permissionsPageDescription}" on-click="onPermissionsPageClick_" role-description="$i18n{subpageArrowRoleDescription}"> @@ -216,11 +216,11 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ +
- +