diff --git a/build/RELEASE b/build/RELEASE index ab984568..350fc22d 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -139.0.7258.158 \ No newline at end of file +140.0.7339.81 \ No newline at end of file diff --git a/build/cromite.gn_args b/build/cromite.gn_args index 601d0c68..bcbabde0 100644 --- a/build/cromite.gn_args +++ b/build/cromite.gn_args @@ -4,7 +4,6 @@ build_contextual_search=false build_with_tflite_lib=false chrome_pgo_phase=0 dcheck_always_on=false -disable_android_lint=true disable_fieldtrial_testing_config=true enable_hangout_services_extension=false enable_iterator_debugging=false @@ -68,10 +67,6 @@ if (target_os == "android" || target_os == "win") { enable_platform_dts_audio = false enable_passthrough_audio_codecs = false -# Do not compile libmonochrome.so with RELR relocations -# since supported only on API 28+ -use_relr_relocations=false - # disabled the use of the context snapshot # see https://github.com/uazo/cromite/pull/317 for context use_v8_context_snapshot = false @@ -84,9 +79,6 @@ use_minikin_hyphenation = false # initial commit: https://source.chromium.org/chromium/chromium/src/+/fd9a841f7a63b9f5510f6b713d9c833d259c63ad enable_bound_session_credentials = false -# Use LogErrorNotReached() for NOTREACHED_IN_MIGRATION() -enable_log_error_not_reached = true - # Allows building without //third_party/unrar included, for license reasons safe_browsing_use_unrar = false @@ -124,6 +116,8 @@ if (target_os == "android") { } cromite_pref_hash_seed_bin = getenv("CROMITE_PREF_HASH_SEED_BIN") + + disable_android_lint = true _is_debug_build = getenv("TARGET_ISDEBUG") if (_is_debug_build == "true") { diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index 82d99987..72df24f3 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -6,7 +6,7 @@ Force-use-vpython3-for-some-scripts.patch Permit-PGO-for-debug-builds.patch Fix-chromium-vanilla.patch Final-patch-for-chromium-vanilla.patch - +Restore-chrome-password-store.patch Remove-EV-certificates.patch do-not-hide-.orig-files.patch do-not-add-suffix-to-package-name.patch @@ -93,11 +93,9 @@ Disable-feeds-support-by-default.patch Disable-DRM-media-origin-IDs-preprovisioning.patch Disable-smart-selection-by-default.patch Guard-for-user-agent-reduction.patch -AImageReader-CFI-crash-mitigations.patch Add-menu-item-to-view-source.patch Revert-removal-of-execution-context-address-space.patch Block-gateway-attacks-via-websockets.patch -Enable-prefetch-privacy-changes-by-default.patch Enable-darken-websites-checkbox-in-themes.patch Remove-blocklisted-URLs-upon-bookmark-creation.patch Disable-the-DIAL-repeating-discovery.patch @@ -275,7 +273,6 @@ Enable-Global-Privacy-Control.patch Enable-Do-Not-Track-by-default.patch Media-fingerprinting-mitigations.patch Use-BoringSSL-for-RandBytes.patch -Restore-chrome-password-store.patch Disable-support-for-pointer-device-id.patch Disable-CSS-blink-feature-support.patch Close-Sessions-On-Ip-Change.patch @@ -296,7 +293,6 @@ Enable-component-updater.patch Android-fonts-fingerprinting-mitigation.patch Disable-Android-Tab-Declutter.patch Disable-CSSDynamicRangeLimit.patch -Android-Import-Passwords.patch Disable-prefers-reduced-motion.patch Disable-css-preferred-text-scale.patch Disable-Viewport-Segments.patch diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch deleted file mode 100644 index 320fdc29..00000000 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ /dev/null @@ -1,249 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Tue, 5 May 2020 07:22:20 +0200 -Subject: AImageReader CFI crash mitigations - -Revert "gpu/android: Remove setup for disabling AImageReader." -This reverts commit dcd5a39518246eb999f1cc63bf1ec95d93fd5b2f. - -Revert "Remove flags to enable/disable AImageReader." -This reverts commit 463fa0f2e3b9e418bc26e2c8954463f0b0f76634. - -Restore GPU bug blacklist for AImageReader on ARM and Qualcomm CPUs - -Restore the AImageReader blacklist for ARM/Qualcomm chipsets which causes -crashes on Android 9 and 10 (at different code locations). - -See discussions at: -* https://github.com/bromite/bromite/issues/445 -* https://github.com/bromite/bromite/issues/814 -* https://github.com/bromite/bromite/issues/1005 - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - base/android/android_image_reader_compat.cc | 16 ++++++++++++++++ - base/android/android_image_reader_compat.h | 14 ++++++++++++++ - chrome/browser/flag-metadata.json | 4 ++++ - .../AImageReader-CFI-crash-mitigations.inc | 4 ++++ - .../AImageReader-CFI-crash-mitigations.inc | 1 + - gpu/config/gpu_driver_bug_list.json | 16 ++++++++++++++++ - gpu/config/gpu_finch_features.cc | 5 +++++ - gpu/config/gpu_finch_features.h | 1 + - gpu/config/gpu_util.cc | 8 ++++++++ - gpu/config/gpu_workaround_list.txt | 1 + - gpu/ipc/service/gpu_init.cc | 8 ++++++++ - 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 - -diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc ---- a/base/android/android_image_reader_compat.cc -+++ b/base/android/android_image_reader_compat.cc -@@ -7,7 +7,23 @@ - namespace base { - namespace android { - -+AndroidImageReader& AndroidImageReader::GetInstance() { -+ // C++11 static local variable initialization is -+ // thread-safe. -+ static AndroidImageReader instance; -+ return instance; -+} -+ -+void AndroidImageReader::DisableSupport() { -+ disable_support_ = true; -+} -+ -+bool AndroidImageReader::IsSupported() { -+ return !disable_support_; -+} -+ - bool EnableAndroidImageReader() { -+ if (!AndroidImageReader::GetInstance().IsSupported()) return false; - // Currently we want to enable AImageReader only for android P+ devices. - if (__builtin_available(android 28, *)) { - return true; -diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h ---- a/base/android/android_image_reader_compat.h -+++ b/base/android/android_image_reader_compat.h -@@ -10,6 +10,20 @@ - namespace base { - namespace android { - -+class BASE_EXPORT AndroidImageReader { -+ public: -+ // Thread safe GetInstance. -+ static AndroidImageReader& GetInstance(); -+ -+ bool IsSupported(); -+ -+ // Disable image reader support. -+ void DisableSupport(); -+ -+ private: -+ bool disable_support_ = false; -+}; -+ - // Check if the image reader usage is supported. - BASE_EXPORT bool EnableAndroidImageReader(); - -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 -@@ -3627,6 +3627,10 @@ - "chrome-signin-team@google.com" - ], - "expiry_milestone": 138 -+ },{ -+ "name": "enable-image-reader", // Bromite: do not expire -+ "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], // flag -+ "expiry_milestone": -1 - }, - { - "name": "enable-immersive-fullscreen-toolbar", -diff --git a/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc b/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc -new file mode 100644 ---- /dev/null -+++ b/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc -@@ -0,0 +1,4 @@ -+// Enables the Android Image Reader path for Video decoding(for AVDA and MCVD) -+CROMITE_FEATURE(kAImageReaderVideoOutput, -+ "AImageReaderVideoOutput", -+ base::FEATURE_ENABLED_BY_DEFAULT); -diff --git a/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc b/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc -new file mode 100644 ---- /dev/null -+++ b/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc -@@ -0,0 +1 @@ -+MEDIA_EXPORT BASE_DECLARE_FEATURE(kAImageReaderVideoOutput); -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 -@@ -2617,6 +2617,22 @@ - "no_downscaled_overlay_promotion" - ] - }, -+ { -+ "id":335, -+ "cr_bugs": [1051705], -+ "description": "Disable AImageReader on ARM GPUs", -+ "os": { -+ "type": "android", -+ "version": { -+ "op": "<", -+ "value": "10" -+ } -+ }, -+ "gl_vendor": "ARM.*|Qualcomm.*", -+ "features": [ -+ "disable_aimagereader" -+ ] -+ }, - { - "id": 381, - "cr_bugs": [ -diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc ---- a/gpu/config/gpu_finch_features.cc -+++ b/gpu/config/gpu_finch_features.cc -@@ -59,6 +59,11 @@ BASE_FEATURE(kAggressiveShaderCacheLimits, - base::FEATURE_DISABLED_BY_DEFAULT); - - #if BUILDFLAG(IS_ANDROID) -+// Use android AImageReader when playing videos with MediaPlayer. -+CROMITE_FEATURE(kAImageReaderMediaPlayer, -+ "AImageReaderMediaPlayer", -+ base::FEATURE_ENABLED_BY_DEFAULT); -+ - // Use android SurfaceControl API for managing display compositor's buffer queue - // and using overlays on Android. Also used by webview to disable surface - // SurfaceControl. -diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h ---- a/gpu/config/gpu_finch_features.h -+++ b/gpu/config/gpu_finch_features.h -@@ -26,6 +26,7 @@ GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR); - GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAggressiveShaderCacheLimits); - - #if BUILDFLAG(IS_ANDROID) -+GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAImageReaderMediaPlayer); - GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAndroidSurfaceControl); - GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControl); - GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControlForTV); -diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc ---- a/gpu/config/gpu_util.cc -+++ b/gpu/config/gpu_util.cc -@@ -127,6 +127,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus( - #if !BUILDFLAG(IS_ANDROID) - return kGpuFeatureStatusDisabled; - #else -+ if (blocklisted_features.count(GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL)) -+ return kGpuFeatureStatusBlocklisted; -+ - if (!gpu_preferences.enable_android_surface_control) - return kGpuFeatureStatusDisabled; - -@@ -348,6 +351,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info, - kGpuFeatureStatusSoftware; - } - } -+ -+ if (gpu_feature_info->IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) { -+ gpu_feature_info->status_values[GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] = -+ kGpuFeatureStatusBlocklisted; -+ } - } - - // Estimates roughly user total disk space by counting in the drives where -diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt ---- a/gpu/config/gpu_workaround_list.txt -+++ b/gpu/config/gpu_workaround_list.txt -@@ -6,6 +6,7 @@ check_egl_fence_before_wait - check_ycbcr_studio_g22_left_p709_for_nv12_support - disable_2d_canvas_auto_flush - disable_accelerated_av1_decode -+disable_aimagereader - disable_accelerated_av1_encode - disable_accelerated_h264_decode - disable_accelerated_h264_encode -diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc ---- a/gpu/ipc/service/gpu_init.cc -+++ b/gpu/ipc/service/gpu_init.cc -@@ -69,6 +69,7 @@ - - #if BUILDFLAG(IS_ANDROID) - #include "ui/gfx/android/android_surface_control_compat.h" -+#include "base/android/android_image_reader_compat.h" - #endif - - #if BUILDFLAG(ENABLE_VULKAN) -@@ -688,6 +689,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, - } - #endif // BUILDFLAG(IS_WIN) - -+#if BUILDFLAG(IS_ANDROID) -+ // Disable AImageReader if the workaround is enabled. -+ if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) { -+ base::android::AndroidImageReader::GetInstance().DisableSupport(); -+ } -+#endif -+ - if (gpu_feature_info_.status_values[GPU_FEATURE_TYPE_VULKAN] != - kGpuFeatureStatusEnabled || - !InitializeVulkan()) { -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 { - - 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 ed2df25e..b77fcca6 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 -@@ -233,6 +233,7 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -236,6 +236,7 @@ import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.common.ContentSwitches; @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -977,6 +978,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -985,6 +986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier()); @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -179,6 +179,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -184,6 +184,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, @@ -59,16 +59,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY = "AdaptiveButtonInTopToolbarPageSummary"; public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = -@@ -728,6 +729,8 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sAndroidWindowPopupLargeScreen = - newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false); +@@ -768,6 +769,8 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn = + newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); + public static final CachedFlag sAllowUserCertificates = + newCachedFlag(ALLOW_USER_CERTIFICATES, false); + public static final CachedFlag sAppSpecificHistoryViewIntent = + newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true); public static final CachedFlag sAsyncNotificationManager = - newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true); - public static final CachedFlag sAsyncNotificationManagerForDownload = -@@ -1032,6 +1035,7 @@ public abstract class ChromeFeatureList { +@@ -1080,6 +1083,7 @@ public abstract class ChromeFeatureList { sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, sAndroidAppIntegration, diff --git a/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index bec8195b..b9df368a 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 -@@ -888,6 +888,11 @@ public class KeyboardShortcuts { +@@ -890,6 +890,11 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_B, (KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)); } diff --git a/build/patches/Add-IsCleartextPermitted-flag.patch b/build/patches/Add-IsCleartextPermitted-flag.patch index de20f56d..e75cef12 100644 --- a/build/patches/Add-IsCleartextPermitted-flag.patch +++ b/build/patches/Add-IsCleartextPermitted-flag.patch @@ -44,7 +44,7 @@ new file mode 100644 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -398,6 +398,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -408,6 +408,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } } diff --git a/build/patches/Add-a-flag-to-disable-GamePad-API.patch b/build/patches/Add-a-flag-to-disable-GamePad-API.patch index 64b06622..76f433db 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -17,8 +17,8 @@ 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 -@@ -8600,9 +8600,9 @@ - "expiry_milestone": 140 +@@ -8680,9 +8680,9 @@ + "expiry_milestone": 150 }, { - "name": "restrict-gamepad-access", diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index 22244090..0c6a07a3 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -372,6 +372,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -376,6 +376,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -215,6 +215,9 @@ +@@ -226,6 +226,9 @@ @@ -197,7 +197,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -206,6 +206,8 @@ +@@ -204,6 +204,8 @@ #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/extensions/background_mode_manager.h" #endif -@@ -1689,6 +1691,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1605,6 +1607,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -661,7 +661,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -194,6 +194,8 @@ static_library("ui") { +@@ -169,6 +169,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -673,7 +673,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -56,6 +56,9 @@ +@@ -58,6 +58,9 @@ #include "extensions/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" @@ -683,7 +683,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" #endif -@@ -415,7 +418,7 @@ void RegisterChromeWebUIConfigs() { +@@ -422,7 +425,7 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); #endif @@ -1135,7 +1135,7 @@ new file mode 100644 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc -@@ -51,6 +51,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -50,6 +50,7 @@ bool IsSystemWebUIHost(std::string_view host) { kChromeUILockScreenNetworkHost, kChromeUILockScreenStartReauthHost, kChromeUIMobileSetupHost, @@ -1143,7 +1143,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, kChromeUINotificationTesterHost, -@@ -72,6 +73,7 @@ bool IsSystemWebUIHost(std::string_view host) { +@@ -71,6 +72,7 @@ bool IsSystemWebUIHost(std::string_view host) { // These hosts will also be suggested by BuiltinProvider. base::span ChromeURLHosts() { static constexpr auto kChromeURLHosts = std::to_array({ @@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -180,6 +180,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -188,6 +188,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer"; diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 0e1c53ec..f606f3f1 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../java/res/xml/incognito_preferences.xml | 37 ++++ .../java/res/xml/privacy_preferences.xml | 5 + .../AlwaysIncognitoLinkInterceptor.java | 54 ++++++ - .../chrome/browser/ChromeTabbedActivity.java | 28 ++- + .../chrome/browser/ChromeTabbedActivity.java | 25 ++- .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 7 +- .../ChromeContextMenuPopulator.java | 6 +- @@ -69,7 +69,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/profiles/profile_selections.h | 7 +- .../browser/ui/android/native_page/BUILD.gn | 2 + .../browser/ui/native_page/NativePage.java | 22 ++- - .../browser/omnibox/LocationBarMediator.java | 10 +- + .../browser/omnibox/LocationBarMediator.java | 8 + .../strings/android_chrome_strings.grd | 25 +++ .../browser/toolbar/LocationBarModel.java | 5 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + @@ -88,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + - 69 files changed, 800 insertions(+), 113 deletions(-) + 69 files changed, 797 insertions(+), 111 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -101,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -639,6 +639,7 @@ chrome_java_resources = [ +@@ -620,6 +620,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences_legacy.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", @@ -120,7 +120,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -902,6 +903,7 @@ chrome_java_sources = [ +@@ -908,6 +909,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", @@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.ExternalAppId; import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; -@@ -761,14 +765,19 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -794,14 +798,19 @@ public class ChromeTabbedActivity extends ChromeActivity { Profile profile = mTabModelSelector.getCurrentModel().getProfile(); // For saving non-incognito tab closures for Recent Tabs. @@ -285,18 +285,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct // Defer creation of this helper so it triggers after TabGroupModelFilter observers. mUndoRefocusHelper = new UndoRefocusHelper( -@@ -2951,8 +2960,9 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3152,7 +3161,7 @@ public class ChromeTabbedActivity extends ChromeActivity { + } // We determine the model as soon as possible so every systems get initialized coherently. - boolean startIncognito = -- savedInstanceState != null -- && savedInstanceState.getBoolean(IS_INCOGNITO_SELECTED, false); -+ AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() -+ || (savedInstanceState != null -+ && savedInstanceState.getBoolean(IS_INCOGNITO_SELECTED, false)); - - mNextTabPolicySupplier = new ChromeNextTabPolicySupplier(mLayoutStateProviderSupplier); - +- boolean startIncognito = ++ boolean startIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() || + (mSupportedProfileType == SupportedProfileType.OFF_THE_RECORD) + || (mSupportedProfileType == SupportedProfileType.MIXED + && savedInstanceState != null diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java @@ -308,7 +305,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; import org.chromium.chrome.browser.download.DownloadManagerService; -@@ -1981,6 +1982,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2000,6 +2001,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -345,25 +342,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -34,6 +34,7 @@ import org.chromium.base.metrics.RecordUserAction; - import org.chromium.base.shared_preferences.SharedPreferencesManager; - import org.chromium.base.supplier.Supplier; +@@ -41,6 +41,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; - import org.chromium.chrome.browser.download.DownloadUtils; -@@ -370,6 +371,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { - public List> buildContextMenu() { + import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ContextMenuItemType; +@@ -420,6 +421,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { mShowEphemeralTabNewLabel = null; + mCustomActionMap.clear(); + boolean always_incognito = + AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); + - List> groupedItems = new ArrayList<>(); + List groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -438,7 +442,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -489,7 +493,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -424,15 +421,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -18,6 +18,7 @@ import org.chromium.base.supplier.ObservableSupplier; - import org.chromium.base.supplier.Supplier; +@@ -21,6 +21,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -@@ -218,6 +219,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -221,6 +222,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat openInChromeItemVisible = false; tryAddingReadAloud = false; } @@ -445,7 +442,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -99,6 +99,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -101,6 +101,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -472,15 +469,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -36,6 +36,7 @@ import org.chromium.base.FileUtils; - import org.chromium.base.IntentUtils; - import org.chromium.base.Log; +@@ -39,6 +39,7 @@ import org.chromium.base.Log; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher; -@@ -78,6 +79,10 @@ import org.chromium.url.GURL; +@@ -82,6 +83,10 @@ import org.chromium.url.GURL; import java.io.File; @@ -489,9 +486,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo +import org.chromium.chrome.browser.preferences.Pref; + /** A class containing some utility static methods. */ + @NullMarked public class DownloadUtils { - private static final String TAG = "download"; -@@ -303,7 +308,13 @@ public class DownloadUtils { +@@ -313,7 +318,13 @@ public class DownloadUtils { public static boolean isAllowedToDownloadPage(Tab tab) { if (tab == null) return false; @@ -509,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java -@@ -302,7 +302,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -307,7 +307,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.generateFooterItems(); // Listen to changes in sign in state. @@ -520,7 +517,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // Create PrefChangeRegistrar to receive notifications on preference changes. mPrefChangeRegistrar = PrefServiceUtil.createFor(profile); -@@ -378,7 +380,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -383,7 +385,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.onDestroyed(); mLargeIconBridge.destroy(); mLargeIconBridge = null; @@ -533,7 +530,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -56,6 +56,14 @@ import org.chromium.ui.base.Clipboard; +@@ -57,6 +57,14 @@ import org.chromium.ui.base.Clipboard; import java.util.List; import java.util.function.Function; @@ -548,7 +545,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -161,7 +169,7 @@ public class HistoryManager +@@ -162,7 +170,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -557,7 +554,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -413,9 +421,22 @@ public class HistoryManager +@@ -415,9 +423,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -581,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -475,7 +496,7 @@ public class HistoryManager +@@ -477,7 +498,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -634,7 +631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -351,7 +352,8 @@ public class NativePageFactory { +@@ -371,7 +372,8 @@ public class NativePageFactory { String url, NativePage candidatePage, Tab tab, boolean isIncognito, PdfInfo pdfInfo) { NativePage page; @@ -647,7 +644,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java -@@ -40,6 +40,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; +@@ -44,6 +44,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.sync.SyncService; import org.chromium.url.GURL; @@ -663,7 +660,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM import java.util.HashMap; import java.util.List; import java.util.Map; -@@ -108,7 +117,8 @@ public class RecentTabsManager +@@ -113,7 +122,8 @@ public class RecentTabsManager Profile profile, Context context, Runnable showHistoryManager) { @@ -673,7 +670,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mActiveTab = tab; mTabModelSelector = tabModelSelector; mShowHistoryManager = showHistoryManager; -@@ -291,6 +301,22 @@ public class RecentTabsManager +@@ -301,6 +311,22 @@ public class RecentTabsManager */ public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { if (mIsDestroyed) return; @@ -879,7 +876,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; +@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings; import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; @@ -887,7 +884,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.settings.FragmentSettingsNavigation; -@@ -244,6 +245,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -231,6 +232,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl SigninAndHistorySyncActivityLauncherImpl.get(), new SettingsCustomTabLauncherImpl())); } @@ -1006,15 +1003,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -25,6 +25,7 @@ import org.chromium.base.supplier.Supplier; - import org.chromium.build.BuildConfig; +@@ -27,6 +27,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.Contract; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ai.AiAssistantService; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; -@@ -219,7 +220,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -220,7 +221,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } // New Tab @@ -1029,7 +1026,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -218,6 +218,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto +@@ -212,6 +212,8 @@ import org.chromium.content_public.common.ContentSwitches; import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1038,7 +1035,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.display.DisplayUtil; -@@ -1238,7 +1240,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1247,7 +1249,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1050,7 +1047,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -52,6 +52,10 @@ import org.chromium.ui.base.PageTransition; +@@ -53,6 +53,10 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1061,9 +1058,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ @NullMarked public class ChromeTabCreator extends TabCreator -@@ -567,7 +571,6 @@ public class ChromeTabCreator extends TabCreator +@@ -580,7 +584,6 @@ public class ChromeTabCreator extends TabCreator // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. - public Tab launchUrlFromExternalApp( + public @Nullable Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { - assert !mIncognito; // Don't re-use tabs for intents from Chrome. Note that this can be spoofed so shouldn't be @@ -1092,16 +1089,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -54,6 +54,8 @@ import org.chromium.chrome.browser.tabwindow.TabWindowManager; +@@ -61,6 +61,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import java.io.BufferedInputStream; - import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; -@@ -844,6 +846,13 @@ public class TabPersistentStore { + import java.io.DataInputStream; +@@ -838,6 +840,13 @@ public class TabPersistentStore { } } } @@ -1126,7 +1123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -856,7 +857,7 @@ public class ToolbarManager +@@ -859,7 +860,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } @@ -1196,7 +1193,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and using base::android::JavaParamRef; using base::android::JavaRef; using base::android::ScopedJavaLocalRef; -@@ -104,7 +109,8 @@ std::vector> StringsToUuids( +@@ -101,7 +106,8 @@ std::vector> StringsToUuids( void CreateHistoricalTab( TabAndroid* tab_android, @@ -1206,7 +1203,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!tab_android) { return; } -@@ -115,9 +121,14 @@ void CreateHistoricalTab( +@@ -112,9 +118,14 @@ void CreateHistoricalTab( return; } @@ -1223,7 +1220,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!service) { return; } -@@ -181,7 +192,7 @@ void CreateHistoricalBulkClosure( +@@ -178,7 +189,7 @@ void CreateHistoricalBulkClosure( per_tab_optional_tab_group_ids, std::vector> tabs, std::vector web_contents_state) { @@ -1232,7 +1229,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and DCHECK_EQ(tab_group_ids.size(), group_titles.size()); DCHECK_EQ(tab_group_ids.size(), group_colors.size()); DCHECK_EQ(tab_group_ids.size(), tab_group_ids.size()); -@@ -294,11 +305,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -291,11 +302,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1250,8 +1247,8 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -418,6 +418,15 @@ ChromeAutocompleteProviderClient::GetTabGroupSyncService() const { - return tab_groups::TabGroupSyncServiceFactory::GetForProfile(profile_); +@@ -427,6 +427,15 @@ ChromeAutocompleteProviderClient::GetAimEligibilityService() const { + return AimEligibilityServiceFactory::GetForProfile(profile_); } +bool ChromeAutocompleteProviderClient::IsAlwaysIncognitoEnabled() const { @@ -1269,9 +1266,9 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h -@@ -96,6 +96,7 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient { - ProviderStateService* GetProviderStateService() const override; - tab_groups::TabGroupSyncService* GetTabGroupSyncService() const override; +@@ -99,6 +99,7 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient { + AimEligibilityService* GetAimEligibilityService() const override; + bool IsOffTheRecord() const override; + bool IsAlwaysIncognitoEnabled() const override; bool IsIncognitoProfile() const override; @@ -1313,7 +1310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" #include "chrome/browser/commerce/shopping_service_factory.h" -@@ -264,6 +265,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( +@@ -214,6 +215,12 @@ ScopedJavaLocalRef JNI_BookmarkBridge_NativeGetForProfile( if (!profile) return nullptr; @@ -1387,7 +1384,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -568,6 +571,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -598,6 +601,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1401,7 +1398,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -575,6 +585,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -605,6 +615,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1421,7 +1418,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h --- a/chrome/browser/history/history_tab_helper.h +++ b/chrome/browser/history/history_tab_helper.h -@@ -15,6 +15,8 @@ +@@ -17,6 +17,8 @@ #include "components/translate/core/browser/translate_driver.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" @@ -1430,8 +1427,8 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor namespace history { struct HistoryAddPageArgs; -@@ -54,6 +56,11 @@ class HistoryTabHelper - void SetAppId(const std::string& app_id) { app_id_ = app_id; } +@@ -59,6 +61,11 @@ class HistoryTabHelper + std::optional GetAppId() { return app_id_; } #endif + static void RegisterProfilePrefs(PrefRegistrySimple* registry); @@ -1442,7 +1439,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor private: explicit HistoryTabHelper(content::WebContents* web_contents); friend class content::WebContentsUserData; -@@ -91,9 +98,6 @@ class HistoryTabHelper +@@ -101,9 +108,6 @@ class HistoryTabHelper void OnLanguageDetermined( const translate::LanguageDetectionDetails& details) override; @@ -1465,7 +1462,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/OfflinePageBridge_jni.h" -@@ -757,9 +760,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( +@@ -731,9 +734,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( } if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { @@ -1750,7 +1747,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -256,6 +256,7 @@ +@@ -254,6 +254,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1758,7 +1755,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" #include "chrome/browser/android/preferences/browser_prefs_android.h" -@@ -2142,6 +2143,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2061,6 +2062,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1844,7 +1841,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ /** An interface for pages that will be using Android views instead of html/rendered Web content. */ @NullMarked public interface NativePage { -@@ -179,7 +181,8 @@ public interface NativePage { +@@ -187,7 +189,8 @@ public interface NativePage { */ static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean hasPdfDownload) { return url != null @@ -1854,7 +1851,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -189,7 +192,7 @@ public interface NativePage { +@@ -197,7 +200,7 @@ public interface NativePage { * not have chrome or chrome-native scheme. */ static boolean isChromePageUrl(GURL url, boolean isIncognito) { @@ -1863,7 +1860,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -201,11 +204,12 @@ public interface NativePage { +@@ -209,11 +212,12 @@ public interface NativePage { */ // TODO(crbug.com/40549331) - Convert to using GURL. static @NativePageType int nativePageType( @@ -1878,7 +1875,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -219,7 +223,8 @@ public interface NativePage { +@@ -227,7 +231,8 @@ public interface NativePage { GURL url, @Nullable NativePage candidatePage, boolean isIncognito, @@ -1888,7 +1885,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ if (hasPdfDownload) { // For navigation with associated pdf download (e.g. open a pdf link), pdf page should // be created. -@@ -237,7 +242,7 @@ public interface NativePage { +@@ -245,7 +250,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { @@ -1897,7 +1894,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } } -@@ -249,7 +254,7 @@ public interface NativePage { +@@ -257,7 +262,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ private static @NativePageType int chromePageType( @@ -1906,7 +1903,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ String host = url.getHost(); String scheme = url.getScheme(); if (!UrlConstants.CHROME_NATIVE_SCHEME.equals(scheme) -@@ -269,7 +274,8 @@ public interface NativePage { +@@ -277,7 +282,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -1919,7 +1916,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -91,6 +91,11 @@ import org.chromium.ui.base.WindowAndroid; +@@ -92,6 +92,11 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.Interpolators; import org.chromium.url.GURL; @@ -1931,25 +1928,20 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; import java.util.function.BooleanSupplier; -@@ -1300,10 +1305,13 @@ class LocationBarMediator - } +@@ -419,6 +424,9 @@ class LocationBarMediator + if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) return; Tab tab = mLocationBarDataProvider.getTab(); - if (tab == null) return false; + if (tab == null) return; + PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + boolean historyEnabledInIncognito = + prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); - // The save offline button should not be shown on native pages. Currently, trying to - // save an offline page in incognito crashes, so don't show it on incognito either. - return shouldShowPageActionButtons() -- && (!tab.isOffTheRecord() -+ && (!tab.isOffTheRecord() || historyEnabledInIncognito - || ChromeFeatureList.isEnabled( - ChromeFeatureList.ENABLE_SAVE_PACKAGE_FOR_OFF_THE_RECORD)); - } + boolean onNtp = UrlUtilities.isNtpUrl(tab.getUrl()); + + if (ChromeAccessibilityUtil.get().isAccessibilityEnabled() diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -6796,6 +6796,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6675,6 +6675,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -2073,7 +2065,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -4090,6 +4090,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4108,6 +4108,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2089,7 +2081,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -111,10 +111,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -114,10 +114,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -2102,7 +2094,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -137,11 +139,13 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -140,11 +142,13 @@ PrefProvider::PrefProvider(PrefService* prefs, WebsiteSettingsRegistry* website_settings = WebsiteSettingsRegistry::GetInstance(); for (const WebsiteSettingsInfo* info : *website_settings) { @@ -2139,7 +2131,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -269,6 +269,7 @@ struct ContentSettingEntry { +@@ -287,6 +287,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2147,7 +2139,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -278,6 +279,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -296,6 +297,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2155,7 +2147,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. store_last_modified_(store_last_modified), allow_invalid_secondary_pattern_for_testing_(false), clock_(base::DefaultClock::GetInstance()) { -@@ -291,7 +293,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2167,7 +2159,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -83,6 +83,7 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -84,6 +84,7 @@ class HostContentSettingsMap : public content_settings::Observer, // profile or a guest session. HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2175,7 +2167,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -511,6 +512,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2187,7 +2179,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc --- a/components/omnibox/browser/autocomplete_provider_client.cc +++ b/components/omnibox/browser/autocomplete_provider_client.cc -@@ -65,3 +65,7 @@ base::WeakPtr +@@ -66,3 +66,7 @@ base::WeakPtr AutocompleteProviderClient::GetWeakPtr() { return nullptr; } @@ -2198,7 +2190,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h --- a/components/omnibox/browser/autocomplete_provider_client.h +++ b/components/omnibox/browser/autocomplete_provider_client.h -@@ -152,6 +152,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { +@@ -154,6 +154,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { virtual bool IsOffTheRecord() const = 0; virtual bool IsIncognitoProfile() const = 0; virtual bool IsGuestSession() const = 0; @@ -2209,7 +2201,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -413,7 +413,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( +@@ -431,7 +431,7 @@ bool BaseSearchProvider::CanSendSuggestRequest( // Don't make a suggest request if in incognito mode; unless for the Lens // searchboxes. @@ -2221,7 +2213,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -915,7 +915,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -916,7 +916,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( // is required. // Request for suggestions in OTR contexts is not allowed; except for the Lens // searchboxes. diff --git a/build/patches/Add-autoplay-site-setting.patch b/build/patches/Add-autoplay-site-setting.patch index 3c4579ad..7b784340 100644 --- a/build/patches/Add-autoplay-site-setting.patch +++ b/build/patches/Add-autoplay-site-setting.patch @@ -279,9 +279,9 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -249,7 +249,7 @@ void ContentSettingsRegistry::Init() { +@@ -255,7 +255,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); - Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW, + Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK, @@ -329,7 +329,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.h b/third_party/blink/renderer/core/html/media/autoplay_policy.h --- a/third_party/blink/renderer/core/html/media/autoplay_policy.h +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.h -@@ -151,6 +151,10 @@ class CORE_EXPORT AutoplayPolicy final +@@ -148,6 +148,10 @@ class CORE_EXPORT AutoplayPolicy final // should use, if checking to see if an action is allowed. bool IsLockedPendingUserGesture() const; diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 2ad28dbd..7754a013 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 | 266 ++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 197 ++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/BookmarkBridge.java | 39 +++ .../browser/bookmarks/BookmarkDelegate.java | 10 + @@ -36,11 +36,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/importer/profile_writer.h | 6 + .../preferences/ChromePreferenceKeys.java | 3 + .../strings/android_chrome_strings.grd | 18 ++ - chrome/common/BUILD.gn | 3 + - chrome/utility/BUILD.gn | 7 +- - .../utility/importer/bookmark_html_reader.cc | 28 +- - .../utility/importer/bookmark_html_reader.h | 8 + + chrome/utility/BUILD.gn | 7 + + .../importer/bookmarks_file_importer.cc | 4 + .../headless_select_file_dialog.cc | 4 + + .../content/content_bookmark_parser_utils.cc | 3 + .../add-bookmark-import-export-actions.inc | 12 + .../add-bookmark-import-export-actions.inc | 4 + .../add-bookmark-import-export-actions.inc | 1 + @@ -52,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 41 files changed, 905 insertions(+), 29 deletions(-) + 40 files changed, 809 insertions(+), 24 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -103,8 +102,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -@@ -55,7 +56,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; - * {@link ChromeTabbedActivity}. +@@ -60,7 +61,7 @@ import java.util.List; + * ChromeTabbedActivity}. */ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - private final Activity mActivity; @@ -112,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; -@@ -85,7 +86,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -91,7 +92,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( @@ -208,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -62,7 +63,7 @@ import org.chromium.ui.util.ColorUtils; +@@ -63,7 +64,7 @@ import org.chromium.ui.util.ColorUtils; * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. */ public class NativePageFactory { @@ -217,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier mCurrentTabSupplier; -@@ -85,7 +86,7 @@ public class NativePageFactory { +@@ -87,7 +88,7 @@ public class NativePageFactory { private static NativePage sTestPage; public NativePageFactory( @@ -226,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat @NonNull BottomSheetController sheetController, @NonNull BrowserControlsManager browserControlsManager, @NonNull Supplier currentTabSupplier, -@@ -157,7 +158,7 @@ public class NativePageFactory { +@@ -162,7 +163,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -235,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mNewTabPageCreationTracker; private final BrowserControlsManager mBrowserControlsManager; -@@ -262,7 +263,7 @@ public class NativePageFactory { +@@ -271,7 +272,7 @@ public class NativePageFactory { mBrowserControlsManager, mTabModelSelector, mEdgeToEdgeControllerSupplier), @@ -247,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -248,6 +248,8 @@ static_library("browser") { +@@ -245,6 +245,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -256,7 +255,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1760,6 +1762,13 @@ static_library("browser") { +@@ -1721,6 +1723,13 @@ static_library("browser") { ] } @@ -270,7 +269,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3684,8 +3693,6 @@ static_library("browser") { +@@ -3704,8 +3713,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -282,19 +281,20 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -68,6 +68,27 @@ +@@ -68,6 +68,28 @@ #include "content/public/browser/web_contents.h" #include "url/gurl.h" +#include "base/android/content_uri_utils.h" +#include "base/android/path_utils.h" +#include "base/strings/utf_string_conversions.h" -+#include "chrome/utility/importer/bookmark_html_reader.h" +#include "chrome/browser/bookmarks/bookmark_html_writer.h" +#include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/chrome_select_file_policy.h" +#include "components/user_data_importer/common/imported_bookmark_entry.h" ++#include "components/user_data_importer/content/content_bookmark_parser.h" ++#include "components/user_data_importer/content/content_bookmark_parser_utils.h" +#include "chrome/common/url_constants.h" +#include "components/favicon_base/favicon_usage_data.h" +#include "components/search_engines/template_url.h" @@ -310,65 +310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/browser/bookmarks/android/jni_headers/BookmarkBridge_jni.h" -@@ -86,6 +107,57 @@ using bookmarks::android::JavaBookmarkIdGetType; - using content::BrowserThread; - using power_bookmarks::PowerBookmarkMeta; - -+namespace internal { -+ -+// Returns true if |url| has a valid scheme that we allow to import. We -+// filter out the URL with a unsupported scheme. -+bool CanImportURL(const GURL& url) { -+ // The URL is not valid. -+ if (!url.is_valid()) -+ return false; -+ -+ // Filter out the URLs with unsupported schemes. -+ const char* const kInvalidSchemes[] = {"wyciwyg", "place"}; -+ for (size_t i = 0; i < std::size(kInvalidSchemes); ++i) { -+ if (url.SchemeIs(kInvalidSchemes[i])) -+ return false; -+ } -+ -+ // Check if |url| is about:blank. -+ if (url == url::kAboutBlankURL) -+ return true; -+ -+ // If |url| starts with chrome:// or about:, check if it's one of the URLs -+ // that we support. -+ if (url.SchemeIs(content::kChromeUIScheme) || -+ url.SchemeIs(url::kAboutScheme)) { -+ if (url.host_piece() == chrome::kChromeUIAboutHost) -+ return true; -+ -+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string())); -+ const base::span hosts = chrome::ChromeURLHosts(); -+ for (const base::cstring_view host : hosts) { -+ if (fixed_url.DomainIs(host)) { -+ return true; -+ } -+ } -+ -+ if (base::Contains(chrome::ChromeDebugURLs(), fixed_url.spec())) { -+ return true; -+ } -+ -+ // If url has either chrome:// or about: schemes but wasn't found in the -+ // above lists, it means we don't support it, so we don't allow the user -+ // to import it. -+ return false; -+ } -+ -+ // Otherwise, we assume the url has a valid (importable) scheme. -+ return true; -+} -+ -+} // internal -+ - namespace { - // The key used to connect the instance of the bookmark bridge to the bookmark - // model. -@@ -296,6 +368,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -296,6 +318,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -379,7 +321,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { -@@ -847,6 +923,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -847,6 +873,177 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -527,43 +469,24 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +} + +void BookmarkBridge::FileSelectedImplOnUIThread(const base::FilePath& path, -+ const std::string& contents) { ++ const std::string& contents) { + if (contents.empty()) + return; + + // the following import logic comes from BookmarksFileImporter class -+ std::vector bookmarks; -+ std::vector search_engines; -+ favicon_base::FaviconUsageDataList favicons; -+ -+ bookmark_html_reader::ImportBookmarksFile( -+ base::RepeatingCallback(), -+ base::BindRepeating(internal::CanImportURL), -+ contents, -+ &bookmarks, -+ &search_engines, -+ &favicons); ++ user_data_importer::BookmarkParser::ParsedBookmarks parsed_bookmarks = ++ user_data_importer::ParseBookmarksUnsafe(contents); + + auto *writer = new ProfileWriter(profile_); + -+ if (!bookmarks.empty()) { ++ if (!parsed_bookmarks.bookmarks.empty()) { + // adding bookmarks will begin extensive changes to the model -+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, u"Imported"); -+ } -+ if (!search_engines.empty()) { -+ TemplateURLService::OwnedTemplateURLVector owned_template_urls; -+ for (const auto& search_engine : search_engines) { -+ std::unique_ptr owned_template_url = CreateTemplateURL( -+ search_engine.url, search_engine.keyword, search_engine.display_name); -+ if (owned_template_url) -+ owned_template_urls.push_back(std::move(owned_template_url)); -+ } -+ writer->AddKeywords(std::move(owned_template_urls), false); ++ writer->AddBookmarksWithModel(bookmark_model_, parsed_bookmarks.bookmarks, u"Imported"); + } + + std::stringstream message; -+ message << "Imported " << bookmarks.size() << " bookmarks and " << -+ search_engines.size() << " search engines from " << path.MaybeAsASCII(); ++ message << "Imported " << parsed_bookmarks.bookmarks.size() << " bookmarks " << ++ " from " << path.MaybeAsASCII(); + auto result = message.str(); + + select_file_dialog_->ShowToast(result); @@ -637,7 +560,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef& j_folders_obj, -@@ -390,6 +411,8 @@ class BookmarkBridge : public ProfileObserver, +@@ -385,6 +406,8 @@ class BookmarkBridge : public ProfileObserver, void CreateOrDestroyAccountReadingListManagerIfNeeded(); const raw_ptr profile_; // weak @@ -646,7 +569,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaGlobalRef java_bookmark_model_; const raw_ptr bookmark_model_; // weak const raw_ptr -@@ -404,6 +427,7 @@ class BookmarkBridge : public ProfileObserver, +@@ -399,6 +422,7 @@ class BookmarkBridge : public ProfileObserver, std::unique_ptr grouped_bookmark_actions_; PrefChangeRegistrar pref_change_registrar_; @@ -654,7 +577,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser // Information about the Partner bookmarks (must check for IsLoaded()). // This is owned by profile. -@@ -437,6 +461,10 @@ class BookmarkBridge : public ProfileObserver, +@@ -432,6 +456,10 @@ class BookmarkBridge : public ProfileObserver, base::TimeTicks load_start_time_; bool loading_notification_sent_ = false; @@ -724,7 +647,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Synchronously gets a list of bookmarks that match the specified search query. * -@@ -1124,6 +1159,10 @@ class BookmarkBridge { +@@ -1108,6 +1143,10 @@ class BookmarkBridge { void getChildIds( long nativeBookmarkBridge, long id, int type, List bookmarksList); @@ -784,7 +707,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java -@@ -62,6 +62,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; +@@ -63,6 +63,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.power_bookmarks.PowerBookmarkMeta; import org.chromium.components.power_bookmarks.PowerBookmarkType; @@ -793,7 +716,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.ui.accessibility.AccessibilityState; import org.chromium.ui.listmenu.ListMenu; import org.chromium.ui.listmenu.ListMenuItemProperties; -@@ -80,6 +82,47 @@ import java.util.function.BooleanSupplier; +@@ -81,6 +83,47 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -841,7 +764,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Responsible for BookmarkManager business logic. */ // TODO(crbug.com/40256938): Remove BookmarkDelegate if possible. @NullMarked -@@ -90,6 +133,9 @@ class BookmarkManagerMediator +@@ -91,6 +134,9 @@ class BookmarkManagerMediator private static boolean sPreventLoadingForTesting; @@ -851,7 +774,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Keeps track of whether drag is enabled / active for bookmark lists. */ private class BookmarkDragStateDelegate implements DragStateDelegate { private BookmarkDelegate mBookmarkDelegate; -@@ -596,6 +642,14 @@ class BookmarkManagerMediator +@@ -597,6 +643,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -866,7 +789,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** See BookmarkManager(Coordinator)#updateForUrl */ void updateForUrl(String url) { // Bookmark model is null if the manager has been destroyed. -@@ -768,6 +822,235 @@ class BookmarkManagerMediator +@@ -769,6 +823,235 @@ class BookmarkManagerMediator } } @@ -989,7 +912,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + // use the download ui and standard file saving + DownloadLocationDialogController controller = new DownloadLocationDialogController() { + @Override -+ public void onDownloadLocationDialogComplete(String returnedPath) {} ++ public void onDownloadLocationDialogComplete(String returnedPath, boolean didUserConfirm) {} + + @Override + public void onDownloadLocationDialogCanceled() {} @@ -1196,7 +1119,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java -@@ -140,6 +140,10 @@ class BookmarkToolbarMediator +@@ -139,6 +139,10 @@ class BookmarkToolbarMediator mBookmarkDelegate = bookmarkDelegate; mModel.set( BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE, this::onNavigateBack); @@ -1315,7 +1238,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse private boolean mLocationDialogManaged; -@@ -153,7 +153,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. +@@ -154,7 +154,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. * Called after retrieved the download directory options. * @param dirs An list of available download directories. */ @@ -1327,18 +1250,18 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -236,6 +236,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -251,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kBatchTabRestore, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, + &kBookmarksExportUseSaf, - &kBottomBrowserControlsRefactor, - &kTabClosureMethodRefactor, &kBrowserControlsDebugging, + &kBrowserControlsEarlyResize, + &kCacheActivityTaskID, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -662,6 +662,7 @@ public abstract class ChromeFeatureList { +@@ -689,6 +689,7 @@ public abstract class ChromeFeatureList { public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1401,7 +1324,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** Whether Chrome is set as the default browser. Default value is false. */ public static final String CHROME_DEFAULT_BROWSER = "applink.chrome_default_browser"; -@@ -1008,6 +1010,7 @@ public final class ChromePreferenceKeys { +@@ -1017,6 +1019,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1437,144 +1360,39 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Virtual Reality -diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn ---- a/chrome/common/BUILD.gn -+++ b/chrome/common/BUILD.gn -@@ -352,6 +352,9 @@ static_library("common_lib") { - "chrome_descriptors_android.h", - "media/chrome_media_drm_bridge_client.cc", - "media/chrome_media_drm_bridge_client.h", -+ ## Bromite dependencies for bookmark import functionality -+ "//components/user_data_importer/common/imported_bookmark_entry.cc", -+ "//components/user_data_importer/common/imported_bookmark_entry.h", - ] - } else { - # Non-Android. diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -88,8 +88,6 @@ static_library("utility") { - - if (!is_android) { - sources += [ -- "importer/bookmark_html_reader.cc", -- "importer/bookmark_html_reader.h", - "importer/bookmarks_file_importer.cc", - "importer/bookmarks_file_importer.h", - "importer/external_process_importer_bridge.cc", -@@ -222,6 +220,11 @@ static_library("utility") { +@@ -222,6 +222,13 @@ static_library("utility") { deps += [ "//chrome/services/pdf:lib" ] } -+ sources += [ -+ "importer/bookmark_html_reader.cc", -+ "importer/bookmark_html_reader.h", -+ ] ++ if (is_android) { ++ sources += [ ++ "importer/bookmarks_file_importer.cc", ++ "importer/bookmarks_file_importer.h", ++ ] ++ } + # NSS decryptor is not needed on ChromeOS. if (!is_chromeos && use_nss_certs) { sources += [ -diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc ---- a/chrome/utility/importer/bookmark_html_reader.cc -+++ b/chrome/utility/importer/bookmark_html_reader.cc -@@ -16,7 +16,9 @@ - #include "base/strings/string_util.h" - #include "base/strings/utf_string_conversions.h" - #include "base/time/time.h" -+#if !BUILDFLAG(IS_ANDROID) - #include "chrome/utility/importer/favicon_reencode.h" +diff --git a/chrome/utility/importer/bookmarks_file_importer.cc b/chrome/utility/importer/bookmarks_file_importer.cc +--- a/chrome/utility/importer/bookmarks_file_importer.cc ++++ b/chrome/utility/importer/bookmarks_file_importer.cc +@@ -103,8 +103,12 @@ void BookmarksFileImporter::StartImport( + user_data_importer::ParseBookmarksUnsafe(raw_html); + + if (!parsed_bookmarks.bookmarks.empty()) { ++#if BUILDFLAG(IS_ANDROID) ++ std::u16string first_folder_name; ++#else + std::u16string first_folder_name = + bridge_->GetLocalizedString(IDS_BOOKMARK_GROUP); +#endif - #include "components/search_engines/search_terms_data.h" - #include "components/search_engines/template_url.h" - #include "components/user_data_importer/common/imported_bookmark_entry.h" -@@ -55,6 +57,7 @@ bool GetAttribute(const std::string& attribute_list, - return true; - } - -+#if !BUILDFLAG(IS_ANDROID) - // Given the URL of a page and a favicon data URL, adds an appropriate record - // to the given favicon usage vector. - void DataURLToFaviconUsage(const GURL& link_url, -@@ -88,6 +91,7 @@ void DataURLToFaviconUsage(const GURL& link_url, - - favicons->push_back(usage); - } -+#endif - - } // namespace - -@@ -108,14 +112,29 @@ static std::string stripDt(const std::string& lineDt) { - } - - void ImportBookmarksFile( -- base::RepeatingCallback cancellation_callback, -- base::RepeatingCallback valid_url_callback, -+ const base::RepeatingCallback cancellation_callback, -+ const base::RepeatingCallback valid_url_callback, - const base::FilePath& file_path, - std::vector* bookmarks, - std::vector* search_engines, - favicon_base::FaviconUsageDataList* favicons) { - std::string content; -- base::ReadFileToString(file_path, &content); -+ if (!base::ReadFileToString(file_path, &content)) { -+ LOG(ERROR) << "Could not directly read bookmarks import file"; -+ return; -+ } -+ -+ ImportBookmarksFile(cancellation_callback, valid_url_callback, -+ content, bookmarks, search_engines, favicons); -+} -+ -+void ImportBookmarksFile( -+ base::RepeatingCallback cancellation_callback, -+ base::RepeatingCallback valid_url_callback, -+ const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, -+ favicon_base::FaviconUsageDataList* favicons) { - std::vector lines = base::SplitString( - content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); - -@@ -128,6 +147,7 @@ void ImportBookmarksFile( - std::vector path; - size_t toolbar_folder_index = 0; - std::string charset = "UTF-8"; // If no charset is specified, assume utf-8. -+ - for (size_t i = 0; - i < lines.size() && - (cancellation_callback.is_null() || !cancellation_callback.Run()); -@@ -219,10 +239,12 @@ void ImportBookmarksFile( - } - bookmarks->push_back(entry); - -+#if !BUILDFLAG(IS_ANDROID) - // Save the favicon. DataURLToFaviconUsage will handle the case where - // there is no favicon. - if (favicons) - DataURLToFaviconUsage(url, favicon, favicons); -+#endif - - continue; - } -diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h ---- a/chrome/utility/importer/bookmark_html_reader.h -+++ b/chrome/utility/importer/bookmark_html_reader.h -@@ -53,6 +53,14 @@ void ImportBookmarksFile( - std::vector* search_engines, - favicon_base::FaviconUsageDataList* favicons); - -+void ImportBookmarksFile( -+ const base::RepeatingCallback cancellation_callback, -+ const base::RepeatingCallback valid_url_callback, -+ const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, -+ favicon_base::FaviconUsageDataList* favicons); -+ - // Returns true if |url| should be imported as a search engine, i.e. because it - // has replacement terms. Chrome treats such bookmarks as search engines rather - // than true bookmarks. + std::erase_if(parsed_bookmarks.bookmarks, + [](user_data_importer::ImportedBookmarkEntry bookmark) { + return !internal::CanImportURL(bookmark.url); diff --git a/components/headless/select_file_dialog/headless_select_file_dialog.cc b/components/headless/select_file_dialog/headless_select_file_dialog.cc --- a/components/headless/select_file_dialog/headless_select_file_dialog.cc +++ b/components/headless/select_file_dialog/headless_select_file_dialog.cc @@ -1589,6 +1407,29 @@ diff --git a/components/headless/select_file_dialog/headless_select_file_dialog. SelectFileDialogCallback callback_; }; +diff --git a/components/user_data_importer/content/content_bookmark_parser_utils.cc b/components/user_data_importer/content/content_bookmark_parser_utils.cc +--- a/components/user_data_importer/content/content_bookmark_parser_utils.cc ++++ b/components/user_data_importer/content/content_bookmark_parser_utils.cc +@@ -89,6 +89,7 @@ std::optional GetTimeAttribute(const std::string& attribute_list, + + // Given the URL of a page and a favicon data URL, adds an appropriate record + // to the given favicon usage vector. ++[[maybe_unused]] + void DataURLToFaviconUsage(const GURL& link_url, + const GURL& favicon_data, + favicon_base::FaviconUsageDataList* favicons) { +@@ -438,9 +439,11 @@ BookmarkParser::ParsedBookmarks ParseBookmarksUnsafe( + } + parsing_result.bookmarks.push_back(std::move(entry)); + ++#if !BUILDFLAG(IS_ANDROID) + // Save the favicon. DataURLToFaviconUsage will handle the case where + // there is no favicon. + DataURLToFaviconUsage(url, favicon, &parsing_result.favicons); ++#endif + + continue; + } diff --git a/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc b/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc new file mode 100644 --- /dev/null @@ -1732,7 +1573,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc --- a/ui/shell_dialogs/select_file_dialog_android.cc +++ b/ui/shell_dialogs/select_file_dialog_android.cc -@@ -175,6 +175,12 @@ void SelectFileDialogImpl::SelectFileImpl( +@@ -171,6 +171,12 @@ void SelectFileDialogImpl::SelectFileImpl(Type type, owning_window->GetJavaObject()); } @@ -1748,7 +1589,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/s diff --git a/ui/shell_dialogs/select_file_dialog_android.h b/ui/shell_dialogs/select_file_dialog_android.h --- a/ui/shell_dialogs/select_file_dialog_android.h +++ b/ui/shell_dialogs/select_file_dialog_android.h -@@ -53,6 +53,8 @@ class SelectFileDialogImpl : public SelectFileDialog { +@@ -49,6 +49,8 @@ class SelectFileDialogImpl : public SelectFileDialog { gfx::NativeWindow owning_window, const GURL* caller) override; diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 20709c0d..bf05f26f 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -42,7 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../placeholder.txt | 1 + chrome/browser/ui/ui_features.cc | 1 + chrome/browser/unexpire_flags.cc | 15 +- - chrome/common/chrome_features.cc | 1 + + chrome/common/chrome_features.cc | 2 +- .../browser_ui/accessibility/android/BUILD.gn | 1 + .../res/xml/accessibility_preferences.xml | 3 +- .../accessibility/AccessibilitySettings.java | 6 +- @@ -107,7 +107,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html third_party/blink/public/common/features.h | 1 + ui/base/ui_base_features.cc | 1 + ui/base/ui_base_features.h | 1 + - 94 files changed, 826 insertions(+), 30 deletions(-) + 94 files changed, 826 insertions(+), 31 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp @@ -153,7 +153,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1035,7 +1037,7 @@ component("base") { +@@ -1043,7 +1045,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -451,7 +451,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -38,7 +38,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -40,7 +40,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); @Override @@ -475,15 +475,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment; +@@ -11,6 +11,7 @@ import androidx.annotation.NonNull; + import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; - import org.chromium.base.IntentUtils; +import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.chrome.browser.LaunchIntentDispatcher; -@@ -76,18 +77,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl + import org.chromium.chrome.browser.accessibility.settings.ChromeAccessibilitySettingsDelegate; +@@ -70,18 +71,21 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl private final OneshotSupplier mSnackbarManagerSupplier; private final OneshotSupplier mBottomSheetControllerSupplier; private final ObservableSupplier mModalDialogManagerSupplier; @@ -506,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme } @Override -@@ -96,6 +100,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -90,6 +94,10 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl @NonNull Fragment fragment, @NonNull Context unusedContext) { // Common dependencies attachments. @@ -634,7 +634,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -407,6 +407,10 @@ using flags_ui::kOsLinux; +@@ -380,6 +380,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -645,9 +645,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4835,6 +4839,10 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { - }; - // LINT.ThenChange(//ios/chrome/browser/flags/about_flags.mm:DataSharingVersioningChoices) +@@ -4902,6 +4906,10 @@ const FeatureEntry::FeatureVariation + constexpr char kWebiumFlag[] = "webium"; + #endif // !BUILDFLAG(IS_ANDROID) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -656,7 +656,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. -@@ -4861,6 +4869,9 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { +@@ -4928,6 +4936,9 @@ constexpr char kWebiumFlag[] = "webium"; const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -669,7 +669,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc --- a/chrome/browser/browser_features.cc +++ b/chrome/browser/browser_features.cc -@@ -359,4 +359,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, +@@ -368,4 +368,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, "RemovalOfIWAsFromTabCapture", base::FEATURE_ENABLED_BY_DEFAULT); @@ -678,7 +678,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h -@@ -135,6 +135,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -121,6 +121,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -728,7 +728,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1421,5 +1421,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1489,5 +1489,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -738,14 +738,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -318,6 +318,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutTextVariant( - "text_variant", +@@ -331,6 +331,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( + "snippet_as_subtitle", /*default_value=*/false); +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_h.inc" - } // namespace android - } // namespace chrome + } // namespace chrome::android + #endif // CHROME_BROWSER_FLAGS_ANDROID_CHROME_FEATURE_LIST_H_ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java @@ -760,7 +760,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -1015,7 +1019,7 @@ public abstract class ChromeFeatureList { +@@ -1063,7 +1067,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sWebApkMinShellApkVersion = newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); @@ -769,7 +769,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, -@@ -1152,6 +1156,13 @@ public abstract class ChromeFeatureList { +@@ -1205,6 +1209,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sWebApkMinShellApkVersion); @@ -959,8 +959,8 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -430,4 +430,5 @@ bool HasTabSearchToolbarButton() { - return has_tab_search_toolbar_button; +@@ -619,4 +619,5 @@ bool IsBookmarkTabGroupConversionEnabled() { + return base::FeatureList::IsEnabled(kBookmarkTabGroupConversion); } +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" @@ -968,7 +968,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc --- a/chrome/browser/unexpire_flags.cc +++ b/chrome/browser/unexpire_flags.cc -@@ -12,6 +12,7 @@ +@@ -8,6 +8,7 @@ #include "base/containers/contains.h" #include "base/containers/flat_map.h" #include "base/no_destructor.h" @@ -976,7 +976,7 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc #include "chrome/browser/expired_flags_list.h" #include "chrome/browser/unexpire_flags_gen.h" #include "chrome/common/chrome_version.h" -@@ -117,7 +118,19 @@ bool IsFlagExpired(const flags_ui::FlagsStorage* storage, +@@ -114,7 +115,19 @@ bool IsFlagExpired(const flags_ui::FlagsStorage* storage, // Otherwise, the flag is expired if its expiration mstone is less than the // mstone of this copy of Chromium. @@ -1000,10 +1000,11 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1866,4 +1866,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, - "DisableShortcutsEnableDiy", - base::FEATURE_ENABLED_BY_DEFAULT); - +@@ -1977,5 +1977,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, + BASE_FEATURE(kSilentPolicyAndDefaultAppUpdating, + "SilentPolicyAndDefaultAppUpdating", + base::FEATURE_DISABLED_BY_DEFAULT); +- +#include "cromite_flags/chrome_common_chrome_features_cc.inc" } // namespace features diff --git a/components/browser_ui/accessibility/android/BUILD.gn b/components/browser_ui/accessibility/android/BUILD.gn @@ -1151,7 +1152,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -167,5 +167,6 @@ BASE_FEATURE(kForceAllowStorageAccess, +@@ -181,5 +181,6 @@ BASE_FEATURE(kForceAllowStorageAccess, "ForceAllowStorageAccess", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1187,16 +1188,16 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc --- a/components/password_manager/core/browser/features/password_features.cc +++ b/components/password_manager/core/browser/features/password_features.cc -@@ -191,4 +191,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, - "ImprovedPasswordChangeService", +@@ -219,4 +219,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, base::FEATURE_DISABLED_BY_DEFAULT); + #endif // BUILDFLAG(IS_ANDROID) +#include "cromite_flags/components_password_manager_core_browser_features_password_features_cc.inc" } // namespace password_manager::features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -147,6 +147,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -139,6 +139,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, "OsAdditionalSecurityPermissionKillSwitch", base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -1629,16 +1630,16 @@ diff --git a/components/webui/version/version_handler_helper.cc b/components/web diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -583,4 +583,5 @@ BASE_FEATURE(kDisallowRasterInterfaceWithoutSkiaBackend, - - // Please keep features in alphabetical order. +@@ -743,4 +743,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { + blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); + } +#include "cromite_flags/content_common_features_cc.inc" } // namespace features diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1597,4 +1597,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1676,4 +1676,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1647,7 +1648,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -380,6 +380,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -400,6 +400,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -1993,7 +1994,7 @@ new file mode 100755 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -1891,5 +1891,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -2008,5 +2008,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2003,7 +2004,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -577,5 +577,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -601,5 +601,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2013,18 +2014,18 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -811,4 +811,5 @@ BASE_FEATURE_PARAM(int, - "TcpConnectionPoolSizeTrialWebSocket", - 256); +@@ -909,4 +909,5 @@ BASE_FEATURE_PARAM(bool, + "url_request_redirect_job", + false); +#include "cromite_flags/net_base_features_cc.inc" } // namespace net::features diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h +++ b/net/base/features.h -@@ -822,6 +822,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(int, kTcpConnectionPoolSizeTrialNormal); - NET_EXPORT BASE_DECLARE_FEATURE_PARAM(int, - kTcpConnectionPoolSizeTrialWebSocket); +@@ -896,6 +896,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, kNetTaskSchedulerURLRequestJob); + NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, + kNetTaskSchedulerURLRequestRedirectJob); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2033,18 +2034,18 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -637,4 +637,5 @@ BASE_FEATURE(kNetworkServiceScheduler, - "NetworkServiceScheduler", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -666,4 +666,5 @@ BASE_FEATURE_PARAM(bool, + "url_loader", + false); +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -355,6 +355,7 @@ BASE_DECLARE_FEATURE_PARAM(size_t, kSharedDictionaryCacheMaxSizeBytes); +@@ -366,6 +366,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) - BASE_DECLARE_FEATURE(kNetworkServiceScheduler); + BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerURLLoader); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace network::features @@ -2053,7 +2054,7 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2886,4 +2886,5 @@ bool IsLinkPreviewTriggerTypeEnabled(LinkPreviewTriggerType type) { +@@ -2927,4 +2927,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2062,7 +2063,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1888,6 +1888,7 @@ BLINK_COMMON_EXPORT bool IsUpdateComplexSafaAreaConstraintsEnabled(); +@@ -1912,6 +1912,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. @@ -2073,8 +2074,8 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc -@@ -504,4 +504,5 @@ bool IsPixelCanvasRecordingEnabled() { - return base::FeatureList::IsEnabled(features::kEnablePixelCanvasRecording); +@@ -483,4 +483,5 @@ bool IsHandleIMESpanChangesOnUpdateCompositionEnabled() { + features::kHandleIMESpanChangesOnUpdateComposition); } +#include "cromite_flags/ui_base_features_cc.inc" @@ -2082,9 +2083,9 @@ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h -@@ -247,6 +247,7 @@ BASE_DECLARE_FEATURE(kEnablePixelCanvasRecording); - - bool COMPONENT_EXPORT(UI_BASE_FEATURES) IsPixelCanvasRecordingEnabled(); +@@ -242,6 +242,7 @@ BASE_DECLARE_FEATURE(kHandleIMESpanChangesOnUpdateComposition); + COMPONENT_EXPORT(UI_BASE_FEATURES) + bool IsHandleIMESpanChangesOnUpdateCompositionEnabled(); +#include "cromite_flags/ui_base_features_h.inc" } // namespace features diff --git a/build/patches/Add-cromite-test-support.patch b/build/patches/Add-cromite-test-support.patch index 1f4e58ad..28804ab7 100644 --- a/build/patches/Add-cromite-test-support.patch +++ b/build/patches/Add-cromite-test-support.patch @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -191,6 +191,11 @@ source_set("shell_integration") { +@@ -188,6 +188,11 @@ source_set("shell_integration") { # require many files from it. This makes linking more efficient. static_library("browser") { sources = [ @@ -179,7 +179,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc b #include "chrome/browser/chrome_browser_interface_binders_webui.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_content_browser_client_parts.h" -@@ -499,6 +500,15 @@ void ChromeContentBrowserClient:: +@@ -494,6 +495,15 @@ void ChromeContentBrowserClient:: render_frame_host); }, &render_frame_host)); @@ -423,7 +423,7 @@ diff --git a/chrome/browser/notifications/android/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc --- a/chrome/browser/ui/startup/bad_flags_prompt.cc +++ b/chrome/browser/ui/startup/bad_flags_prompt.cc -@@ -188,6 +188,7 @@ static const base::Feature* kBadFeatureFlagsInAboutFlags[] = { +@@ -210,6 +210,7 @@ static const base::Feature* kBadFeatureFlagsInAboutFlags[] = { #if BUILDFLAG(IS_ANDROID) &chrome::android::kCommandLineOnNonRooted, @@ -434,7 +434,7 @@ diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/s diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -686,6 +686,7 @@ mojom("mojo_bindings") { +@@ -657,6 +657,7 @@ mojom("mojo_bindings") { sources = [ "chrome_render_frame.mojom", "google_accounts_private_api_extension.mojom", @@ -457,7 +457,7 @@ new file mode 100644 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -78,6 +78,8 @@ static_library("renderer") { +@@ -74,6 +74,8 @@ static_library("renderer") { "chrome_render_thread_observer.cc", "chrome_render_thread_observer.h", "custom_menu_commands.h", @@ -469,7 +469,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -56,6 +56,7 @@ +@@ -54,6 +54,7 @@ #include "chrome/renderer/chrome_render_frame_observer.h" #include "chrome/renderer/chrome_render_thread_observer.h" #include "chrome/renderer/controlled_frame/controlled_frame_extensions_renderer_api_provider.h" @@ -477,7 +477,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #include "chrome/renderer/google_accounts_private_api_extension.h" #include "chrome/renderer/loadtimes_extension_bindings.h" #include "chrome/renderer/media/flash_embed_rewrite.h" -@@ -665,6 +666,7 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -624,6 +625,7 @@ void ChromeContentRendererClient::RenderFrameCreated( TrustedVaultEncryptionKeysExtension::Create(render_frame); GoogleAccountsPrivateApiExtension::Create(render_frame); @@ -860,7 +860,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #if BUILDFLAG(IS_ANDROID) #include "content/browser/accessibility/browser_accessibility_manager_android.h" #include "content/browser/android/content_url_loader_factory.h" -@@ -4716,7 +4718,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4755,7 +4757,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole( if (delegate_->DidAddMessageToConsole(this, log_level, message, line_no, updated_source_id, untrusted_stack_trace)) { @@ -870,7 +870,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b } // Pass through log severity only on builtin components pages to limit console -@@ -4733,8 +4736,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( +@@ -4772,8 +4775,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole( const bool is_off_the_record = GetSiteInstance()->GetBrowserContext()->IsOffTheRecord(); diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index f3e4de17..5073f0e6 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -14,8 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../java/res/xml/privacy_preferences.xml | 15 ++++++ .../browser/LaunchIntentDispatcher.java | 21 ++++++++ - .../CustomTabIntentDataProvider.java | 4 +- - .../customtabs/CustomTabsConnection.java | 1 + + .../CustomTabIntentDataProvider.java | 22 ++++---- + .../customtabs/CustomTabsConnection.java | 3 +- .../IncognitoCustomTabIntentDataProvider.java | 14 +++++ .../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++ .../flags/android/chrome_feature_list.cc | 2 +- @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../OriginVerifier.java | 5 ++ .../core/common/language_experiments.cc | 1 + .../add-custom-tab-intents-privacy-option.inc | 1 + - 13 files changed, 146 insertions(+), 3 deletions(-) + 13 files changed, 156 insertions(+), 13 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -61,6 +61,9 @@ import java.lang.annotation.Retention; +@@ -62,6 +62,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Set; @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -263,6 +266,9 @@ public class LaunchIntentDispatcher { +@@ -264,6 +267,9 @@ public class LaunchIntentDispatcher { */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis Log.w( TAG, "CustomTabsIntent#shouldAlwaysUseBrowserUI() = " -@@ -291,6 +297,10 @@ public class LaunchIntentDispatcher { +@@ -292,6 +298,10 @@ public class LaunchIntentDispatcher { // Make sure the result of the CustomTabActivity is forwarded to the client. newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Since configureIntentForResizableCustomTab() might change the componenet/class // associated with the passed intent, it needs to be called after #setClassName(context, // CustomTabActivity.class.getName()); -@@ -483,6 +493,17 @@ public class LaunchIntentDispatcher { +@@ -490,6 +500,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -109,6 +109,49 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +@@ -233,16 +233,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + + // Extra whose value is an array of ints that is supplied to + // SyntheticTrialRegistry::RegisterExternalExperiments(). +- public static final String EXPERIMENT_IDS = +- "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS"; ++ // public static final String EXPERIMENT_IDS = ++ // "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS"; + + // These Extra Intent parameters allow an Intent to enable or disable a set of Features. + // The set of Features that may be enabled or disabled is restricted by the code, + // and initially only two Features may be enabled together, or disabled together. +- public static final String EXPERIMENTS_ENABLE = +- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE"; +- public static final String EXPERIMENTS_DISABLE = +- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE"; ++ // public static final String EXPERIMENTS_ENABLE = ++ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE"; ++ // public static final String EXPERIMENTS_DISABLE = ++ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE"; + + /** + * Extra that, if set, makes the Custom Tab Activity's height to be x pixels, the Custom Tab +@@ -682,7 +682,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION, + ScreenOrientation.DEFAULT)); + +- mGsaExperimentIds = IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS); ++ mGsaExperimentIds = null; //IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS); + + mBreakPointDp = getActivityBreakPointFromIntent(intent); + mInitialActivityHeight = getInitialActivityHeightFromIntent(intent); +@@ -695,8 +695,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid + intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT); + mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED; + +- mInteractWithBackground = CustomTabsIntent.isBackgroundInteractionEnabled(intent); +- if (IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) { ++ mInteractWithBackground = false; // CustomTabsIntent.isBackgroundInteractionEnabled(intent); ++ if (((false)) && IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) { + @BackgroundInteractBehavior + int backgroundInteractBehavior = + IntentUtils.safeGetIntExtra( @@ -1267,7 +1267,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid public @CustomTabProfileType int getCustomTabMode() { return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() @@ -123,7 +166,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java -@@ -981,6 +981,7 @@ public class CustomTabsConnection { +@@ -780,7 +780,7 @@ public class CustomTabsConnection { + ThreadUtils.assertOnUiThread(); + if (extras == null) return; + int[] experimentIds = +- IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS); ++ null; //IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS); + if (experimentIds == null) return; + // When ids are set through cct, they should not override existing ids. + boolean override = false; +@@ -996,6 +996,7 @@ public class CustomTabsConnection { PostTask.postTask( TaskTraits.UI_DEFAULT, () -> { @@ -275,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1051,7 +1051,7 @@ BASE_FEATURE(kMagicStackAndroid, +@@ -1093,7 +1093,7 @@ BASE_FEATURE(kMagicStackAndroid, // Enables an experimental feature which forces mayLaunchUrl to use a different // storage partition. This may reduce performance. This should not be enabled by // default. @@ -287,7 +339,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -895,6 +895,8 @@ public abstract class ChromeFeatureList { +@@ -943,6 +943,8 @@ public abstract class ChromeFeatureList { MOST_VISITED_TILES_CUSTOMIZATION, /* defaultValue= */ false, /* defaultValueInTests= */ true); @@ -296,9 +348,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sMostVisitedTilesReselect = newCachedFlag(MOST_VISITED_TILES_RESELECT, false); public static final CachedFlag sMultiInstanceApplicationStatusCleanup = -@@ -1111,6 +1113,7 @@ public abstract class ChromeFeatureList { - sMaliciousApkDownloadCheck, +@@ -1165,6 +1167,7 @@ public abstract class ChromeFeatureList { sMiniOriginBar, + sMitigateLegacySearchEnginePromoOverlap, sMostVisitedTilesCustomization, + sMayLaunchurlUsesSeparateStoragePartition, sMostVisitedTilesReselect, @@ -368,9 +420,9 @@ diff --git a/components/content_relationship_verification/android/java/src/org/c diff --git a/components/language/core/common/language_experiments.cc b/components/language/core/common/language_experiments.cc --- a/components/language/core/common/language_experiments.cc +++ b/components/language/core/common/language_experiments.cc -@@ -32,4 +32,5 @@ BASE_FEATURE(kDisableGeoLanguageModel, - // Params: - const char kContentLanguagesDisableObserversParam[] = "disable_observers"; +@@ -26,4 +26,5 @@ BASE_FEATURE(kDisableGeoLanguageModel, + "DisableGeoLanguageModel", + base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate); } // namespace language @@ -379,5 +431,5 @@ new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc @@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides); ++// explicitly empty -- diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index dc11da1b..574b16af 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -331,6 +331,8 @@ import java.util.Map; +@@ -345,6 +345,8 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; @@ -37,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct /** * This is the main activity for ChromeMobile when not running in document mode. All the tabs are * accessible via a chrome specific tab switching UI. -@@ -3464,6 +3466,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3707,6 +3709,8 @@ public class ChromeTabbedActivity extends ChromeActivity { .closeTabs( TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true); RecordUserAction.record("MobileTabClosed"); @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate; -@@ -2420,6 +2421,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2445,6 +2446,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return true; } @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -373,6 +373,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -384,6 +384,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm maybeAddDividerLine(modelList, R.id.menu_item_content_filter_divider_line_id); modelList.add(buildContentFilterHelpCenterMenuItem(currentTab)); } @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -4499,6 +4499,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4347,6 +4347,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Dark theme diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 2c240dab..25b8ae3e 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -22,6 +22,7 @@ +@@ -23,6 +23,7 @@ #include "base/check_op.h" #include "base/containers/contains.h" @@ -26,7 +26,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -568,6 +569,15 @@ AutocompleteController::AutocompleteController( +@@ -567,6 +568,15 @@ AutocompleteController::AutocompleteController( provider_client_->GetOmniboxTriggeredFeatureService()), steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION) { @@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ #include "base/functional/callback.h" #include "base/i18n/break_iterator.h" #include "base/i18n/case_conversion.h" -@@ -631,6 +632,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -632,6 +633,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index aac5b4fa..1bf86135 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,13 +45,13 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1152,6 +1152,7 @@ component("net") { +@@ -1157,6 +1157,7 @@ component("net") { ":net_deps", "//components/miracle_parameter/common", "//components/network_time/time_tracker", + "//components/network_session_configurator/common", "//net/http:transport_security_state_generated_files", - "//third_party/simdutf:simdutf", + "//third_party/simdutf", ] diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index 740833d6..aa90eb26 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 -@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; +@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator; import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.init.ChromeActivityNativeDelegate; -@@ -126,6 +127,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { +@@ -128,6 +129,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { @Override public boolean shouldDisableAllExternalIntents() { @@ -68,15 +68,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java -@@ -23,6 +23,7 @@ import org.chromium.base.IntentUtils; - import org.chromium.base.PackageManagerUtils; - import org.chromium.base.supplier.Supplier; +@@ -26,6 +26,7 @@ import org.chromium.base.supplier.Supplier; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.ChromeTabbedActivity2; +import org.chromium.chrome.browser.flags.cromite.sAllowExternalIntentRequests; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -@@ -113,7 +114,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat +@@ -117,7 +118,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat @Override public boolean shouldDisableExternalIntentRequestsForUrl(GURL url) { @@ -141,16 +141,16 @@ new file mode 100644 diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc --- a/components/external_intents/android/external_intents_features.cc +++ b/components/external_intents/android/external_intents_features.cc -@@ -28,7 +28,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kExternalNavigationDebugLogs, &kBlockIntentsToSelf, +@@ -29,7 +29,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNavigationCaptureRefactorAndroid, &kAuxiliaryNavigationStaysInBrowser, - &kReparentTopLevelNavigationFromPWA, &kReparentAuxiliaryNavigationFromPWA}; + &kReparentTopLevelNavigationFromPWA, &kReparentAuxiliaryNavigationFromPWA, + &kAuxiliaryNavigationStaysInPWA}; - } // namespace // Alphabetical: -@@ -57,7 +56,13 @@ BASE_FEATURE(kReparentAuxiliaryNavigationFromPWA, - "ReparentAuxiliaryNavigationFromPWA", +@@ -62,7 +61,13 @@ BASE_FEATURE(kAuxiliaryNavigationStaysInPWA, + "AuxiliaryNavigationStaysInPWA", base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture, @@ -193,7 +193,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java -@@ -1561,6 +1561,12 @@ public class ExternalNavigationHandler { +@@ -1558,6 +1558,12 @@ public class ExternalNavigationHandler { || ignoreBackForwardNav(params); } @@ -206,7 +206,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1629,6 +1635,21 @@ public class ExternalNavigationHandler { +@@ -1626,6 +1632,21 @@ public class ExternalNavigationHandler { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index af5a9ba7..21ee820a 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -65,8 +65,8 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa static void EnableFluentOverlayScrollbars(bool); + static void EnableVibration(bool); - WebRuntimeFeatures() = delete; - }; + static void EnableLocalNetworkAccessWebRTC(bool); + diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc --- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc +++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc @@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -984,6 +984,10 @@ +@@ -1011,6 +1011,10 @@ { name: "CompositingDecisionAtAnimationPhaseBoundaries" }, diff --git a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch index 8165938c..b8de58fb 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 -@@ -661,7 +661,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). +@@ -700,7 +700,7 @@ config("compiler") { # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds. + # It also causes segfault on Linux s390x: + # https://github.com/llvm/llvm-project/issues/149511 - if (is_linux && use_lld && !llvm_android_mainline && current_cpu != "arm" && + if (is_linux && !skip_clangd_unsupported_options && use_lld && !llvm_android_mainline && current_cpu != "arm" && + current_cpu != "s390x" && default_toolchain != "//build/toolchain/cros:target") { cflags += [ "-Wa,--crel,--allow-experimental-crel" ] - } -@@ -1804,7 +1804,7 @@ config("clang_revision") { +@@ -1813,7 +1813,7 @@ config("clang_revision") { # e.g. by setting in the the project's .gn file. config("clang_warning_suppression") { # Some build configs use older versions of clang that don't support WSMs @@ -32,15 +32,15 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn from_build_root = rebase_path(clang_warning_suppression_file, root_build_dir) inputs = [ clang_warning_suppression_file ] -@@ -2151,7 +2151,6 @@ config("default_warnings") { - # TODO(crbug.com/376641662): Fix and re-enable. - "-Wno-nontrivial-memcall", - ] +@@ -2146,7 +2146,6 @@ config("default_warnings") { + # TODO(crbug.com/376641662): Fix and re-enable. + "-Wno-nontrivial-memcall", + ] - - cflags_cc += [ - # TODO(crbug.com/328490295): Fix and re-enable for C flags. - "-Wenum-compare-conditional", -@@ -2204,6 +2203,15 @@ config("default_warnings") { + cflags_cc += [ + # TODO(crbug.com/328490295): Fix and re-enable for C flags. + "-Wenum-compare-conditional", +@@ -2211,6 +2210,15 @@ config("default_warnings") { ] } @@ -59,9 +59,9 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn diff --git a/build_overrides/build.gni b/build_overrides/build.gni --- a/build_overrides/build.gni +++ b/build_overrides/build.gni -@@ -55,6 +55,9 @@ declare_args() { - # to lack of toolchain support. - gtest_enable_absl_printers = !is_nacl +@@ -54,6 +54,9 @@ declare_args() { + # Allows googletest to pretty-print various absl types. + gtest_enable_absl_printers = true + # Allows clangd builds by suppressing unsupported parameters + skip_clangd_unsupported_options = false diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index fb76237b..a3e22b0d 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -52,18 +52,17 @@ See also: https://github.com/bromite/bromite/issues/1549 Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../permissions/last_tab_standing_tracker.cc | 32 ++++++++ - .../one_time_permissions_tracker.cc | 33 +++++++- + .../permissions/last_tab_standing_tracker.cc | 33 ++++++++ + .../one_time_permissions_tracker.cc | 34 +++++++- .../one_time_permissions_tracker.h | 5 +- .../one_time_permissions_tracker_factory.cc | 2 +- .../views/permissions/chip/chip_controller.cc | 2 +- ...exclusive_access_permission_prompt_view.cc | 2 +- .../permission_prompt_bubble_base_view.cc | 2 +- - .../site_settings/PermissionInfo.java | 1 + .../site_settings/SingleWebsiteSettings.java | 9 ++ .../android/website_preference_bridge.cc | 2 +- .../strings/android/browser_ui_strings.grd | 5 ++ - .../core/browser/content_settings_utils.cc | 42 ++++++++-- + .../core/browser/content_settings_utils.cc | 44 ++++++++-- .../core/browser/content_settings_utils.h | 6 ++ .../core/common/content_settings_enums.mojom | 9 ++ .../page_info/PageInfoController.java | 4 +- @@ -72,7 +71,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/page_info/page_info.cc | 2 + components/page_info/page_info.h | 1 + .../permissions/PermissionDialogDelegate.java | 13 +++ - .../PermissionDialogModelFactory.java | 82 ++++++++++++++++++- + .../PermissionDialogModelFactory.java | 83 ++++++++++++++++++- .../embedded_permission_prompt_android.cc | 3 +- .../embedded_permission_prompt_android.h | 2 +- .../permission_dialog_delegate.cc | 24 +++++- @@ -81,16 +80,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ .../geolocation_permission_context_android.cc | 30 +++++-- - .../geolocation_permission_context_android.h | 10 ++- + .../geolocation_permission_context_android.h | 8 ++ .../embedded_permission_prompt_flow_model.cc | 2 +- - .../permissions/permission_context_base.cc | 64 +++++++++++++-- + .../permissions/permission_context_base.cc | 64 ++++++++++++-- .../permissions/permission_context_base.h | 26 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 34 +++++++- components/permissions/permission_request.h | 18 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 38 files changed, 506 insertions(+), 72 deletions(-) + 37 files changed, 507 insertions(+), 73 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -128,13 +127,14 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/br LastTabStandingTracker::LastTabStandingTracker(content::BrowserContext* context) : context_(context) {} -@@ -56,4 +82,10 @@ void LastTabStandingTracker::WebContentsUnloadedOrigin( +@@ -56,4 +82,11 @@ void LastTabStandingTracker::WebContentsUnloadedOrigin( for (auto& observer : observer_list_) { observer.OnLastPageFromOriginClosed(origin); } + HostContentSettingsMap* content_settings = + permissions::PermissionsClient::Get()->GetSettingsMap(context_); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION_WITH_OPTIONS); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); + } @@ -178,13 +178,14 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome OneTimePermissionsTracker::~OneTimePermissionsTracker() = default; OneTimePermissionsTracker::OriginTrackEntry::OriginTrackEntry() = default; -@@ -254,6 +280,11 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( +@@ -254,6 +280,12 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( for (auto& observer : observer_list_) { observer.OnLastPageFromOriginClosed(origin); } + HostContentSettingsMap* content_settings = + permissions::PermissionsClient::Get()->GetSettingsMap(context_); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION_WITH_OPTIONS); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); + RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); } @@ -232,7 +233,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc diff --git a/chrome/browser/ui/views/permissions/chip/chip_controller.cc b/chrome/browser/ui/views/permissions/chip/chip_controller.cc --- a/chrome/browser/ui/views/permissions/chip/chip_controller.cc +++ b/chrome/browser/ui/views/permissions/chip/chip_controller.cc -@@ -224,7 +224,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { +@@ -227,7 +227,7 @@ void ChipController::OnWidgetDestroyed(views::Widget* widget) { active_chip_permission_request_manager_.value()->Accept(); break; case permissions::PermissionAction::GRANTED_ONCE: @@ -256,7 +257,7 @@ diff --git a/chrome/browser/ui/views/permissions/exclusive_access_permission_pro diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc -@@ -297,7 +297,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { +@@ -294,7 +294,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { delegate_->Accept(); return; case PermissionDialogButton::kAcceptOnce: @@ -265,21 +266,10 @@ diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_v return; case PermissionDialogButton::kDeny: #if BUILDFLAG(IS_CHROMEOS) -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -@@ -12,6 +12,7 @@ import org.chromium.components.content_settings.SessionModel; - import org.chromium.components.permissions.PermissionsAndroidFeatureList; - import org.chromium.components.permissions.PermissionsAndroidFeatureMap; - import org.chromium.content_public.browser.BrowserContextHandle; -+import org.chromium.components.content_settings.SessionModel; - - import java.io.Serializable; - import java.util.Objects; diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -620,6 +620,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -630,6 +630,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } @RequiresNonNull({"mSite"}) @@ -291,12 +281,12 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void setUpClearDataPreference() { ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA); long usage = mSite.getTotalUsage(); -@@ -1292,6 +1297,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - AppCompatResources.getColorStateList(getContext(), mHighlightColor) - .getDefaultColor()); +@@ -1316,6 +1321,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + .getDefaultColor()); + } } -+ if (isSessionPermission(contentType)) { -+ switchPreference.setSummary(switchPreference.getSummary() + " " + ++ if (preference instanceof ChromeSwitchPreference && isSessionPermission(contentType)) { ++ ((ChromeSwitchPreference)preference).setSummary(preference.getSummary() + " " + + getString(R.string.page_info_android_permission_session_permission)); + } } @@ -305,7 +295,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -209,7 +209,7 @@ void GetOrigins(JNIEnv* env, +@@ -218,7 +218,7 @@ void GetOrigins(JNIEnv* env, seen_origins.push_back(origin); insertionFunc(env, static_cast(content_type), list, ConvertOriginToJavaString(env, origin), jembedder, @@ -317,7 +307,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -643,6 +643,11 @@ +@@ -646,6 +646,11 @@ URL truncated @@ -332,7 +322,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -157,6 +157,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { +@@ -182,6 +182,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { return constraints.session_model() == mojom::SessionModel::DURABLE; } @@ -373,23 +363,25 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc +} + bool CanTrackLastVisit(ContentSettingsType type) { - // Last visit is not tracked for notification permission as it shouldn't be - // auto-revoked. -@@ -240,9 +276,6 @@ const std::vector& GetTypesWithTemporaryGrants() { + DCHECK(WebsiteSettingsRegistry::GetInstance()->Get(type)) << type; + +@@ -261,10 +297,6 @@ const std::vector& GetTypesWithTemporaryGrants() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, - ContentSettingsType::GEOLOCATION, +- ContentSettingsType::GEOLOCATION_WITH_OPTIONS, - ContentSettingsType::MEDIASTREAM_MIC, - ContentSettingsType::MEDIASTREAM_CAMERA, ContentSettingsType::HAND_TRACKING, ContentSettingsType::SMART_CARD_DATA, ContentSettingsType::AR, -@@ -258,9 +291,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { +@@ -280,10 +312,6 @@ const std::vector& GetTypesWithTemporaryGrantsInHcsm() { ContentSettingsType::CAPTURED_SURFACE_CONTROL, #endif ContentSettingsType::KEYBOARD_LOCK, - ContentSettingsType::GEOLOCATION, +- ContentSettingsType::GEOLOCATION_WITH_OPTIONS, - ContentSettingsType::MEDIASTREAM_MIC, - ContentSettingsType::MEDIASTREAM_CAMERA, ContentSettingsType::HAND_TRACKING, @@ -398,7 +390,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/content_settings_utils.h b/components/content_settings/core/browser/content_settings_utils.h --- a/components/content_settings/core/browser/content_settings_utils.h +++ b/components/content_settings/core/browser/content_settings_utils.h -@@ -73,6 +73,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); +@@ -78,6 +78,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); // Returns whether the given type supports tracking last_visit timestamps. bool CanTrackLastVisit(ContentSettingsType type); @@ -433,7 +425,7 @@ diff --git a/components/content_settings/core/common/content_settings_enums.mojo diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java -@@ -367,9 +367,9 @@ public class PageInfoController +@@ -378,9 +378,9 @@ public class PageInfoController String name, String nameMidSentence, int type, @@ -491,7 +483,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -171,6 +171,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -186,6 +186,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( std::map user_specified_settings_to_display; @@ -500,7 +492,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -179,6 +181,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -194,6 +196,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( if (setting_to_display) { user_specified_settings_to_display[permission.type] = *setting_to_display; @@ -509,7 +501,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } } -@@ -195,7 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -210,7 +214,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), @@ -519,7 +511,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } -@@ -208,7 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -223,7 +228,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info->content_settings_type), @@ -532,7 +524,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -1253,6 +1253,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1256,6 +1256,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); @@ -544,7 +536,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h --- a/components/page_info/page_info.h +++ b/components/page_info/page_info.h -@@ -150,6 +150,7 @@ class PageInfo : private content_settings::CookieControlsObserver, +@@ -151,6 +151,7 @@ class PageInfo : private content_settings::CookieControlsObserver, content_settings::SettingSource::kNone; // Whether the permission is a one-time grant. bool is_one_time = false; @@ -555,15 +547,15 @@ diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java -@@ -16,6 +16,7 @@ import org.chromium.build.annotations.NullMarked; +@@ -16,6 +16,7 @@ import org.jni_zero.NativeMethods; + import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; - import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.ui.base.WindowAndroid; +import org.chromium.components.content_settings.LifetimeMode; import java.util.ArrayList; - import java.util.Arrays; -@@ -72,6 +73,9 @@ public class PermissionDialogDelegate { + import java.util.List; +@@ -67,6 +68,9 @@ public class PermissionDialogDelegate { // Prompt(screen) variant we want to display on the dialog. private @EmbeddedPromptVariant int mEmbeddedPromptVariant; @@ -573,8 +565,8 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** * Defines a (potentially empty) list of ranges represented as pairs of , * which shall be used by the UI to format the specified ranges as bold text. -@@ -145,6 +149,15 @@ public class PermissionDialogDelegate { - .acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this); +@@ -139,6 +143,15 @@ public class PermissionDialogDelegate { + PermissionDialogDelegateJni.get().acceptThisTime(mNativeDelegatePtr); } + public void setSelectedLifetimeOption(int idx) { @@ -588,7 +580,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per + public void onDeny() { assert mNativeDelegatePtr != 0; - PermissionDialogDelegateJni.get().deny(mNativeDelegatePtr, PermissionDialogDelegate.this); + PermissionDialogDelegateJni.get().deny(mNativeDelegatePtr); diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogModelFactory.java @@ -611,7 +603,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** This class creates the model for the permission dialog. */ @NullMarked class PermissionDialogModelFactory { -@@ -67,7 +79,75 @@ class PermissionDialogModelFactory { +@@ -67,7 +79,76 @@ class PermissionDialogModelFactory { ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE) .with(ModalDialogProperties.CHANGE_CUSTOM_VIEW_OR_BUTTONS, true); } @@ -620,6 +612,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per + PropertyModel pm = builder.build(); + int[] types = delegate.getContentSettingsTypes(); + if (contains(types, ContentSettingsType.GEOLOCATION) || ++ contains(types, ContentSettingsType.GEOLOCATION_WITH_OPTIONS) || + contains(types, ContentSettingsType.MEDIASTREAM_MIC) || + contains(types, ContentSettingsType.MEDIASTREAM_CAMERA)) + { @@ -691,7 +684,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc -@@ -119,7 +119,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { +@@ -118,7 +118,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() { delegate()->FinalizeCurrentRequests(); } @@ -716,7 +709,7 @@ diff --git a/components/permissions/android/permission_prompt/embedded_permissio diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -139,6 +139,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { +@@ -137,6 +137,11 @@ void PermissionDialogJavaDelegate::UpdateDialog() { static_cast(permission_prompt_->GetEmbeddedPromptVariant())); } @@ -728,9 +721,9 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static std::unique_ptr PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -168,6 +173,13 @@ PermissionDialogDelegate::CreateForTesting( - void PermissionDialogDelegate::Accept(JNIEnv* env, - const JavaParamRef& obj) { +@@ -165,12 +170,22 @@ PermissionDialogDelegate::CreateForTesting( + + void PermissionDialogDelegate::Accept(JNIEnv* env) { CHECK(permission_prompt_); + content_settings::mojom::LifetimeMode lifetimeOption = + static_cast( @@ -742,9 +735,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } -@@ -175,7 +187,10 @@ void PermissionDialogDelegate::AcceptThisTime( - JNIEnv* env, - const JavaParamRef& obj) { + void PermissionDialogDelegate::AcceptThisTime(JNIEnv* env) { CHECK(permission_prompt_); - permission_prompt_->AcceptThisTime(); + content_settings::mojom::LifetimeMode lifetimeOption = @@ -753,10 +744,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ + permission_prompt_->AcceptThisTime(lifetimeOption); } - void PermissionDialogDelegate::Acknowledge(JNIEnv* env, -@@ -187,6 +202,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env, - void PermissionDialogDelegate::Deny(JNIEnv* env, - const JavaParamRef& obj) { + void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { +@@ -180,6 +195,13 @@ void PermissionDialogDelegate::Acknowledge(JNIEnv* env) { + + void PermissionDialogDelegate::Deny(JNIEnv* env) { CHECK(permission_prompt_); + content_settings::mojom::LifetimeMode lifetimeOption = + static_cast( @@ -782,7 +773,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -84,8 +84,12 @@ void PermissionPromptAndroid::Accept() { +@@ -85,8 +85,12 @@ void PermissionPromptAndroid::Accept() { delegate_->Accept(); } @@ -865,71 +856,74 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, -- PermissionDecision::kDeny); -+ PermissionDecision::kDeny, lifetime_option); +- PermissionDecision::kDeny, ++ PermissionDecision::kDeny, lifetime_option, + request_data.prompt_options); return; } - -@@ -229,7 +240,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -230,7 +241,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, -- PermissionDecision::kDeny); -+ PermissionDecision::kDeny, lifetime_option); +- PermissionDecision::kDeny, ++ PermissionDecision::kDeny, lifetime_option, + request_data.prompt_options); return; } - -@@ -241,13 +252,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -243,14 +254,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( base::BindOnce( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, weak_factory_.GetWeakPtr(), request_data.requesting_origin, -- request_data.embedding_origin, persist, decision)); -+ request_data.embedding_origin, persist, decision, lifetime_option)); +- request_data.embedding_origin, persist, decision, ++ request_data.embedding_origin, persist, decision, lifetime_option, + request_data.prompt_options)); return; } FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), -- persist, decision); -+ persist, decision, lifetime_option); +- persist, decision, request_data.prompt_options); ++ persist, decision, lifetime_option, request_data.prompt_options); } content::PermissionResult -@@ -424,7 +435,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -427,7 +438,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& requesting_origin, const GURL& embedding_origin, bool persist, - PermissionDecision decision, + PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options, LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); - if (prompt_outcome == GRANTED) { -@@ -442,7 +453,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( - - FinishNotifyPermissionSet( - location_settings_dialog_request_id_, requesting_origin, embedding_origin, -- std::move(location_settings_dialog_callback_), persist, decision); -+ std::move(location_settings_dialog_callback_), persist, decision, -+ lifetime_option); +@@ -447,7 +458,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( + FinishNotifyPermissionSet(location_settings_dialog_request_id_, + requesting_origin, embedding_origin, + std::move(location_settings_dialog_callback_), +- persist, decision, prompt_options); ++ persist, decision, lifetime_option, prompt_options); location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -455,15 +467,15 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -460,7 +471,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( const GURL& embedding_origin, BrowserPermissionCallback callback, bool persist, -- PermissionDecision decision) { +- PermissionDecision decision, ++ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options) { + PermissionRequestData request_data( + this, id, +@@ -469,9 +480,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( + blink::PermissionType::GEOLOCATION)), + requesting_origin, embedding_origin); + request_data.prompt_options = prompt_options.value_or(std::monostate()); - GeolocationPermissionContext::NotifyPermissionSet( -+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option) { -+ GeolocationPermissionContext::NotifyPermissionSetWithLifetime( - PermissionRequestData(this, id, - content::PermissionRequestDescription( - content::PermissionDescriptorUtil:: - CreatePermissionDescriptorForPermissionType( - blink::PermissionType::GEOLOCATION)), - requesting_origin), ++ GeolocationPermissionContext::NotifyPermissionSetImpl( + request_data, - std::move(callback), persist, decision, /*is_final_decision=*/true); -+ std::move(callback), persist, decision, /*is_final_decision=*/true, lifetime_option); ++ std::move(callback), persist, decision, /*is_final_decision=*/true, ++ /*use_lifetime_option*/ true, lifetime_option); } void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting( @@ -954,19 +948,17 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool persist, PermissionDecision decision, + content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options, LocationSettingsDialogOutcome prompt_outcome); - void FinishNotifyPermissionSet(const PermissionRequestID& id, -@@ -143,7 +150,8 @@ class GeolocationPermissionContextAndroid - const GURL& embedding_origin, +@@ -145,6 +152,7 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, -- PermissionDecision decision); -+ PermissionDecision decision, -+ content_settings::mojom::LifetimeMode lifetime_option); + PermissionDecision decision, ++ content_settings::mojom::LifetimeMode lifetime_option, + std::optional prompt_options); std::unique_ptr location_settings_; - diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/components/permissions/embedded_permission_prompt_flow_model.cc --- a/components/permissions/embedded_permission_prompt_flow_model.cc +++ b/components/permissions/embedded_permission_prompt_flow_model.cc @@ -982,7 +974,7 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -257,6 +257,17 @@ PermissionContextBase::CreatePermissionRequest( +@@ -260,6 +260,17 @@ PermissionContextBase::CreatePermissionRequest( std::move(request_finished_callback), UsesAutomaticEmbargo()); } @@ -1000,7 +992,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -@@ -548,7 +559,8 @@ void PermissionContextBase::DecidePermission( +@@ -551,7 +562,8 @@ void PermissionContextBase::DecidePermission( void PermissionContextBase::PermissionDecided( PermissionDecision decision, bool is_final_decision, @@ -1010,7 +1002,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm UserMadePermissionDecision(request_data.id, request_data.requesting_origin, request_data.embedding_origin, decision); -@@ -561,11 +573,12 @@ void PermissionContextBase::PermissionDecided( +@@ -564,11 +576,12 @@ void PermissionContextBase::PermissionDecided( // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -1027,7 +1019,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -655,6 +668,30 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -653,6 +666,30 @@ void PermissionContextBase::NotifyPermissionSet( bool persist, PermissionDecision decision, bool is_final_decision) { @@ -1058,7 +1050,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // Note that rfh may be null, see crbug.com/426909787. -@@ -670,8 +707,8 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -668,8 +705,8 @@ void PermissionContextBase::NotifyPermissionSet( if (persist) { // Clone new value, because we need it again for the callback. @@ -1069,9 +1061,9 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -708,6 +745,17 @@ void PermissionContextBase::UpdateSetting( +@@ -706,6 +743,17 @@ void PermissionContextBase::UpdateSetting( const PermissionRequestData& request_data, - base::Value setting, + PermissionSetting setting, bool is_one_time) { + UpdateSettingImpl(request_data, std::move(setting), + is_one_time, @@ -1080,14 +1072,14 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm +} + +void PermissionContextBase::UpdateSettingImpl(const PermissionRequestData& request_data, -+ base::Value setting, ++ PermissionSetting setting, + bool is_one_time, + bool use_lifetime_option, + content_settings::mojom::LifetimeMode lifetime_option) { DCHECK_EQ(request_data.requesting_origin, request_data.requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(request_data.embedding_origin, -@@ -717,6 +765,8 @@ void PermissionContextBase::UpdateSetting( +@@ -715,6 +763,8 @@ void PermissionContextBase::UpdateSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1123,12 +1115,12 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi // Store the decided permission state. Virtual since the permission might be // stored with different restrictions (for example for desktop notifications). + void UpdateSettingImpl(const PermissionRequestData& request_data, -+ base::Value setting, ++ PermissionSetting setting, + bool is_one_time, + bool use_lifetime_option, + content_settings::mojom::LifetimeMode lifetime_option); virtual void UpdateSetting(const PermissionRequestData& request_data, - base::Value setting, + PermissionSetting setting, bool is_one_time); @@ -238,6 +255,12 @@ class PermissionContextBase : public content_settings::Observer { PermissionRequest::PermissionDecidedCallback permission_decided_callback, @@ -1156,7 +1148,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi diff --git a/components/permissions/permission_prompt.h b/components/permissions/permission_prompt.h --- a/components/permissions/permission_prompt.h +++ b/components/permissions/permission_prompt.h -@@ -68,8 +68,9 @@ class PermissionPrompt { +@@ -70,8 +70,9 @@ class PermissionPrompt { virtual GURL GetEmbeddingOrigin() const = 0; virtual void Accept() = 0; @@ -1170,7 +1162,7 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc -@@ -33,6 +33,16 @@ PermissionRequest::PermissionRequest( +@@ -36,6 +36,16 @@ PermissionRequest::PermissionRequest( request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} @@ -1187,7 +1179,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { std::move(request_finished_callback_).Run(); } -@@ -419,20 +429,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -424,20 +434,40 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1233,7 +1225,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h -@@ -47,6 +47,12 @@ class PermissionRequest { +@@ -52,6 +52,12 @@ class PermissionRequest { bool /*is_final_decision*/, const PermissionRequestData& /*request_data*/)>; @@ -1246,7 +1238,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // `permission_decided_callback` is called when the permission request is // resolved by the user (see comment on PermissionDecidedCallback above). // `request_finished_callback` is called when the permission request is being -@@ -61,6 +67,11 @@ class PermissionRequest { +@@ -66,6 +72,11 @@ class PermissionRequest { base::OnceClosure request_finished_callback = base::DoNothing(), bool uses_automatic_embargo = true); @@ -1258,7 +1250,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -167,10 +178,10 @@ class PermissionRequest { +@@ -172,10 +183,10 @@ class PermissionRequest { // If |is_one_time| is true the permission will last until all tabs of // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. @@ -1271,7 +1263,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -224,6 +235,9 @@ class PermissionRequest { +@@ -237,6 +248,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1284,7 +1276,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -189,7 +189,7 @@ void PermissionRequestManager::AddRequest( +@@ -198,7 +198,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1293,7 +1285,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p return; } -@@ -258,7 +258,7 @@ void PermissionRequestManager::AddRequest( +@@ -267,7 +267,7 @@ void PermissionRequestManager::AddRequest( if (should_auto_approve_request) { if (should_auto_approve_request == PermissionAction::GRANTED) { @@ -1302,7 +1294,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } return; } -@@ -623,7 +623,8 @@ void PermissionRequestManager::Accept() { +@@ -626,7 +626,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1312,7 +1304,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -641,7 +642,7 @@ void PermissionRequestManager::Accept() { +@@ -644,7 +645,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } @@ -1321,7 +1313,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -655,7 +656,8 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -658,7 +659,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); PermissionGrantedIncludingDuplicates(requests_iter->get(), @@ -1331,7 +1323,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -663,6 +665,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -666,6 +668,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1347,7 +1339,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) { return; } -@@ -685,7 +696,7 @@ void PermissionRequestManager::Deny() { +@@ -688,7 +699,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); @@ -1411,7 +1403,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h -@@ -165,8 +165,10 @@ class PermissionRequestManager +@@ -166,8 +166,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept() override; @@ -1423,7 +1415,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -394,9 +396,12 @@ class PermissionRequestManager +@@ -413,9 +415,12 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, @@ -1436,6 +1428,6 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe + bool is_one_time, + content_settings::mojom::LifetimeMode lifetime_option); // Calls Cancelled on a request and all its duplicates. - void CancelledIncludingDuplicates(PermissionRequest* request, - bool is_final_decision = true); + void CancelRequestIncludingDuplicates(PermissionRequest* request, + bool is_final_decision = true); -- diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index 3630cba2..f845e45f 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -29,14 +29,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bookmarks/browser/bookmark_uuids.cc | 3 ++ components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 9 +++- - ...ookmark_model_merger_comparison_metrics.cc | 4 ++ .../bookmark_specifics_conversions.cc | 1 + - 27 files changed, 259 insertions(+), 14 deletions(-) + 26 files changed, 255 insertions(+), 14 deletions(-) diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml --- a/chrome/android/java/res/values/ids.xml +++ b/chrome/android/java/res/values/ids.xml -@@ -177,6 +177,7 @@ found in the LICENSE file. +@@ -180,6 +180,7 @@ found in the LICENSE file. @@ -55,26 +54,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -276,6 +277,9 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; +@@ -287,6 +288,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; - import org.chromium.chrome.browser.ui.extensions.ExtensionKeybindingRegistry; + import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityExtras.IntentOrigin; import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig; -@@ -285,6 +289,8 @@ import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController; - import org.chromium.chrome.browser.usage_stats.UsageStatsService; +@@ -298,6 +302,8 @@ import org.chromium.chrome.browser.usage_stats.UsageStatsService; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; + import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionInitializerImpl; import org.chromium.chrome.browser.xr.scenecore.XrSceneCoreSessionManagerImpl; +import org.chromium.components.bookmarks.BookmarkId; +import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.edge_to_edge.SystemBarColorHelper; import org.chromium.components.browser_ui.edge_to_edge.TabbedSystemBarColorHelper; -@@ -3497,6 +3503,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3739,6 +3745,8 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModelSelectorSupplier().get(), closeAllTabsRunnable); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -83,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion); -@@ -3610,6 +3618,41 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3863,6 +3871,41 @@ public class ChromeTabbedActivity extends ChromeActivity { getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus); } @@ -128,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -264,6 +264,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -270,6 +270,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // Bookmarks modelList.add(buildBookmarksItem()); @@ -143,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Recent Tabs if (shouldShowRecentTabsItem()) modelList.add(buildRecentTabsItem()); -@@ -423,6 +431,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -434,6 +442,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } modelList.add(buildCloseAllTabsItem()); if (shouldShowTinkerTank()) modelList.add(buildTinkerTankItem()); @@ -160,7 +159,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -390,6 +390,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { +@@ -340,6 +340,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { return bookmark_model_->account_mobile_node() != nullptr; } @@ -194,7 +193,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url) { -@@ -502,6 +529,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -452,6 +479,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -202,7 +201,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -610,6 +638,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -560,6 +588,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(other_node); } @@ -212,7 +211,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse const BookmarkNode* reading_list_node = local_or_syncable_reading_list_manager_->GetRoot(); if (IsPermanentFolderVisible( -@@ -1337,6 +1368,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1237,6 +1268,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -244,7 +243,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaLocalRef GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url); const bookmarks::BookmarkNode* GetMostRecentlyAddedUserBookmarkIdForUrlImpl( -@@ -250,6 +254,10 @@ class BookmarkBridge : public ProfileObserver, +@@ -245,6 +249,10 @@ class BookmarkBridge : public ProfileObserver, const base::android::JavaParamRef& j_list, jint type); @@ -299,7 +298,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Returns Id representing the special "other" folder from bookmark model. */ public @Nullable BookmarkId getOtherFolderId() { ThreadUtils.assertOnUiThread(); -@@ -898,6 +911,29 @@ class BookmarkBridge { +@@ -882,6 +895,29 @@ class BookmarkBridge { .addToReadingList(mNativeBookmarkBridge, parentId, title, url); } @@ -329,7 +328,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** * Helper method to mark an item as read. * -@@ -1115,6 +1151,9 @@ class BookmarkBridge { +@@ -1099,6 +1135,9 @@ class BookmarkBridge { BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl( long nativeBookmarkBridge, @JniType("GURL") GURL url); @@ -339,7 +338,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type); void getTopLevelFolderIds( -@@ -1136,6 +1175,8 @@ class BookmarkBridge { +@@ -1120,6 +1159,8 @@ class BookmarkBridge { BookmarkId getRootFolderId(long nativeBookmarkBridge); @@ -460,7 +459,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -4604,6 +4604,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4482,6 +4482,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Select tabs @@ -904,27 +903,6 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks &sync_metadata_str)) { details->set_local_or_syncable_sync_metadata_str( std::move(sync_metadata_str)); -diff --git a/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc b/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc ---- a/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc -+++ b/components/sync_bookmarks/bookmark_model_merger_comparison_metrics.cc -@@ -38,6 +38,7 @@ const char kOtherBookmarksTag[] = "other_bookmarks"; - constexpr char16_t kBookmarkBarFolderName[] = u"__Bookmarks bar__"; - constexpr char16_t kOtherBookmarksFolderName[] = u"__Other bookmarks__"; - constexpr char16_t kMobileBookmarksFolderName[] = u"__Mobile bookmarks__"; -+constexpr char16_t kTabsCollectionBookmarksFolderName[] = u"__Tabs collection__"; - - using RemoteForest = BookmarkModelMerger::RemoteForest; - using RemoteTreeNode = BookmarkModelMerger::RemoteTreeNode; -@@ -129,6 +130,9 @@ std::u16string_view GetBookmarkNodeTitle(const bookmarks::BookmarkNode* node) { - return kOtherBookmarksFolderName; - case bookmarks::BookmarkNode::MOBILE: - return kMobileBookmarksFolderName; -+ case bookmarks::BookmarkNode::TABS_COLLECTION: -+ return kTabsCollectionBookmarksFolderName; -+ - } - NOTREACHED(); - } diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc --- a/components/sync_bookmarks/bookmark_specifics_conversions.cc +++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index db735818..abcc5bfc 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -23,11 +23,11 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va + - + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -3537,6 +3537,8 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -3779,6 +3779,8 @@ public class ChromeTabbedActivity extends ChromeActivity { NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER); } RecordUserAction.record("MobileMenuDownloadManager"); @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2577,6 +2577,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2602,6 +2602,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity return doOpenWebApk(currentTab); } @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -985,6 +985,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -957,6 +957,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties return false; } @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -367,6 +367,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -370,6 +370,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat modelList.add(buildAddToHomescreenListItem(currentTab, false)); } @@ -101,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -328,6 +328,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -334,6 +334,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm modelList.add(buildAddToHomescreenListItem(currentTab, shouldShowIconBeforeItem())); } diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index d3e64200..1b60bde0 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -15,12 +15,12 @@ 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 -@@ -477,7 +477,12 @@ class TabGridViewBinder { +@@ -480,7 +480,12 @@ class TabGridViewBinder { if (result != null) { TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else { - thumbnail.setImageDrawable(null); -+ TabListFaviconProvider.TabFavicon tabFavicon = model.get(TabProperties.FAVICON); ++ TabFavicon tabFavicon = model.get(TabProperties.FAVICON); + if (tabFavicon != null) { + thumbnail.setScaleType(ImageView.ScaleType.CENTER); + thumbnail.setImageDrawable( @@ -32,7 +32,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser @@ -518,6 +523,7 @@ class TabGridViewBinder { */ private static void setFavicon( - ImageView faviconView, PropertyModel model, TabListFaviconProvider.TabFavicon favicon) { + ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) { + model.set(TabProperties.FAVICON, favicon); if (favicon == null) { faviconView.setImageDrawable(null); @@ -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 -@@ -90,6 +90,9 @@ public class TabProperties { +@@ -127,6 +127,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<>(); -@@ -180,6 +183,7 @@ public class TabProperties { +@@ -220,6 +223,7 @@ public class TabProperties { CARD_TYPE, CONTENT_DESCRIPTION_TEXT_RESOLVER, ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER, @@ -58,7 +58,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser QUICK_DELETE_ANIMATION_STATUS, TAB_GROUP_COLOR_VIEW_PROVIDER, TAB_GROUP_CARD_COLOR, -@@ -218,6 +222,7 @@ public class TabProperties { +@@ -259,6 +263,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 -@@ -145,6 +145,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -147,6 +147,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 +@@ -641,7 +642,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -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 -@@ -6315,6 +6315,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6194,6 +6194,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 a91ef703..77221faa 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -43,7 +43,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml --- a/chrome/android/java/res/layout/custom_tabs_control_container.xml +++ b/chrome/android/java/res/layout/custom_tabs_control_container.xml -@@ -32,7 +32,7 @@ found in the LICENSE file. +@@ -31,7 +31,7 @@ found in the LICENSE file. android:id="@+id/find_toolbar_stub" android:inflatedId="@+id/find_toolbar" android:visibility="gone" @@ -81,7 +81,7 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -120,9 +120,13 @@ found in the LICENSE file. +@@ -119,9 +119,13 @@ found in the LICENSE file. 16dp @@ -99,15 +99,15 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java -@@ -56,6 +56,7 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats; - import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder; - import org.chromium.chrome.browser.night_mode.NightModeStateProvider; - import org.chromium.chrome.browser.night_mode.NightModeUtils; -+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; + import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerCreator; + import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeFieldTrialImpl; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; ++import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; + import org.chromium.chrome.browser.ui.edge_to_edge.SimpleEdgeToEdgeController; import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeManager; import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider; -@@ -132,6 +133,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity +@@ -145,6 +146,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java -@@ -66,6 +66,7 @@ import org.chromium.content_public.browser.WebContents; +@@ -69,6 +69,7 @@ import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContentsObserver; import org.chromium.net.NetId; import org.chromium.ui.LayoutInflaterUtils; @@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.j import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.display.DisplayUtil; import org.chromium.url.GURL; -@@ -481,7 +482,9 @@ public class WarmupManager { +@@ -491,7 +492,9 @@ public class WarmupManager { ControlContainer controlContainer = mainView.findViewById(R.id.control_container); if (toolbarId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -783,7 +783,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -791,7 +791,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Inflate the correct toolbar layout for the device. int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -123,6 +123,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; +@@ -127,6 +127,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService; import org.chromium.components.tab_group_sync.TriggerSource; import org.chromium.components.tab_groups.TabGroupColorId; import org.chromium.ui.accessibility.AccessibilityState; @@ -192,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.util.ColorUtils; -@@ -4545,8 +4546,13 @@ public class StripLayoutHelper +@@ -4955,8 +4956,13 @@ public class StripLayoutHelper mCloseButtonMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the close button menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -211,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -96,6 +96,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa +@@ -105,6 +105,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.content_public.browser.LoadUrlParams; @@ -219,7 +219,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; -@@ -477,7 +478,10 @@ public class StripLayoutHelperManager +@@ -495,7 +496,10 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled( /* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext)); @@ -248,7 +248,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen + // This will hide the tab strips if necessary. TabStripSceneLayerJni.get() - .beginBuildingFrame( + .beginBuildingFrame(mNativePtr, visible, resourceManager, layerTitleCache); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java @@ -271,7 +271,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -738,7 +738,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -747,7 +747,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public int getControlContainerHeightResource() { @@ -285,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -105,6 +105,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; +@@ -108,6 +108,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.pdf.PdfPage; @@ -294,7 +294,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; -@@ -1675,7 +1677,9 @@ public class RootUiCoordinator +@@ -1715,7 +1717,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -319,7 +319,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -313,6 +313,7 @@ public final class ChromePreferenceKeys { +@@ -317,6 +317,7 @@ public final class ChromePreferenceKeys { /** Whether the app-specific history info text was already seen by users. */ public static final String HISTORY_APP_SPECIFIC_INFO_SEEN = "Chrome.History.AppSpecificInfoSeen"; @@ -389,7 +389,7 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -860,7 +860,7 @@ public class LocationBarCoordinator +@@ -833,7 +833,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -401,7 +401,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1666,6 +1666,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1531,6 +1531,13 @@ Your Google account may have other forms of browsing history like searches and a Privacy guide explanation closed @@ -427,7 +427,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container - +- android:layout_marginTop="@dimen/control_container_height" /> ++ android:layout_marginTop="@dimen/control_container_height_cromite" /> -@@ -36,7 +36,7 @@ found in the LICENSE file. + = SCREEN_BUCKET_TABLET; } -@@ -153,6 +163,7 @@ public class DeviceFormFactor { +@@ -142,6 +152,7 @@ public class DeviceFormFactor { * @return The screen width bucket the device is in (see constants at the top of this class). */ private static int detectScreenWidthBucket(Context context) { @@ -722,7 +719,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -160,6 +171,7 @@ public class DeviceFormFactor { +@@ -149,6 +160,7 @@ public class DeviceFormFactor { ThreadUtils.assertOnUiThread(); Context context = windowAndroid.getContext().get(); if (context == null) return 0; @@ -730,7 +727,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return context.getResources().getInteger(R.integer.min_screen_width_bucket); } -@@ -169,6 +181,7 @@ public class DeviceFormFactor { +@@ -158,6 +170,7 @@ public class DeviceFormFactor { */ @UiThread public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) { @@ -738,7 +735,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context)); } -@@ -177,6 +190,7 @@ public class DeviceFormFactor { +@@ -166,6 +179,7 @@ public class DeviceFormFactor { * layout. */ public static int getMinimumTabletWidthPx(DisplayAndroid display) { diff --git a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch index 55ab9ce3..9274a221 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; -@@ -1917,8 +1918,10 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2101,8 +2102,10 @@ public class ChromeTabbedActivity extends ChromeActivity { boolean hadCipherData = CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()); @@ -106,9 +106,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -5798,6 +5798,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d - - IMAGE +@@ -2901,6 +2901,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d + + All tabs + + Close all open tabs on exit @@ -116,7 +116,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + + Don't persist tabs between browsing sessions. Caution: parameters in urls allow linking between different sessions. + - - LINK + + Loading… -- diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 728c0cc6..142e4f0d 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 -@@ -115,6 +115,9 @@ import java.util.Objects; +@@ -120,6 +120,9 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -34,7 +34,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * A mediator for the TabGridDialog component, responsible for communicating with the components' * coordinator as well as managing the business logic for dialog show/hide. -@@ -1008,9 +1011,15 @@ public class TabGridDialogMediator +@@ -1035,9 +1038,15 @@ public class TabGridDialogMediator return; } @@ -45,7 +45,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + url = gurl != null ? gurl.getSpec() : url; + } TabGroupUtils.openUrlInGroup( - mCurrentTabGroupModelFilterSupplier.get(), + assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()), - UrlConstants.NTP_URL, + url, currentTab.getId(), @@ -54,7 +54,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java -@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory; +@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory; import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesConfig; import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator; import org.chromium.chrome.browser.layouts.LayoutStateProvider; @@ -62,7 +62,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.profiles.Profile; -@@ -415,10 +416,15 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -420,10 +421,15 @@ public class TabGroupUiMediator implements BackPressHandler { assert relatedTabs.size() > 0; Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); @@ -97,7 +97,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java -@@ -72,6 +72,9 @@ import org.chromium.ui.text.EmptyTextWatcher; +@@ -75,6 +75,9 @@ import org.chromium.ui.text.EmptyTextWatcher; import org.chromium.ui.widget.AnchoredPopupWindow.HorizontalOrientation; import org.chromium.ui.widget.RectProvider; @@ -107,10 +107,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over /** * A coordinator for the context menu on the tab strip by long-pressing on the group titles. It is * responsible for creating a list of menu items, setting up the menu and displaying the menu. -@@ -211,9 +214,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina +@@ -215,9 +218,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina /* didCloseCallback= */ null); RecordUserAction.record("MobileToolbarTabGroupMenu.DeleteGroup"); - } else if (menuId == org.chromium.chrome.R.id.open_new_tab_in_group) { + } else if (menuId == R.id.open_new_tab_in_group) { + String url = UrlConstants.NTP_URL; + if (UrlConstants.NTP_URL.equals(url) + && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { @@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -243,6 +243,22 @@ public class HomepageManager +@@ -258,6 +258,22 @@ public class HomepageManager notifyHomepageUpdated(); } @@ -153,15 +153,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -25,6 +25,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; +@@ -26,6 +26,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.url_formatter.UrlFormatter; import org.chromium.url.GURL; +import org.chromium.components.embedder_support.util.UrlConstants; /** Fragment that allows the user to configure homepage related preferences. */ - public class HomepageSettings extends ChromeBaseSettingsFragment { -@@ -33,6 +34,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { + @NullMarked +@@ -35,6 +36,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { @VisibleForTesting public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group"; @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin private HomepageManager mHomepageManager; private RadioButtonGroupHomepagePreference mRadioButtons; private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); -@@ -70,6 +73,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { +@@ -78,6 +81,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment { }); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); @@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java --- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java -@@ -113,7 +113,6 @@ public class LaunchMetrics { +@@ -117,7 +117,6 @@ public class LaunchMetrics { public static void recordHomePageLaunchMetrics( boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) { if (homepageGurl.isEmpty()) { @@ -200,17 +200,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFact - import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; +@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; +import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -552,6 +553,13 @@ public class ChromeTabCreator extends TabCreator +@@ -565,6 +566,13 @@ public class ChromeTabCreator extends TabCreator */ - public Tab launchUrl( + public @Nullable Tab launchUrl( String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) { + if (!mIncognito && url.equals(UrlConstants.NTP_URL)) { + if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { @@ -225,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -326,6 +326,7 @@ public final class ChromePreferenceKeys { +@@ -330,6 +330,7 @@ public final class ChromePreferenceKeys { public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; @@ -247,7 +247,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1492,6 +1492,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1357,6 +1357,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -260,7 +260,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -107,6 +107,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -111,6 +111,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); @@ -272,7 +272,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1328,6 +1328,10 @@ inline constexpr char kPinSplitTabButton[] = "browser.pin_split_tab_button"; +@@ -1327,6 +1327,10 @@ inline constexpr char kPinSplitTabButton[] = "browser.pin_split_tab_button"; // by enterprise policy. inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; diff --git a/build/patches/Add-search-engine.patch b/build/patches/Add-search-engine.patch index 6a0e5475..edd96ac0 100644 --- a/build/patches/Add-search-engine.patch +++ b/build/patches/Add-search-engine.patch @@ -63,7 +63,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ -@@ -164,6 +165,7 @@ source_set("search_engine_utils") { +@@ -162,6 +163,7 @@ source_set("search_engine_utils") { ":search_engine_type", "//components/google/core/common", "//third_party/search_engines_data:prepopulated_engines", @@ -71,7 +71,7 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL ] deps = [ "//url" ] -@@ -253,6 +255,7 @@ source_set("unit_tests") { +@@ -252,6 +254,7 @@ source_set("unit_tests") { "//testing/gmock", "//testing/gtest", "//third_party/search_engines_data:prepopulated_engines", @@ -141,7 +141,7 @@ new file mode 100644 diff --git a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc --- a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc +++ b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc -@@ -180,10 +180,7 @@ void RecordChoiceScreenDefaultSearchProviderType( +@@ -155,10 +155,7 @@ void RecordChoiceScreenDefaultSearchProviderType( } void RecordChoiceScreenSelectedIndex(int selected_engine_index) { @@ -212,14 +212,16 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon std::unique_ptr GetPrepopulatedEngine( PrefService& prefs, std::vector -@@ -159,9 +172,13 @@ std::vector> GetLocalPrepopulatedEngines( +@@ -159,11 +172,15 @@ std::vector> GetLocalPrepopulatedEngines( return std::vector>(); } - return base::ToVector( + std::vector> t_urls = + base::ToVector( - regional_capabilities::GetPrepopulatedEngines(country_id, prefs), + regional_capabilities::GetPrepopulatedEngines( + country_id, prefs, + regional_capabilities::SearchEngineListType::kTopFive), &PrepopulatedEngineToTemplateURLData); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen)); + t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light)); diff --git a/build/patches/Add-setting-to-clear-data-on-exit.patch b/build/patches/Add-setting-to-clear-data-on-exit.patch index 404c7889..8a82d908 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 -@@ -259,6 +259,7 @@ chrome_java_sources = [ +@@ -262,6 +262,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", @@ -74,7 +74,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -199,6 +199,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; +@@ -203,6 +203,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.quick_delete.QuickDeleteController; import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl; import org.chromium.chrome.browser.quick_delete.QuickDeleteMetricsDelegate; @@ -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; -@@ -1922,7 +1923,11 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2106,7 +2107,11 @@ public class ChromeTabbedActivity extends ChromeActivity { Intent intent = getIntent(); boolean hadCipherData = @@ -334,7 +334,7 @@ new file mode 100644 diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp -@@ -2005,6 +2005,16 @@ +@@ -2054,6 +2054,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 -@@ -108,6 +108,7 @@ +@@ -107,6 +107,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 -@@ -362,6 +362,7 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -350,6 +350,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()); -@@ -469,6 +470,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -457,6 +458,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(); -@@ -577,6 +581,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -565,6 +569,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() -@@ -605,9 +614,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -593,9 +602,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_); -@@ -1351,6 +1364,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( +@@ -1320,6 +1333,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData( if (should_clear_zero_suggest_and_session_token && template_url_service) template_url_service->ClearSessionToken(); @@ -515,7 +515,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate. diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -548,6 +548,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -550,6 +550,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] = settings_api::PrefType::kNumber; @@ -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 -@@ -1587,6 +1587,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1452,6 +1452,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 -@@ -1968,6 +1968,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2021,6 +2021,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"clearedData", IDS_SETTINGS_CLEARED_DATA}, {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, @@ -729,7 +729,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide diff --git a/components/browsing_data/content/browsing_data_helper.cc b/components/browsing_data/content/browsing_data_helper.cc --- a/components/browsing_data/content/browsing_data_helper.cc +++ b/components/browsing_data/content/browsing_data_helper.cc -@@ -38,8 +38,13 @@ bool WebsiteSettingsFilterAdapter( +@@ -42,8 +42,13 @@ bool WebsiteSettingsFilterAdapter( // this filter is used for is DURABLE_STORAGE, which also only uses // origin-scoped patterns. Such patterns can be directly translated to a GURL. GURL url(primary_pattern.ToString()); @@ -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 -@@ -915,6 +915,7 @@ void TemplateURLService::RemoveAutoGeneratedForUrlsBetween( +@@ -925,6 +925,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 -@@ -1530,6 +1530,7 @@ void StoragePartitionImpl::Initialize( +@@ -1529,6 +1529,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 ec03d3e3..f819090d 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 @@ -28,9 +28,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../renderer/core/html/html_anchor_element.h | 7 +++- .../renderer/core/html/html_image_element.cc | 17 +++++++++ .../renderer/core/html/html_image_element.h | 2 ++ - .../core/page/context_menu_controller.cc | 33 ++++++++++++----- + .../core/page/context_menu_controller.cc | 23 +++++++++--- .../core/page/context_menu_controller.h | 5 +-- - 22 files changed, 170 insertions(+), 20 deletions(-) + 22 files changed, 164 insertions(+), 16 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-setting-to-invert-tap-and-long-tap.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/Add-setting-to-invert-tap-and-long-tap.inc @@ -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 -@@ -392,6 +392,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -442,6 +442,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())) { -@@ -856,6 +859,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -1026,6 +1029,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { getProfile(), false); }); @@ -150,7 +150,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -365,6 +365,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -369,6 +369,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { mTab.loadUrl(loadUrlParams); } @@ -168,18 +168,18 @@ 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 -@@ -400,6 +400,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -419,6 +419,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupParityBottomSheetAndroid, - &kTabletTabStripAnimation, - &kTabFreezeOnUndoableClosureKillSwitch, + &kTabModelInitFixes, + &kTabStorageSqlitePrototype, + &blink::features::kShowAlwaysContextMenuOnLinks, - &kTabStateFlatBuffer, - &kTabStripContextMenuAndroid, + &kTabStripAutoSelectOnCloseChange, &kTabStripDensityChangeAndroid, + &kTabStripGroupDragDropAndroid, 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 -@@ -478,6 +478,8 @@ public abstract class ChromeFeatureList { +@@ -494,6 +494,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -188,7 +188,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = "NewTabPageCustomizationToolbarButton"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -945,6 +947,8 @@ public abstract class ChromeFeatureList { +@@ -988,6 +990,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -197,7 +197,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPostGetMyMemoryStateToBackground = newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true); -@@ -1175,6 +1179,7 @@ public abstract class ChromeFeatureList { +@@ -1228,6 +1232,7 @@ public abstract class ChromeFeatureList { sTopControlsRefactor, sTouchToSearchCallout, sTraceBinderIpc, @@ -208,7 +208,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1731,6 +1731,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1596,6 +1596,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 -@@ -3381,6 +3387,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3237,6 +3243,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Open in new Chrome tab @@ -386,8 +386,8 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third Frame* target_frame = frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame; -@@ -634,7 +655,7 @@ Element* HTMLAnchorElementBase::InterestTargetElement() const { - html_names::kInteresttargetAttr); +@@ -634,7 +655,7 @@ Element* HTMLAnchorElementBase::InterestForElement() const { + html_names::kInterestforAttr); } -void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { @@ -428,7 +428,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_ --- a/third_party/blink/renderer/core/html/html_anchor_element.h +++ b/third_party/blink/renderer/core/html/html_anchor_element.h @@ -112,6 +112,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, - Element* InterestTargetElement() const override; + Element* InterestForElement() const override; void Trace(Visitor*) const override; + void HandleClick(MouseEvent&, bool do_not_show_context_menu = false); @@ -492,7 +492,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_party/blink/renderer/core/html/html_image_element.h --- a/third_party/blink/renderer/core/html/html_image_element.h +++ b/third_party/blink/renderer/core/html/html_image_element.h -@@ -217,6 +217,8 @@ class CORE_EXPORT HTMLImageElement +@@ -215,6 +215,8 @@ class CORE_EXPORT HTMLImageElement void DidAddUserAgentShadowRoot(ShadowRoot&) override; void AdjustStyle(ComputedStyleBuilder&) override; @@ -551,25 +551,15 @@ 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; -@@ -830,11 +843,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -825,7 +838,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); -- const bool from_touch = source_type == kMenuSourceTouch || -- source_type == kMenuSourceLongPress || -- source_type == kMenuSourceLongTap; - if (from_touch && !ShouldShowContextMenuFromTouch(data)) -- return false; -+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) { -+ const bool from_touch = source_type == kMenuSourceTouch || -+ source_type == kMenuSourceLongPress || -+ source_type == kMenuSourceLongTap; -+ if (from_touch && !ShouldShowContextMenuFromTouch(data)) -+ return false; -+ } ++ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks) && from_touch && !ShouldShowContextMenuFromTouch(data)) + return false; WebLocalFrameImpl* selected_web_frame = - WebLocalFrameImpl::FromFrame(selected_frame); diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/third_party/blink/renderer/core/page/context_menu_controller.h --- a/third_party/blink/renderer/core/page/context_menu_controller.h +++ b/third_party/blink/renderer/core/page/context_menu_controller.h diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index ccfccada..6e658917 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -166,6 +166,7 @@ +@@ -165,6 +165,7 @@ #include "components/sensitive_content/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" diff --git a/build/patches/Add-support-for-writing-URIs.patch b/build/patches/Add-support-for-writing-URIs.patch index e1041e0d..821d598b 100644 --- a/build/patches/Add-support-for-writing-URIs.patch +++ b/build/patches/Add-support-for-writing-URIs.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc --- a/base/android/content_uri_utils.cc +++ b/base/android/content_uri_utils.cc -@@ -134,6 +134,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, +@@ -136,6 +136,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env, Time::FromMillisecondsSinceUnixEpoch(last_modified)); } diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 1779c065..86a1d176 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -166,7 +166,7 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::WEBGL) @@ -206,7 +206,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -115,6 +115,8 @@ enum ReasonForCallingCanExecuteScripts { +@@ -114,6 +114,8 @@ enum ReasonForCallingCanExecuteScripts { enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag }; @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -343,6 +343,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( +@@ -345,6 +345,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( } } @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() { base::AutoLock locker(WebGLContextLimitLock()); DCHECK(webgl_context_limits_initialized_); -@@ -612,25 +619,6 @@ static String ExtractWebGLContextCreationError( +@@ -615,25 +622,6 @@ static String ExtractWebGLContextCreationError( const Platform::GraphicsInfo& info) { StringBuilder builder; builder.Append("Could not create a WebGL context"); @@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(), builder); builder.Append('.'); -@@ -690,6 +678,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -693,6 +681,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( const CanvasContextCreationAttributesCore& attributes, Platform::ContextType context_type, Platform::GraphicsInfo* graphics_info) { @@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h -@@ -1946,6 +1946,8 @@ class MODULES_EXPORT WebGLRenderingContextBase +@@ -1951,6 +1951,8 @@ class MODULES_EXPORT WebGLRenderingContextBase DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index 07e95cad..b6e5800f 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -12,9 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bromite_content_settings/webrtc.inc | 22 +++++ .../bromite_content_settings/WEBRTC.inc | 1 + .../peer_connection_dependency_factory.cc | 6 ++ - .../peerconnection/rtc_rtp_receiver.cc | 10 ++ - .../modules/peerconnection/rtc_rtp_sender.cc | 10 ++ - 7 files changed, 170 insertions(+) + .../peerconnection/rtc_rtp_receiver.cc | 11 +++ + .../modules/peerconnection/rtc_rtp_sender.cc | 11 +++ + 7 files changed, 172 insertions(+) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java create mode 100644 components/browser_ui/strings/bromite_content_settings/webrtc.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc @@ -164,7 +164,7 @@ new file mode 100644 + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::WEBRTC) @@ -187,7 +187,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -41,6 +41,7 @@ +@@ -46,6 +46,7 @@ #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/task_type.h" @@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/public/web/web_document.h" -@@ -936,6 +937,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -1062,6 +1063,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // |request_multiple_routes|. Whether local IP addresses could be // collected depends on if mic/camera permission is granted for this // origin. @@ -210,16 +210,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc -@@ -16,6 +16,8 @@ +@@ -16,6 +16,9 @@ #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/web/web_local_frame.h" ++#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" -@@ -288,6 +290,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, +@@ -288,6 +291,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; @@ -237,16 +238,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver. diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc -@@ -21,6 +21,8 @@ +@@ -21,6 +21,9 @@ #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" #include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h" #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/web/web_local_frame.h" ++#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" -@@ -1035,6 +1037,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1035,6 +1038,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; diff --git a/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch b/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch index 2a9cebe1..ab1fc973 100644 --- a/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch +++ b/build/patches/Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch @@ -26,15 +26,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/PictureIn diff --git a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc --- a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc +++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc -@@ -27,6 +27,7 @@ - #include "third_party/blink/renderer/core/html/media/html_media_element.h" - #include "third_party/blink/renderer/core/html/media/html_video_element.h" +@@ -31,6 +31,7 @@ #include "third_party/blink/renderer/core/layout/layout_video.h" + #include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture.h" + #include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_event.h" +#include "third_party/blink/renderer/core/loader/document_loader.h" #include "third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_event.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" -@@ -392,6 +393,12 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow( +@@ -386,6 +387,12 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow( return; } diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index 103e3926..fb54dbe0 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 -@@ -1485,6 +1485,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1496,6 +1496,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { } } @@ -51,7 +51,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { std::vector urls; frame_host->ForEachRenderFrameHostImplWithAction( -@@ -1498,6 +1499,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1509,6 +1510,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -126,7 +126,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -15954,12 +15954,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -16153,12 +16153,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( } } } @@ -308,7 +308,7 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -493,14 +493,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -494,14 +494,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const GURL& url, const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, @@ -340,7 +340,7 @@ diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/pu diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -1791,7 +1791,6 @@ mojom("mojom") { +@@ -1793,7 +1793,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -351,7 +351,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1234,6 +1234,7 @@ interface NetworkContext { +@@ -1240,6 +1240,7 @@ interface NetworkContext { // provided `network_anonymization_key`. // // Spec: https://w3c.github.io/reporting/#concept-reports @@ -359,7 +359,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueReport(string type, string group, url.mojom.Url url, -@@ -1241,6 +1242,7 @@ interface NetworkContext { +@@ -1247,6 +1248,7 @@ interface NetworkContext { NetworkAnonymizationKey network_anonymization_key, mojo_base.mojom.DictionaryValue body); @@ -367,7 +367,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueEnterpriseReport(string type, string group, url.mojom.Url url, -@@ -1251,6 +1253,7 @@ interface NetworkContext { +@@ -1257,6 +1259,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // `network_anonymization_key`. @@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" #include "base/feature_list.h" -@@ -1323,6 +1324,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1344,6 +1345,7 @@ void ContentSecurityPolicy::ReportViolation( ShouldBypassContentSecurityPolicy(KURL(violation_data->sourceFile()))) { return; } @@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c PostViolationReport(violation_data, context_frame, report_endpoints, use_reporting_api); -@@ -1330,6 +1332,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1351,6 +1353,7 @@ void ContentSecurityPolicy::ReportViolation( // `context_frame` (i.e. we're not processing 'frame-ancestors'). if (delegate_ && !context_frame) delegate_->DispatchViolationEvent(*violation_data, element); @@ -413,7 +413,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/source_location.mojom-blink.h" -@@ -2837,9 +2838,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { +@@ -2836,9 +2837,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() { return CHECK_DEREF(GetDocument()).GetResourceCoordinator(); } @@ -436,7 +436,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "net/storage_access_api/status.h" -@@ -680,7 +681,9 @@ class CORE_EXPORT LocalFrame final +@@ -671,7 +672,9 @@ class CORE_EXPORT LocalFrame final return client_hints_preferences_; } diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 26c6f571..84dd6e1a 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -817,7 +817,6 @@ if (_is_default_toolchain) { +@@ -819,7 +819,6 @@ if (_is_default_toolchain) { "//components/offline_pages/core:offline_page_model_enums_java", "//components/sharing_message:sharing_dialog_type_generated_enum", "//components/sharing_message:sharing_send_message_result_generated_enum", @@ -65,15 +65,15 @@ diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc --- a/chrome/browser/prefs/chrome_pref_service_factory.cc +++ b/chrome/browser/prefs/chrome_pref_service_factory.cc -@@ -316,7 +316,7 @@ void PrepareFactory( +@@ -319,7 +319,7 @@ void PrepareFactory( policy::BrowserPolicyConnector* policy_connector) { factory->SetManagedPolicies(policy_service, policy_connector); factory->SetRecommendedPolicies(policy_service, policy_connector); - if (supervised_user_settings) { + if (((false)) && supervised_user_settings) { + // supervised_user_prefs handles the case when content_filters_service is + // nullptr. It's simply not subscribing to empty service's notifications. scoped_refptr supervised_user_prefs = - base::MakeRefCounted(supervised_user_settings); - DCHECK(async || supervised_user_prefs->IsInitializationComplete()); diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc @@ -89,7 +89,7 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -682,10 +682,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -684,10 +684,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -100,7 +100,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1614,6 +1610,7 @@ GURL ProfileImpl::GetHomePage() { +@@ -1624,6 +1620,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -160,7 +160,7 @@ diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/w diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc -@@ -595,10 +595,6 @@ bool ManagementUIHandler::managed() const { +@@ -617,10 +617,6 @@ bool ManagementUIHandler::managed() const { void ManagementUIHandler::RegisterPrefChange( PrefChangeRegistrar& pref_registrar) { @@ -174,7 +174,7 @@ diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrom diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc --- a/components/supervised_user/core/browser/supervised_user_pref_store.cc +++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc -@@ -142,6 +142,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() = default; +@@ -175,6 +175,7 @@ void SupervisedUserPrefStore::OnNewContentFiltersStateAvailable( void SupervisedUserPrefStore::OnNewSettingsAvailable( const base::Value::Dict& settings) { @@ -203,12 +203,12 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences - return pref_service.GetString(prefs::kSupervisedUserId) == kChildAccountSUID; + return false; } - bool IsSubjectToUserControls(const PrefService& pref_service) { - return pref_service.GetString(prefs::kSupervisedUserId) == + + bool IsGoogleSafeSearchEnforced(const PrefService& pref_service) { diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc --- a/components/supervised_user/core/browser/supervised_user_service.cc +++ b/components/supervised_user/core/browser/supervised_user_service.cc -@@ -240,6 +240,7 @@ SupervisedUserService::SupervisedUserService( +@@ -249,6 +249,7 @@ SupervisedUserService::SupervisedUserService( } void SupervisedUserService::SetSettingsServiceActive(bool active) { @@ -219,7 +219,7 @@ diff --git a/components/supervised_user/core/browser/supervised_user_service.cc diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc --- a/components/supervised_user/core/common/features.cc +++ b/components/supervised_user/core/common/features.cc -@@ -35,7 +35,6 @@ BASE_FEATURE(kAllowSubframeLocalWebApprovals, +@@ -33,7 +33,6 @@ BASE_FEATURE(kAllowSubframeLocalWebApprovals, #else base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -227,8 +227,8 @@ diff --git a/components/supervised_user/core/common/features.cc b/components/sup #if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ BUILDFLAG(IS_WIN) const int kLocalWebApprovalBottomSheetLoadTimeoutDefaultValueMs = 5000; -@@ -138,4 +137,5 @@ BASE_FEATURE(kSupervisedUserInterstitialWithoutApprovals, - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -170,4 +169,5 @@ bool ClassifyUrlWithoutCredentialsForLocalSupervision() { + #endif +SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals); diff --git a/build/patches/Allow-playing-audio-in-background.patch b/build/patches/Allow-playing-audio-in-background.patch index a17df18e..0b428b3e 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 -@@ -1335,6 +1335,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1330,6 +1330,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -24,7 +24,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( std::optional enabled_track_id) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3703,7 +3709,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3683,7 +3689,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { : HasAudio(); // Audio only stream is allowed to play when in background. @@ -39,7 +39,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h --- a/third_party/blink/renderer/platform/media/web_media_player_impl.h +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h -@@ -216,6 +216,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl +@@ -211,6 +211,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl bool HasVideo() const override; bool HasAudio() const override; diff --git a/build/patches/Always-allow-inspect-fallback.patch b/build/patches/Always-allow-inspect-fallback.patch index f0039e92..5f70762b 100644 --- a/build/patches/Always-allow-inspect-fallback.patch +++ b/build/patches/Always-allow-inspect-fallback.patch @@ -20,7 +20,7 @@ diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resour if (!HOST_CHROME_VERSION) { return false; } -@@ -565,7 +566,7 @@ function formatValue(data, property) { +@@ -590,7 +591,7 @@ function formatValue(data, property) { function addFavicon(row, data) { const favicon = document.createElement('img'); if (data['faviconUrl']) { diff --git a/build/patches/Always-open-browser-controls-in-new-tab.patch b/build/patches/Always-open-browser-controls-in-new-tab.patch index 34a5e35d..5ce766ce 100644 --- a/build/patches/Always-open-browser-controls-in-new-tab.patch +++ b/build/patches/Always-open-browser-controls-in-new-tab.patch @@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpenerImpl; -@@ -42,6 +43,7 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -43,6 +44,7 @@ import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory; import org.chromium.chrome.browser.printing.TabPrinter; import org.chromium.chrome.browser.profiles.Profile; @@ -26,18 +26,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -@@ -299,6 +301,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { - Referrer referrer, +@@ -303,6 +305,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { + @Nullable Referrer referrer, boolean navigateToTab, @Nullable AdditionalNavigationParams additionalNavigationParams) { + TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true); RecordUserAction.record("MobileNewTabOpened"); RecordUserAction.record("LinkOpenedInNewTab"); LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); -@@ -319,6 +322,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -323,6 +326,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { * @param url The URL to open. */ - public void onOpenInNewTabInGroup(GURL url, Referrer referrer) { + public void onOpenInNewTabInGroup(GURL url, @Nullable Referrer referrer) { + TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true); RecordUserAction.record("MobileNewTabOpened"); RecordUserAction.record("LinkOpenedInNewTab"); 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 a17dd75c..c4b3e395 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -19,12 +19,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -157,10 +157,6 @@ public class HomepageManager +@@ -160,10 +160,6 @@ public class HomepageManager * tab page if the homepage button is force enabled via flag. */ public GURL getDefaultHomepageGurl() { - if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) { -- return PartnerBrowserCustomizations.getInstance().getHomePageUrl(); +- return assumeNonNull(PartnerBrowserCustomizations.getInstance().getHomePageUrl()); - } - String homepagePartnerDefaultGurlSerialized = @@ -67,7 +67,7 @@ diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/b diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java --- a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java +++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java -@@ -85,6 +85,7 @@ public class TemplateUrl { +@@ -88,6 +88,7 @@ public class TemplateUrl { * prepopulated_engines.json. */ public String getNewTabURL() { @@ -78,7 +78,7 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/ diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -420,6 +420,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -400,6 +400,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( jimage_translate_source_language_param_key, const base::android::JavaParamRef& jimage_translate_target_language_param_key) { diff --git a/build/patches/Android-Import-Passwords.patch b/build/patches/Android-Import-Passwords.patch deleted file mode 100644 index 2ba83d55..00000000 --- a/build/patches/Android-Import-Passwords.patch +++ /dev/null @@ -1,353 +0,0 @@ -From: uazo -Date: Mon, 26 May 2025 12:17:48 +0000 -Subject: Android Import Passwords - -Adds the possibility of importing a csv file containing the list of passwords, -with the same functionality available on desktops. - -License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ---- - ...e_password_preferences_action_bar_menu.xml | 6 ++ - .../settings/PasswordSettings.java | 34 +++++++++ - .../settings/PasswordManagerHandler.java | 3 + - .../settings/PasswordUiView.java | 8 +++ - .../android/password_ui_view_android.cc | 71 +++++++++++++++++++ - .../android/password_ui_view_android.h | 20 +++++- - .../Import-Password-Android.grdp | 9 +++ - .../core/browser/import/password_importer.cc | 11 +++ - 8 files changed, 161 insertions(+), 1 deletion(-) - create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Import-Password-Android.grdp - -diff --git a/chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml b/chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml ---- a/chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml -+++ b/chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml -@@ -22,6 +22,12 @@ found in the LICENSE file. - android:visibility="gone" - app:showAsAction="ifRoom"/> - -+ -+ - ListenerDestroyed(); - } - - void PasswordUiViewAndroid::Destroy(JNIEnv*, const JavaRef&) { -@@ -314,6 +321,70 @@ jboolean PasswordUiViewAndroid::IsWaitingForPasswordStore( - return saved_passwords_presenter_.IsWaitingForPasswordStore(); - } - -+void PasswordUiViewAndroid::ImportFinished( -+ const password_manager::ImportResults& results) { -+ std::string error; -+ if (results.status == password_manager::ImportResults::Status::SUCCESS) -+ error = "Success."; -+ else if (results.status == password_manager::ImportResults::Status::IO_ERROR) -+ error = "Failed to read provided file."; -+ else if (results.status == password_manager::ImportResults::Status::BAD_FORMAT) -+ error = "Header is missing, invalid or could not be read."; -+ else if (results.status == password_manager::ImportResults::Status::NUM_PASSWORDS_EXCEEDED) -+ error = "Too many passwords."; -+ else -+ error = "UNKNOWN ERROR."; -+ -+ std::stringstream message; -+ message << error << " Imported " << results.number_imported << " passwords."; -+ auto result = message.str(); -+ -+ select_file_dialog_->ShowToast(result); -+ -+ importer_.reset(); -+} -+ -+jboolean PasswordUiViewAndroid::StartImporting( -+ JNIEnv* env, -+ const base::android::JavaRef& obj, -+ const JavaParamRef& java_window) { -+ ui::WindowAndroid* window = -+ ui::WindowAndroid::FromJavaWindowAndroid(java_window); -+ CHECK(window); -+ -+ select_file_dialog_ = ui::SelectFileDialog::Create( -+ this, std::make_unique(nullptr)); -+ -+ ui::SelectFileDialog::FileTypeInfo file_type_info; -+ -+ const std::vector v_accept_types = { u"application/octet-stream" }; -+ select_file_dialog_->SetAcceptTypes(v_accept_types); -+ -+ select_file_dialog_->SelectFile( -+ ui::SelectFileDialog::SELECT_OPEN_FILE, -+ std::u16string(), -+ base::FilePath(), -+ &file_type_info, -+ 0, -+ base::FilePath::StringType(), -+ window); -+ -+ return true; -+} -+ -+void PasswordUiViewAndroid::FileSelectionCanceled() {} -+ -+void PasswordUiViewAndroid::FileSelected(const ui::SelectedFileInfo& file, int index) { -+ base::FilePath path = file.path(); -+ -+ importer_ = -+ std::make_unique(&saved_passwords_presenter_); -+ importer_->Import(path, -+ password_manager::PasswordForm::Store::kProfileStore, -+ base::BindOnce(&PasswordUiViewAndroid::ImportFinished, -+ base::Unretained(this))); -+} -+ - // static - static jlong JNI_PasswordUiView_Init(JNIEnv* env, - const JavaParamRef& obj, -diff --git a/chrome/browser/password_manager/android/password_ui_view_android.h b/chrome/browser/password_manager/android/password_ui_view_android.h ---- a/chrome/browser/password_manager/android/password_ui_view_android.h -+++ b/chrome/browser/password_manager/android/password_ui_view_android.h -@@ -21,6 +21,8 @@ - #include "chrome/browser/signin/identity_manager_factory.h" - #include "components/password_manager/core/browser/password_store/password_store_consumer.h" - #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h" -+#include "components/password_manager/core/browser/import/password_importer.h" -+#include "ui/shell_dialogs/select_file_dialog.h" - - class Profile; - -@@ -31,7 +33,8 @@ class CredentialProviderInterface; - // PasswordUIView for Android, contains jni hooks that allows Android UI to - // display passwords and route UI commands back to SavedPasswordsPresenter. - class PasswordUiViewAndroid -- : public password_manager::SavedPasswordsPresenter::Observer { -+ : public password_manager::SavedPasswordsPresenter::Observer, -+ public ui::SelectFileDialog::Listener { - public: - // Result of transforming a vector of PasswordForms into their CSV - // description and writing that to disk. -@@ -95,6 +98,18 @@ class PasswordUiViewAndroid - const base::android::JavaParamRef& obj); - jboolean IsWaitingForPasswordStore(JNIEnv* env, - const base::android::JavaRef&); -+ -+ void FileSelected(const ui::SelectedFileInfo& file, -+ int index) override; -+ void FileSelectionCanceled() override; -+ -+ void ImportFinished( -+ const password_manager::ImportResults& results); -+ -+ jboolean StartImporting(JNIEnv* env, -+ const base::android::JavaRef& obj, -+ const base::android::JavaParamRef& java_window); -+ - // Destroy the native implementation. - void Destroy(JNIEnv*, const base::android::JavaRef&); - -@@ -162,6 +177,9 @@ class PasswordUiViewAndroid - std::vector passwords_; - std::vector blocked_sites_; - -+ scoped_refptr select_file_dialog_; -+ std::unique_ptr importer_; -+ - // If not null, passwords for exporting will be obtained from - // |*credential_provider_for_testing_|, otherwise from - // |saved_passwords_presenter_|. This must remain null in production code. -diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Import-Password-Android.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Import-Password-Android.grdp -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Import-Password-Android.grdp -@@ -0,0 +1,9 @@ -+ -+ -+ -+ Import passwords… -+ -+ -+ Import passwords stored with Chrome -+ -+ -diff --git a/components/password_manager/core/browser/import/password_importer.cc b/components/password_manager/core/browser/import/password_importer.cc ---- a/components/password_manager/core/browser/import/password_importer.cc -+++ b/components/password_manager/core/browser/import/password_importer.cc -@@ -76,6 +76,17 @@ const int32_t kMaxFileSizeBytes = 150 * 1024; - // optional string. The string will be present if the status is SUCCESS. - base::expected ReadFileToString( - const base::FilePath& path) { -+#if BUILDFLAG(IS_ANDROID) -+ if (path.IsContentUri()) { -+ base::File file(path, base::File::FLAG_OPEN | base::File::FLAG_READ); -+ auto fileLength = file.GetLength(); -+ std::vector buffer(fileLength); -+ file.ReadAtCurrentPos(base::as_writable_byte_span(buffer)); -+ -+ std::string file_contents(buffer.begin(), buffer.end()); -+ return std::move(file_contents); -+ } -+#endif - std::optional file_size = base::GetFileSize(path); - - if (file_size.has_value()) { --- diff --git a/build/patches/Android-Pixel-Perfect-Mode.patch b/build/patches/Android-Pixel-Perfect-Mode.patch index 8ad6d0cc..971013be 100644 --- a/build/patches/Android-Pixel-Perfect-Mode.patch +++ b/build/patches/Android-Pixel-Perfect-Mode.patch @@ -20,7 +20,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html cc/trees/layer_tree_host.h | 4 ++ cc/trees/layer_tree_host_impl.cc | 4 +- cc/trees/layer_tree_impl.cc | 30 ++++++++---- - cc/trees/layer_tree_impl.h | 6 +++ + cc/trees/layer_tree_impl.h | 7 ++- cc/trees/property_tree.cc | 4 +- .../java/res/xml/developer_preferences.xml | 4 ++ .../chrome/browser/WarmupManager.java | 2 +- @@ -107,7 +107,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/display/mojom/screen_info_mojom_traits.h | 4 ++ ui/display/screen_info.h | 1 + ui/events/blink/blink_event_util.cc | 2 +- - 97 files changed, 526 insertions(+), 137 deletions(-) + 97 files changed, 526 insertions(+), 138 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sPixelPerfect.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Pixel-perfect-mode.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Pixel-perfect-mode.inc @@ -117,7 +117,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/cc/input/input_handler.cc b/cc/input/input_handler.cc --- a/cc/input/input_handler.cc +++ b/cc/input/input_handler.cc -@@ -671,7 +671,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( +@@ -670,7 +670,7 @@ InputHandlerPointerResult InputHandler::MouseMoveAt( return result; } @@ -162,7 +162,7 @@ diff --git a/cc/layers/viewport.cc b/cc/layers/viewport.cc diff --git a/cc/mojo_embedder/viz_layer_context.cc b/cc/mojo_embedder/viz_layer_context.cc --- a/cc/mojo_embedder/viz_layer_context.cc +++ b/cc/mojo_embedder/viz_layer_context.cc -@@ -1238,7 +1238,7 @@ void VizLayerContext::SetVisible(bool visible) { +@@ -1242,7 +1242,7 @@ void VizLayerContext::SetVisible(bool visible) { service_->SetVisible(visible); } @@ -196,7 +196,7 @@ diff --git a/cc/trees/commit_state.h b/cc/trees/commit_state.h diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc -@@ -1348,7 +1348,7 @@ void LayerTreeHost::SetEventListenerProperties( +@@ -1347,7 +1347,7 @@ void LayerTreeHost::SetEventListenerProperties( SetNeedsCommit(); } @@ -205,7 +205,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc const gfx::Rect& device_viewport_rect, float device_scale_factor, const viz::LocalSurfaceId& local_surface_id_from_parent) { -@@ -1459,9 +1459,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { +@@ -1458,9 +1458,11 @@ void LayerTreeHost::SetOverscrollBehavior(const OverscrollBehavior& behavior) { void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, float min_page_scale_factor, @@ -217,7 +217,7 @@ diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc pending_commit_state()->max_page_scale_factor == max_page_scale_factor) return; DCHECK_GE(page_scale_factor, min_page_scale_factor); -@@ -1477,6 +1479,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, +@@ -1476,6 +1478,7 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, pending_commit_state()->page_scale_factor = page_scale_factor; pending_commit_state()->min_page_scale_factor = min_page_scale_factor; @@ -249,16 +249,16 @@ diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -2487,7 +2487,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { +@@ -2472,7 +2472,7 @@ viz::RegionCaptureBounds LayerTreeHostImpl::CollectRegionCaptureBounds() { return bounds; } -viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { +viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { // POI viz::CompositorFrameMetadata metadata; - metadata.frame_token = ++next_frame_token_; - metadata.device_scale_factor = active_tree_->painted_device_scale_factor() * -@@ -2646,7 +2646,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { + if (settings().trees_in_viz_in_viz_process) { + // In TreesInViz mode, this function is called in client process already, +@@ -2639,7 +2639,7 @@ viz::CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() { return metadata; } @@ -278,7 +278,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_(0), external_page_scale_factor_(1.f), device_scale_factor_(1.f), -@@ -449,7 +450,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( +@@ -451,7 +452,7 @@ void LayerTreeImpl::InvalidateRasterInducingScrolls( } } @@ -287,7 +287,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (!InnerViewportScrollNode()) return; -@@ -527,8 +528,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { +@@ -526,8 +527,13 @@ void LayerTreeImpl::UpdateViewportContainerSizes() { // Adjust the outer viewport container as well, since adjusting only the // inner may cause its bounds to exceed those of the outer, causing scroll // clamping. @@ -303,7 +303,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc property_trees->SetOuterViewportContainerBoundsDelta(scaled_bounds_delta); // outer_viewport_container_bounds_delta and -@@ -819,6 +825,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { +@@ -823,6 +829,7 @@ void LayerTreeImpl::PullLayerTreePropertiesFrom(CommitState& commit_state) { PushPageScaleFromMainThread(commit_state.page_scale_factor, commit_state.min_page_scale_factor, @@ -311,7 +311,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc commit_state.max_page_scale_factor); SetBrowserControlsParams(commit_state.browser_controls_params); -@@ -930,6 +937,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { +@@ -934,6 +941,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { // Active tree already shares the page_scale_factor object with pending // tree so only the limits need to be provided. target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), @@ -319,7 +319,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor()); target_tree->SetExternalPageScaleFactor(external_page_scale_factor_); -@@ -1311,19 +1319,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { +@@ -1315,19 +1323,21 @@ void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, @@ -343,7 +343,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (changed_page_scale) { DidUpdatePageScale(); -@@ -1332,12 +1342,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( +@@ -1336,12 +1346,13 @@ void LayerTreeImpl::SetPageScaleFactorAndLimitsForDisplayTree( void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -358,7 +358,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc if (page_scale_factor) { DCHECK(!IsActiveTree() || !host_impl_->pending_tree()); -@@ -1442,12 +1453,15 @@ void LayerTreeImpl::PushBrowserControls( +@@ -1446,12 +1457,15 @@ void LayerTreeImpl::PushBrowserControls( } bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, @@ -374,7 +374,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc max_page_scale_factor_ = max_page_scale_factor; return true; -@@ -2366,7 +2380,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { +@@ -2357,7 +2371,7 @@ ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { return scrollbars; } @@ -383,7 +383,7 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc const gfx::PointF& screen_space_point, const gfx::Transform& local_space_to_screen_space_transform, const gfx::Rect& local_space_rect, -@@ -2952,7 +2966,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( +@@ -2943,7 +2957,7 @@ static gfx::SelectionBound ComputeViewportSelectionBound( return viewport_bound; } @@ -395,17 +395,24 @@ diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h --- a/cc/trees/layer_tree_impl.h +++ b/cc/trees/layer_tree_impl.h -@@ -380,7 +380,9 @@ class CC_EXPORT LayerTreeImpl { +@@ -380,6 +380,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleOnActiveTree(float active_page_scale); void PushPageScaleFromMainThread(float page_scale_factor, float min_page_scale_factor, + float browser_control_scale_factor, float max_page_scale_factor); -+ float browser_control_scale_factor() const { return browser_control_scale_factor_; } + const LayerSelection& selection() const { return selection_; } float current_page_scale_factor() const { - return page_scale_factor()->Current(IsActiveTree()); +@@ -387,7 +388,7 @@ class CC_EXPORT LayerTreeImpl { } -@@ -845,6 +847,7 @@ class CC_EXPORT LayerTreeImpl { + float min_page_scale_factor() const { return min_page_scale_factor_; } + float max_page_scale_factor() const { return max_page_scale_factor_; } +- ++ float browser_control_scale_factor() const { return browser_control_scale_factor_; } + float page_scale_delta() const { return page_scale_factor()->Delta(); } + + SyncedScale* page_scale_factor(); +@@ -849,6 +850,7 @@ class CC_EXPORT LayerTreeImpl { void SetPageScaleFactorAndLimitsForDisplayTree(float page_scale_factor, float min_page_scale_factor, @@ -413,7 +420,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); LayerTreeHostImpl* host_impl() { return host_impl_; } -@@ -869,8 +872,10 @@ class CC_EXPORT LayerTreeImpl { +@@ -873,8 +875,10 @@ class CC_EXPORT LayerTreeImpl { float ClampPageScaleFactorToLimits(float page_scale_factor) const; void PushPageScaleFactorAndLimits(const float* page_scale_factor, float min_page_scale_factor, @@ -424,7 +431,7 @@ diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h float max_page_scale_factor); void DidUpdatePageScale(); void PushBrowserControls(const float* top_controls_shown_ratio, -@@ -909,6 +914,7 @@ class CC_EXPORT LayerTreeImpl { +@@ -913,6 +917,7 @@ class CC_EXPORT LayerTreeImpl { scoped_refptr page_scale_factor_; float min_page_scale_factor_; @@ -468,12 +475,12 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java -@@ -312,7 +312,7 @@ public class WarmupManager { - Rect bounds = TabUtils.estimateContentSize(context); - int width = bounds.right - bounds.left; +@@ -321,7 +321,7 @@ public class WarmupManager { int height = bounds.bottom - bounds.top; -- tab.getWebContents().setSize(width, height); -+ tab.getWebContents().setSize(width, height, 0); + webContents = tab.getWebContents(); + assumeNonNull(webContents); +- webContents.setSize(width, height); ++ webContents.setSize(width, height, 0); // Reparent the tab to detach it from the current activity. ReparentingTask.from(tab).detach(); @@ -490,7 +497,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.base.ActivityState; import org.chromium.base.ApplicationStatus; import org.chromium.base.BuildInfo; -@@ -509,7 +512,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -516,7 +519,25 @@ public abstract class ChromeActivity extends AsyncInitializationActivity // Ensure that mConfig is initialized before tablet mode changes. mConfig = getResources().getConfiguration(); @@ -520,7 +527,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java -@@ -925,7 +925,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -929,7 +929,7 @@ public class CompositorViewHolder extends FrameLayout int viewportInsets = controlsInsets + keyboardInset; if (isAttachedToWindow(view)) { @@ -529,7 +536,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp // Dispatch the geometrychange JavaScript event to the page. // TODO(bokan): This doesn't belong in updateWebContentsSize. Ideally the content/ layer -@@ -945,7 +945,7 @@ public class CompositorViewHolder extends FrameLayout +@@ -949,7 +949,7 @@ public class CompositorViewHolder extends FrameLayout MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); @@ -541,19 +548,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java -@@ -610,7 +610,7 @@ public class OverlayPanelContent { +@@ -617,7 +617,7 @@ public class OverlayPanelContent { OverlayPanelContentJni.get() .onPhysicalBackingSizeChanged( mNativeOverlayPanelContentPtr, webContents, mContentViewWidth, viewHeight); -- mWebContents.setSize(mContentViewWidth, viewHeight); -+ mWebContents.setSize(mContentViewWidth, viewHeight, (mSubtractBarHeight ? mBarHeightPx : 0)); +- assumeNonNull(mWebContents).setSize(mContentViewWidth, viewHeight); ++ assumeNonNull(mWebContents).setSize(mContentViewWidth, viewHeight, (mSubtractBarHeight ? mBarHeightPx : 0)); } /** Destroy the native component of this class. */ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -1864,7 +1864,7 @@ class TabImpl implements Tab { +@@ -1869,7 +1869,7 @@ class TabImpl implements Tab { // so that next onShow() call won't send a resize message with zero size // to the renderer process. This prevents the size fluttering that may confuse // Blink and break rendered result (see http://crbug.com/340987). @@ -562,7 +569,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (bounds != null) { assert mNativeTabAndroid != 0; -@@ -2237,7 +2237,7 @@ class TabImpl implements Tab { +@@ -2243,7 +2243,7 @@ class TabImpl implements Tab { Supplier compositorViewHolderSupplier = assumeNonNull(getActivity()).getCompositorViewHolderSupplier(); View compositorView = compositorViewHolderSupplier.get(); @@ -607,7 +614,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/android/bottombar/overlay_panel_content.cc b/chrome/browser/android/bottombar/overlay_panel_content.cc --- a/chrome/browser/android/bottombar/overlay_panel_content.cc +++ b/chrome/browser/android/bottombar/overlay_panel_content.cc -@@ -51,7 +51,7 @@ void OverlayPanelContent::OnPhysicalBackingSizeChanged( +@@ -53,7 +53,7 @@ void OverlayPanelContent::OnPhysicalBackingSizeChanged( jint height) { gfx::Size size(width, height); web_contents->GetNativeView()->OnPhysicalBackingSizeChanged(size); @@ -721,7 +728,7 @@ diff --git a/components/input/BUILD.gn b/components/input/BUILD.gn +++ b/components/input/BUILD.gn @@ -101,6 +101,7 @@ component("input") { "//ui/events:gesture_detection", - "//ui/events/blink:blink", + "//ui/events/blink", "//ui/events/gestures/blink", + "//tools/v8_context_snapshot:buildflags", ] @@ -730,7 +737,7 @@ diff --git a/components/input/BUILD.gn b/components/input/BUILD.gn diff --git a/components/input/android_input_helper.cc b/components/input/android_input_helper.cc --- a/components/input/android_input_helper.cc +++ b/components/input/android_input_helper.cc -@@ -132,7 +132,7 @@ void AndroidInputHelper::ProcessAckedTouchEvent( +@@ -144,7 +144,7 @@ void AndroidInputHelper::ProcessAckedTouchEvent( } } @@ -836,7 +843,7 @@ diff --git a/components/input/render_widget_targeter.cc b/components/input/rende diff --git a/components/thin_webview/internal/thin_webview.cc b/components/thin_webview/internal/thin_webview.cc --- a/components/thin_webview/internal/thin_webview.cc +++ b/components/thin_webview/internal/thin_webview.cc -@@ -107,7 +107,7 @@ void ThinWebView::ResizeWebContents(const gfx::Size& size) { +@@ -105,7 +105,7 @@ void ThinWebView::ResizeWebContents(const gfx::Size& size) { return; web_contents_->GetNativeView()->OnPhysicalBackingSizeChanged(size); @@ -848,7 +855,7 @@ diff --git a/components/thin_webview/internal/thin_webview.cc b/components/thin_ diff --git a/components/viz/service/input/input_manager.cc b/components/viz/service/input/input_manager.cc --- a/components/viz/service/input/input_manager.cc +++ b/components/viz/service/input/input_manager.cc -@@ -399,7 +399,7 @@ const DisplayHitTestQueryMap& InputManager::GetDisplayHitTestQuery() const { +@@ -418,7 +418,7 @@ const DisplayHitTestQueryMap& InputManager::GetDisplayHitTestQuery() const { return frame_sink_manager_->GetDisplayHitTestQuery(); } @@ -884,7 +891,7 @@ diff --git a/components/viz/service/input/render_input_router_support_child_fram diff --git a/components/viz/service/layers/layer_context_impl.cc b/components/viz/service/layers/layer_context_impl.cc --- a/components/viz/service/layers/layer_context_impl.cc +++ b/components/viz/service/layers/layer_context_impl.cc -@@ -1757,7 +1757,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( +@@ -1781,7 +1781,7 @@ base::expected LayerContextImpl::DoUpdateDisplayTree( return base::unexpected("Invalid page scale factors"); } layers.SetPageScaleFactorAndLimitsForDisplayTree( @@ -896,7 +903,7 @@ diff --git a/components/viz/service/layers/layer_context_impl.cc b/components/vi diff --git a/content/browser/android/selection/selection_popup_controller.cc b/content/browser/android/selection/selection_popup_controller.cc --- a/content/browser/android/selection/selection_popup_controller.cc +++ b/content/browser/android/selection/selection_popup_controller.cc -@@ -182,7 +182,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( +@@ -179,7 +179,7 @@ void SelectionPopupController::MoveRangeSelectionExtent( web_contents_impl->MoveRangeSelectionExtent(gfx::ToRoundedPoint(extent)); } @@ -905,7 +912,7 @@ diff --git a/content/browser/android/selection/selection_popup_controller.cc b/c const gfx::PointF& base, const gfx::PointF& extent) { auto* web_contents_impl = static_cast(web_contents()); -@@ -303,7 +303,8 @@ bool SelectionPopupController::ShowSelectionMenu( +@@ -300,7 +300,8 @@ bool SelectionPopupController::ShowSelectionMenu( is_password_type, jselected_text, params.selection_start_offset, can_select_all, can_edit_richly, should_suggest, static_cast(params.source_type), @@ -926,7 +933,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co #include "third_party/blink/public/common/frame/frame_visual_properties.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/mojom/frame/intrinsic_sizing_info.mojom.h" -@@ -210,9 +211,12 @@ void CrossProcessFrameConnector::SynchronizeVisualProperties( +@@ -215,9 +216,12 @@ void CrossProcessFrameConnector::SynchronizeVisualProperties( render_widget_host->SetAutoResize(visual_properties.auto_resize_enabled, visual_properties.min_size_for_auto_resize, visual_properties.max_size_for_auto_resize); @@ -940,7 +947,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co visual_properties.is_pinch_gesture_active, visual_properties.visible_viewport_size, visual_properties.compositor_viewport, -@@ -465,7 +469,7 @@ void CrossProcessFrameConnector::SetVisibilityForChildViews( +@@ -470,7 +474,7 @@ void CrossProcessFrameConnector::SetVisibilityForChildViews( current_child_frame_host()->SetVisibilityForChildViews(visible); } @@ -949,7 +956,7 @@ diff --git a/content/browser/renderer_host/cross_process_frame_connector.cc b/co const gfx::Size& local_frame_size) { has_size_ = true; const float dsf = screen_infos_.current().device_scale_factor; -@@ -474,7 +478,7 @@ void CrossProcessFrameConnector::SetLocalFrameSize( +@@ -479,7 +483,7 @@ void CrossProcessFrameConnector::SetLocalFrameSize( gfx::ScaleToRoundedSize(local_frame_size, 1.f / dsf); } @@ -985,7 +992,7 @@ diff --git a/content/browser/renderer_host/input/touch_selection_controller_clie diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -9204,7 +9204,7 @@ void RenderFrameHostImpl::ShowPopupMenu( +@@ -9260,7 +9260,7 @@ void RenderFrameHostImpl::ShowPopupMenu( #endif } @@ -997,7 +1004,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -1041,7 +1041,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1055,7 +1055,20 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { blink::VisualProperties visual_properties; visual_properties.screen_infos = GetScreenInfos(); auto& current_screen_info = visual_properties.screen_infos.mutable_current(); @@ -1019,7 +1026,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ // For testing, override the raster color profile. // Note: this needs to be done here and not earlier in the pipeline because // Mac uses the display color space to update an NSSurface and this setting -@@ -1146,6 +1159,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { +@@ -1160,6 +1173,13 @@ blink::VisualProperties RenderWidgetHostImpl::GetVisualProperties() { visual_properties.compositing_scale_factor = properties_from_parent_local_root_.compositing_scale_factor; @@ -1033,7 +1040,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ #if BUILDFLAG(IS_MAC) // Only macOS cursor scaling affects CSS custom cursor images for now. visual_properties.cursor_accessibility_scale_factor = -@@ -1326,8 +1346,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( +@@ -1340,8 +1360,10 @@ bool RenderWidgetHostImpl::SynchronizeVisualProperties( } } @@ -1046,7 +1053,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ // If we do not have a valid viz::LocalSurfaceId then we are a child frame // waiting on the id to be propagated from our parent. We cannot create a hash -@@ -3958,7 +3980,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( +@@ -3987,7 +4009,7 @@ void RenderWidgetHostImpl::IntrinsicSizingInfoChanged( // porting drag-and-drop calls to Mojo, so that RenderWidgetHostImpl bypasses // RenderWidget to talk the the WebFrameWidget and needs to perform the scale // operation itself. @@ -1058,7 +1065,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc -@@ -82,6 +82,7 @@ +@@ -83,6 +83,7 @@ #include "content/public/browser/render_widget_host_iterator.h" #include "content/public/common/content_client.h" #include "content/public/common/content_switches.h" @@ -1066,7 +1073,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ #include "third_party/blink/public/mojom/input/input_handler.mojom.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkCanvas.h" -@@ -951,7 +952,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -949,7 +950,7 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( ? SK_ColorTRANSPARENT : metadata.root_background_color.toSkColor()); @@ -1075,7 +1082,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ overscroll_controller_->OnFrameMetadataUpdated( metadata.page_scale_factor, metadata.device_scale_factor, metadata.scrollable_viewport_size, metadata.root_layer_size, -@@ -1262,6 +1263,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { +@@ -1248,6 +1249,12 @@ gfx::Size RenderWidgetHostViewAndroid::GetRequestedRendererSizeDevicePx() { default_bounds_dip_.height() * scale_factor); } @@ -1085,10 +1092,10 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ + DCHECK(size.width() == 0 || size.width() == 412 || size.height() == 412); + return size; + } - return view_.GetSizeDevicePx(); + const float scale_factor = GetDeviceScaleFactor() / view_.GetDipScale(); + return gfx::ScaleToCeiledSize(view_.GetSizeDevicePx(), scale_factor); } - -@@ -1286,6 +1293,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { +@@ -1273,6 +1280,10 @@ void RenderWidgetHostViewAndroid::SetInsets(const gfx::Insets& insets) { NOTREACHED(); } @@ -1099,7 +1106,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ gfx::Size RenderWidgetHostViewAndroid::GetCompositorViewportPixelSize() { if (!view_.parent()) { if (default_bounds_dip_.IsEmpty()) { -@@ -1414,7 +1425,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { +@@ -1408,7 +1419,7 @@ viz::SurfaceId RenderWidgetHostViewAndroid::GetCurrentSurfaceId() const { : viz::SurfaceId(); } @@ -1108,8 +1115,8 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ const gfx::PointF& point, RenderWidgetHostViewInput* target_view, gfx::PointF* transformed_point) { -@@ -1798,7 +1809,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { - return delegated_frame_host_ && delegated_frame_host_->HasFallbackSurface(); +@@ -1822,7 +1833,7 @@ bool RenderWidgetHostViewAndroid::HasFallbackSurface() const { + return delegated_frame_host_->HasFallbackSurface(); } -void RenderWidgetHostViewAndroid::CopyFromSurface( @@ -1120,7 +1127,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ diff --git a/content/browser/renderer_host/render_widget_host_view_android.h b/content/browser/renderer_host/render_widget_host_view_android.h --- a/content/browser/renderer_host/render_widget_host_view_android.h +++ b/content/browser/renderer_host/render_widget_host_view_android.h -@@ -159,6 +159,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid +@@ -161,6 +161,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid gfx::Size GetRequestedRendererSizeDevicePx() override; gfx::Size GetVisibleViewportSize() override; gfx::Size GetVisibleViewportSizeDevicePx() override; @@ -1154,7 +1161,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/con diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h --- a/content/browser/renderer_host/render_widget_host_view_base.h +++ b/content/browser/renderer_host/render_widget_host_view_base.h -@@ -274,6 +274,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -273,6 +273,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // The size of the view's backing surface in non-DPI-adjusted pixels. virtual gfx::Size GetCompositorViewportPixelSize(); @@ -1191,7 +1198,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -822,8 +822,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { +@@ -826,8 +826,11 @@ WebContentsAndroid::GetFullscreenVideoSize(JNIEnv* env) { return Java_WebContentsImpl_createSize(env, size.width(), size.height()); } @@ -1208,7 +1215,7 @@ diff --git a/content/browser/web_contents/web_contents_android.cc b/content/brow diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h --- a/content/browser/web_contents/web_contents_android.h +++ b/content/browser/web_contents/web_contents_android.h -@@ -183,7 +183,7 @@ class CONTENT_EXPORT WebContentsAndroid { +@@ -185,7 +185,7 @@ class CONTENT_EXPORT WebContentsAndroid { base::android::ScopedJavaLocalRef GetFullscreenVideoSize( JNIEnv* env); @@ -1220,7 +1227,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -533,7 +533,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -527,7 +527,11 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise)); // CAUTION: Only add custom enabling logic here if it cannot // be covered by the other functions. @@ -1236,7 +1243,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java -@@ -520,7 +520,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -519,7 +519,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper boolean canRichlyEdit, boolean shouldSuggest, int sourceType, @@ -1246,7 +1253,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select RecordHistogram.recordEnumeratedHistogram( "Android.ShowSelectionMenuSourceType", sourceType, -@@ -531,6 +532,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -530,6 +531,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper mXDip = xDip; mYDip = yDip; mSelectionRect.set(left, top, right, offsetBottom); @@ -1258,7 +1265,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java -@@ -977,9 +977,9 @@ public class WebContentsImpl +@@ -982,9 +982,9 @@ public class WebContentsImpl } @Override @@ -1270,7 +1277,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon } @Override -@@ -1442,7 +1442,7 @@ public class WebContentsImpl +@@ -1436,7 +1436,7 @@ public class WebContentsImpl Rect getFullscreenVideoSize(long nativeWebContentsAndroid); @@ -1282,7 +1289,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 -@@ -532,7 +532,7 @@ public interface WebContents extends Parcelable { +@@ -538,7 +538,7 @@ public interface WebContents extends Parcelable { * @param width The width of the view. * @param height The height of the view. */ @@ -1332,7 +1339,7 @@ new file mode 100644 diff --git a/services/viz/public/mojom/compositing/layer_context.mojom b/services/viz/public/mojom/compositing/layer_context.mojom --- a/services/viz/public/mojom/compositing/layer_context.mojom +++ b/services/viz/public/mojom/compositing/layer_context.mojom -@@ -74,6 +74,7 @@ struct LayerTreeUpdate { +@@ -81,6 +81,7 @@ struct LayerTreeUpdate { // The page scale factors set by the tree's client. All must be positive, // non-zero. float page_scale_factor; @@ -1426,7 +1433,7 @@ diff --git a/third_party/blink/public/mojom/widget/visual_properties.mojom b/thi diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h --- a/third_party/blink/public/web/web_view.h +++ b/third_party/blink/public/web/web_view.h -@@ -238,6 +238,7 @@ class BLINK_EXPORT WebView { +@@ -243,6 +243,7 @@ class BLINK_EXPORT WebView { // Minimum and Maximum as computed as a combination of default, page defined, // UA, etc. constraints. virtual float MinimumPageScaleFactor() const = 0; @@ -1437,7 +1444,7 @@ diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/ diff --git a/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc b/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc --- a/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc +++ b/third_party/blink/renderer/core/canvas_interventions/canvas_interventions_helper.cc -@@ -50,6 +50,7 @@ namespace { +@@ -49,6 +49,7 @@ namespace { bool ShouldApplyNoise(CanvasRenderingContext* rendering_context, scoped_refptr& snapshot, ExecutionContext* execution_context) { @@ -1469,7 +1476,7 @@ diff --git a/third_party/blink/renderer/core/css/media_values.cc b/third_party/b diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -1247,8 +1247,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( +@@ -1258,8 +1258,19 @@ void WebViewImpl::UpdateICBAndResizeViewport( if (GetBrowserControls().PermittedState() == cc::BrowserControlsState::kBoth && !GetBrowserControls().ShrinkViewport()) { @@ -1491,7 +1498,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } GetPageScaleConstraintsSet().DidChangeInitialContainingBlockSize(icb_size); -@@ -1328,7 +1339,8 @@ void WebViewImpl::DidUpdateBrowserControls() { +@@ -1339,7 +1350,8 @@ void WebViewImpl::DidUpdateBrowserControls() { ResizeViewportAnchor::ResizeScope resize_scope(*resize_viewport_anchor_); visual_viewport.SetBrowserControlsAdjustment( @@ -1501,7 +1508,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -1392,7 +1404,7 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1403,7 +1415,7 @@ void WebViewImpl::ResizeWithBrowserControls( float bottom_controls_height, bool browser_controls_shrink_layout) { ResizeWithBrowserControls( @@ -1510,7 +1517,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p {top_controls_height, GetBrowserControls().TopMinHeight(), bottom_controls_height, GetBrowserControls().BottomMinHeight(), GetBrowserControls().AnimateHeightChanges(), -@@ -1402,6 +1414,8 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1413,6 +1425,8 @@ void WebViewImpl::ResizeWithBrowserControls( void WebViewImpl::ResizeWithBrowserControls( const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1519,7 +1526,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p cc::BrowserControlsParams browser_controls_params) { if (should_auto_resize_) { // When auto-resizing only the viewport size comes from the browser, while -@@ -1410,6 +1424,11 @@ void WebViewImpl::ResizeWithBrowserControls( +@@ -1421,6 +1435,11 @@ void WebViewImpl::ResizeWithBrowserControls( return; } @@ -1531,7 +1538,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (size_ == main_frame_widget_size && GetPage()->GetVisualViewport().Size() == visible_viewport_size && GetBrowserControls().Params() == browser_controls_params) -@@ -2098,7 +2117,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { +@@ -2092,7 +2111,7 @@ void WebViewImpl::DidAttachLocalMainFrame() { web_preferences_.prefers_reduced_motion); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1540,7 +1547,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p // Prevent main frame updates while the main frame is loading until enough // progress is made and BeginMainFrames are explicitly asked for. scoped_defer_main_frame_update_ = -@@ -2903,7 +2922,7 @@ void WebViewImpl::RefreshPageScaleFactor() { +@@ -2900,7 +2919,7 @@ void WebViewImpl::RefreshPageScaleFactor() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1549,7 +1556,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -2980,7 +2999,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( +@@ -2977,7 +2996,7 @@ void WebViewImpl::UpdatePageDefinedViewportConstraints( TextAutosizer::UpdatePageInfoInAllFrames(GetPage()->MainFrame()); } @@ -1558,7 +1565,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p if (should_auto_resize_ || !MainFrameImpl()) return; -@@ -3214,6 +3233,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { +@@ -3211,6 +3230,10 @@ float WebViewImpl::MinimumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().minimum_scale; } @@ -1569,7 +1576,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p float WebViewImpl::MaximumPageScaleFactor() const { return GetPageScaleConstraintsSet().FinalConstraints().maximum_scale; } -@@ -3263,7 +3286,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { +@@ -3260,7 +3283,7 @@ void WebViewImpl::SendResizeEventForMainFrame() { auto& viewport = GetPage()->GetVisualViewport(); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1578,7 +1585,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p } } -@@ -3799,7 +3822,7 @@ void WebViewImpl::PageScaleFactorChanged() { +@@ -3800,7 +3823,7 @@ void WebViewImpl::PageScaleFactorChanged() { DCHECK(viewport.IsActiveViewport()); MainFrameImpl()->FrameWidgetImpl()->SetPageScaleStateAndLimits( viewport.Scale(), viewport.IsPinchGestureActive(), @@ -1590,7 +1597,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_p diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h --- a/third_party/blink/renderer/core/exported/web_view_impl.h +++ b/third_party/blink/renderer/core/exported/web_view_impl.h -@@ -168,6 +168,7 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -170,6 +170,7 @@ class CORE_EXPORT WebViewImpl final : public WebView, void AdvanceFocus(bool reverse) override; float PageScaleFactor() const override; float MinimumPageScaleFactor() const override; @@ -1598,7 +1605,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa float MaximumPageScaleFactor() const override; void SetDefaultPageScaleLimits(float min_scale, float max_scale) override; void SetInitialPageScaleOverride(float) override; -@@ -282,6 +283,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -284,6 +285,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // includes all browser controls params such as the min heights. void ResizeWithBrowserControls(const gfx::Size& main_frame_widget_size, const gfx::Size& visible_viewport_size, @@ -1607,7 +1614,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa cc::BrowserControlsParams); // Requests a page-scale animation based on the specified point/rect. -@@ -820,6 +823,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -824,6 +827,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, // The upper bound on the size when auto-resizing. gfx::Size max_auto_size_; @@ -1619,7 +1626,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_pa diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc -@@ -1719,8 +1719,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { +@@ -1720,8 +1720,11 @@ void LocalFrameView::PerformPostLayoutTasks(bool visual_viewport_size_changed) { } float LocalFrameView::InputEventsScaleFactor() const { @@ -1755,7 +1762,7 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.h b/third_par diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc -@@ -1954,6 +1954,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1886,6 +1886,9 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // All non-top-level Widgets (child local-root frames, GuestViews, // etc.) propagate and consume the page scale factor as "external", meaning // that it comes from the top level widget's page scale. @@ -1765,7 +1772,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (!ForTopMostMainFrame()) { // The main frame controls the page scale factor, from blink. For other // frame widgets, the page scale from pinch zoom and compositing scale is -@@ -1961,7 +1964,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1893,7 +1896,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // blink doesn't need to know this page scale factor outside the main frame, // the compositor does in order to produce its output at the correct scale. float combined_scale_factor = visual_properties.page_scale_factor * @@ -1774,7 +1781,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th widget_base_->LayerTreeHost()->SetExternalPageScaleFactor( combined_scale_factor, visual_properties.is_pinch_gesture_active); -@@ -1974,7 +1977,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( +@@ -1906,7 +1909,7 @@ void WebFrameWidgetImpl::UpdateVisualProperties( // Ensure the external scale factor in top-level widgets is reset as it may // be leftover from when a widget was nested and was promoted to top level. widget_base_->LayerTreeHost()->SetExternalPageScaleFactor( @@ -1783,7 +1790,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th /*is_pinch_gesture_active=*/false); } -@@ -2018,6 +2021,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1950,6 +1953,18 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( new_compositor_viewport_pixel_rect, device_scale_factor_for_testing_ / non_testing_device_scale_factor_); } @@ -1802,7 +1809,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ForMainFrame()) { if (size_ != new_size) { -@@ -2034,6 +2049,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1967,6 +1982,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( size_.value(), widget_base_->DIPsToCeiledBlinkSpace( widget_base_->VisibleViewportSize()), @@ -1811,7 +1818,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); return; } -@@ -2067,6 +2084,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -2000,6 +2017,8 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( View()->ResizeWithBrowserControls( size_.value(), widget_base_->VisibleViewportSize(), @@ -1820,7 +1827,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th visual_properties.browser_controls_params); } -@@ -2442,6 +2461,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, +@@ -2378,6 +2397,8 @@ void WebFrameWidgetImpl::SetZoomInternal(double zoom_level, View()->ZoomFactorForViewportLayout() * static_cast(View()->ZoomLevelToZoomFactor(zoom_level)) * static_cast(css_zoom_factor); @@ -1829,7 +1836,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (zoom_changed) { // Set the layout shift exclusion window for the zoom level change. if (LocalFrameView* view = document->View()) { -@@ -3491,6 +3512,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { +@@ -3430,6 +3451,7 @@ void WebFrameWidgetImpl::SetRootLayer(scoped_refptr layer) { // be needed in setting the raster scale. SetPageScaleStateAndLimits(1.f, false /* is_pinch_gesture_active */, View()->MinimumPageScaleFactor(), @@ -1837,7 +1844,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th View()->MaximumPageScaleFactor()); } -@@ -4860,9 +4882,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( +@@ -4799,9 +4821,10 @@ void WebFrameWidgetImpl::SetPageScaleStateAndLimits( float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1849,7 +1856,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th // Only propagate page scale from the main frame. if (ForMainFrame()) { -@@ -4986,7 +5009,10 @@ void WebFrameWidgetImpl::OrientationChanged() { +@@ -4925,7 +4948,10 @@ void WebFrameWidgetImpl::OrientationChanged() { void WebFrameWidgetImpl::DidUpdateSurfaceAndScreen( const display::ScreenInfos& previous_original_screen_infos) { display::ScreenInfo screen_info = widget_base_->GetScreenInfo(); @@ -1861,7 +1868,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th if (ShouldAutoDetermineCompositingToLCDTextSetting()) { // This causes compositing state to be modified which dirties the -@@ -5182,7 +5208,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { +@@ -5121,7 +5147,7 @@ void WebFrameWidgetImpl::SetDeviceScaleFactorForTesting(float factor) { if (!device_scale_factor_for_testing_) { non_testing_device_scale_factor_ = @@ -1873,7 +1880,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.h -@@ -656,6 +656,7 @@ class CORE_EXPORT WebFrameWidgetImpl +@@ -655,6 +655,7 @@ class CORE_EXPORT WebFrameWidgetImpl void SetPageScaleStateAndLimits(float page_scale_factor, bool is_pinch_gesture_active, float minimum, @@ -1884,7 +1891,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.h b/thi diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc -@@ -2543,7 +2543,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { +@@ -2547,7 +2547,7 @@ void WebLocalFrameImpl::PaintDevToolsOverlays(GraphicsContext& context) { dev_tools_agent_->PaintOverlays(context); } @@ -1893,7 +1900,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/thi TRACE_EVENT0("blink", "WebLocalFrameImpl::createFrameView"); DCHECK(GetFrame()); // If frame() doesn't exist, we probably didn't init -@@ -3018,7 +3018,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( +@@ -3022,7 +3022,7 @@ void WebLocalFrameImpl::ShowContextMenuFromExternal( std::move(context_menu_client), params); } @@ -1905,7 +1912,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/thi diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc --- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc +++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc -@@ -1628,6 +1628,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, +@@ -1569,6 +1569,7 @@ bool HTMLCanvasElement::PushFrame(scoped_refptr&& image, } bool HTMLCanvasElement::ShouldAccelerate() const { @@ -1928,7 +1935,7 @@ diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_part diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc -@@ -1038,7 +1038,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( +@@ -1081,7 +1081,8 @@ InspectorEmulationAgent::setSmallViewportHeightDifferenceOverride( // Ensure the override is applied immediately without having to wait for // `WebFrameWidgetImpl::UpdateVisualProperties()` to be called. GetWebViewImpl()->ResizeWithBrowserControls( @@ -1941,7 +1948,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc --- a/third_party/blink/renderer/core/page/page.cc +++ b/third_party/blink/renderer/core/page/page.cc -@@ -1322,6 +1322,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { +@@ -1309,6 +1309,10 @@ void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { if (SchemeRegistry::IsWebUIScheme(protocol) || disable_screen_emulated_) { isEnabled = false; } @@ -1967,7 +1974,7 @@ diff --git a/third_party/blink/renderer/core/page/viewport_description.cc b/thir diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -@@ -465,16 +465,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -467,16 +467,17 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( } } @@ -1990,7 +1997,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -5910,6 +5910,10 @@ +@@ -5857,6 +5857,10 @@ // If enabled, the `getDisplayMedia()` family of APIs will ask for NV12 // frames, which should trigger a zero-copy path in the tab capture code. name: "ZeroCopyTabCapture", @@ -2040,8 +2047,8 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox case WebInputEvent::Type::kGestureScrollBegin: - scroll_state_data.position_x = event.PositionInWidget().x(); - scroll_state_data.position_y = event.PositionInWidget().y(); -+ scroll_state_data.position_x = event.PositionInWidget().x() / 2.f; -+ scroll_state_data.position_y = event.PositionInWidget().y() / 2.f; ++ scroll_state_data.position_x = ScalePoint(event.PositionInWidget()).x(); ++ scroll_state_data.position_y = ScalePoint(event.PositionInWidget()).y(); scroll_state_data.delta_x_hint = -event.data.scroll_begin.delta_x_hint; scroll_state_data.delta_y_hint = -event.data.scroll_begin.delta_y_hint; scroll_state_data.is_beginning = true; @@ -2181,7 +2188,7 @@ diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_prox diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_party/blink/renderer/platform/widget/widget_base.cc --- a/third_party/blink/renderer/platform/widget/widget_base.cc +++ b/third_party/blink/renderer/platform/widget/widget_base.cc -@@ -1683,7 +1683,9 @@ void WidgetBase::RequestAnimationAfterDelayTimerFired(TimerBase*) { +@@ -1688,7 +1688,9 @@ void WidgetBase::RequestAnimationAfterDelayTimerFired(TimerBase*) { client_->ScheduleAnimation(/*urgent=*/urgent_for_input); } @@ -2192,7 +2199,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p return client_->GetOriginalScreenInfos().current().device_scale_factor; } -@@ -1725,7 +1727,7 @@ void WidgetBase::UpdateSurfaceAndScreenInfo( +@@ -1730,7 +1732,7 @@ void WidgetBase::UpdateSurfaceAndScreenInfo( // Note carefully that the DSF specified in |new_screen_info| is not the // DSF used by the compositor during device emulation! LayerTreeHost()->SetViewportRectAndScale(compositor_viewport_pixel_rect, @@ -2201,7 +2208,7 @@ diff --git a/third_party/blink/renderer/platform/widget/widget_base.cc b/third_p local_surface_id_from_parent_); // The VisualDeviceViewportIntersectionRect derives from the LayerTreeView's // viewport size, which is set above. -@@ -1855,56 +1857,56 @@ void WidgetBase::CountDroppedPointerDownForEventTiming(unsigned count) { +@@ -1860,56 +1862,56 @@ void WidgetBase::CountDroppedPointerDownForEventTiming(unsigned count) { gfx::PointF WidgetBase::DIPsToBlinkSpace(const gfx::PointF& point) { // TODO(danakj): Should this use non-original scale factor so it changes under // emulation? @@ -2295,25 +2302,25 @@ diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_f diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc --- a/ui/android/event_forwarder.cc +++ b/ui/android/event_forwarder.cc -@@ -138,7 +138,7 @@ jboolean EventForwarder::OnTouchEvent(JNIEnv* env, - // milliseconds timestamp. - base::TimeTicks down_time = base::TimeTicks::FromUptimeMillis(down_time_ms); - ui::MotionEventAndroidJava event( -- env, motion_event.obj(), 1.f / view_->GetDipScale(), 0.f, 0.f, 0.f, -+ env, motion_event.obj(), 1.f / view_->GetDipScaleFactor(), 0.f, 0.f, 0.f, - base::TimeTicks::FromJavaNanoTime(oldest_event_time_ns), - base::TimeTicks::FromJavaNanoTime(latest_event_time_ns), down_time, - android_action, pointer_count, history_size, action_index, -@@ -185,7 +185,7 @@ void EventForwarder::OnMouseEvent(JNIEnv* env, - /*pressure=*/pressure, /*orientation_rad=*/orientation, /*tilt_rad=*/tilt, +@@ -137,7 +137,7 @@ jboolean EventForwarder::OnTouchEvent(JNIEnv* env, + JNI_MotionEvent::Java_MotionEvent_getDownTime(env, motion_event)); + auto event = ui::MotionEventAndroidFactory::CreateFromJava( + env, /*event=*/motion_event, +- /*pix_to_dip=*/1.f / view_->GetDipScale(), ++ /*pix_to_dip=*/1.f / view_->GetDipScaleFactor(), + /*ticks_x=*/0.f, + /*ticks_y=*/0.f, + /*tick_multiplier=*/0.f, +@@ -191,7 +191,7 @@ void EventForwarder::OnMouseEvent( /*tool_type=*/android_tool_type); - ui::MotionEventAndroidJava event( -- env, nullptr /* event */, 1.f / view_->GetDipScale(), 0.f, 0.f, 0.f, -+ env, nullptr /* event */, 1.f / view_->GetDipScaleFactor(), 0.f, 0.f, 0.f, - base::TimeTicks::FromJavaNanoTime(time_ns), android_action, - 1 /* pointer_count */, 0 /* history_size */, 0 /* action_index */, - android_action_button, 0 /* gesture_classification */, -@@ -211,7 +211,7 @@ void EventForwarder::OnDragEvent(JNIEnv* env, + auto event = ui::MotionEventAndroidFactory::CreateFromJava( + env, /*event=*/motion_event, +- /*pix_to_dip=*/1.f / view_->GetDipScale(), ++ /*pix_to_dip=*/1.f / view_->GetDipScaleFactor(), + /*ticks_x=*/0.f, + /*ticks_y=*/0.f, + /*tick_multiplier=*/0.f, +@@ -225,7 +225,7 @@ void EventForwarder::OnDragEvent(JNIEnv* env, const JavaParamRef& j_text, const JavaParamRef& j_html, const JavaParamRef& j_url) { @@ -2322,7 +2329,7 @@ diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc gfx::PointF location(x / dip_scale, y / dip_scale); gfx::PointF root_location(screen_x / dip_scale, screen_y / dip_scale); std::vector mime_types; -@@ -228,7 +228,7 @@ jboolean EventForwarder::OnGestureEvent(JNIEnv* env, +@@ -240,7 +240,7 @@ jboolean EventForwarder::OnGestureEvent(JNIEnv* env, jint type, jlong time_ms, jfloat scale) { @@ -2331,16 +2338,16 @@ diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc auto size = view_->GetSizeDIPs(); float x = size.width() / 2; float y = size.height() / 2; -@@ -258,7 +258,7 @@ jboolean EventForwarder::OnGenericMotionEvent( - // milliseconds timestamp. +@@ -270,7 +270,7 @@ jboolean EventForwarder::OnGenericMotionEvent( base::TimeTicks down_time = base::TimeTicks::FromUptimeMillis(down_time_ms); - ui::MotionEventAndroidJava event( -- env, motion_event.obj(), 1.f / view_->GetDipScale(), 0.f, 0.f, 0.f, -+ env, motion_event.obj(), 1.f / view_->GetDipScaleFactor(), 0.f, 0.f, 0.f, - base::TimeTicks::FromJavaNanoTime(event_time_ns), - base::TimeTicks::FromJavaNanoTime(event_time_ns), down_time, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, false, &pointer0, nullptr, false); -@@ -301,7 +301,7 @@ void EventForwarder::DoubleTap(JNIEnv* env, + auto event = ui::MotionEventAndroidFactory::CreateFromJava( + env, /*event=*/motion_event, +- /*pix_to_dip=*/1.f / view_->GetDipScale(), ++ /*pix_to_dip=*/1.f / view_->GetDipScaleFactor(), + /*ticks_x=*/0.f, + /*ticks_y=*/0.f, + /*tick_multiplier=*/0.f, +@@ -323,7 +323,7 @@ void EventForwarder::DoubleTap(JNIEnv* env, jlong time_ms, jint x, jint y) { @@ -2349,7 +2356,7 @@ diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc view_->OnGestureEvent(GestureEventAndroid( GESTURE_EVENT_TYPE_DOUBLE_TAP, gfx::PointF(x / dip_scale, y / dip_scale), gfx::PointF(), time_ms, 0, 0, 0, 0, 0, /*target_viewport*/ true, -@@ -319,7 +319,7 @@ void EventForwarder::StartFling(JNIEnv* env, +@@ -340,7 +340,7 @@ void EventForwarder::StartFling(JNIEnv* env, if (velocity_x == 0 && velocity_y == 0) return; @@ -2361,9 +2368,9 @@ diff --git a/ui/android/event_forwarder.cc b/ui/android/event_forwarder.cc diff --git a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java b/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java --- a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java +++ b/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java -@@ -41,6 +41,12 @@ public class UiAndroidFeatureList { +@@ -47,6 +47,12 @@ public class UiAndroidFeatureList { /* defaultValue= */ false, - /* defaultValueInTests= */ true); + /* defaultValueInTests= */ false); + public static final CachedFlag sPixelPerfect = + newCachedFlag( @@ -2372,12 +2379,12 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/UiAndroidFeatureList.java + /* defaultValueInTests= */ false); + public static final List sFlagsCachedUiAndroid = - List.of(sAndroidWindowOcclusion, sAndroidWindowManagementWebApi); - } + List.of( + sAndroidWindowOcclusion, diff --git a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java b/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java --- a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java +++ b/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java -@@ -33,6 +33,7 @@ import org.chromium.base.ThreadUtils; +@@ -34,6 +34,7 @@ import org.chromium.base.ThreadUtils; import org.chromium.build.annotations.EnsuresNonNull; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -2385,7 +2392,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/display/PhysicalDisplayAndroid. import org.chromium.ui.util.XrUtils; import java.util.Arrays; -@@ -330,6 +331,15 @@ import java.util.function.Consumer; +@@ -345,6 +346,15 @@ import java.util.function.Consumer; float ydpi, Display display) { if (hasForcedDIPScale()) density = sForcedDIPScale.floatValue(); @@ -2424,7 +2431,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc child->DispatchOnSizeChanged(); } -@@ -488,7 +492,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, +@@ -497,7 +501,7 @@ void ViewAndroid::OnVerticalScrollDirectionChanged(bool direction_up, env, delegate, direction_up, current_scroll_ratio); } @@ -2433,7 +2440,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc // Match-parent view must not receive size events. DCHECK(!match_parent()); -@@ -498,13 +502,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { +@@ -507,13 +511,15 @@ void ViewAndroid::OnSizeChanged(int width, int height) { return; } @@ -2451,7 +2458,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc if (bounds_device_px_.size() == size_device_px) { return; } -@@ -512,12 +518,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { +@@ -521,12 +527,15 @@ void ViewAndroid::OnSizeChangedInternal(const gfx::Size& size_device_px) { bounds_device_px_.set_size(size_device_px); float scale = GetDipScale(); @@ -2470,7 +2477,7 @@ diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc } } -@@ -568,6 +577,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { +@@ -577,6 +586,10 @@ gfx::Size ViewAndroid::GetSizeDevicePx() const { return bounds_device_px_.size(); } diff --git a/build/patches/Android-fonts-fingerprinting-mitigation.patch b/build/patches/Android-fonts-fingerprinting-mitigation.patch index 67f31c3d..08dd4d46 100644 --- a/build/patches/Android-fonts-fingerprinting-mitigation.patch +++ b/build/patches/Android-fonts-fingerprinting-mitigation.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/browser/BUILD.gn | 7 + .../browser/component_updater/registration.cc | 10 + ...droid-fonts-fingerprinting-mitigation.grdp | 9 + - chrome/renderer/BUILD.gn | 3 + + chrome/renderer/BUILD.gn | 4 + .../installer_policies/BUILD.gn | 7 + .../fonts_pack_component_installer.cc | 96 + .../fonts_pack_component_installer.h | 60 + @@ -38,11 +38,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../skia/src/ports/SkFontConfigInterface.cpp | 4 + .../ports/SkFontConfigInterface_direct.cpp | 5 + .../src/ports/SkFontConfigInterface_direct.h | 1 + - .../skia/src/ports/SkFontMgr_android.cpp | 278 ++- + .../skia/src/ports/SkFontMgr_android.cpp | 279 ++- .../skia/src/ports/SkFontMgr_android_data.cpp | 1640 +++++++++++++++++ .../src/ports/SkFontMgr_android_parser.cpp | 49 +- .../skia/src/ports/SkFontMgr_android_parser.h | 5 +- - 36 files changed, 2410 insertions(+), 79 deletions(-) + 36 files changed, 2415 insertions(+), 76 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h @@ -54,7 +54,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java -@@ -1033,6 +1033,9 @@ public final class ProductionSupportedFlagList { +@@ -1007,6 +1007,9 @@ public final class ProductionSupportedFlagList { "Hides user preference on the system keyboard by setting the standard " + "eng layout and removing the layout information from the " + "javascript keyboard events."), @@ -67,7 +67,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/common/Produc diff --git a/android_webview/nonembedded/component_updater/registration.cc b/android_webview/nonembedded/component_updater/registration.cc --- a/android_webview/nonembedded/component_updater/registration.cc +++ b/android_webview/nonembedded/component_updater/registration.cc -@@ -27,6 +27,9 @@ +@@ -26,6 +26,9 @@ #include "components/update_client/update_client.h" #include "mojo/public/cpp/base/proto_wrapper.h" @@ -77,7 +77,7 @@ diff --git a/android_webview/nonembedded/component_updater/registration.cc b/and namespace android_webview { void RegisterComponentsForUpdate( -@@ -43,6 +46,12 @@ void RegisterComponentsForUpdate( +@@ -42,6 +45,12 @@ void RegisterComponentsForUpdate( std::vector> component_installer_list_cromite; @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7953,6 +7953,13 @@ static_library("browser") { +@@ -7951,6 +7951,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 -@@ -117,10 +117,20 @@ +@@ -115,10 +115,20 @@ #include "chrome/browser/component_updater/file_type_policies_component_installer.h" #endif @@ -161,20 +161,21 @@ 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 -@@ -292,6 +292,9 @@ static_library("renderer") { - "//ppapi/shared_impl", - ] +@@ -258,6 +258,10 @@ static_library("renderer") { + deps += [ "//components/strings" ] + } -+ if (is_android) { -+ deps += [ "//components/services/font/public/cpp" ] -+ } - if (is_linux || is_chromeos) { - deps += [ "//components/services/font/public/cpp" ] - } ++ if (is_android) { ++ deps += [ "//components/services/font/public/cpp" ] ++ } ++ + if (enable_pdf) { + deps += [ + "//components/pdf/renderer", diff --git a/components/component_updater/installer_policies/BUILD.gn b/components/component_updater/installer_policies/BUILD.gn --- a/components/component_updater/installer_policies/BUILD.gn +++ b/components/component_updater/installer_policies/BUILD.gn -@@ -36,6 +36,13 @@ static_library("installer_policies_no_content_deps") { +@@ -38,6 +38,13 @@ static_library("installer_policies_no_content_deps") { "trust_token_key_commitments_component_installer_policy.h", ] @@ -614,7 +615,7 @@ diff --git a/components/services/font/public/mojom/font_service.mojom b/componen diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -2582,6 +2582,17 @@ source_set("browser") { +@@ -2600,6 +2600,17 @@ source_set("browser") { ] } @@ -632,7 +633,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn if (is_linux || is_chromeos) { sources -= [ "file_system_access/file_path_watcher/file_path_watcher_stub.cc" ] -@@ -2627,6 +2638,13 @@ source_set("browser") { +@@ -2645,6 +2656,13 @@ source_set("browser") { ] } @@ -649,7 +650,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 -@@ -51,6 +51,11 @@ +@@ -52,6 +52,11 @@ #include "third_party/blink/public/mojom/android_font_lookup/android_font_lookup.mojom.h" #endif @@ -661,7 +662,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 -@@ -336,6 +341,13 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHostReceiver( +@@ -348,6 +353,13 @@ void RenderProcessHostImpl::IOThreadHostImpl::BindHostReceiver( } #endif @@ -695,7 +696,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn -@@ -349,6 +349,10 @@ target(link_target_type, "renderer") { +@@ -346,6 +346,10 @@ target(link_target_type, "renderer") { deps += [ "//services/screen_ai/public/mojom" ] } @@ -733,7 +734,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer using blink::Platform; using blink::WebAudioDevice; using blink::WebAudioLatencyHint; -@@ -179,6 +196,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { +@@ -180,6 +197,37 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) { NOTREACHED(); } @@ -771,7 +772,7 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer } // namespace //------------------------------------------------------------------------------ -@@ -192,18 +240,21 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +@@ -193,18 +241,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) { @@ -883,7 +884,7 @@ diff --git a/third_party/skia/include/ports/SkFontMgr_android.h b/third_party/sk #include -@@ -40,13 +45,46 @@ struct SkFontMgr_Android_CustomFonts { +@@ -40,9 +45,44 @@ struct SkFontMgr_Android_CustomFonts { * system IO resources on initialization. */ bool fIsolated; @@ -923,12 +924,9 @@ diff --git a/third_party/skia/include/ports/SkFontMgr_android.h b/third_party/sk }; /** Create a font manager for Android. If 'custom' is NULL, use only system fonts. */ - - // Deprecated --SK_API sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom); -+SK_API sk_sp SkFontMgr_New_Android(std::unique_ptr custom); - -SK_API sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, ++SK_API sk_sp SkFontMgr_New_Android(std::unique_ptr custom); ++ +SK_API sk_sp SkFontMgr_New_Android(std::unique_ptr custom, std::unique_ptr scanner); #endif // SkFontMgr_android_DEFINED @@ -950,7 +948,7 @@ diff --git a/third_party/skia/src/ports/SkFontConfigInterface.cpp b/third_party/ diff --git a/third_party/skia/src/ports/SkFontConfigInterface_direct.cpp b/third_party/skia/src/ports/SkFontConfigInterface_direct.cpp --- a/third_party/skia/src/ports/SkFontConfigInterface_direct.cpp +++ b/third_party/skia/src/ports/SkFontConfigInterface_direct.cpp -@@ -707,3 +707,8 @@ bool SkFontConfigInterfaceDirect::matchFamilyName(const char familyName[], +@@ -715,3 +715,8 @@ bool SkFontConfigInterfaceDirect::matchFamilyName(const char familyName[], SkStreamAsset* SkFontConfigInterfaceDirect::openStream(const FontIdentity& identity) { return SkStream::MakeFromFile(identity.fString.c_str()).release(); } @@ -973,7 +971,15 @@ diff --git a/third_party/skia/src/ports/SkFontConfigInterface_direct.h b/third_p diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia/src/ports/SkFontMgr_android.cpp --- a/third_party/skia/src/ports/SkFontMgr_android.cpp +++ b/third_party/skia/src/ports/SkFontMgr_android.cpp -@@ -27,6 +27,7 @@ +@@ -16,6 +16,7 @@ + #include "include/core/SkStream.h" + #include "include/core/SkString.h" + #include "include/ports/SkFontMgr_android.h" ++#include "include/ports/SkFontScanner_FreeType.h" + #include "include/private/base/SkFixed.h" + #include "include/private/base/SkTArray.h" + #include "include/private/base/SkTDArray.h" +@@ -27,6 +28,7 @@ #include "src/core/SkTypefaceCache.h" #include "src/ports/SkFontMgr_android_parser.h" #include "src/ports/SkTypeface_proxy.h" @@ -981,7 +987,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia #include #include -@@ -36,6 +37,91 @@ using namespace skia_private; +@@ -36,6 +38,91 @@ using namespace skia_private; class SkData; namespace { @@ -1073,7 +1079,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia class SkTypeface_AndroidSystem : public SkTypeface_proxy { public: static sk_sp Make(sk_sp realTypeface, -@@ -110,7 +196,8 @@ using StreamForPathCache = skia_private::THashMapisFixedPitch(), -@@ -206,15 +340,18 @@ public: +@@ -205,15 +340,18 @@ public: return fStyles[index]; } @@ -1241,7 +1247,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia SkString fFallbackFor; friend struct NameToFamily; -@@ -235,24 +372,26 @@ struct NameToFamily { +@@ -234,24 +372,26 @@ struct NameToFamily { class SkFontMgr_Android : public SkFontMgr { public: @@ -1272,7 +1278,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia } this->buildNameToFamilyMap(families, custom ? custom->fIsolated : false); this->findDefaultStyleSet(); -@@ -310,33 +449,53 @@ protected: +@@ -309,33 +449,53 @@ protected: return sset->matchStyle(style); } @@ -1341,7 +1347,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia } } return nullptr; -@@ -359,7 +518,7 @@ protected: +@@ -358,7 +518,7 @@ protected: for (int bcp47Index = bcp47Count; bcp47Index --> 0;) { SkLanguage lang(bcp47[bcp47Index]); while (!lang.getTag().isEmpty()) { @@ -1350,7 +1356,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, style, SkToBool(elegant), lang.getTag(), character); -@@ -370,7 +529,7 @@ protected: +@@ -369,7 +529,7 @@ protected: lang = lang.getParent(); } } @@ -1359,7 +1365,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, style, SkToBool(elegant), SkString(), character); -@@ -421,6 +580,7 @@ protected: +@@ -420,6 +580,7 @@ protected: private: std::unique_ptr fScanner; @@ -1367,7 +1373,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia TArray> fStyleSets; sk_sp fDefaultStyleSet; -@@ -442,7 +602,7 @@ private: +@@ -441,7 +602,7 @@ private: } sk_sp newSet = @@ -1376,22 +1382,20 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia if (0 == newSet->count()) { return; } -@@ -487,11 +647,11 @@ static char const * const gSystemFontUseStrings[] = { +@@ -486,7 +647,11 @@ static char const * const gSystemFontUseStrings[] = { } // namespace --sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom) { -- return SkFontMgr_New_Android(custom, SkFontScanner_Make_FreeType()); +-sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, std::unique_ptr scanner) { +sk_sp SkFontMgr_New_Android(std::unique_ptr custom) { + return SkFontMgr_New_Android(std::move(custom), SkFontScanner_Make_FreeType()); - } - --sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, std::unique_ptr scanner) { ++} ++ +sk_sp SkFontMgr_New_Android(std::unique_ptr custom, std::unique_ptr scanner) { if (custom) { SkASSERT(0 <= custom->fSystemFontUse); SkASSERT(custom->fSystemFontUse < std::size(gSystemFontUseStrings)); -@@ -501,5 +661,5 @@ sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust +@@ -496,5 +661,5 @@ sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust custom->fFontsXml, custom->fFallbackFontsXml); } diff --git a/build/patches/Ask-for-restart-on-connection-change.patch b/build/patches/Ask-for-restart-on-connection-change.patch index 85404353..5e850a4d 100644 --- a/build/patches/Ask-for-restart-on-connection-change.patch +++ b/build/patches/Ask-for-restart-on-connection-change.patch @@ -244,7 +244,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/offlinepages/indicator/OfflineIndicatorControllerV2.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java --- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java -@@ -28,6 +28,11 @@ import org.chromium.content_public.common.ContentSwitches; +@@ -31,6 +31,11 @@ import org.chromium.content_public.common.ContentSwitches; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -256,7 +256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in /** * Class that controls visibility and content of {@link StatusIndicatorCoordinator} to relay * connectivity information. -@@ -101,7 +106,10 @@ public class OfflineIndicatorControllerV2 { +@@ -104,7 +109,10 @@ public class OfflineIndicatorControllerV2 { Context context, StatusIndicatorCoordinator statusIndicator, ObservableSupplier isUrlBarFocusedSupplier, @@ -265,10 +265,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in + ObservableSupplier tabModelSelectorSupplier, + ObservableSupplierImpl layoutManager, + Supplier snackbarManagerSupplier) { - if (CommandLine.getInstance() - .hasSwitch(ContentSwitches.FORCE_ONLINE_CONNECTION_STATE_FOR_INDICATOR)) { - // If "force online connection state" switch is set, the offline indicator should never -@@ -129,7 +137,10 @@ public class OfflineIndicatorControllerV2 { + // If "force online connection state" switch is set, the offline indicator should never + // show. + assert !CommandLine.getInstance() +@@ -130,7 +138,10 @@ public class OfflineIndicatorControllerV2 { new OfflineDetector( (Boolean offline) -> onConnectionStateChanged(offline), (Boolean isForeground) -> onApplicationStateChanged(isForeground), @@ -283,18 +283,18 @@ 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 -@@ -1398,7 +1398,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { - mActivity, - mStatusIndicatorCoordinator, - isUrlBarFocusedSupplier, -- mCanAnimateBrowserControls); -+ mCanAnimateBrowserControls, -+ mTabModelSelectorSupplier, -+ mLayoutManagerSupplier, -+ mSnackbarManagerSupplier); - if (mToolbarManager.getOmniboxStub() != null) { - mToolbarManager.getOmniboxStub().addUrlFocusChangeListener(mUrlFocusChangeListener); +@@ -1417,7 +1417,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { + mActivity, + mStatusIndicatorCoordinator, + isUrlBarFocusedSupplier, +- mCanAnimateBrowserControls); ++ mCanAnimateBrowserControls, ++ mTabModelSelectorSupplier, ++ mLayoutManagerSupplier, ++ mSnackbarManagerSupplier); } + + if (mToolbarManager.getOmniboxStub() != null) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java @@ -599,7 +599,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc -@@ -899,6 +899,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { +@@ -903,6 +903,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) { view->SetFocus(focused); } @@ -625,7 +625,7 @@ diff --git a/content/browser/web_contents/web_contents_android.cc b/content/brow diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h --- a/content/browser/web_contents/web_contents_android.h +++ b/content/browser/web_contents/web_contents_android.h -@@ -194,6 +194,7 @@ class CONTENT_EXPORT WebContentsAndroid { +@@ -196,6 +196,7 @@ class CONTENT_EXPORT WebContentsAndroid { void OnScaleFactorChanged(JNIEnv* env); void SetFocus(JNIEnv* env, jboolean focused); @@ -636,7 +636,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 -@@ -4011,8 +4011,10 @@ void WebContentsImpl::Stop() { +@@ -4080,8 +4080,10 @@ void WebContentsImpl::Stop() { void WebContentsImpl::SetPageFrozen(bool frozen) { TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen); @@ -650,7 +650,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 -@@ -1133,6 +1133,12 @@ public class WebContentsImpl +@@ -1138,6 +1138,12 @@ public class WebContentsImpl WebContentsImplJni.get().setFocus(mNativeWebContentsAndroid, hasFocus); } @@ -663,7 +663,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon @Override public void setDisplayCutoutSafeArea(Rect insets) { if (mNativeWebContentsAndroid == 0) return; -@@ -1453,6 +1459,8 @@ public class WebContentsImpl +@@ -1447,6 +1453,8 @@ public class WebContentsImpl void setFocus(long nativeWebContentsAndroid, boolean focused); @@ -675,7 +675,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 -@@ -282,6 +282,8 @@ public interface WebContents extends Parcelable { +@@ -288,6 +288,8 @@ public interface WebContents extends Parcelable { */ void setFocus(boolean hasFocus); @@ -732,7 +732,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 -@@ -4464,6 +4464,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { +@@ -4614,6 +4614,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) { } void Document::DispatchFreezeEvent() { @@ -743,7 +743,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 -@@ -3274,6 +3274,7 @@ void LocalFrame::DidFreeze() { +@@ -3273,6 +3273,7 @@ void LocalFrame::DidFreeze() { LoaderFreezeMode freeze_mode = GetLoaderFreezeMode(); GetDocument()->Fetcher()->SetDefersLoading(freeze_mode); Loader().SetDefersLoading(freeze_mode); @@ -751,7 +751,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } void LocalFrame::DidResume() { -@@ -3288,6 +3289,7 @@ void LocalFrame::DidResume() { +@@ -3287,6 +3288,7 @@ void LocalFrame::DidResume() { GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone); Loader().SetDefersLoading(LoaderFreezeMode::kNone); @@ -762,7 +762,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc -@@ -974,7 +974,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState( +@@ -989,7 +989,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState( if (!parent_page_scheduler_) return SchedulingLifecycleState::kNotThrottled; if (parent_page_scheduler_->IsFrozen()) { @@ -788,7 +788,7 @@ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_sche PolicyUpdater policy_updater; SetPageFrozenImpl(frozen, policy_updater); } -@@ -800,7 +802,12 @@ bool PageSchedulerImpl::IsBackgrounded() const { +@@ -815,7 +817,12 @@ bool PageSchedulerImpl::IsBackgrounded() const { // expire immediately when a page is backgrounded, which is undesirable in // headless mode. To prevent that, a page is never considerer backgrounded // when virtual time is enabled. diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index a8b7cacb..45157964 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -15,9 +15,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../modules/webaudio/base_audio_context.cc | 12 ++++++++++++ .../renderer/modules/webaudio/base_audio_context.h | 2 ++ .../modules/webaudio/offline_audio_context.cc | 1 + - .../renderer/modules/webaudio/realtime_analyser.cc | 7 +++++++ + .../renderer/modules/webaudio/realtime_analyser.cc | 9 ++++++++- .../platform/runtime_enabled_features.json5 | 5 ++--- - 11 files changed, 56 insertions(+), 4 deletions(-) + 11 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc @@ -88,7 +88,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/mediastream/media_devices.h" #include "third_party/blink/public/platform/browser_interface_broker_proxy.h" @@ -96,7 +96,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/web_audio_latency_hint.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -@@ -684,7 +685,9 @@ double AudioContext::baseLatency() const { +@@ -696,7 +697,9 @@ double AudioContext::baseLatency() const { DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_); DCHECK(destination()); @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" -@@ -716,6 +717,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -710,6 +711,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -162,25 +162,25 @@ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.c diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc --- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -@@ -36,6 +36,7 @@ - #include +@@ -32,6 +32,7 @@ #include + #include "base/compiler_specific.h" +#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" #include "third_party/blink/renderer/platform/audio/audio_bus.h" #include "third_party/blink/renderer/platform/audio/audio_utilities.h" #include "third_party/blink/renderer/platform/audio/vector_math.h" -@@ -160,6 +161,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( +@@ -156,6 +157,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; + kInputBufferSize]); + value = BaseAudioContext::ShuffleAudioData(value, i); - destination[i] = value; + UNSAFE_TODO(destination[i]) = value; } } -@@ -187,6 +189,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { +@@ -183,6 +185,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; + kInputBufferSize]); + value = BaseAudioContext::ShuffleAudioData(value, i); + @@ -194,20 +194,22 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ + scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); + // Clip to valid range. - destination[i] = + UNSAFE_TODO(destination[i]) = static_cast(ClampTo(scaled_value, 0, UCHAR_MAX)); -@@ -325,6 +331,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { - float linear_value = source[i]; +@@ -324,7 +330,8 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { + for (unsigned i = 0; i < len; ++i) { + float linear_value = UNSAFE_TODO(source[i]); double db_mag = audio_utilities::LinearToDecibels(linear_value); - destination[i] = static_cast(db_mag); -+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); +- UNSAFE_TODO(destination[i]) = static_cast(db_mag); ++ auto v = static_cast(db_mag); ++ UNSAFE_TODO(destination[i]) = BaseAudioContext::ShuffleAudioData(v, i); } } } diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -558,9 +558,8 @@ +@@ -575,9 +575,8 @@ { // AudioContext.playoutStats interface. // https://chromestatus.com/feature/5172818344148992 diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index 8adf0c50..66f322af 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -7,49 +7,23 @@ This approach is not comprehensive, see also: License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../execution_context/execution_context.cc | 15 +++++++++ .../execution_context/execution_context.h | 1 + .../renderer/core/loader/base_fetch_context.h | 1 + .../core/loader/frame_fetch_context.cc | 20 ++++++++++++ .../core/loader/frame_fetch_context.h | 1 + .../core/loader/worker_fetch_context.cc | 21 +++++++++++++ .../core/loader/worker_fetch_context.h | 1 + - .../core/workers/installed_scripts_manager.cc | 4 +-- + .../core/workers/installed_scripts_manager.cc | 2 +- .../background_fetch_manager.cc | 31 +++++++++++++++++++ .../websockets/websocket_channel_impl.cc | 5 +++ .../modules/websockets/websocket_common.cc | 30 ++++++++++++++++++ .../modules/websockets/websocket_common.h | 4 +++ - 12 files changed, 132 insertions(+), 2 deletions(-) + 11 files changed, 116 insertions(+), 1 deletion(-) -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 -@@ -713,6 +713,21 @@ void ExecutionContext::WriteIntoTrace( - proto->set_world_type(GetWorldType(*this)); - } - -+String ExecutionContext::addressSpaceForBindings() const { -+ switch (AddressSpace()) { -+ case network::mojom::IPAddressSpace::kPublic: -+ case network::mojom::IPAddressSpace::kUnknown: -+ return "public"; -+ -+ case network::mojom::IPAddressSpace::kPrivate: -+ return "private"; -+ -+ case network::mojom::IPAddressSpace::kLocal: -+ return "local"; -+ } -+ NOTREACHED(); -+} -+ - bool ExecutionContext::CrossOriginIsolatedCapabilityOrDisabledWebSecurity() - const { - return Agent::IsWebSecurityDisabled() || CrossOriginIsolatedCapability(); diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -396,6 +396,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -395,6 +395,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space); HeapObserverList& ContextLifecycleObserverSet(); @@ -84,7 +58,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi + network::mojom::IPAddressSpace target_space = + network::mojom::IPAddressSpace::kPublic; + if (network_utils::IsReservedIPAddress(request_url.Host())) -+ target_space = network::mojom::IPAddressSpace::kPrivate; ++ target_space = network::mojom::IPAddressSpace::kLocal; + if (SecurityOrigin::Create(request_url)->IsLocalhost()) + target_space = network::mojom::IPAddressSpace::kLocal; + @@ -133,7 +107,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th + network::mojom::IPAddressSpace target_space = + network::mojom::IPAddressSpace::kPublic; + if (network_utils::IsReservedIPAddress(request_url.Host())) -+ target_space = network::mojom::IPAddressSpace::kPrivate; ++ target_space = network::mojom::IPAddressSpace::kLocal; + if (SecurityOrigin::Create(request_url)->IsLocalhost()) + target_space = network::mojom::IPAddressSpace::kLocal; + @@ -161,12 +135,9 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/thi diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc --- a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc +++ b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc -@@ -33,9 +33,9 @@ InstalledScriptsManager::ScriptData::ScriptData( - // place so that this is shareable out of worker code. - response_address_space_ = network::mojom::IPAddressSpace::kPublic; +@@ -35,7 +35,7 @@ InstalledScriptsManager::ScriptData::ScriptData( if (network_utils::IsReservedIPAddress(script_url_.Host())) -- response_address_space_ = network::mojom::IPAddressSpace::kLocal; -+ response_address_space_ = network::mojom::IPAddressSpace::kPrivate; + response_address_space_ = network::mojom::IPAddressSpace::kLocal; if (SecurityOrigin::Create(script_url_)->IsLocalhost()) - response_address_space_ = network::mojom::IPAddressSpace::kLoopback; + response_address_space_ = network::mojom::IPAddressSpace::kLocal; @@ -193,7 +164,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc + network::mojom::IPAddressSpace target_space = + network::mojom::IPAddressSpace::kPublic; + if (network_utils::IsReservedIPAddress(request_url.Host())) -+ target_space = network::mojom::IPAddressSpace::kPrivate; ++ target_space = network::mojom::IPAddressSpace::kLocal; + if (SecurityOrigin::Create(request_url)->IsLocalhost()) + target_space = network::mojom::IPAddressSpace::kLocal; + @@ -224,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc -@@ -284,6 +284,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) { +@@ -285,6 +285,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) { return false; } @@ -265,7 +236,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b + network::mojom::IPAddressSpace target_space = + network::mojom::IPAddressSpace::kPublic; + if (network_utils::IsReservedIPAddress(request_url.Host())) -+ target_space = network::mojom::IPAddressSpace::kPrivate; ++ target_space = network::mojom::IPAddressSpace::kLocal; + if (SecurityOrigin::Create(request_url)->IsLocalhost()) + target_space = network::mojom::IPAddressSpace::kLocal; + 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 7020d229..c92265b9 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 -@@ -5090,7 +5090,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( +@@ -5133,7 +5133,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin( } void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) { @@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p return referrer_; } -@@ -2909,6 +2914,13 @@ void DocumentLoader::CommitNavigation() { +@@ -2898,6 +2903,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 -@@ -775,7 +775,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected, +@@ -771,7 +771,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 97f17996..ee02db19 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -107,18 +107,18 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc -@@ -950,6 +950,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() +@@ -970,6 +970,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() RegisterPseudoScheme(url::kJavaScriptScheme); RegisterPseudoScheme(kViewSourceScheme); RegisterPseudoScheme(kGoogleChromeScheme); + RegisterWebSafeScheme(url::kTraceScheme); } - ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() { + ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() = default; diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1122,6 +1122,8 @@ component("net") { +@@ -1127,6 +1127,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", @@ -227,7 +227,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc -@@ -53,6 +53,7 @@ +@@ -55,6 +55,7 @@ #include "net/socket/network_binding_client_socket_factory.h" #include "net/ssl/ssl_config_service_defaults.h" #include "net/url_request/static_http_user_agent_settings.h" @@ -235,7 +235,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job_factory.h" #include "url/url_constants.h" -@@ -610,6 +611,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { +@@ -619,6 +620,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { job_factory->SetProtocolHandler(scheme_handler.first, std::move(scheme_handler.second)); } diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index fc48cd1a..0c902b95 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -71,7 +71,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -1952,6 +1952,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1945,6 +1945,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -84,7 +84,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -824,6 +824,8 @@ chrome_java_sources = [ +@@ -833,6 +833,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/omaha/OmahaBase.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegate.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegateBase.java", @@ -216,7 +216,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java -@@ -140,7 +140,8 @@ public class OmahaBase { +@@ -149,7 +149,8 @@ public class OmahaBase { } static boolean isDisabled() { @@ -226,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase } /** -@@ -580,6 +581,10 @@ public class OmahaBase { +@@ -592,6 +593,10 @@ public class OmahaBase { /** Sends the request to the server and returns the response. */ static String sendRequestToServer(HttpURLConnection urlConnection, String request) throws RequestFailureException { @@ -678,7 +678,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2658,6 +2658,12 @@ static_library("browser") { +@@ -2685,6 +2685,12 @@ static_library("browser") { } if (is_android) { @@ -1091,7 +1091,7 @@ new file mode 100644 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -351,6 +351,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -363,6 +363,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, @@ -1102,9 +1102,9 @@ 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 -@@ -437,6 +437,7 @@ public abstract class ChromeFeatureList { - "HomepageIsNewTabPagePolicyAndroid"; - public static final String HTTPS_FIRST_BALANCED_MODE = "HttpsFirstBalancedMode"; +@@ -453,6 +453,7 @@ public abstract class ChromeFeatureList { + public static final String HUB_BACK_BUTTON = "HubBackButton"; + public static final String HUB_SLIDE_ANIMATION = "HubSlideAnimation"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; + public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; public static final String INSTANCE_SWITCHER_V2 = "InstanceSwitcherV2"; @@ -1658,7 +1658,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 -@@ -84,9 +84,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, +@@ -85,9 +85,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, mLocalPasswordsFetchService = new SafetyHubPasswordsFetchService(passwordManagerHelper, prefService, null); @@ -1668,7 +1668,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow recordMetricForUnusedSitePermissionsSettingState(); } -@@ -115,8 +112,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, +@@ -116,8 +113,6 @@ public class SafetyHubFetchService implements SigninManager.SignInStateObserver, if (mSigninManager != null) { mSigninManager.removeSignInStateObserver(this); } @@ -1680,7 +1680,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -2459,6 +2459,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2324,6 +2324,12 @@ Your Google account may have other forms of browsing history like searches and a Chrome updates are no longer supported for this version of Android @@ -1693,7 +1693,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4437,7 +4443,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4288,7 +4294,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1705,7 +1705,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4448,6 +4457,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4299,6 +4308,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1727,7 +1727,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/browser/ui/lens/lens_overlay_query_controller.cc --- a/chrome/browser/ui/lens/lens_overlay_query_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_query_controller.cc -@@ -893,6 +893,7 @@ LensOverlayQueryController::CreateEndpointFetcher( +@@ -802,6 +802,7 @@ LensOverlayQueryController::CreateEndpointFetcher( /*post_data=*/std::move(request_string), /*headers=*/request_headers, /*cors_exempt_headers=*/cors_exempt_headers, chrome::GetChannel(), @@ -2066,7 +2066,7 @@ diff --git a/components/manta/base_provider.cc b/components/manta/base_provider. diff --git a/components/omnibox/composebox/composebox_query_controller.cc b/components/omnibox/composebox/composebox_query_controller.cc --- a/components/omnibox/composebox/composebox_query_controller.cc +++ b/components/omnibox/composebox/composebox_query_controller.cc -@@ -312,7 +312,7 @@ ComposeboxQueryController::CreateEndpointFetcher( +@@ -314,7 +314,7 @@ ComposeboxQueryController::CreateEndpointFetcher( /*post_data=*/std::move(request_string), /*headers=*/request_headers, /*cors_exempt_headers=*/cors_exempt_headers, diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index ba0c6abe..a1830556 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -66,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -328,6 +328,7 @@ if (_is_default_toolchain) { +@@ -325,6 +325,7 @@ if (_is_default_toolchain) { "//chrome/android/features/tab_ui/public:ui_java_resources", "//chrome/android/modules/stack_unwinder/provider:java", "//chrome/android/webapk/libs/client:client_java", @@ -77,7 +77,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -438,6 +438,7 @@ chrome_java_resources = [ +@@ -419,6 +419,7 @@ chrome_java_resources = [ "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", "java/res/layout/app_history_filter.xml", @@ -85,7 +85,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_name_and_number.xml", -@@ -627,6 +628,7 @@ chrome_java_resources = [ +@@ -608,6 +609,7 @@ chrome_java_resources = [ "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", "java/res/xml/appearance_preferences.xml", @@ -96,7 +96,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -897,6 +897,8 @@ chrome_java_sources = [ +@@ -903,6 +903,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/permissions/PermissionBlockedDialog.java", "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java", @@ -462,7 +462,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -16862,6 +16862,16 @@ Please help our engineers fix this problem. Tell us what happened right before y +@@ -16888,6 +16888,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Never show this again. @@ -533,7 +533,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1271,6 +1271,34 @@ BrowserProcessImpl::component_updater() { +@@ -1273,6 +1273,34 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -571,7 +571,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -214,6 +214,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -212,6 +212,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -579,7 +579,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc MediaFileSystemRegistry* media_file_system_registry() override; WebRtcLogUploader* webrtc_log_uploader() override; network_time::NetworkTimeTracker* network_time_tracker() override; -@@ -431,6 +432,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -429,6 +430,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -590,7 +590,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -389,6 +389,9 @@ StartupProfileInfo CreateInitialProfile( +@@ -384,6 +384,9 @@ StartupProfileInfo CreateInitialProfile( // missing code in the above test. CHECK(profile_info.profile) << "Cannot get default profile."; @@ -701,9 +701,9 @@ new file mode 100755 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -653,6 +653,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { - StubResolverConfigReader::RegisterPrefs(registry); +@@ -721,6 +721,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { DefaultDnsOverHttpsConfigSource::RegisterPrefs(registry); + NetworkProcessLaunchWatcher::RegisterPrefs(registry); + registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false); + registry->RegisterStringPref(prefs::kAdBlockFiltersURL, @@ -756,7 +756,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -2885,6 +2885,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2907,6 +2907,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -771,7 +771,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -382,6 +382,9 @@ +@@ -391,6 +391,9 @@ This site shows intrusive or misleading ads diff --git a/build/patches/Bubble-Locking-on-UI-DevTools.patch b/build/patches/Bubble-Locking-on-UI-DevTools.patch index 5f678cfc..297dac12 100644 --- a/build/patches/Bubble-Locking-on-UI-DevTools.patch +++ b/build/patches/Bubble-Locking-on-UI-DevTools.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/ui/views/toolbar/reload_button.cc --- a/chrome/browser/ui/views/toolbar/reload_button.cc +++ b/chrome/browser/ui/views/toolbar/reload_button.cc -@@ -226,6 +226,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) { +@@ -225,6 +225,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) { command = IDC_RELOAD; } @@ -33,7 +33,7 @@ diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/u diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h --- a/ui/views/widget/widget.h +++ b/ui/views/widget/widget.h -@@ -1420,6 +1420,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1456,6 +1456,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, WidgetAXManager* ax_manager() { return ax_manager_.get(); } @@ -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. -@@ -1458,13 +1471,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1494,13 +1507,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; -@@ -1475,11 +1481,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -1511,11 +1517,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 56e74ffe..1debe100 100644 --- a/build/patches/Change-popup-site-setting.patch +++ b/build/patches/Change-popup-site-setting.patch @@ -273,7 +273,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -134,7 +134,7 @@ void ContentSettingsRegistry::Init() { +@@ -140,7 +140,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsInfo::SYNCABLE, /*allowlisted_primary_schemes=*/ {kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme}, diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index 18f84be1..89ecc5b8 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -39,7 +39,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../ui/webui/extensions/extensions_ui.cc | 7 +++ .../chrome_update_query_params_delegate.cc | 13 ++-- .../extensions/api/developer_private.idl | 2 + - .../update_client/update_query_params.cc | 7 +-- + .../update_client/update_query_params.cc | 5 +- .../about_flags_cc/Webstore-protection.inc | 19 ++++++ .../browser/api/management/management_api.cc | 62 +++++++++++++------ .../browser/updater/extension_downloader.cc | 53 ++++++---------- @@ -49,7 +49,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html extensions/common/extension_features.cc | 14 +++++ extensions/common/extension_features.h | 2 + .../definitions/developer_private.d.ts | 2 + - 36 files changed, 254 insertions(+), 108 deletions(-) + 36 files changed, 253 insertions(+), 107 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp @@ -71,7 +71,7 @@ diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings. diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc --- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc -@@ -24,6 +24,12 @@ +@@ -25,6 +25,12 @@ #include "extensions/browser/app_window/app_window_registry.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) @@ -84,7 +84,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a namespace extensions { namespace developer = api::developer_private; -@@ -65,6 +71,28 @@ DeveloperPrivateAPI::GetFactoryInstance() { +@@ -66,6 +72,28 @@ DeveloperPrivateAPI::GetFactoryInstance() { return g_developer_private_api_factory.Pointer(); } @@ -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 -@@ -352,6 +352,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { +@@ -354,6 +354,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)); -@@ -488,7 +489,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -490,7 +491,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)) { -@@ -502,6 +503,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -504,6 +505,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { ->MarkNoticeAsAcknowledgedGlobally(); } @@ -754,19 +754,17 @@ diff --git a/chrome/common/extensions/api/developer_private.idl b/chrome/common/ diff --git a/components/update_client/update_query_params.cc b/components/update_client/update_query_params.cc --- a/components/update_client/update_query_params.cc +++ b/components/update_client/update_query_params.cc -@@ -85,9 +85,8 @@ UpdateQueryParamsDelegate* g_delegate = nullptr; +@@ -87,8 +87,7 @@ UpdateQueryParamsDelegate* g_delegate = nullptr; // static std::string UpdateQueryParams::Get(ProdId prod) { return base::StringPrintf( -- "os=%s&arch=%s&os_arch=%s&nacl_arch=%s&prod=%s%s&acceptformat=crx3,puff", -- kOs, kArch, base::SysInfo().OperatingSystemArchitecture().c_str(), -- GetNaclArch(), GetProdIdString(prod), +- "os=%s&arch=%s&os_arch=%s&prod=%s%s&acceptformat=crx3,puff", kOs, kArch, +- base::SysInfo().OperatingSystemArchitecture().c_str(), + "prod=%s%s&acceptformat=crx3", -+ GetProdIdString(prod), + GetProdIdString(prod), g_delegate ? g_delegate->GetExtraParams().c_str() : ""); } - -@@ -148,7 +147,7 @@ const char* UpdateQueryParams::GetNaclArch() { +@@ -120,7 +119,7 @@ const char* UpdateQueryParams::GetArch() { // static std::string UpdateQueryParams::GetProdVersion() { @@ -1203,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 -@@ -256,4 +256,18 @@ BASE_FEATURE(kAvoidCloneArgsOnExtensionFunctionDispatch, +@@ -242,4 +242,18 @@ BASE_FEATURE(kAvoidCloneArgsOnExtensionFunctionDispatch, "AvoidCloneArgsOnExtensionFunctionDispatch", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1225,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 -@@ -287,6 +287,8 @@ BASE_DECLARE_FEATURE(kOptimizeServiceWorkerStartRequests); +@@ -271,6 +271,8 @@ BASE_DECLARE_FEATURE(kOptimizeServiceWorkerStartRequests); // TODO(crbug.com/424432184): Clean up when experiment is complete. BASE_DECLARE_FEATURE(kAvoidCloneArgsOnExtensionFunctionDispatch); 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 e064508b..e6c7bcd6 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 -@@ -831,6 +831,10 @@ void PreflightController::ClearCorsPreflightCache( +@@ -762,6 +762,10 @@ void PreflightController::ClearCorsPreflightCache( cache_.ClearCache(std::move(url_filter)); } @@ -79,7 +79,7 @@ diff --git a/services/network/cors/preflight_result.cc b/services/network/cors/p diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1373,6 +1373,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time, +@@ -1374,6 +1374,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 00f110af..567c138b 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc --- a/components/embedder_support/user_agent_utils.cc +++ b/components/embedder_support/user_agent_utils.cc -@@ -207,9 +207,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( +@@ -202,9 +202,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( bool parse_result = base::StringToInt(major_version, &major_version_number); DCHECK(parse_result); std::optional brand; @@ -90,7 +90,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1380,6 +1380,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1674,6 +1674,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -255,7 +255,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -522,6 +522,11 @@ +@@ -532,6 +532,11 @@ name: "AriaNotifyV2", status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"}, }, @@ -267,7 +267,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 { name: "AriaRowColIndexText", status: "stable", -@@ -896,8 +901,7 @@ +@@ -924,8 +929,7 @@ // Allows top-level sites to restrict collection of high-entropy UA client // hints (from 3Ps, or itself) via the getHighEntropyValues API. // crbug.com/385161047 diff --git a/build/patches/Close-Sessions-On-Ip-Change.patch b/build/patches/Close-Sessions-On-Ip-Change.patch index a3504137..23508957 100644 --- a/build/patches/Close-Sessions-On-Ip-Change.patch +++ b/build/patches/Close-Sessions-On-Ip-Change.patch @@ -22,7 +22,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc --- a/components/network_session_configurator/browser/network_session_configurator.cc +++ b/components/network_session_configurator/browser/network_session_configurator.cc -@@ -221,9 +221,8 @@ quic::QuicTagVector GetQuicClientConnectionOptions( +@@ -222,9 +222,8 @@ quic::QuicTagVector GetQuicClientConnectionOptions( bool ShouldQuicCloseSessionsOnIpChange( const VariationParameters& quic_trial_params) { @@ -34,7 +34,7 @@ diff --git a/components/network_session_configurator/browser/network_session_con } bool ShouldQuicGoAwaySessionsOnIpChange( -@@ -304,11 +303,8 @@ bool ShouldQuicEstimateInitialRtt( +@@ -305,11 +304,8 @@ bool ShouldQuicEstimateInitialRtt( bool ShouldQuicMigrateSessionsOnNetworkChangeV2( const VariationParameters& quic_trial_params) { @@ -88,7 +88,7 @@ new file mode 100644 diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -557,7 +557,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, +@@ -581,7 +581,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, // NetworkChangeNotifier::AreNetworkHandlesSupported). #if BUILDFLAG(IS_ANDROID) inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default = diff --git a/build/patches/Compress-libchrome-to-free-up-some-space.patch b/build/patches/Compress-libchrome-to-free-up-some-space.patch index 82920efa..ef077093 100644 --- a/build/patches/Compress-libchrome-to-free-up-some-space.patch +++ b/build/patches/Compress-libchrome-to-free-up-some-space.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni -@@ -665,6 +665,7 @@ template("chrome_common_apk_or_module_tmpl") { +@@ -677,6 +677,7 @@ template("chrome_common_apk_or_module_tmpl") { [ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ] loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ] library_always_compress += [ "libchrome_crashpad_handler.so" ] diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 48f572ad..db828f2f 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -45,8 +45,8 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSettingImpl.java | 412 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + .../ContentSettingsResources.java | 37 +- - .../site_settings/SingleCategorySettings.java | 60 ++- - .../site_settings/SingleWebsiteSettings.java | 58 ++- + .../site_settings/SingleCategorySettings.java | 57 ++- + .../site_settings/SingleWebsiteSettings.java | 53 ++- .../site_settings/SiteSettings.java | 33 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + @@ -85,7 +85,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 13 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 74 files changed, 1965 insertions(+), 112 deletions(-) + 74 files changed, 1962 insertions(+), 107 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -99,7 +99,7 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -69,6 +69,10 @@ import org.chromium.url.GURL; +@@ -70,6 +70,10 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Set; @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { private final Context mContext; -@@ -239,7 +243,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -247,7 +251,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -377,6 +381,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -385,6 +389,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc --- a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc -@@ -191,7 +191,7 @@ namespace { +@@ -190,7 +190,7 @@ namespace { void GetGuestViewDefaultContentSettingRules( bool incognito, RendererContentSettingRules* rules) { @@ -152,7 +152,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -295,6 +295,7 @@ build_webui("build") { +@@ -312,6 +312,7 @@ build_webui("build") { "privacy_sandbox/privacy_sandbox_browser_proxy.ts", "relaunch_mixin.ts", "reset_page/reset_browser_proxy.ts", @@ -160,7 +160,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "route.ts", "router.ts", "safety_hub/safety_hub_browser_proxy.ts", -@@ -306,7 +307,6 @@ build_webui("build") { +@@ -326,7 +327,6 @@ build_webui("build") { "site_settings/constants.ts", "site_settings/site_settings_mixin.ts", "site_settings/site_settings_prefs_browser_proxy.ts", @@ -171,14 +171,12 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1339,6 +1339,7 @@ +@@ -1342,4 +1342,5 @@ +
- -
[[dbdDeletionConfirmationToastLabel_]]
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts @@ -190,7 +188,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -79,8 +80,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -78,8 +79,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -296,7 +294,7 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html --- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html +++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.html -@@ -53,5 +53,17 @@ +@@ -54,5 +54,17 @@ icon="[[blockOptionIcon]]" no-collapse> @@ -478,13 +476,12 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis import {ChooserType, ContentSetting, ContentSettingsTypes, SiteSettingSource} from './constants.js'; import {getTemplate} from './site_details_permission.html.js'; -@@ -293,15 +294,28 @@ export class SiteDetailsPermissionElement extends +@@ -293,14 +294,27 @@ export class SiteDetailsPermissionElement extends return ''; } + let obj = this.getSettingData(category); - if (defaultSetting === ContentSetting.ASK || - defaultSetting === ContentSetting.IMPORTANT_CONTENT) { + if (defaultSetting === ContentSetting.ASK) { + if (obj) { + let v = this.askSettingString_(category, ""); + if (v !== "") return "(Default) " + v; @@ -507,7 +504,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis if (this.useCustomSoundLabels_(category)) { return this.i18n('siteSettingsActionMuteDefault'); } -@@ -320,12 +334,40 @@ export class SiteDetailsPermissionElement extends +@@ -319,12 +333,40 @@ export class SiteDetailsPermissionElement extends private blockSettingString_( category: ContentSettingsTypes, blockString: string, muteString: string): string { @@ -548,7 +545,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis /** * @return true if |this| should be hidden. */ -@@ -416,6 +458,8 @@ export class SiteDetailsPermissionElement extends +@@ -415,6 +457,8 @@ export class SiteDetailsPermissionElement extends private showAskSetting_( category: ContentSettingsTypes, setting: ContentSetting, source: SiteSettingSource): boolean { @@ -736,16 +733,16 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -1732,6 +1732,7 @@ static_library("ui") { +@@ -1634,6 +1634,7 @@ static_library("ui") { "//components/commerce/core/mojom:mojo_bindings", "//components/commerce/core/webui", - "//components/endpoint_fetcher:endpoint_fetcher", + "//components/endpoint_fetcher", + "//components/content_settings/core/browser:browser", "//components/enterprise/common:files_scan_data", "//components/feedback/proto", "//components/headless/policy", -@@ -4950,6 +4951,7 @@ static_library("ui") { - "//components/power_bookmarks/core:core", +@@ -4821,6 +4822,7 @@ static_library("ui") { + "//components/power_bookmarks/core", "//components/power_bookmarks/storage", "//components/prefs", + "//components/strings:components_strings_grit", @@ -772,7 +769,7 @@ diff --git a/chrome/browser/ui/views/controls/rich_controls_container_view.h b/c diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc -@@ -59,6 +59,7 @@ +@@ -58,6 +58,7 @@ #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout.h" #include "ui/views/vector_icons.h" @@ -780,7 +777,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -284,8 +285,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -282,8 +283,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -803,7 +800,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -300,11 +313,16 @@ void PageInfoMainView::SetPermissionInfo( +@@ -298,11 +311,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -820,7 +817,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b toggle_row->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kStretch); syncable_permission_rows_.emplace(permission.type, toggle_row); -@@ -312,6 +330,8 @@ void PageInfoMainView::SetPermissionInfo( +@@ -310,6 +328,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -829,7 +826,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -322,6 +342,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -320,6 +340,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -852,7 +849,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -292,7 +294,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -290,7 +292,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -867,7 +864,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -593,6 +602,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -591,6 +600,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( icon = &vector_icons::kPrinterIcon; break; default: @@ -888,7 +885,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome/browser/ui/views/page_info/page_info_view_factory.h --- a/chrome/browser/ui/views/page_info/page_info_view_factory.h +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.h -@@ -100,6 +100,11 @@ class PageInfoViewFactory { +@@ -97,6 +97,11 @@ class PageInfoViewFactory { const PageInfo::PermissionInfo& info, bool blocked_on_system_level = false); @@ -1216,7 +1213,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3842,6 +3846,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3912,6 +3916,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1286,7 +1283,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_types.h" @@ -261,13 +263,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::SUSPICIOUS_NOTIFICATION_IDS, nullptr}, + {ContentSettingsType::DEVICE_ATTRIBUTES, nullptr}, }); -static_assert( @@ -1354,7 +1351,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; } -@@ -673,6 +694,13 @@ std::vector GetVisiblePermissionCategories( +@@ -668,6 +689,13 @@ std::vector GetVisiblePermissionCategories( base_types->push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -1534,7 +1531,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -151,6 +151,23 @@ android_library("java") { +@@ -156,6 +156,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1558,7 +1555,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -200,6 +217,7 @@ robolectric_library("junit") { +@@ -205,6 +222,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1569,7 +1566,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml --- a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml +++ b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml -@@ -189,4 +189,11 @@ The order of the following items is from: http://crbug.com/610358. +@@ -193,4 +193,11 @@ The order of the following items is from: http://crbug.com/610358. android:title="@string/safety_hub_autorevocation_toggle_title" android:summary="@string/safety_hub_autorevocation_toggle_summary" /> @@ -2251,16 +2248,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -636,6 +657,8 @@ public class ContentSettingsResources { - R.string.website_settings_vr_ask, - R.string.website_settings_vr_block); +@@ -662,6 +683,8 @@ public class ContentSettingsResources { + R.string.website_settings_window_management_ask, + R.string.website_settings_window_management_block); } + ResourceItem ri = BromiteCustomContentSettingImpl.getResourceItem(contentType); + if (ri != null) return ri; assert false; // NOTREACHED return assumeNonNull(null); } -@@ -794,6 +817,14 @@ public class ContentSettingsResources { +@@ -820,6 +843,14 @@ public class ContentSettingsResources { return getResourceItem(contentType).getDefaultDisabledValue(); } @@ -2275,7 +2272,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -968,6 +999,8 @@ public class ContentSettingsResources { +@@ -994,6 +1025,8 @@ public class ContentSettingsResources { */ public static int @Nullable [] getTriStateSettingDescriptionIDs( int contentType, boolean isPermissionSiteSettingsRadioButtonFeatureEnabled) { @@ -2287,7 +2284,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -343,6 +343,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -344,6 +344,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment website.site() .getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -2298,7 +2295,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -531,6 +535,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -532,6 +536,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2306,7 +2303,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -566,7 +571,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -567,7 +572,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2316,7 +2313,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -578,12 +584,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -579,12 +585,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2358,34 +2355,37 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // OnPreferenceClickListener: -@@ -962,21 +981,18 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - default: +@@ -963,17 +982,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment break; } -- -- int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); -- assert allowSpecifyingExceptions == (exceptionDialogMessageResourceId != 0); + + Boolean allow = BromiteCustomContentSettingImpl.allowSpecifyingExceptions(mCategory); -+ if (allow != null) allowSpecifyingExceptions = (boolean)allow; - if (allowSpecifyingExceptions) { ++ if (allow != null) shouldAddExceptionButton = (boolean)allow; ++ + int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); + assert shouldAddExceptionButton == (exceptionDialogMessageResourceId != 0); + + if (shouldAddExceptionButton) { + int blockAddingExceptionsReasonResourceId = + mCategory.getBlockAddingExceptionsReasonResourceId(); - boolean enableAddExceptionButton = - (!mCategory.isManaged() -- || mCategory.getType() -- == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES); -+ int exceptionDialogMessageResourceId = getAddExceptionDialogMessageResourceId(); -+ assert exceptionDialogMessageResourceId != 0; - getPreferenceScreen() - .addPreference( - new AddExceptionPreference( +- || mCategory.getType() +- == SiteSettingsCategory.Type.THIRD_PARTY_COOKIES) +- && blockAddingExceptionsReasonResourceId == 0; + String exceptionDialogMessage = + exceptionDialogMessageResourceId != 0 + ? getString(exceptionDialogMessageResourceId) +@@ -984,7 +1001,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getStyledContext(), ADD_EXCEPTION_KEY, - getString(exceptionDialogMessageResourceId), + exceptionDialogMessage, - enableAddExceptionButton, -+ true, ++ /*enableAddExceptionButton*/ true, mCategory, this)); - } -@@ -1152,8 +1168,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + +@@ -1168,8 +1185,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2402,7 +2402,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1302,7 +1326,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1320,7 +1345,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (res_id != -1) { infoText.setSummary(res_id); } else { @@ -2415,7 +2415,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1341,6 +1369,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1359,6 +1388,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2423,7 +2423,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c maybeShowReasonToggleDisabled(screen); -@@ -1553,6 +1582,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1571,6 +1601,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType); } triStateToggle.initialize( @@ -2431,7 +2431,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setting, descriptionIds, iconIds, -@@ -1712,6 +1742,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1730,6 +1761,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2449,7 +2449,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -57,6 +57,7 @@ import java.util.Collection; +@@ -59,6 +59,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2457,21 +2457,20 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ @NullMarked -@@ -188,7 +189,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - case ContentSettingsType.LOCAL_NETWORK_ACCESS: - return "local_network_access"; +@@ -192,7 +193,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + case ContentSettingsType.WINDOW_MANAGEMENT: + return "window_management_permission_list"; default: - return null; + return BromiteCustomContentSettingImpl.getProfilePrefKey(type); } } -@@ -594,8 +595,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -598,14 +599,27 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { Preference permissionsHeaderPref = findPreference(PREF_PERMISSIONS_HEADER); mMaxPermissionOrder = permissionsHeaderPref.getOrder(); - for (@ContentSettingsType.EnumType int type : SiteSettingsUtil.SETTINGS_ORDER) { -- Preference preference = new ChromeSwitchPreference(getStyledContext()); + List order = BromiteCustomContentSettingImpl.getSettingsOrder(); + for (@ContentSettingsType.EnumType int type : order) { + @ContentSettingValues @Nullable Integer value = @@ -2481,20 +2480,27 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + value = WebsitePreferenceBridge.getDefaultContentSetting( + getSiteSettingsDelegate().getBrowserContextHandle(), type); + } -+ Preference preference = + Preference preference = + BromiteCustomContentSettingImpl + .createWebSitePreference(type, getStyledContext(), value); + if (preference == null) { -+ preference = new ChromeSwitchPreference(getStyledContext()); ++ preference = + (isOneTime(type) + && PermissionsAndroidFeatureMap.isEnabled( + PermissionsAndroidFeatureList + .APPROXIMATE_GEOLOCATION_PERMISSION)) + ? new ChromeImageViewPreference(getStyledContext()) + : new ChromeSwitchPreference(getStyledContext()); + } preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1280,20 +1294,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1290,7 +1304,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { - if (value == null) return; ++ @ContentSettingsType.EnumType + int content_type = getContentSettingsTypeFromPreferenceKey(preference.getKey()); + BromiteCustomContentSetting cs = + BromiteCustomContentSettingImpl.getContentSetting(content_type); @@ -2505,33 +2511,37 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + getSiteSettingsDelegate().getBrowserContextHandle(), content_type); + } setUpPreferenceCommon(preference, value); - -- ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference; -- @ContentSettingsType.EnumType -- int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -- switchPreference.setChecked(value == getEnabledValue(contentType)); -+ Preference switchPreference = preference; -+ if (preference instanceof ChromeSwitchPreference) { -+ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSettingValues.BLOCK); -+ } else { -+ BromiteCustomContentSettingImpl.setWebSitePreferenceValue(content_type, preference, value); -+ } - switchPreference.setSummary( + preference.setOnPreferenceChangeListener(this); + @ContentSettingsType.EnumType +@@ -1298,7 +1321,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + preference.setSummary( isEmbargoed ? getString(R.string.automatically_blocked) - : getString(ContentSettingsResources.getCategorySummary(value, isOneTime))); + : getString(ContentSettingsResources.getCategorySummary(content_type, value, isOneTime))); - switchPreference.setOnPreferenceChangeListener(this); -- if (contentType == mHighlightedPermission) { -- switchPreference.setBackgroundColor( -+ @ContentSettingsType.EnumType -+ int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -+ if (preference instanceof ChromeSwitchPreference && contentType == mHighlightedPermission) { -+ ((ChromeSwitchPreference)switchPreference).setBackgroundColor( - AppCompatResources.getColorStateList(getContext(), mHighlightColor) - .getDefaultColor()); - } -@@ -1518,14 +1544,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + if (preference instanceof ChromeImageViewPreference) { + ChromeImageViewPreference oneTimePreference = (ChromeImageViewPreference) preference; + oneTimePreference.setImageView( +@@ -1313,10 +1336,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + oneTimePreference.setBackgroundColor(mHighlightColor); + } + } else { +- ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference; +- switchPreference.setChecked(value == getEnabledValue(contentType)); +- if (contentType == mHighlightedPermission) { +- switchPreference.setBackgroundColor( ++ Preference switchPreference = preference; ++ if (preference instanceof ChromeSwitchPreference) { ++ ((ChromeSwitchPreference)switchPreference).setChecked(value != ContentSettingValues.BLOCK); ++ } else { ++ BromiteCustomContentSettingImpl.setWebSitePreferenceValue(content_type, preference, value); ++ } ++ if (preference instanceof ChromeSwitchPreference && contentType == mHighlightedPermission) { ++ ((ChromeSwitchPreference)switchPreference).setBackgroundColor( + AppCompatResources.getColorStateList(getContext(), mHighlightColor) + .getDefaultColor()); + } +@@ -1542,14 +1569,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { permission = (Boolean) newValue ? getEnabledValue(type) : ContentSettingValues.BLOCK; } else { @@ -2622,25 +2632,25 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java -@@ -79,7 +79,7 @@ public class SiteSettingsCategory { - Type.JAVASCRIPT_OPTIMIZER, +@@ -80,7 +80,7 @@ public class SiteSettingsCategory { Type.SERIAL_PORT, Type.LOCAL_NETWORK_ACCESS, + Type.WINDOW_MANAGEMENT, - Type.NUM_ENTRIES + Type.NUM_ENTRIES_CHROMIUM }) @Retention(RetentionPolicy.SOURCE) public @interface Type { -@@ -123,7 +123,7 @@ public class SiteSettingsCategory { - int LOCAL_NETWORK_ACCESS = 35; +@@ -125,7 +125,7 @@ public class SiteSettingsCategory { + int WINDOW_MANAGEMENT = 36; /** Number of handled categories used for calculating array sizes. */ -- int NUM_ENTRIES = 36; -+ int NUM_ENTRIES_CHROMIUM = 36; +- int NUM_ENTRIES = 37; ++ int NUM_ENTRIES_CHROMIUM = 37; } private final BrowserContextHandle mBrowserContextHandle; -@@ -174,6 +174,9 @@ public class SiteSettingsCategory { +@@ -176,6 +176,9 @@ public class SiteSettingsCategory { } else { permission = ""; } @@ -2650,7 +2660,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return new SiteSettingsCategory(browserContextHandle, type, permission); } -@@ -182,7 +185,7 @@ public class SiteSettingsCategory { +@@ -184,7 +187,7 @@ public class SiteSettingsCategory { @ContentSettingsType.EnumType int contentSettingsType) { assert contentSettingsType != -1; assert Type.ALL_SITES == 0; @@ -2659,7 +2669,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSettingsType(i) == contentSettingsType) { return createFromType(browserContextHandle, i); } -@@ -193,7 +196,7 @@ public class SiteSettingsCategory { +@@ -195,7 +198,7 @@ public class SiteSettingsCategory { public static @Nullable SiteSettingsCategory createFromPreferenceKey( BrowserContextHandle browserContextHandle, String preferenceKey) { assert Type.ALL_SITES == 0; @@ -2668,7 +2678,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (preferenceKey(i).equals(preferenceKey)) { return createFromType(browserContextHandle, i); } -@@ -274,8 +277,7 @@ public class SiteSettingsCategory { +@@ -278,8 +281,7 @@ public class SiteSettingsCategory { case Type.TRACKING_PROTECTION: return ContentSettingsType.DEFAULT; // Conversion unavailable. } @@ -2678,7 +2688,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } /** -@@ -372,8 +374,12 @@ public class SiteSettingsCategory { +@@ -378,8 +380,12 @@ public class SiteSettingsCategory { case Type.ZOOM: return "zoom"; default: @@ -2694,7 +2704,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java -@@ -203,6 +203,8 @@ public interface SiteSettingsDelegate { +@@ -208,6 +208,8 @@ public interface SiteSettingsDelegate { */ String getRelatedWebsiteSetOwner(String memberOrigin); @@ -2769,19 +2779,19 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -115,7 +115,7 @@ public class WebsitePermissionsFetcher { - case ContentSettingsType.USB_GUARD: - return WebsitePermissionsType.CHOSEN_OBJECT_INFO; +@@ -124,7 +124,7 @@ public class WebsitePermissionsFetcher { + } + break; default: - return null; + return BromiteCustomContentSettingImpl.getPermissionsType(contentSettingsType); } + return null; } - diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -321,7 +321,7 @@ public class WebsitePreferenceBridge { +@@ -317,7 +317,7 @@ public class WebsitePreferenceBridge { case ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER: return true; default: @@ -2790,7 +2800,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -337,7 +337,6 @@ public class WebsitePreferenceBridge { +@@ -333,7 +333,6 @@ public class WebsitePreferenceBridge { public static boolean isCategoryEnabled( BrowserContextHandle browserContextHandle, @ContentSettingsType.EnumType int contentSettingsType) { @@ -2877,7 +2887,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn -@@ -77,6 +77,13 @@ static_library("browser") { +@@ -83,6 +83,13 @@ static_library("browser") { } configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -2900,7 +2910,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -16,6 +16,7 @@ +@@ -19,6 +19,7 @@ #include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/features.h" @@ -2908,10 +2918,10 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -864,6 +865,7 @@ void ContentSettingsRegistry::Init() { - WebsiteSettingsRegistry::PLATFORM_ANDROID, - ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -872,6 +873,7 @@ void ContentSettingsRegistry::Init() { + WebsiteSettingsRegistry::PLATFORM_CHROMEOS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +#include "components/content_settings/core/browser/bromite_content_settings.inc" } @@ -2919,7 +2929,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -222,11 +222,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -224,11 +224,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -2935,15 +2945,15 @@ diff --git a/components/content_settings/core/browser/content_settings_uma_util. diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -16,6 +16,7 @@ - #include "build/build_config.h" - #include "components/content_settings/core/browser/content_settings_registry.h" - #include "components/content_settings/core/browser/host_content_settings_map.h" +@@ -19,6 +19,7 @@ + #include "components/content_settings/core/browser/permission_settings_info.h" + #include "components/content_settings/core/browser/permission_settings_registry.h" + #include "components/content_settings/core/browser/website_settings_registry.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" -@@ -125,6 +126,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { +@@ -133,6 +134,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { void GetRendererContentSettingRules(const HostContentSettingsMap* map, RendererContentSettingRules* rules) { @@ -3060,7 +3070,7 @@ diff --git a/components/content_settings/core/common/BUILD.gn b/components/conte } source_set("unit_tests") { -@@ -91,6 +98,7 @@ mojom("content_settings_types") { +@@ -90,6 +97,7 @@ mojom("content_settings_types") { sources = [ "content_settings_types.mojom" ] public_deps = [ "//mojo/public/mojom/base" ] @@ -3077,11 +3087,12 @@ new file mode 100644 diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc --- a/components/content_settings/core/common/content_settings.cc +++ b/components/content_settings/core/common/content_settings.cc -@@ -16,10 +16,11 @@ +@@ -18,11 +18,12 @@ #include "components/content_settings/core/common/content_settings_metadata.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" +#include "components/content_settings/core/browser/website_settings_registry.h" + #include "third_party/abseil-cpp/absl/functional/overload.h" namespace { @@ -3090,7 +3101,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo const GURL& primary_url) { std::erase_if(settings, [&primary_url](const ContentSettingPatternSource& source) { -@@ -98,6 +99,13 @@ std::ostream& operator<<(std::ostream& os, +@@ -106,6 +107,13 @@ std::ostream& operator<<(std::ostream& os, // static bool RendererContentSettingRules::IsRendererContentSetting( ContentSettingsType content_type) { @@ -3104,7 +3115,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo return content_type == ContentSettingsType::IMAGES || content_type == ContentSettingsType::JAVASCRIPT || content_type == ContentSettingsType::POPUPS || -@@ -107,7 +115,10 @@ bool RendererContentSettingRules::IsRendererContentSetting( +@@ -115,7 +123,10 @@ bool RendererContentSettingRules::IsRendererContentSetting( void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( const GURL& outermost_main_frame_url) { @@ -3116,7 +3127,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo } RendererContentSettingRules::RendererContentSettingRules() = default; -@@ -127,7 +138,20 @@ RendererContentSettingRules& RendererContentSettingRules::operator=( +@@ -135,7 +146,20 @@ RendererContentSettingRules& RendererContentSettingRules::operator=( RendererContentSettingRules&& rules) = default; bool RendererContentSettingRules::operator==( @@ -3141,7 +3152,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -74,10 +74,22 @@ std::ostream& operator<<(std::ostream& os, +@@ -100,10 +100,22 @@ std::ostream& operator<<(std::ostream& os, typedef std::vector ContentSettingsForOneType; @@ -3167,7 +3178,7 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -74,6 +74,11 @@ struct RuleMetaData { +@@ -73,6 +73,11 @@ struct RuleMetaData { mojo_base.mojom.Value rule_options; }; @@ -3179,7 +3190,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co // This mirrors the C++ type in content_settings.h. struct ContentSettingPatternSource { ContentSettingsPattern primary_pattern; -@@ -87,5 +92,6 @@ struct ContentSettingPatternSource { +@@ -86,5 +91,6 @@ struct ContentSettingPatternSource { // This mirrors the C++ type in content_settings.h. // TODO(crbug.com/40282541): This should be removed. struct RendererContentSettingRules { @@ -3189,7 +3200,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -120,12 +120,22 @@ bool StructTraitsmetadata) && data.ReadSource(&out->source); } @@ -3254,10 +3265,10 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -491,5 +491,6 @@ enum ContentSettingsType { - // site. Used for recovering notification contents from the database if the - // user decides they would like to see all of these notifications. - SUSPICIOUS_NOTIFICATION_IDS, +@@ -498,5 +498,6 @@ enum ContentSettingsType { + // Setting for enabling the Device Attributes API. Spec link: + // https://wicg.github.io/WebApiDevice/device_attributes/ + DEVICE_ATTRIBUTES, +#include "components/content_settings/core/common/bromite_content_settings.inc" }; // LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue) @@ -3419,7 +3430,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/page_info/android/page_info_client.h" -@@ -169,6 +170,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -184,6 +185,15 @@ void PageInfoControllerAndroid::SetPermissionInfo( permissions_to_display.push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -3435,7 +3446,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -228,6 +238,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -243,6 +253,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -3461,7 +3472,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1314,6 +1315,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1317,6 +1318,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3476,7 +3487,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1430,7 +1439,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1433,7 +1442,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3508,7 +3519,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -333,6 +334,13 @@ void CreateOppositeToDefaultSiteException( +@@ -317,6 +318,13 @@ void CreateOppositeToDefaultSiteException( std::u16string GetPermissionAskStateString(ContentSettingsType type) { int message_id = kInvalidResourceID; @@ -3522,7 +3533,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in switch (type) { case ContentSettingsType::GEOLOCATION: message_id = IDS_PAGE_INFO_STATE_TEXT_LOCATION_ASK; -@@ -626,6 +634,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -615,6 +623,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3535,7 +3546,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -636,6 +650,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -625,6 +639,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3548,7 +3559,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1077,6 +1097,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1051,6 +1071,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } @@ -3629,7 +3640,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -43,6 +43,7 @@ +@@ -42,6 +42,7 @@ #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink-forward.h" #include "third_party/blink/public/mojom/permissions_policy/policy_disposition.mojom-blink-forward.h" #include "third_party/blink/public/mojom/v8_cache_options.mojom-blink-forward.h" @@ -3637,7 +3648,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context #include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" -@@ -102,6 +103,10 @@ class SecurityOrigin; +@@ -101,6 +102,10 @@ class SecurityOrigin; class ScriptState; class ScriptWrappable; class TrustedTypePolicyFactory; diff --git a/build/patches/Cromite-Branding--improve-settings-ui.patch b/build/patches/Cromite-Branding--improve-settings-ui.patch index ddfc9941..4a63b5b6 100644 --- a/build/patches/Cromite-Branding--improve-settings-ui.patch +++ b/build/patches/Cromite-Branding--improve-settings-ui.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -646,7 +646,7 @@ chrome_java_resources = [ +@@ -634,7 +634,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", @@ -218,8 +218,8 @@ new file mode 100644 + app:isPreferenceVisible="false" /> + + @@ -13171,7 +13171,7 @@ e)fqMZZ`3a)Ds&5H CreateProfilePrefStoreManager( +@@ -281,10 +282,7 @@ std::unique_ptr CreateProfilePrefStoreManager( const base::FilePath& profile_path) { std::string seed; CHECK(ui::ResourceBundle::HasSharedInstance()); @@ -13283,7 +13283,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 -@@ -2524,7 +2524,7 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2389,7 +2389,7 @@ Your Google account may have other forms of browsing history like searches and a About Chrome @@ -13295,7 +13295,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 -@@ -140,6 +140,7 @@ bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model, +@@ -140,6 +140,7 @@ bool AreNewChromeLabsExperimentsAvailable(Profile* profile) { } bool IsChromeLabsEnabled() { @@ -13339,7 +13339,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 @@ +@@ -1005,7 +1005,7 @@ diff --git a/build/patches/Customize-selection-popup.patch b/build/patches/Customize-selection-popup.patch index ced61dfa..00c42733 100644 --- a/build/patches/Customize-selection-popup.patch +++ b/build/patches/Customize-selection-popup.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/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java -@@ -166,9 +166,7 @@ public class ChromeActionModeHandler { +@@ -173,9 +173,7 @@ public class ChromeActionModeHandler { | ActionModeCallbackHelper.MENU_ITEM_SHARE; // Disable options that expose additional Chrome functionality prior to the FRE being // completed (i.e. creation of a new tab). @@ -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 -@@ -846,10 +846,17 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -884,10 +884,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 -@@ -202,6 +202,14 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat +@@ -258,6 +258,14 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat // Skip opening a new Tab if it doesn't make sense. if (mTab.isClosing()) return false; @@ -74,12 +74,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activit + tabLaunchType = TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP; + } + + WindowAndroid window = mTab.getWindowAndroid(); boolean openingPopup = - PopupCreator.arePopupsEnabled(mActivity) - && (disposition == WindowOpenDisposition.NEW_POPUP); -@@ -225,7 +233,7 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat - tabCreator.createTabWithWebContents( + window != null +@@ -288,7 +296,7 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat mTab, + /* shouldPin= */ false, webContents, - TabLaunchType.FROM_LONGPRESS_FOREGROUND, + tabLaunchType, @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activit 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 +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java -@@ -18,6 +18,7 @@ import androidx.annotation.Nullable; +@@ -18,6 +18,7 @@ import android.view.ViewGroup; import androidx.annotation.VisibleForTesting; import org.chromium.base.Callback; @@ -97,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo import org.chromium.base.ObserverList; import org.chromium.base.TraceEvent; import org.chromium.base.supplier.ObservableSupplier; -@@ -242,6 +243,13 @@ public class LayoutManagerImpl +@@ -246,6 +247,13 @@ public class LayoutManagerImpl != TabLaunchType .FROM_COLLABORATION_BACKGROUND_IN_GROUP) || (!getTabModelSelector().isIncognitoSelected() && incognito); @@ -114,8 +114,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -381,8 +381,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { - public void onOpenImageInNewTab(GURL url, Referrer referrer) { +@@ -385,8 +385,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { + public void onOpenImageInNewTab(GURL url, @Nullable Referrer referrer) { LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); loadUrlParams.setReferrer(referrer); + @TabLaunchType int type = TabLaunchType.FROM_LONGPRESS_BACKGROUND; @@ -132,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -29,6 +29,7 @@ import androidx.core.view.WindowInsetsCompat; +@@ -30,6 +30,7 @@ import androidx.core.view.WindowInsetsCompat; import org.chromium.base.BuildInfo; import org.chromium.base.Callback; import org.chromium.base.CallbackController; @@ -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; -@@ -815,11 +816,16 @@ public class RootUiCoordinator +@@ -842,11 +843,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 5f32db1c..8e341a00 100644 --- a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -23,11 +23,11 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re android:textAppearance="@style/TextAppearance.SearchBoxText" + android:inputType="textUri" android:hint="@string/omnibox_empty_hint" - android:importantForAutofill="no" /> + android:importantForAutofill="no"/> diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -321,8 +321,17 @@ class LocationBarMediator +@@ -307,8 +307,17 @@ class LocationBarMediator if (!mUrlFocusedWithPastedText && !shouldRetainOmniboxOnFocus && mLocationBarLayout.shouldClearTextOnFocus()) { @@ -58,7 +58,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import android.os.SystemClock; import android.text.Editable; import android.text.InputType; -@@ -113,6 +114,7 @@ public class UrlBar extends AutocompleteEditText { +@@ -115,6 +116,7 @@ public class UrlBar extends AutocompleteEditText { private boolean mAllowFocus = true; private boolean mShouldSendTypingStartedEvent; @@ -66,7 +66,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mPendingScroll; private boolean mIsInCct; -@@ -339,6 +341,28 @@ public class UrlBar extends AutocompleteEditText { +@@ -352,6 +354,28 @@ public class UrlBar extends AutocompleteEditText { fixupTextDirection(); mShouldSendTypingStartedEvent = focused; diff --git a/build/patches/Disable-Accessibility-service-by-default.patch b/build/patches/Disable-Accessibility-service-by-default.patch index bd529719..a0904552 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 -@@ -1102,6 +1102,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa +@@ -1125,6 +1125,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa structure.setChildCount(0); return; } diff --git a/build/patches/Disable-Android-AppRestrictions.patch b/build/patches/Disable-Android-AppRestrictions.patch index 40eeaa67..ec6aa8b3 100644 --- a/build/patches/Disable-Android-AppRestrictions.patch +++ b/build/patches/Disable-Android-AppRestrictions.patch @@ -32,15 +32,15 @@ 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 -@@ -28,6 +28,7 @@ import org.chromium.build.annotations.MonotonicNonNull; - import org.chromium.build.annotations.NullMarked; +@@ -31,6 +31,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; + import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.components.policy.AppRestrictionsProvider; import java.util.LinkedList; - import java.util.Queue; -@@ -109,6 +110,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo { + import java.util.List; +@@ -113,6 +114,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo { new AsyncTask() { // TODO: Unit test this function. https://crbug.com/1099262 private OwnedState calculateIsRunningOnManagedProfile(Context context) { @@ -48,9 +48,9 @@ diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome + return new OwnedState(/*hasDeviceOwnerApp*/false, + /*hasProfileOwnerApp*/false); + } + long startTime = SystemClock.elapsedRealtime(); boolean hasProfileOwnerApp = false; boolean hasDeviceOwnerApp = false; - PackageManager packageManager = context.getPackageManager(); diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn diff --git a/build/patches/Disable-Android-Tab-Declutter.patch b/build/patches/Disable-Android-Tab-Declutter.patch index b42e2745..d42754f1 100644 --- a/build/patches/Disable-Android-Tab-Declutter.patch +++ b/build/patches/Disable-Android-Tab-Declutter.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -105,7 +105,8 @@ for the previous order (main_preferences_legacy). --> +@@ -106,7 +106,8 @@ for the previous order (main_preferences_legacy). --> android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings" android:key="tabs" android:order="18" diff --git a/build/patches/Disable-CSS-blink-feature-support.patch b/build/patches/Disable-CSS-blink-feature-support.patch index 738d5a18..4bac27b7 100644 --- a/build/patches/Disable-CSS-blink-feature-support.patch +++ b/build/patches/Disable-CSS-blink-feature-support.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc --- a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc +++ b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc -@@ -393,7 +393,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) { +@@ -397,7 +397,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) { feature_name.Value().Utf8()) && guard.Release()) { stream.ConsumeWhitespace(); diff --git a/build/patches/Disable-CSSDynamicRangeLimit.patch b/build/patches/Disable-CSSDynamicRangeLimit.patch index 10776f98..3bb9a93b 100644 --- a/build/patches/Disable-CSSDynamicRangeLimit.patch +++ b/build/patches/Disable-CSSDynamicRangeLimit.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1270,7 +1270,7 @@ +@@ -1288,7 +1288,7 @@ }, { name: "CSSDynamicRangeLimit", diff --git a/build/patches/Disable-Compose-feature.patch b/build/patches/Disable-Compose-feature.patch index 47b9a2f6..b12c831e 100644 --- a/build/patches/Disable-Compose-feature.patch +++ b/build/patches/Disable-Compose-feature.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -8444,6 +8444,12 @@ static_library("browser") { +@@ -8414,6 +8414,12 @@ static_library("browser") { deps += [ "//components/segmentation_platform/internal:optimization_guide_segmentation_handler" ] } @@ -26,15 +26,15 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn if (enable_compose) { sources += [ "compose/chrome_compose_client.cc", -@@ -8459,7 +8465,6 @@ static_library("browser") { +@@ -8429,7 +8435,6 @@ static_library("browser") { ] deps += [ - ":compose_optimization_guide_proto", "//chrome/common/compose", "//chrome/common/compose:mojo_bindings", - "//components/autofill/content/browser:browser", -@@ -8917,7 +8922,7 @@ source_set("font_pref") { + "//components/autofill/content/browser", +@@ -8888,7 +8893,7 @@ source_set("font_pref") { deps = [ "//chrome/common" ] } @@ -46,7 +46,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn 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 -@@ -353,7 +353,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -352,7 +352,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) base::FeatureList::IsEnabled(features::kLinkedServicesSetting)); #if BUILDFLAG(ENABLE_COMPOSE) diff --git a/build/patches/Disable-Compression-Dictionary-Transport.patch b/build/patches/Disable-Compression-Dictionary-Transport.patch index 9aabb4b3..780bdfeb 100644 --- a/build/patches/Disable-Compression-Dictionary-Transport.patch +++ b/build/patches/Disable-Compression-Dictionary-Transport.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1004,12 +1004,14 @@ +@@ -1031,12 +1031,14 @@ } }, { diff --git a/build/patches/Disable-FedCm.patch b/build/patches/Disable-FedCm.patch index 0aa13729..9326c956 100644 --- a/build/patches/Disable-FedCm.patch +++ b/build/patches/Disable-FedCm.patch @@ -15,8 +15,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -674,7 +674,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -671,7 +671,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION, - "webid-auto-reauthn", CONTENT_SETTING_ALLOW, @@ -39,7 +39,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2119,7 +2119,7 @@ +@@ -2093,7 +2093,7 @@ { name: "FedCm", public: true, diff --git a/build/patches/Disable-GSA-by-default.patch b/build/patches/Disable-GSA-by-default.patch index 8261dec6..1bfbf81f 100644 --- a/build/patches/Disable-GSA-by-default.patch +++ b/build/patches/Disable-GSA-by-default.patch @@ -6,12 +6,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../src/org/chromium/base/PackageUtils.java | 1 + .../chrome/browser/IntentHandler.java | 6 ---- - .../chrome/browser/share/LensUtils.java | 14 ++------- - .../chromium/chrome/browser/gsa/GSAUtils.java | 29 ++++--------------- - .../GoogleBottomBarActionsHandler.java | 19 ++---------- + .../chrome/browser/share/LensUtils.java | 14 ++------ + .../chromium/chrome/browser/gsa/GSAUtils.java | 34 +++---------------- + .../GoogleBottomBarActionsHandler.java | 19 ++--------- .../chrome/browser/pdf/PdfCoordinator.java | 2 +- .../Disable-GSA-by-default.inc | 1 + - 7 files changed, 12 insertions(+), 60 deletions(-) + 7 files changed, 12 insertions(+), 65 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc diff --git a/base/android/java/src/org/chromium/base/PackageUtils.java b/base/android/java/src/org/chromium/base/PackageUtils.java @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.pdf.PdfUtils; import org.chromium.chrome.browser.profiles.Profile; -@@ -284,9 +283,6 @@ public class IntentHandler { +@@ -297,9 +296,6 @@ public class IntentHandler { public static final String EXTRA_CCT_EARLY_NAV = "org.chromium.chrome.browser.cct_early_nav"; @@ -46,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j private static Pair sPendingReferrer; private static int sReferrerId; private static String sPendingIncognitoUrl; -@@ -569,8 +565,6 @@ public class IntentHandler { +@@ -592,8 +588,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (packageName.equals(PACKAGE_WHATSAPP)) { return ExternalAppId.WHATSAPP; @@ -100,7 +100,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java --- a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java +++ b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java -@@ -14,19 +14,12 @@ import org.chromium.build.annotations.Nullable; +@@ -15,19 +15,12 @@ import org.chromium.build.annotations.Nullable; /** This class provides utilities for the state of Google Search App. */ @NullMarked public class GSAUtils { @@ -121,7 +121,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil } /** -@@ -38,6 +31,7 @@ public class GSAUtils { +@@ -39,6 +32,7 @@ public class GSAUtils { */ public static boolean isAgsaVersionBelowMinimum( @Nullable String installedVersionName, @Nullable String minimumVersionName) { @@ -129,7 +129,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil if (TextUtils.isEmpty(installedVersionName) || TextUtils.isEmpty(minimumVersionName)) { return true; } -@@ -68,8 +62,8 @@ public class GSAUtils { +@@ -69,8 +63,8 @@ public class GSAUtils { * @return The version name of the Agsa package or null if it can't be found. */ public static @Nullable String getAgsaVersionName() { @@ -140,7 +140,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil } /** -@@ -78,19 +72,6 @@ public class GSAUtils { +@@ -79,20 +73,7 @@ public class GSAUtils { * @return Whether the AGSA is enabled */ public static boolean isAgsaEnabled() { @@ -160,6 +160,18 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil - return sPackageInfo; + return false; } + + /** +@@ -101,10 +82,5 @@ public class GSAUtils { + * @param packageInfo The package info to set for AGSA. + */ + public static void setAgsaPackageInfoForTesting(@Nullable PackageInfo packageInfo) { +- sPackageInfo = packageInfo; +- ResettersForTesting.register( +- () -> { +- sPackageInfo = null; +- }); + } } diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java b/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java --- a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java @@ -220,7 +232,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java --- a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java +++ b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java -@@ -265,7 +265,7 @@ public class PdfCoordinator { +@@ -266,7 +266,7 @@ public class PdfCoordinator { } @Nullable String requestAssistContent(String filename, boolean isWorkProfile) { diff --git a/build/patches/Disable-GetInstalledRelatedApps-API.patch b/build/patches/Disable-GetInstalledRelatedApps-API.patch index 1b2705d0..a1222155 100644 --- a/build/patches/Disable-GetInstalledRelatedApps-API.patch +++ b/build/patches/Disable-GetInstalledRelatedApps-API.patch @@ -58,7 +58,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2838,9 +2838,8 @@ +@@ -2795,9 +2795,8 @@ status: "stable", }, { diff --git a/build/patches/Disable-Paint-Preview-by-default.patch b/build/patches/Disable-Paint-Preview-by-default.patch index b5229a41..7145c129 100644 --- a/build/patches/Disable-Paint-Preview-by-default.patch +++ b/build/patches/Disable-Paint-Preview-by-default.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java -@@ -114,7 +114,7 @@ public class StartupPaintPreviewHelper implements Destroyable { +@@ -118,7 +118,7 @@ public class StartupPaintPreviewHelper implements Destroyable { /** Enables Paint Preview show attempt on restoration of a tab. */ public static void enableShowOnRestore() { diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index 7096bbdc..dff42339 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 -@@ -327,8 +327,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -326,8 +326,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // BUILDFLAG(IS_CHROMEOS) bool show_privacy_guide = diff --git a/build/patches/Disable-Real-Box.patch b/build/patches/Disable-Real-Box.patch index 8c59b1b0..d332dd53 100644 --- a/build/patches/Disable-Real-Box.patch +++ b/build/patches/Disable-Real-Box.patch @@ -13,7 +13,7 @@ Real-box is search box in ntp 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 -@@ -2351,7 +2351,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2272,7 +2272,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref( prefs::kLensRegionSearchEnabled, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); @@ -41,7 +41,7 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res - ?composebox-enabled="${this.composeboxEnabled}"> - ${this.showComposebox_ ? html` - + diff --git a/chrome/browser/ui/webui/searchbox/searchbox_handler.cc b/chrome/browser/ui/webui/searchbox/searchbox_handler.cc --- a/chrome/browser/ui/webui/searchbox/searchbox_handler.cc diff --git a/build/patches/Disable-TLS-resumption.patch b/build/patches/Disable-TLS-resumption.patch index 929de04b..d8595af2 100644 --- a/build/patches/Disable-TLS-resumption.patch +++ b/build/patches/Disable-TLS-resumption.patch @@ -90,7 +90,7 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc --- a/net/quic/quic_session_pool.cc +++ b/net/quic/quic_session_pool.cc -@@ -85,6 +85,7 @@ +@@ -86,6 +86,7 @@ #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "third_party/boringssl/src/include/openssl/aead.h" @@ -98,7 +98,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc #include "url/gurl.h" #include "url/scheme_host_port.h" #include "url/url_constants.h" -@@ -371,6 +372,38 @@ void LogSessionKeyMismatch(QuicSessionKeyPartialMatchResult result, +@@ -372,6 +373,38 @@ void LogSessionKeyMismatch(QuicSessionKeyPartialMatchResult result, } // namespace @@ -137,7 +137,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {} QuicSessionRequest::~QuicSessionRequest() { -@@ -2376,7 +2409,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { +@@ -2373,7 +2406,7 @@ QuicSessionPool::CreateCryptoConfigHandle(QuicCryptoClientConfigKey key) { cert_verifier_, transport_security_state_, sct_auditing_delegate_, HostsFromOrigins(params_.origins_to_force_quic_on), key.network_anonymization_key), @@ -149,7 +149,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -291,7 +291,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( +@@ -292,7 +292,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( CHECK(context_); } @@ -183,7 +183,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket Disconnect(); } -@@ -699,6 +725,8 @@ int SSLClientSocketImpl::Init() { +@@ -700,6 +726,8 @@ int SSLClientSocketImpl::Init() { } if (session) SSL_set_session(ssl_.get(), session.get()); @@ -192,7 +192,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket } transport_adapter_ = std::make_unique( -@@ -984,6 +1012,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { +@@ -985,6 +1013,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { : SSLHandshakeDetails::kTLS13Full; } } @@ -228,7 +228,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket UMA_HISTOGRAM_ENUMERATION("Net.SSLHandshakeDetails", details); // Measure TLS connections that implement the renegotiation_info and EMS -@@ -1618,6 +1675,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { +@@ -1624,6 +1681,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { } bool SSLClientSocketImpl::IsCachingEnabled() const { diff --git a/build/patches/Disable-UA-full-version.patch b/build/patches/Disable-UA-full-version.patch index a5434f2e..bb366b64 100644 --- a/build/patches/Disable-UA-full-version.patch +++ b/build/patches/Disable-UA-full-version.patch @@ -7,22 +7,23 @@ getHighEntropyValues will return only the major version Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../renderer/core/frame/navigator_ua_data.cc | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) + .../renderer/core/frame/navigator_ua_data.cc | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc --- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc +++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc -@@ -7,6 +7,8 @@ +@@ -7,6 +7,9 @@ #include "base/compiler_specific.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/common/features.h" +#include "base/version.h" +#include "base/strings/strcat.h" ++#include "base/strings/string_number_conversions.h" #include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h" #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h" #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h" -@@ -65,6 +67,16 @@ void MaybeRecordMetric(bool record_identifiability, +@@ -65,6 +68,16 @@ void MaybeRecordMetric(bool record_identifiability, execution_context); } @@ -39,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ } // namespace NavigatorUAData::NavigatorUAData(ExecutionContext* context) -@@ -103,7 +115,7 @@ void NavigatorUAData::SetFullVersionList( +@@ -103,7 +116,7 @@ void NavigatorUAData::SetFullVersionList( const UserAgentBrandList& full_version_list) { for (const auto& brand_version : full_version_list) { AddBrandFullVersion(String::FromUTF8(brand_version.brand), @@ -48,7 +49,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_ } } -@@ -125,7 +137,7 @@ void NavigatorUAData::SetModel(const String& model) { +@@ -125,7 +138,7 @@ void NavigatorUAData::SetModel(const String& model) { } void NavigatorUAData::SetUAFullVersion(const String& ua_full_version) { diff --git a/build/patches/Disable-Viewport-Segments.patch b/build/patches/Disable-Viewport-Segments.patch index 883cdb45..920eaa1c 100644 --- a/build/patches/Disable-Viewport-Segments.patch +++ b/build/patches/Disable-Viewport-Segments.patch @@ -21,7 +21,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -5358,8 +5358,7 @@ +@@ -5317,8 +5317,7 @@ status: "stable", }, { @@ -30,5 +30,5 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 + name: "ViewportSegments", status: "test", public: true }, { - name: "ViewTransitionLongCallbackTimeoutForTesting", + name: "ViewTransitionAnimationDelayInherit", -- diff --git a/build/patches/Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch b/build/patches/Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch index eb095e51..7ff3c128 100644 --- a/build/patches/Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch +++ b/build/patches/Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch @@ -14,9 +14,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -372,8 +372,13 @@ void ContentSettingsRegistry::Init() { +@@ -378,8 +378,13 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); +#if BUILDFLAG(IS_ANDROID) Register(ContentSettingsType::BLUETOOTH_GUARD, "bluetooth-guard", diff --git a/build/patches/Disable-WebGPU.patch b/build/patches/Disable-WebGPU.patch index 02966c44..ee2f4c89 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 -@@ -553,6 +553,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( +@@ -547,6 +547,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs( WebRuntimeFeatures::EnableRemotePlayback(false); @@ -20,11 +20,11 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. + WebRuntimeFeatures::EnableBackForwardCache( content::IsBackForwardCacheEnabled()); - } + diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -241,7 +241,7 @@ BASE_FEATURE(kEnableDrDc, +@@ -235,7 +235,7 @@ BASE_FEATURE(kEnableDrDc, // enabled by default on supported platforms. #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || \ BUILDFLAG(IS_ANDROID) diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 5ba6cce9..e0636484 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -6,6 +6,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/BUILD.gn | 4 +--- + .../background_download_service_factory.cc | 2 +- .../preloading_model_keyed_service.cc | 3 +++ .../preloading_model_keyed_service_factory.cc | 4 +--- .../optimization_guide/chrome_hints_manager.cc | 1 + @@ -13,7 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../optimization_guide_keyed_service.cc | 1 - chrome/browser/permissions/BUILD.gn | 2 -- .../permissions/chrome_permissions_client.cc | 2 -- - .../prediction_model_handler_provider.cc | 2 +- + .../passage_embedder_delegate.cc | 2 ++ + .../prediction_model_handler_provider.cc | 9 ++++++--- .../predictors/autocomplete_action_predictor.cc | 2 ++ .../predictors/loading_predictor_config.cc | 4 ++-- chrome/browser/predictors/predictors_features.cc | 3 +-- @@ -24,6 +26,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...fication_content_detection_service_factory.cc | 6 ++++++ .../ui/autofill/chrome_autofill_client.cc | 15 --------------- chrome/browser/ui/tab_helpers.cc | 1 - + .../autofill_ml_internals_page_handler.cc | 2 ++ + .../autofill_ml_internals_page_handler.h | 3 +++ + .../autofill_ml_internals_ui.cc | 3 +++ .../read_anything/read_aloud_app_model.cc | 16 ++++++++++++++-- .../read_anything/read_aloud_app_model.h | 9 ++++++++- .../read_anything_app_controller.cc | 10 ++++++++++ @@ -37,8 +42,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../prediction_model_download_manager.cc | 6 ++++-- .../delivery/prediction_model_fetcher_impl.cc | 1 + .../core/hints/hints_fetcher.cc | 1 + - .../core/hints/hints_manager.cc | 1 + - .../core/optimization_guide_features.cc | 14 ++++++++------ + .../core/hints/hints_manager.cc | 2 ++ + .../core/optimization_guide_features.cc | 12 ++++++------ components/optimization_guide/features.gni | 3 +-- .../core/page_content_annotations_features.cc | 4 ++++ .../page_content_annotations_model_manager.cc | 1 + @@ -53,11 +58,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../features_cc/Disable-all-predictors-code.inc | 2 ++ services/webnn/BUILD.gn | 2 +- services/webnn/features.gni | 2 +- - services/webnn/webnn_context_provider_impl.cc | 11 ----------- + services/webnn/webnn_context_provider_impl.cc | 13 +------------ .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 52 files changed, 120 insertions(+), 76 deletions(-) + 57 files changed, 136 insertions(+), 80 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc @@ -69,7 +74,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -796,8 +796,6 @@ static_library("browser") { +@@ -797,8 +797,6 @@ static_library("browser") { "navigation_predictor/navigation_predictor_keyed_service_factory.h", "navigation_predictor/navigation_predictor_metrics_document_data.cc", "navigation_predictor/navigation_predictor_metrics_document_data.h", @@ -78,7 +83,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "navigation_predictor/preloading_model_keyed_service.cc", "navigation_predictor/preloading_model_keyed_service.h", "navigation_predictor/preloading_model_keyed_service_factory.cc", -@@ -2382,7 +2380,7 @@ static_library("browser") { +@@ -2400,7 +2398,7 @@ static_library("browser") { "//components/resources", "//components/safe_browsing/content/browser", "//components/safe_browsing/content/browser:safe_browsing_service", @@ -87,6 +92,18 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/safe_browsing/content/browser/password_protection", "//components/safe_browsing/content/browser/web_ui", "//components/safe_browsing/content/common/proto:download_file_types_proto", +diff --git a/chrome/browser/download/background_download_service_factory.cc b/chrome/browser/download/background_download_service_factory.cc +--- a/chrome/browser/download/background_download_service_factory.cc ++++ b/chrome/browser/download/background_download_service_factory.cc +@@ -179,7 +179,7 @@ BackgroundDownloadServiceFactory::BuildServiceInstanceFor( + } + #endif // BUILDFLAG(IS_CHROMEOS) + +- if (!key->IsOffTheRecord()) { ++ if (((false)) && !key->IsOffTheRecord()) { + clients->insert(std::make_pair( + download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS, + std::make_unique( diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc --- a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc +++ b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc @@ -190,7 +207,7 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -510,7 +510,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -410,7 +410,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -201,19 +218,19 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service. diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn --- a/chrome/browser/permissions/BUILD.gn +++ b/chrome/browser/permissions/BUILD.gn -@@ -40,8 +40,6 @@ source_set("permissions") { - "permission_revocation_request.h", - "permissions_aiv1_handler.cc", - "permissions_aiv1_handler.h", -- "prediction_based_permission_ui_selector.cc", -- "prediction_based_permission_ui_selector.h", - "prediction_model_handler_provider.cc", - "prediction_model_handler_provider.h", - "prediction_service_factory.cc", +@@ -44,8 +44,6 @@ source_set("permissions") { + "prediction_service/passage_embedder_delegate.h", + "prediction_service/permissions_aiv1_handler.cc", + "prediction_service/permissions_aiv1_handler.h", +- "prediction_service/prediction_based_permission_ui_selector.cc", +- "prediction_service/prediction_based_permission_ui_selector.h", + "prediction_service/prediction_model_handler_provider.cc", + "prediction_service/prediction_model_handler_provider.h", + "prediction_service/prediction_service_factory.cc", diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc -@@ -426,8 +426,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -475,8 +475,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( #endif selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); @@ -222,21 +239,52 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br return selectors; } -diff --git a/chrome/browser/permissions/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_model_handler_provider.cc ---- a/chrome/browser/permissions/prediction_model_handler_provider.cc -+++ b/chrome/browser/permissions/prediction_model_handler_provider.cc -@@ -13,10 +13,10 @@ - #include "chrome/browser/permissions/permissions_aiv1_handler.h" +diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +--- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc ++++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +@@ -17,11 +17,13 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) + : profile_(profile) {} + + Embedder* PassageEmbedderDelegate::get_passage_embedder() { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (auto* prediction_model_handler_provider = + PredictionModelHandlerProviderFactory::GetForBrowserContext( + profile_)) { + return prediction_model_handler_provider->GetPassageEmbedder(); + } ++#endif + return nullptr; + } + +diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +--- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc ++++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +@@ -13,11 +13,11 @@ + #include "chrome/browser/permissions/prediction_service/permissions_aiv1_handler.h" #include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h" #include "components/permissions/features.h" -#include "components/permissions/prediction_service/permissions_aiv3_handler.h" +-#include "components/permissions/prediction_service/permissions_aiv4_handler.h" #include "components/permissions/request_type.h" #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) +#include "components/permissions/prediction_service/permissions_aiv3_handler.h" ++#include "components/permissions/prediction_service/permissions_aiv4_handler.h" #include "components/permissions/prediction_service/prediction_model_handler.h" #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) +@@ -26,7 +26,10 @@ namespace permissions { + PredictionModelHandlerProvider::PredictionModelHandlerProvider( + OptimizationGuideKeyedService* optimization_guide, + passage_embeddings::Embedder* passage_embedder) +- : passage_embedder_(passage_embedder) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++ : passage_embedder_(passage_embedder) ++#endif ++ { + VLOG(1) << "[PermissionsAI] PredictionModelHandlerProvider ctor"; + // We set up model handlers if necessary in order of preference: + // Aiv4, Aiv3, Aiv1 diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc --- a/chrome/browser/predictors/autocomplete_action_predictor.cc +++ b/chrome/browser/predictors/autocomplete_action_predictor.cc @@ -290,7 +338,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_sett diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc --- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc +++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc -@@ -85,6 +85,7 @@ SearchPrefetchURLLoader::RequestHandler +@@ -84,6 +84,7 @@ SearchPrefetchURLLoader::RequestHandler SearchPrefetchURLLoaderInterceptor::MaybeCreateLoaderForRequest( const network::ResourceRequest& tentative_resource_request, content::FrameTreeNodeId frame_tree_node_id) { @@ -301,7 +349,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1184,7 +1184,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1196,7 +1196,6 @@ void ChromeBrowserMainExtraPartsProfiles:: base::FeatureList::IsEnabled( permissions::features::kPermissionOnDeviceGeolocationPredictions) || base::FeatureList::IsEnabled(permissions::features::kPermissionsAIv1)) { @@ -312,14 +360,14 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -47,7 +47,6 @@ static_library("safe_browsing") { +@@ -49,7 +49,6 @@ static_library("safe_browsing") { "//components/resources:components_resources_grit", "//components/safe_browsing:buildflags", "//components/safe_browsing/content/browser", -- "//components/safe_browsing/content/browser/notification_content_detection:notification_content_detection", +- "//components/safe_browsing/content/browser/notification_content_detection", "//components/safe_browsing/content/browser/triggers:suspicious_site_trigger", "//components/safe_browsing/content/browser/web_ui", - "//components/safe_browsing/core/browser", + "//components/safe_browsing/content/browser/web_ui:local_state_delegate", diff --git a/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc b/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc --- a/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc +++ b/chrome/browser/safe_browsing/notification_content_detection/notification_content_detection_service_factory.cc @@ -360,7 +408,7 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc -@@ -504,11 +504,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { +@@ -516,11 +516,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { } AutofillAiManager* ChromeAutofillClient::GetAutofillAiManager() { @@ -372,7 +420,7 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/brows } AutofillAiModelCache* ChromeAutofillClient::GetAutofillAiModelCache() { -@@ -1179,18 +1175,7 @@ void ChromeAutofillClient::TriggerPlusAddressUserPerceptionSurvey( +@@ -1206,18 +1202,7 @@ void ChromeAutofillClient::TriggerPlusAddressUserPerceptionSurvey( optimization_guide::ModelQualityLogsUploaderService* ChromeAutofillClient::GetMqlsUploadService() { @@ -402,6 +450,66 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc OpenerHeuristicService::Get(web_contents->GetBrowserContext()); if (optimization_guide::features::IsOptimizationHintsEnabled()) { OptimizationGuideWebContentsObserver::CreateForWebContents(web_contents); +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc +@@ -12,9 +12,11 @@ AutofillMlInternalsPageHandlerImpl::AutofillMlInternalsPageHandlerImpl( + mojo::PendingReceiver receiver, + autofill::MLLogRouter* log_router) + : receiver_(this, std::move(receiver)) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (log_router) { + log_router_observation_.Observe(log_router); + } ++#endif + } + + void AutofillMlInternalsPageHandlerImpl::SetPage( +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h +@@ -8,6 +8,7 @@ + #include "base/scoped_observation.h" + #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" + #include "components/autofill/core/browser/ml_model/logging/ml_log_router.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" + #include "mojo/public/cpp/bindings/pending_receiver.h" + #include "mojo/public/cpp/bindings/receiver.h" + #include "mojo/public/cpp/bindings/remote.h" +@@ -35,8 +36,10 @@ class AutofillMlInternalsPageHandlerImpl + private: + mojo::Receiver receiver_; + mojo::Remote page_; ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + base::ScopedObservation + log_router_observation_{this}; ++#endif + }; + + #endif // CHROME_BROWSER_UI_WEBUI_AUTOFILL_ML_INTERNALS_AUTOFILL_ML_INTERNALS_PAGE_HANDLER_H_ +diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc +--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc ++++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc +@@ -11,6 +11,7 @@ + #include "chrome/grit/autofill_ml_internals_resources.h" + #include "chrome/grit/autofill_ml_internals_resources_map.h" + #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" ++#include "components/optimization_guide/machine_learning_tflite_buildflags.h" + #include "content/public/browser/web_ui.h" + #include "content/public/browser/web_ui_data_source.h" + #include "ui/webui/webui_util.h" +@@ -29,9 +30,11 @@ AutofillMlInternalsUI::AutofillMlInternalsUI(content::WebUI* web_ui) + + void AutofillMlInternalsUI::BindInterface( + mojo::PendingReceiver receiver) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + page_handler_ = std::make_unique( + std::move(receiver), autofill::MLLogRouterFactory::GetForProfile( + Profile::FromWebUI(web_ui()))); ++#endif + } + + WEB_UI_CONTROLLER_TYPE_IMPL(AutofillMlInternalsUI) diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc --- a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc +++ b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc @@ -538,7 +646,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "chrome/renderer/accessibility/read_anything/read_anything_app_model.h" #include "chrome/renderer/accessibility/read_anything/read_anything_node_utils.h" -@@ -1594,6 +1596,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1733,6 +1735,7 @@ void ReadAnythingAppController::OnConnected() { render_frame()->GetBrowserInterfaceBroker().GetInterface( std::move(page_handler_factory_receiver)); @@ -546,7 +654,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr // Get the dependency parser model used by phrase-based highlighting. if (read_aloud_model_.GetDependencyParserModel().IsAvailable()) { return; -@@ -1602,6 +1605,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -1741,6 +1744,7 @@ void ReadAnythingAppController::OnConnected() { page_handler_->GetDependencyParserModel( base::BindOnce(&ReadAnythingAppController::UpdateDependencyParserModel, weak_ptr_factory_.GetWeakPtr())); @@ -554,7 +662,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::OnCopy() const { -@@ -1833,8 +1837,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { +@@ -1972,8 +1976,10 @@ std::vector ReadAnythingAppController::GetCurrentText() { } void ReadAnythingAppController::PreprocessTextForSpeech() { @@ -565,7 +673,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } void ReadAnythingAppController::MovePositionToNextGranularity() { -@@ -2057,14 +2063,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { +@@ -2196,14 +2202,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { void ReadAnythingAppController::UpdateDependencyParserModel( base::File model_file) { @@ -587,7 +695,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h --- a/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h +++ b/chrome/renderer/accessibility/read_anything/read_anything_app_controller.h -@@ -46,7 +46,9 @@ class MojoUkmRecorder; +@@ -47,7 +47,9 @@ class MojoUkmRecorder; } // namespace ukm class AXTreeDistiller; @@ -597,7 +705,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr class ReadAnythingAppControllerTest; class ReadAnythingAppControllerScreen2xDataCollectionModeTest; -@@ -287,7 +289,9 @@ class ReadAnythingAppController +@@ -303,7 +305,9 @@ class ReadAnythingAppController // available. void UpdateDependencyParserModel(base::File model_file); @@ -610,19 +718,19 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -64,7 +64,7 @@ static_library("utility") { +@@ -66,7 +66,7 @@ static_library("utility") { "//printing/buildflags", "//services/data_decoder:lib", "//services/network:network_service", -- "//services/passage_embeddings:passage_embeddings", -+ # "//services/passage_embeddings:passage_embeddings", +- "//services/passage_embeddings", ++ # "//services/passage_embeddings", "//services/passage_embeddings/public/mojom", "//services/screen_ai/buildflags", "//services/service_manager/public/cpp", diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc --- a/chrome/utility/services.cc +++ b/chrome/utility/services.cc -@@ -241,13 +241,6 @@ auto RunMirroringService( +@@ -251,13 +251,6 @@ auto RunMirroringService( std::move(receiver), content::UtilityThread::Get()->GetIOTaskRunner()); } @@ -636,7 +744,7 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc #endif // !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE) -@@ -464,7 +457,6 @@ void RegisterMainThreadServices(mojo::ServiceFactory& services) { +@@ -475,7 +468,6 @@ void RegisterMainThreadServices(mojo::ServiceFactory& services) { #if !BUILDFLAG(IS_ANDROID) services.Add(RunProfileImporter); services.Add(RunMirroringService); @@ -647,19 +755,19 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -607,7 +607,7 @@ test("components_unittests") { +@@ -613,7 +613,7 @@ test("components_unittests") { "//components/media_router/common/providers/cast/channel:unit_tests", "//components/page_info:unit_tests", "//components/permissions:unit_tests", - "//components/permissions/prediction_service:unit_tests", + # "//components/permissions/prediction_service:unit_tests", - "//components/privacy_sandbox:unit_tests", "//components/privacy_sandbox/privacy_sandbox_attestations:unit_tests", "//components/safety_check:unit_tests", + "//components/security_interstitials/content:unit_tests", diff --git a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc --- a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc +++ b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide.cc -@@ -259,6 +259,7 @@ void AutofillOptimizationGuide::OnDidParseForm( +@@ -264,6 +264,7 @@ void AutofillOptimizationGuide::OnDidParseForm( // If we do not have any optimization types to register, do not do anything. if (!optimization_types.empty()) { // Register all optimization types that we need based on `form_structure`. @@ -667,16 +775,16 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut decider_->RegisterOptimizationTypes( std::vector( std::move(optimization_types).extract())); -@@ -326,7 +327,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( +@@ -331,7 +332,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( const AutofillField* field) const { // If the field's storable type is `IBAN_VALUE`, check whether IBAN // suggestions should be blocked based on `url`. -- if (field->Type().GetStorableType() == IBAN_VALUE) { -+ if (decider_ && field->Type().GetStorableType() == IBAN_VALUE) { +- if (field->Type().GetTypes().contains(IBAN_VALUE)) { ++ if (decider_ && field->Type().GetTypes().contains(IBAN_VALUE)) { optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization( url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED, -@@ -352,7 +353,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( +@@ -357,7 +358,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( const CreditCard& card) const { if (auto optimization_type = GetVcnMerchantOptOutOptimizationTypeForCard(card); @@ -688,7 +796,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 -@@ -51,7 +51,9 @@ +@@ -52,7 +52,9 @@ #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" @@ -698,7 +806,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "components/omnibox/browser/autocomplete_scoring_signals_annotator.h" #include "components/omnibox/browser/bookmark_provider.h" #include "components/omnibox/browser/bookmark_scoring_signals_annotator.h" -@@ -125,6 +127,7 @@ using ProviderType = AutocompleteProvider::Type; +@@ -126,6 +128,7 @@ using ProviderType = AutocompleteProvider::Type; constexpr bool is_android = !!BUILDFLAG(IS_ANDROID); @@ -706,7 +814,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ void RecordMlScoreCoverage(size_t matches_with_non_null_scores, size_t total_scored_matches) { int percent_score_coverage = -@@ -233,6 +236,7 @@ void RecordTotalMatchesScored(size_t num_scored) { +@@ -234,6 +237,7 @@ void RecordTotalMatchesScored(size_t num_scored) { base::UmaHistogramCounts1000("Omnibox.URLScoringModelExecuted.Matches", num_scored); } @@ -717,7 +825,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -99,14 +99,14 @@ BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type, +@@ -100,14 +100,14 @@ BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type, bool BaseSearchProvider::ShouldPrefetch(const AutocompleteMatch& match) { // TODO (manukh): `GetAdditionalInfoForDebugging()` shouldn't be used for // non-debugging purposes. @@ -737,7 +845,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc --- a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc +++ b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc -@@ -41,7 +41,7 @@ namespace { +@@ -44,7 +44,7 @@ namespace { // we require models to come from. constexpr std::array kPublisherKeyHash = { 0x66, 0xa1, 0xd9, 0x3e, 0x4e, 0x5a, 0x66, 0x8a, 0x0f, 0xd3, 0xfa, @@ -746,7 +854,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo 0x5c, 0x7f, 0xd0, 0x0c, 0xa1, 0x6e, 0xef, 0xdd, 0x63, 0x7a}; const net::NetworkTrafficAnnotationTag kOptimizationGuidePredictionModelsTrafficAnnotation = -@@ -100,7 +100,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( +@@ -104,7 +104,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( unzip::UnzipperFactory unzipper_factory, scoped_refptr background_task_runner) : download_service_(download_service), @@ -755,7 +863,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo api_key_(features::GetOptimizationGuideServiceAPIKey()), get_base_model_dir_for_download_callback_( get_base_model_dir_for_download_callback), -@@ -112,6 +112,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default; +@@ -117,6 +117,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default; void PredictionModelDownloadManager::StartDownload( const GURL& download_url, proto::OptimizationTarget optimization_target) { @@ -763,7 +871,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo download::DownloadParams download_params; download_params.client = download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS; -@@ -261,6 +262,7 @@ bool PredictionModelDownloadManager::VerifyDownload( +@@ -265,6 +266,7 @@ bool PredictionModelDownloadManager::VerifyDownload( const base::FilePath& download_file_path, const base::FilePath& base_model_dir, bool delete_file_on_error) { @@ -796,7 +904,7 @@ diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/compone diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/components/optimization_guide/core/hints/hints_manager.cc --- a/components/optimization_guide/core/hints/hints_manager.cc +++ b/components/optimization_guide/core/hints/hints_manager.cc -@@ -412,6 +412,7 @@ void HintsManager::Shutdown() { +@@ -457,6 +457,7 @@ void HintsManager::Shutdown() { OptimizationGuideDecision HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision( OptimizationTypeDecision optimization_type_decision) { @@ -804,6 +912,12 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone switch (optimization_type_decision) { case OptimizationTypeDecision::kAllowedByOptimizationFilter: case OptimizationTypeDecision::kAllowedByHint: +@@ -2040,4 +2041,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( + hint_cache_->RemoveHintsForHosts(std::move(on_success), hint_keys); + } + ++SET_CROMITE_FEATURE_DISABLED(kHintsBatchUpdateForActiveTabsAndTopHosts); + } // namespace optimization_guide diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc --- a/components/optimization_guide/core/optimization_guide_features.cc +++ b/components/optimization_guide/core/optimization_guide_features.cc @@ -819,7 +933,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } // namespace -@@ -458,8 +454,7 @@ size_t MaxURLKeyedHintCacheSize() { +@@ -288,8 +284,7 @@ size_t MaxHostKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -829,14 +943,12 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -926,5 +921,12 @@ bool IsPrivacyGuideAiSettingsEnabled() { +@@ -692,5 +687,10 @@ bool IsPrivacyGuideAiSettingsEnabled() { return base::FeatureList::IsEnabled(kPrivacyGuideAiSettings); } +SET_CROMITE_FEATURE_DISABLED(kOptimizationHints); -+SET_CROMITE_FEATURE_DISABLED(kRemoteOptimizationGuideFetching); +SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction); -+SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideModelDownloading); +SET_CROMITE_FEATURE_DISABLED(kPushNotifications); +SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP); @@ -858,7 +970,7 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc --- a/components/page_content_annotations/core/page_content_annotations_features.cc +++ b/components/page_content_annotations/core/page_content_annotations_features.cc -@@ -286,4 +286,8 @@ bool ShouldAnnotatedPageContentStudyIncludeInnerText() { +@@ -291,4 +291,8 @@ bool ShouldAnnotatedPageContentStudyIncludeInnerText() { return kAnnotatedPageContentStudyIncludeInnerText.Get(); } @@ -881,7 +993,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn --- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn +++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn -@@ -27,6 +27,13 @@ source_set("notification_content_detection") { +@@ -40,6 +40,13 @@ source_set("notification_content_detection") { ] } @@ -898,7 +1010,7 @@ diff --git a/components/safe_browsing/content/browser/notification_content_detec diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc -@@ -517,6 +517,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( +@@ -538,6 +538,7 @@ bool ServiceWorkerMainResourceLoader::MaybeStartAutoPreload( bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( scoped_refptr context, scoped_refptr version) { @@ -955,7 +1067,7 @@ new file mode 100644 diff --git a/services/webnn/BUILD.gn b/services/webnn/BUILD.gn --- a/services/webnn/BUILD.gn +++ b/services/webnn/BUILD.gn -@@ -167,7 +167,7 @@ component("webnn_service") { +@@ -170,7 +170,7 @@ component("webnn_service") { } } @@ -979,28 +1091,30 @@ diff --git a/services/webnn/features.gni b/services/webnn/features.gni diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webnn_context_provider_impl.cc --- a/services/webnn/webnn_context_provider_impl.cc +++ b/services/webnn/webnn_context_provider_impl.cc -@@ -211,17 +211,6 @@ void WebNNContextProviderImpl::CreateWebNNContext( - base::expected, mojom::ErrorPtr> - context_creation_results; +@@ -217,18 +217,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( + RecordDeviceType(options->device); -- if (base::FeatureList::IsEnabled(mojom::features::kWebNNOnnxRuntime)) { -- context_creation_results = ort::CreateContextFromOptions( -- std::move(options), std::move(receiver), this); -- if (!context_creation_results.has_value()) { -- std::move(callback).Run(mojom::CreateContextResult::NewError( -- std::move(context_creation_results.error()))); -- return; + #if BUILDFLAG(IS_WIN) +- if (ort::ShouldCreateOrtContext(*options)) { +- base::expected, std::string> +- env_creation_results = ort::Environment::Create(gpu_info_); +- if (!env_creation_results.has_value()) { +- LOG(ERROR) << "[WebNN] Failed to create ONNX Runtime context: " +- << env_creation_results.error(); +- } else { +- context_impl = std::make_unique( +- std::move(receiver), this, std::move(options), +- std::move(env_creation_results.value())); - } -- context_impl = std::move(context_creation_results.value()); -- } -- - if (!context_impl && dml::ShouldCreateDmlContext(*options)) { - context_creation_results = dml::CreateContextFromOptions( - std::move(options), gpu_feature_info_, gpu_info_, +- } else if (dml::ShouldCreateDmlContext(*options)) { ++ if (dml::ShouldCreateDmlContext(*options)) { + base::expected, mojom::ErrorPtr> + context_creation_results = dml::CreateContextFromOptions( + std::move(options), gpu_feature_info_, gpu_info_, diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc -@@ -1798,6 +1798,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( +@@ -1801,6 +1801,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( } bool HTMLDocumentParser::ShouldSkipPreloadScan() { @@ -1011,7 +1125,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc --- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc +++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc -@@ -660,6 +660,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { +@@ -662,6 +662,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { return; } @@ -1022,7 +1136,7 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3809,7 +3809,7 @@ +@@ -3734,7 +3734,7 @@ // // It also has some feature params defined throughout the codebase. name: "Prerender2", @@ -1030,5 +1144,5 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 + status: "test", }, { - name: "Presentation", + name: "PrerenderUntilScript", -- diff --git a/build/patches/Disable-all-promo-dialogs.patch b/build/patches/Disable-all-promo-dialogs.patch index 6b6512d7..76fee553 100644 --- a/build/patches/Disable-all-promo-dialogs.patch +++ b/build/patches/Disable-all-promo-dialogs.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1726,6 +1726,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1747,6 +1747,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } private boolean maybeShowPromo(Profile profile) { @@ -29,7 +29,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -167,7 +167,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -172,7 +172,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled, false); @@ -41,10 +41,10 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc --- a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_feature_promo_controller.cc -@@ -40,6 +40,7 @@ ui::ElementContext ProfilePickerFeaturePromoController::GetAnchorContext() - user_education::FeaturePromoResult +@@ -36,6 +36,7 @@ user_education::FeaturePromoResult ProfilePickerFeaturePromoController::CanShowPromoForElement( - ui::TrackedElement* anchor_element) const { + ui::TrackedElement* anchor_element, + const user_education::UserEducationContextPtr&) const { + if ((true)) return user_education::FeaturePromoResult::kBlockedByUi; return ProfilePicker::IsOpen() ? user_education::FeaturePromoResult::Success() @@ -52,14 +52,14 @@ diff --git a/chrome/browser/ui/views/profiles/profile_picker_feature_promo_contr diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc --- a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc +++ b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20.cc -@@ -64,6 +64,7 @@ ui::ElementContext BrowserFeaturePromoController20::GetAnchorContext() const { - user_education::FeaturePromoResult +@@ -45,6 +45,7 @@ user_education::FeaturePromoResult BrowserFeaturePromoController20::CanShowPromoForElement( - ui::TrackedElement* anchor_element) const { + ui::TrackedElement* anchor_element, + const user_education::UserEducationContextPtr& context) const { + if ((true)) return user_education::FeaturePromoResult::kBlockedByUi; - // Trying to show an IPH while the browser is closing can cause problems; - // see https://crbug.com/346461762 for an example. This can also crash - // unit_tests that use a BrowserWindow but not a browser, so also check if + auto* const browser_context = context->AsA(); + CHECK(browser_context && browser_context->IsValid()); + auto* const browser_view = &browser_context->GetBrowserView(); diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java --- a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java +++ b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java @@ -74,7 +74,7 @@ diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/ diff --git a/chrome/browser/user_education/user_education_service_factory.cc b/chrome/browser/user_education/user_education_service_factory.cc --- a/chrome/browser/user_education/user_education_service_factory.cc +++ b/chrome/browser/user_education/user_education_service_factory.cc -@@ -113,6 +113,7 @@ UserEducationServiceFactory::BuildServiceInstanceForBrowserContextImpl( +@@ -112,6 +112,7 @@ UserEducationServiceFactory::BuildServiceInstanceForBrowserContextImpl( // static bool UserEducationServiceFactory::ProfileAllowsUserEducation(Profile* profile) { @@ -104,8 +104,8 @@ diff --git a/components/user_education/common/feature_promo/feature_promo_regist diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc --- a/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc +++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_20.cc -@@ -100,6 +100,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon( - const FeaturePromoParams& params, +@@ -106,6 +106,7 @@ FeaturePromoResult FeaturePromoController20::CanShowPromoCommon( + const UserEducationContextPtr& context, ShowSource source, CanShowPromoOutputs* outputs) const { + if ((true)) return FeaturePromoResult::kBlockedByContext; @@ -115,17 +115,17 @@ diff --git a/components/user_education/common/feature_promo/impl/feature_promo_c diff --git a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc --- a/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc +++ b/components/user_education/common/feature_promo/impl/feature_promo_controller_25.cc -@@ -186,6 +186,7 @@ FeaturePromoController25::~FeaturePromoController25() { - +@@ -189,6 +189,7 @@ FeaturePromoController25::~FeaturePromoController25() { FeaturePromoResult FeaturePromoController25::CanShowPromo( - const FeaturePromoParams& params) const { + const FeaturePromoParams& params, + const UserEducationContextPtr& context) const { + if ((true)) return FeaturePromoResult::kBlockedByContext; auto* const spec = registry()->GetParamsForFeature(*params.feature); if (!spec) { return FeaturePromoResult::kError; -@@ -206,7 +207,7 @@ void FeaturePromoController25::MaybeShowStartupPromo( - - void FeaturePromoController25::MaybeShowPromo(FeaturePromoParams params) { +@@ -211,7 +212,7 @@ void FeaturePromoController25::MaybeShowStartupPromo( + void FeaturePromoController25::MaybeShowPromo(FeaturePromoParams params, + UserEducationContextPtr context) { auto* const spec = registry()->GetParamsForFeature(*params.feature); - if (!spec) { + if (((true)) || !spec) { diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index 334359a4..2dbba74e 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -12,7 +12,6 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../browser/aw_content_browser_client.cc | 3 + - ..._token_key_commitments_component_loader.cc | 1 + .../chromium/android_webview/AwSettings.java | 4 +- chrome/android/java/AndroidManifest.xml | 4 - .../ChromeSiteSettingsDelegate.java | 2 + @@ -47,14 +46,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/blink/renderer/core/page/page.cc | 2 +- .../platform/runtime_enabled_features.json5 | 20 +- ui/events/android/motion_event_android.cc | 8 +- - 36 files changed, 104 insertions(+), 430 deletions(-) + 35 files changed, 103 insertions(+), 430 deletions(-) create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1350,6 +1350,7 @@ network::mojom::AttributionSupport +@@ -1354,6 +1354,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, bool client_os_disabled) { @@ -62,7 +61,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv // WebView only supports OS-level attribution and not web-attribution. switch (state) { case AttributionReportingOsApiState::kDisabled: -@@ -1368,6 +1369,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -1372,6 +1373,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -71,21 +70,10 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv AwBrowserContext* aw_context = static_cast(browser_context); // WebView only supports OS-level attribution and not web-attribution. -diff --git a/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc b/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc ---- a/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc -+++ b/android_webview/browser/component_updater/trust_token_key_commitments_component_loader.cc -@@ -20,6 +20,7 @@ namespace android_webview { - // Tokens is enabled. - void LoadTrustTokenKeyCommitmentsComponent( - ComponentLoaderPolicyVector& policies) { -+ if ((true)) return; - DVLOG(1) - << "Registering Trust Token Key Commitments component for loading in " - "embedded WebView."; diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java --- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java +++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java -@@ -173,7 +173,7 @@ public class AwSettings { +@@ -177,7 +177,7 @@ public class AwSettings { private boolean mSpatialNavigationEnabled; // Default depends on device features. private boolean mEnableSupportedHardwareAcceleratedFeatures; private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW; @@ -94,7 +82,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.ja @SpeculativeLoadingAllowedFlags private int mSpeculativeLoadingAllowedFlags = -@@ -1793,7 +1793,7 @@ public class AwSettings { +@@ -1804,7 +1804,7 @@ public class AwSettings { public void setAttributionBehavior(@AttributionBehavior int behavior) { synchronized (mAwSettingsLock) { if (mAttributionBehavior != behavior) { @@ -114,7 +102,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro $1 $i18n{title} @@ -65,7 +65,7 @@ diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_di diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js -@@ -109,7 +109,7 @@ function maybeSetWebFont() { +@@ -153,7 +153,7 @@ function maybeSetWebFont() { } const e = document.createElement('link'); diff --git a/build/patches/Disable-remote-altsvc-for-h3-connections.patch b/build/patches/Disable-remote-altsvc-for-h3-connections.patch index 3a35ad87..bdc9b51f 100644 --- a/build/patches/Disable-remote-altsvc-for-h3-connections.patch +++ b/build/patches/Disable-remote-altsvc-for-h3-connections.patch @@ -26,7 +26,7 @@ diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_p diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc --- a/net/http/http_stream_factory_job_controller.cc +++ b/net/http/http_stream_factory_job_controller.cc -@@ -1314,11 +1314,7 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( +@@ -1325,11 +1325,7 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( // single user on a multi-user system to hijack the alternate protocol. // These systems also enforce ports <1024 as restricted ports. So don't // allow protocol upgrades to user-controllable ports. @@ -39,7 +39,7 @@ diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stre continue; } -@@ -1363,8 +1359,7 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( +@@ -1374,8 +1370,7 @@ HttpStreamFactory::JobController::GetAlternativeServiceInfoInternal( GURL destination = CreateAltSvcUrl( original_url, alternative_service_info.GetHostPortPair()); diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index 14f16f36..33dd341a 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -4,27 +4,27 @@ Subject: Disable safety check License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 5 -- + chrome/android/BUILD.gn | 5 ---- chrome/android/chrome_java_sources.gni | 1 - .../android/java/res/xml/main_preferences.xml | 3 +- - .../PasswordCheckupLauncher.java | 57 +------------------ - .../settings/FragmentDependencyProvider.java | 32 ----------- + .../PasswordCheckupLauncher.java | 25 ---------------- + .../settings/FragmentDependencyProvider.java | 30 ------------------- .../chrome/browser/settings/MainSettings.java | 2 +- - .../settings/SettingsNavigationImpl.java | 13 +---- + .../settings/SettingsNavigationImpl.java | 13 ++------ chrome/browser/BUILD.gn | 1 - - chrome/browser/safety_check/android/BUILD.gn | 2 - - .../safety_check/SafetyCheckBridge.java | 4 +- - .../suggestions/action/OmniboxPedal.java | 3 - + chrome/browser/safety_check/android/BUILD.gn | 2 -- + .../safety_check/SafetyCheckBridge.java | 4 +-- + .../suggestions/action/OmniboxPedal.java | 3 -- chrome/browser/ui/tab_helpers.cc | 2 +- .../site_settings/SiteSettings.java | 2 +- .../Disable-safety-check.inc | 1 + - 14 files changed, 11 insertions(+), 117 deletions(-) + 14 files changed, 10 insertions(+), 84 deletions(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-safety-check.inc diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -466,7 +466,6 @@ if (_is_default_toolchain) { +@@ -459,7 +459,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:java", "//chrome/browser/regional_capabilities/android:java", "//chrome/browser/safe_browsing/android:java", @@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/safety_hub/android:java", "//chrome/browser/screenshot_monitor:java", "//chrome/browser/search_engines/android:java", -@@ -1120,8 +1119,6 @@ if (_is_default_toolchain) { +@@ -1136,8 +1135,6 @@ if (_is_default_toolchain) { "//chrome/browser/recent_tabs:junit", "//chrome/browser/recent_tabs/internal:junit", "//chrome/browser/safe_browsing/android:junit", @@ -41,7 +41,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/search_engines/android:junit", "//chrome/browser/search_resumption:junit", "//chrome/browser/serial/android:junit", -@@ -1400,8 +1397,6 @@ if (_is_default_toolchain) { +@@ -1425,8 +1422,6 @@ if (_is_default_toolchain) { "//chrome/browser/quick_delete:javatests", "//chrome/browser/renderer_host/android:javatests", "//chrome/browser/safe_browsing/android:javatests", @@ -53,7 +53,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -936,7 +936,6 @@ chrome_java_sources = [ +@@ -942,7 +942,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingPasswordReuseDialogBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingReferringAppBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingSettingsNavigation.java", @@ -77,24 +77,15 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordCheckupLauncher.java -@@ -18,7 +18,6 @@ import org.chromium.base.supplier.ObservableSupplierImpl; - import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.password_check.PasswordCheckFactory; +@@ -10,7 +10,6 @@ import org.chromium.base.supplier.ObservableSupplierImpl; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; import org.chromium.chrome.browser.settings.SettingsCustomTabLauncherImpl; import org.chromium.chrome.browser.settings.SettingsNavigationFactory; - import org.chromium.chrome.browser.sync.SyncServiceFactory; -@@ -32,8 +31,6 @@ public class PasswordCheckupLauncher { - @CalledByNative - private static void launchCheckupOnlineWithWindowAndroid( - @JniType("std::string") String checkupUrl, WindowAndroid windowAndroid) { -- if (windowAndroid.getContext().get() == null) return; // Window not available yet/anymore. -- launchCheckupOnlineWithActivity(checkupUrl, windowAndroid.getActivity().get()); - } - - @CalledByNative -@@ -42,75 +39,23 @@ public class PasswordCheckupLauncher { + import org.chromium.components.browser_ui.settings.SettingsNavigation.SettingsFragment; +@@ -26,38 +25,14 @@ public class PasswordCheckupLauncher { WindowAndroid windowAndroid, @PasswordCheckReferrer int passwordCheckReferrer, @Nullable String accountEmail) { @@ -103,46 +94,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage - assert profile != null; - - PasswordManagerHelper passwordManagerHelper = PasswordManagerHelper.getForProfile(profile); -- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LOGIN_DB_DEPRECATION_ANDROID)) { -- // This is invoked from the leak dialog if the compromised password is saved for other -- // sites. After the login DB deprecation, this code path is guaranteed to only be -- // executed for users with access to UPM, since they are the only ones with saved -- // passwords. -- passwordManagerHelper.showPasswordCheckup( -- windowAndroid.getContext().get(), -- passwordCheckReferrer, -- getModalDialogManagerSupplier(windowAndroid), -- accountEmail, -- new SettingsCustomTabLauncherImpl()); -- return; -- } -- -- // Force instantiation of GMSCore password check if GMSCore update is required. Password -- // check launch will fail and instead show the blocking dialog with the suggestion to -- // update. -- if (passwordManagerHelper.canUseUpm() -- || PasswordManagerUtilBridge.isGmsCoreUpdateRequired( -- UserPrefs.get(profile), SyncServiceFactory.getForProfile(profile))) { -- passwordManagerHelper.showPasswordCheckup( -- windowAndroid.getContext().get(), -- passwordCheckReferrer, -- getModalDialogManagerSupplier(windowAndroid), -- accountEmail, -- new SettingsCustomTabLauncherImpl()); -- return; -- } -- -- PasswordCheckFactory.getOrCreate() -- .showUi(windowAndroid.getContext().get(), passwordCheckReferrer); - } - - @CalledByNative - private static void launchCheckupOnlineWithActivity( - @JniType("std::string") String checkupUrl, Activity activity) { -- if (tryLaunchingNativePasswordCheckup(activity)) return; -- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(checkupUrl)); -- intent.setPackage(activity.getPackageName()); -- activity.startActivity(intent); +- // This is invoked from the leak dialog if the compromised password is saved for other +- // sites. After the login DB deprecation, this code path is guaranteed to only be +- // executed for users with access to UPM, since they are the only ones with saved +- // passwords. +- passwordManagerHelper.showPasswordCheckup( +- windowAndroid.getContext().get(), +- passwordCheckReferrer, +- getModalDialogManagerSupplier(windowAndroid), +- accountEmail, +- new SettingsCustomTabLauncherImpl()); } @CalledByNative @@ -162,19 +123,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage - .startSettings(windowAndroid.getContext().get(), SettingsFragment.SAFETY_CHECK); } - private static boolean tryLaunchingNativePasswordCheckup(Activity activity) { -- GooglePasswordManagerUIProvider googlePasswordManagerUiProvider = -- ServiceLoaderUtil.maybeCreate(GooglePasswordManagerUIProvider.class); -- if (googlePasswordManagerUiProvider == null) return false; -- return googlePasswordManagerUiProvider.launchPasswordCheckup(activity); -+ return false; - } - private static ObservableSupplier getModalDialogManagerSupplier( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -38,13 +38,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg +@@ -34,13 +34,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsBaseFragment; import org.chromium.chrome.browser.privacy_sandbox.TopicsManageFragment; import org.chromium.chrome.browser.profiles.Profile; @@ -188,17 +141,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate; -@@ -131,20 +124,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -127,18 +120,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl delegate.setSnackbarManagerSupplier(mSnackbarManagerSupplier); baseSiteSettingsFragment.setSiteSettingsDelegate(delegate); } - if (fragment instanceof SafetyCheckSettingsFragment) { - SafetyCheckCoordinator.create( - (SafetyCheckSettingsFragment) fragment, -- mProfile, - new SafetyCheckUpdatesDelegateImpl(), - new SafetyCheckBridge(mProfile), -- SigninAndHistorySyncActivityLauncherImpl.get(), - mModalDialogManagerSupplier, - SyncServiceFactory.getForProfile(mProfile), - UserPrefs.get(mProfile), @@ -206,10 +157,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme - PasswordManagerHelper.getForProfile(mProfile), - new SettingsCustomTabLauncherImpl()); - } - if (fragment instanceof PasswordCheckFragmentView) { - PasswordCheckComponentUiFactory.create( - (PasswordCheckFragmentView) fragment, -@@ -237,14 +216,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl + if (fragment instanceof CredentialEntryFragmentViewBase) { + CredentialEditUiFactory.create((CredentialEntryFragmentViewBase) fragment, mProfile); + } +@@ -224,14 +205,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl ((AutofillLocalIbanEditor) fragment) .setModalDialogManagerSupplier(mModalDialogManagerSupplier); } @@ -224,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } -@@ -259,8 +230,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -246,8 +219,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl if (fragment instanceof ManageSyncSettings) { ((ManageSyncSettings) fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } @@ -236,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -313,7 +313,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -306,7 +306,7 @@ public class MainSettings extends ChromeBaseSettingsFragment removePreferenceIfPresent(PREF_UI_THEME); } @@ -249,15 +200,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsNavigationImpl.java @@ -18,8 +18,6 @@ import org.chromium.chrome.browser.autofill.settings.FinancialAccountsManagement + import org.chromium.chrome.browser.autofill.settings.NonCardPaymentMethodsManagementFragment; import org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragment; import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; -import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; -import org.chromium.chrome.browser.safety_hub.SafetyHubFragment; + import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings; import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; - import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; -@@ -46,10 +44,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { +@@ -47,10 +45,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { ClearBrowsingDataFragment.createFragmentArgs(context.getClass().getName()); break; case SettingsFragment.SAFETY_CHECK: @@ -269,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin case SettingsFragment.MAIN: case SettingsFragment.PAYMENT_METHODS: case SettingsFragment.SITE: -@@ -107,11 +102,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { +@@ -110,11 +105,7 @@ public class SettingsNavigationImpl implements SettingsNavigation { case SettingsFragment.PAYMENT_METHODS: return AutofillPaymentMethodsFragment.class; case SettingsFragment.SAFETY_CHECK: @@ -285,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3442,7 +3442,6 @@ static_library("browser") { +@@ -3458,7 +3458,6 @@ static_library("browser") { "//chrome/browser/recent_tabs:jni_headers", "//chrome/browser/regional_capabilities", "//chrome/browser/safe_browsing/android:safe_browsing_enums", @@ -304,7 +255,7 @@ diff --git a/chrome/browser/safety_check/android/BUILD.gn b/chrome/browser/safet "//chrome/browser/signin:identity_manager_provider", "//components/password_manager/core/browser/leak_detection", "//components/prefs", -@@ -73,7 +72,6 @@ android_library("java") { +@@ -71,7 +70,6 @@ android_library("java") { srcjar_deps = [ ":bulk_leak_check_service_enums", @@ -336,7 +287,7 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/action/OmniboxPedal.java -@@ -56,9 +56,6 @@ public class OmniboxPedal extends OmniboxAction { +@@ -57,9 +57,6 @@ public class OmniboxPedal extends OmniboxAction { case OmniboxPedalId.UPDATE_CREDIT_CARD: delegate.openSettingsPage(SettingsFragment.PAYMENT_METHODS); break; diff --git a/build/patches/Disable-smart-selection-by-default.patch b/build/patches/Disable-smart-selection-by-default.patch index e625b2aa..502db654 100644 --- a/build/patches/Disable-smart-selection-by-default.patch +++ b/build/patches/Disable-smart-selection-by-default.patch @@ -45,18 +45,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearc diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -257,6 +257,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kCCTEphemeralMode, +@@ -269,6 +269,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kCCTExtendTrustedCdnPublisher, &kCCTFixWarmup, &kCCTFreInSameTask, + &kChromeSmartSelection, &kCCTIncognitoAvailableToThirdParty, - &kCCTIntentFeatureOverrides, - &kCCTMinimized, + &kCCTMinimizedEnabledByDefault, + &kCCTNavigationalPrefetch, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -576,6 +576,7 @@ public abstract class ChromeFeatureList { +@@ -595,6 +595,7 @@ public abstract class ChromeFeatureList { "SearchInCCTAlternateTapHandlingIfEnabledByEmbedder"; public static final String SEARCH_RESUMPTION_MODULE_ANDROID = "SearchResumptionModuleAndroid"; public static final String SEED_ACCOUNTS_REVAMP = "SeedAccountsRevamp"; @@ -67,7 +67,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java -@@ -1089,7 +1089,6 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -1088,7 +1088,6 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper public boolean canWebSearch() { return hasSelection() && !isFocusedNodeEditable() diff --git a/build/patches/Disable-speechSynthesis-getVoices-API.patch b/build/patches/Disable-speechSynthesis-getVoices-API.patch index 64c848b2..ed5d73b1 100644 --- a/build/patches/Disable-speechSynthesis-getVoices-API.patch +++ b/build/patches/Disable-speechSynthesis-getVoices-API.patch @@ -31,7 +31,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -1659,7 +1659,7 @@ ChromeContentRendererClient::CreateWorkerContentSettingsClient( +@@ -1365,7 +1365,7 @@ ChromeContentRendererClient::CreateWorkerContentSettingsClient( std::unique_ptr ChromeContentRendererClient::CreateSpeechRecognitionClient( content::RenderFrame* render_frame) { diff --git a/build/patches/Disable-text-fragments-by-default.patch b/build/patches/Disable-text-fragments-by-default.patch index b79e95e0..5a15c353 100644 --- a/build/patches/Disable-text-fragments-by-default.patch +++ b/build/patches/Disable-text-fragments-by-default.patch @@ -74,7 +74,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -4794,9 +4794,14 @@ void Document::SetURL(const KURL& url) { +@@ -4944,9 +4944,14 @@ void Document::SetURL(const KURL& url) { TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, "url", new_url.GetString().Utf8()); @@ -92,7 +92,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -4973,10 +4973,9 @@ +@@ -4916,10 +4916,9 @@ }, { name: "TextFragmentIdentifiers", diff --git a/build/patches/Disable-third-party-origin-trials.patch b/build/patches/Disable-third-party-origin-trials.patch index 9476cf11..81f13caf 100644 --- a/build/patches/Disable-third-party-origin-trials.patch +++ b/build/patches/Disable-third-party-origin-trials.patch @@ -76,7 +76,7 @@ diff --git a/components/embedder_support/origin_trials/origin_trial_policy_impl. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -9581,7 +9581,6 @@ void NavigationRequest::SetSourceSiteInstanceToInitiatorIfNeeded() { +@@ -9693,7 +9693,6 @@ void NavigationRequest::SetSourceSiteInstanceToInitiatorIfNeeded() { void NavigationRequest::ForceEnableOriginTrials( const std::vector& trials) { DCHECK(!HasCommitted()); @@ -116,7 +116,7 @@ diff --git a/content/browser/renderer_host/origin_trial_state_host_impl.cc b/con diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -540,10 +540,6 @@ void FillNavigationParamsRequest( +@@ -530,10 +530,6 @@ void FillNavigationParamsRequest( common_params.initiator_origin.value(); } @@ -127,7 +127,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra navigation_params->was_discarded = commit_params.was_discarded; navigation_params->document_ukm_source_id = commit_params.document_ukm_source_id; -@@ -566,8 +562,8 @@ void FillNavigationParamsRequest( +@@ -556,8 +552,8 @@ void FillNavigationParamsRequest( navigation_params->had_transient_user_activation = common_params.has_user_gesture; @@ -138,7 +138,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra navigation_params->early_hints_preloaded_resources = base::ToVector( commit_params.early_hints_preloaded_resources, blink::ToWebURL); -@@ -654,7 +650,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams( +@@ -644,7 +640,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams( info->url_request.HasUserGesture(), info->url_request.HasTextFragmentToken(), info->should_check_main_world_content_security_policy, @@ -223,7 +223,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p } bool IsPagePopupRunningInWebTest(LocalFrame* frame) { -@@ -3239,10 +3229,6 @@ void DocumentLoader::CreateParserPostCommit() { +@@ -3228,10 +3218,6 @@ void DocumentLoader::CreateParserPostCommit() { mojom::blink::OriginTrialFeature::kTouchEventFeatureDetection); } diff --git a/build/patches/Disable-update-scheduler.patch b/build/patches/Disable-update-scheduler.patch index d72be243..15c241f3 100644 --- a/build/patches/Disable-update-scheduler.patch +++ b/build/patches/Disable-update-scheduler.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java -@@ -69,7 +69,7 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory { +@@ -73,7 +73,7 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory { case TaskIds.WEBAPK_UPDATE_JOB_ID: return new WebApkUpdateTask(); case TaskIds.COMPONENT_UPDATE_JOB_ID: diff --git a/build/patches/Disable-various-metrics.patch b/build/patches/Disable-various-metrics.patch index ef4374b7..0792410b 100644 --- a/build/patches/Disable-various-metrics.patch +++ b/build/patches/Disable-various-metrics.patch @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java -@@ -47,7 +47,7 @@ public abstract class FirstRunActivityBase extends FullscreenSigninAndHistorySyn +@@ -52,7 +52,7 @@ public abstract class FirstRunActivityBase extends FullscreenSigninAndHistorySyn static final String SHOW_SEARCH_ENGINE_PAGE = "ShowSearchEnginePage"; static final String SHOW_HISTORY_SYNC_PAGE = "ShowHistorySync"; @@ -54,15 +54,15 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br namespace { -@@ -270,7 +268,6 @@ void MostVisitedSitesBridge::RecordPageImpression( +@@ -263,7 +261,6 @@ void MostVisitedSitesBridge::AddOrRemoveBlockedUrl( + void MostVisitedSitesBridge::RecordPageImpression( JNIEnv* env, - const JavaParamRef& obj, jint jtiles_count) { - ntp_tiles::metrics::RecordPageImpression(jtiles_count); } void MostVisitedSitesBridge::RecordTileImpression( -@@ -282,15 +279,6 @@ void MostVisitedSitesBridge::RecordTileImpression( +@@ -274,15 +271,6 @@ void MostVisitedSitesBridge::RecordTileImpression( jint jtitle_source, jint jsource, const JavaParamRef& jurl) { @@ -78,7 +78,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br } void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( -@@ -300,11 +288,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( +@@ -291,11 +279,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( jint tile_type, jint title_source, jint source) { @@ -93,7 +93,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1165,7 +1165,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -1167,7 +1167,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) { #endif // BUILDFLAG(IS_CHROMEOS) registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled, @@ -105,7 +105,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -1379,7 +1379,6 @@ ChromeContentBrowserClient::ChromeContentBrowserClient() { +@@ -1376,7 +1376,6 @@ ChromeContentBrowserClient::ChromeContentBrowserClient() { extra_parts_.push_back( std::make_unique()); #endif @@ -124,7 +124,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.c #include "chrome/browser/plugins/pdf_iframe_navigation_throttle.h" #include "chrome/browser/policy/policy_util.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/chrome_no_state_prefetch_contents_delegate.h" -@@ -252,18 +251,6 @@ void MaybeCreateAndAddVisitedLinkNavigationThrottle( +@@ -254,18 +253,6 @@ void MaybeCreateAndAddVisitedLinkNavigationThrottle( void CreateAndAddChromeThrottlesForNavigation( content::NavigationThrottleRegistry& registry) { content::NavigationHandle& handle = registry.GetNavigationHandle(); @@ -143,7 +143,7 @@ diff --git a/chrome/browser/chrome_content_browser_client_navigation_throttles.c #if BUILDFLAG(IS_ANDROID) // TODO(davidben): This is insufficient to integrate with prerender properly. // https://crbug.com/370595 -@@ -369,8 +356,6 @@ void CreateAndAddChromeThrottlesForNavigation( +@@ -371,8 +358,6 @@ void CreateAndAddChromeThrottlesForNavigation( } } @@ -247,7 +247,7 @@ diff --git a/components/performance_manager/persistence/site_data/leveldb_site_d diff --git a/services/metrics/public/cpp/ukm_recorder.cc b/services/metrics/public/cpp/ukm_recorder.cc --- a/services/metrics/public/cpp/ukm_recorder.cc +++ b/services/metrics/public/cpp/ukm_recorder.cc -@@ -167,4 +167,5 @@ void UkmRecorder::RemoveObserver(Observer* observer) { +@@ -183,4 +183,5 @@ void UkmRecorder::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } diff --git a/build/patches/Disable-visited-pseudo-class.patch b/build/patches/Disable-visited-pseudo-class.patch index 27cf2ea8..804e6e0b 100644 --- a/build/patches/Disable-visited-pseudo-class.patch +++ b/build/patches/Disable-visited-pseudo-class.patch @@ -54,7 +54,7 @@ diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/v diff --git a/components/visitedlink/common/visitedlink_common.cc b/components/visitedlink/common/visitedlink_common.cc --- a/components/visitedlink/common/visitedlink_common.cc +++ b/components/visitedlink/common/visitedlink_common.cc -@@ -83,6 +83,7 @@ bool VisitedLinkCommon::IsVisited(const GURL& link_url, +@@ -78,6 +78,7 @@ bool VisitedLinkCommon::IsVisited(const GURL& link_url, } bool VisitedLinkCommon::IsVisited(Fingerprint fingerprint) const { diff --git a/build/patches/Disallow-Android-App-Scheme-as-referrer.patch b/build/patches/Disallow-Android-App-Scheme-as-referrer.patch index 51c525be..8c489833 100644 --- a/build/patches/Disallow-Android-App-Scheme-as-referrer.patch +++ b/build/patches/Disallow-Android-App-Scheme-as-referrer.patch @@ -9,7 +9,7 @@ Subject: Disallow Android App Scheme as referrer diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -558,11 +558,6 @@ void ChromeContentRendererClient::RenderThreadStarted() { +@@ -525,11 +525,6 @@ void ChromeContentRendererClient::RenderThreadStarted() { // TODO(nyquist): Add test to ensure this happens when the flag is set. WebSecurityPolicy::RegisterURLSchemeAsDisplayIsolated(dom_distiller_scheme); diff --git a/build/patches/Do-not-build-API-keys-infobar.patch b/build/patches/Do-not-build-API-keys-infobar.patch index eb6ef860..8e41d7fa 100644 --- a/build/patches/Do-not-build-API-keys-infobar.patch +++ b/build/patches/Do-not-build-API-keys-infobar.patch @@ -4,26 +4,33 @@ Subject: Do not build API keys infobar License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/ui/BUILD.gn | 2 -- + chrome/browser/ui/startup/BUILD.gn | 2 -- chrome/browser/ui/startup/infobar_utils.cc | 4 ---- 2 files changed, 6 deletions(-) -diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn ---- a/chrome/browser/ui/BUILD.gn -+++ b/chrome/browser/ui/BUILD.gn -@@ -1132,8 +1132,6 @@ static_library("ui") { - "startup/default_browser_prompt/default_browser_prompt_manager.h", - "startup/default_browser_prompt/default_browser_prompt_prefs.cc", - "startup/default_browser_prompt/default_browser_prompt_prefs.h", -- "startup/google_api_keys_infobar_delegate.cc", -- "startup/google_api_keys_infobar_delegate.h", - "startup/infobar_utils.cc", - "startup/infobar_utils.h", - "startup/launch_mode_recorder.cc", +diff --git a/chrome/browser/ui/startup/BUILD.gn b/chrome/browser/ui/startup/BUILD.gn +--- a/chrome/browser/ui/startup/BUILD.gn ++++ b/chrome/browser/ui/startup/BUILD.gn +@@ -42,7 +42,6 @@ source_set("startup") { + if (!is_android) { + sources += [ + "automation_infobar_delegate.h", +- "google_api_keys_infobar_delegate.h", + "infobar_utils.h", + "launch_mode_recorder.h", + "obsolete_system_infobar_delegate.h", +@@ -155,7 +154,6 @@ source_set("impl") { + if (!is_android) { + sources += [ + "automation_infobar_delegate.cc", +- "google_api_keys_infobar_delegate.cc", + "infobar_utils.cc", + "launch_mode_recorder.cc", + "obsolete_system_infobar_delegate.cc", diff --git a/chrome/browser/ui/startup/infobar_utils.cc b/chrome/browser/ui/startup/infobar_utils.cc --- a/chrome/browser/ui/startup/infobar_utils.cc +++ b/chrome/browser/ui/startup/infobar_utils.cc -@@ -171,10 +171,6 @@ void AddInfoBarsIfNecessary(Browser* browser, +@@ -175,10 +175,6 @@ void AddInfoBarsIfNecessary(Browser* browser, infobars::ContentInfoBarManager* infobar_manager = infobars::ContentInfoBarManager::FromWebContents(web_contents); diff --git a/build/patches/Do-not-compile-QR-code-sharing.patch b/build/patches/Do-not-compile-QR-code-sharing.patch index 3f110c63..cc46034c 100644 --- a/build/patches/Do-not-compile-QR-code-sharing.patch +++ b/build/patches/Do-not-compile-QR-code-sharing.patch @@ -19,7 +19,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -3054,7 +3054,6 @@ if (_is_default_toolchain) { +@@ -3063,7 +3063,6 @@ if (_is_default_toolchain) { "../browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextBridge.java", "../browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabService.java", "../browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabServiceFactory.java", @@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -115,7 +115,6 @@ import org.chromium.chrome.browser.recent_tabs.RestoreTabsFeatureHelper; +@@ -118,7 +118,6 @@ import org.chromium.chrome.browser.recent_tabs.RestoreTabsFeatureHelper; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; @@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager; import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController; -@@ -590,10 +589,6 @@ public class RootUiCoordinator +@@ -609,10 +608,6 @@ public class RootUiCoordinator } public void onAttachFragment(Fragment fragment) { @@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -1953,7 +1953,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1868,7 +1868,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kUiAutomationProviderEnabled, false); #endif @@ -155,7 +155,7 @@ diff --git a/chrome/browser/sharing_hub/sharing_hub_features.cc b/chrome/browser diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc -@@ -1937,10 +1937,10 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { +@@ -1964,10 +1964,10 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode() { command_updater_.UpdateCommandEnabled(IDC_CHROME_WHATS_NEW, show_main_ui); #endif command_updater_.UpdateCommandEnabled(IDC_CONTENT_CONTEXT_SHARING_SUBMENU, @@ -172,7 +172,7 @@ diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc --- a/chrome/browser/ui/browser_commands.cc +++ b/chrome/browser/ui/browser_commands.cc -@@ -1852,6 +1852,7 @@ void SendTabToSelf(Browser* browser) { +@@ -1871,6 +1871,7 @@ void SendTabToSelf(Browser* browser) { } bool CanGenerateQrCode(const Browser* browser) { @@ -183,7 +183,7 @@ diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_c diff --git a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc --- a/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc +++ b/chrome/browser/ui/qrcode_generator/qrcode_generator_bubble_controller.cc -@@ -37,6 +37,7 @@ QRCodeGeneratorBubbleController::~QRCodeGeneratorBubbleController() { +@@ -38,6 +38,7 @@ QRCodeGeneratorBubbleController::~QRCodeGeneratorBubbleController() { // static bool QRCodeGeneratorBubbleController::IsGeneratorAvailable(const GURL& url) { diff --git a/build/patches/Do-not-ignore-download-location-prompt-setting.patch b/build/patches/Do-not-ignore-download-location-prompt-setting.patch index cd01c593..87e0fa77 100644 --- a/build/patches/Do-not-ignore-download-location-prompt-setting.patch +++ b/build/patches/Do-not-ignore-download-location-prompt-setting.patch @@ -10,13 +10,13 @@ Do not tick "Don't show again" by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../DownloadLocationDialogCoordinator.java | 16 ---------------- - 1 file changed, 16 deletions(-) + .../DownloadLocationDialogCoordinator.java | 17 ----------------- + 1 file changed, 17 deletions(-) diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java -@@ -159,22 +159,6 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. +@@ -160,23 +160,6 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. assertNonNull(mSuggestedPath); assertNonNull(mProfile); @@ -31,7 +31,8 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse - if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) { - assert !TextUtils.isEmpty(dir.location); - DownloadDialogBridge.setDownloadAndSaveFileDefaultDirectory(mProfile, dir.location); -- mController.onDownloadLocationDialogComplete(mSuggestedPath); +- mController.onDownloadLocationDialogComplete( +- mSuggestedPath, /* didUserConfirm= */ false); - } - return; - } diff --git a/build/patches/Do-not-link-with-libatomic.patch b/build/patches/Do-not-link-with-libatomic.patch index 78def690..75240599 100644 --- a/build/patches/Do-not-link-with-libatomic.patch +++ b/build/patches/Do-not-link-with-libatomic.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -1104,7 +1104,7 @@ component("base") { +@@ -1112,7 +1112,7 @@ component("base") { # more robust check for this. if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos)) && host_toolchain != "//build/toolchain/cros:host") { diff --git a/build/patches/Do-not-store-passwords-by-default.patch b/build/patches/Do-not-store-passwords-by-default.patch index baf2d031..60be8719 100644 --- a/build/patches/Do-not-store-passwords-by-default.patch +++ b/build/patches/Do-not-store-passwords-by-default.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc -@@ -411,7 +411,7 @@ void RecordProvisionalSaveFailure( +@@ -504,7 +504,7 @@ void HandleFailedLoginDetectionForPasswordChange( void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( @@ -19,7 +19,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); #if BUILDFLAG(IS_IOS) // Deprecated pref in profile prefs. -@@ -419,7 +419,7 @@ void PasswordManager::RegisterProfilePrefs( +@@ -512,7 +512,7 @@ void PasswordManager::RegisterProfilePrefs( false); #endif // BUILDFLAG(IS_IOS) registry->RegisterBooleanPref( @@ -28,7 +28,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); registry->RegisterBooleanPref( prefs::kWasAutoSignInFirstRunExperienceShown, false, -@@ -456,9 +456,9 @@ void PasswordManager::RegisterProfilePrefs( +@@ -549,9 +549,9 @@ void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref(prefs::kPasswordsPrefWithNewLabelUsed, false); #if BUILDFLAG(IS_ANDROID) @@ -37,7 +37,7 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp registry->RegisterBooleanPref(prefs::kAccountStorageNoticeShown, false); - registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, true); + registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, false); - registry->RegisterBooleanPref(prefs::kSettingsMigratedToUPMLocal, false); + RegisterLegacySplitStoresPref(registry); + registry->RegisterStringPref(prefs::kUPMErrorUIShownTimestamp, "0"); registry->RegisterIntegerPref( - prefs::kCurrentMigrationVersionToGoogleMobileServices, 0); -- diff --git a/build/patches/Enable-Android-Dynamic-Performance-Framework.patch b/build/patches/Enable-Android-Dynamic-Performance-Framework.patch index 401a018d..a27cc564 100644 --- a/build/patches/Enable-Android-Dynamic-Performance-Framework.patch +++ b/build/patches/Enable-Android-Dynamic-Performance-Framework.patch @@ -12,16 +12,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/version.gni b/chrome/version.gni --- a/chrome/version.gni +++ b/chrome/version.gni -@@ -80,7 +80,7 @@ if (target_os == "android") { - "trichrome_auto_64_version_code = \"@TRICHROME_AUTO_64_VERSION_CODE@\" " +@@ -79,7 +79,7 @@ if (target_os == "android") { _version_dictionary_template += - "trichrome_desktop_64_version_code = \"@TRICHROME_DESKTOP_64_VERSION_CODE@\" " + "trichrome_auto_64_version_code = \"@TRICHROME_AUTO_64_VERSION_CODE@\" " + _version_dictionary_template += "trichrome_desktop_64_version_code = \"@TRICHROME_DESKTOP_64_VERSION_CODE@\" " - if (target_cpu == "arm64") { + if (target_cpu == "arm64" || target_cpu == "x64") { _version_dictionary_template += "trichrome_64_32_high_version_code = \"@TRICHROME_64_32_HIGH_VERSION_CODE@\" " _version_dictionary_template += "trichrome_auto_64_32_high_version_code = \"@TRICHROME_AUTO_64_32_HIGH_VERSION_CODE@\" " } -@@ -188,7 +188,7 @@ if (is_mac) { +@@ -198,7 +198,7 @@ if (is_mac) { chrome_version_name = chrome_version_full # There is a different version code only for arm64. @@ -33,7 +33,7 @@ diff --git a/chrome/version.gni b/chrome/version.gni diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc -@@ -216,6 +216,7 @@ const base::FeatureParam kWebViewADPFSocManufacturerBlocklist{ +@@ -228,6 +228,7 @@ const base::FeatureParam kWebViewADPFSocManufacturerBlocklist{ BASE_FEATURE(kWebViewEnableADPFRendererMain, "WebViewEnableADPFRendererMain", base::FEATURE_DISABLED_BY_DEFAULT); @@ -41,7 +41,7 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. // If enabled, the GPU Main thread is included in the set of threads reported // to the HWUI. This feature works only when WebViewEnableADPF is enabled, -@@ -325,6 +326,7 @@ BASE_FEATURE(kEnableInteractiveOnlyADPFRenderer, +@@ -328,6 +329,7 @@ BASE_FEATURE(kEnableInteractiveOnlyADPFRenderer, // If enabled, Chrome includes the Compositor GPU Thread into the // ADPF(Android Dynamic Performance Framework) hint session, instead // of the GPU Main Thread. diff --git a/build/patches/Enable-Cert-Management-UI.patch b/build/patches/Enable-Cert-Management-UI.patch index 5b67d95d..5cad0819 100644 --- a/build/patches/Enable-Cert-Management-UI.patch +++ b/build/patches/Enable-Cert-Management-UI.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -547,7 +547,12 @@ void ProfileNetworkContextService::RegisterProfilePrefs( +@@ -632,7 +632,12 @@ void ProfileNetworkContextService::RegisterProfilePrefs( registry->RegisterListPref(prefs::kCAHintCertificates); #if !BUILDFLAG(IS_CHROMEOS) // Include user added platform certs by default. diff --git a/build/patches/Enable-Certificate-Transparency.patch b/build/patches/Enable-Certificate-Transparency.patch index 248716ae..39875368 100644 --- a/build/patches/Enable-Certificate-Transparency.patch +++ b/build/patches/Enable-Certificate-Transparency.patch @@ -24,10 +24,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h -@@ -34,6 +34,7 @@ BASE_DECLARE_FEATURE(kAllowUnmutedAutoplayForTWA); - BASE_DECLARE_FEATURE(kAutocompleteActionPredictorConfidenceCutoff); +@@ -35,6 +35,7 @@ BASE_DECLARE_FEATURE(kAutocompleteActionPredictorConfidenceCutoff); BASE_DECLARE_FEATURE(kBookmarksTreeView); BASE_DECLARE_FEATURE(kBookmarkTriggerForPrerender2); + BASE_DECLARE_FEATURE(kBookmarkTriggerForPreconnect); +BASE_DECLARE_FEATURE(kCertificateTransparency); BASE_DECLARE_FEATURE(kCertificateTransparencyAskBeforeEnabling); BASE_DECLARE_FEATURE(kCertVerificationNetworkTime); @@ -35,7 +35,7 @@ diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -1042,7 +1042,7 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() { +@@ -1110,7 +1110,7 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() { // - on an opt-in basis for other builds and embedders, controlled with the // kCertificateTransparencyAskBeforeEnabling flag return base::FeatureList::IsEnabled( @@ -94,7 +94,7 @@ new file mode 100644 diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc -@@ -191,6 +191,7 @@ class HSTSPreloadDecoder : public extras::PreloadDecoder { +@@ -183,6 +183,7 @@ class HSTSPreloadDecoder : public extras::PreloadDecoder { bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { #if !BUILDFLAG(INCLUDE_TRANSPORT_SECURITY_STATE_PRELOAD_LIST) diff --git a/build/patches/Enable-Document-Open-Inheritance-Removal.patch b/build/patches/Enable-Document-Open-Inheritance-Removal.patch index eb2d2018..a9ec4ca3 100644 --- a/build/patches/Enable-Document-Open-Inheritance-Removal.patch +++ b/build/patches/Enable-Document-Open-Inheritance-Removal.patch @@ -11,7 +11,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/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 -@@ -3679,70 +3679,6 @@ void Document::open(LocalDOMWindow* entered_window, +@@ -3810,70 +3810,6 @@ void Document::open(LocalDOMWindow* entered_window, // https://chromestatus.com/metrics/feature/timeline/popularity/4375 CountUse(WebFeature::kDocumentOpenMutateSandbox); } @@ -85,12 +85,12 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1901,7 +1901,6 @@ +@@ -1882,7 +1882,6 @@ { name: "DocumentOpenSandboxInheritanceRemoval", status: "stable", - copied_from_base_feature_if: "overridden", }, - { - name: "DocumentPictureInPictureAPI", + // https://chromestatus.com/feature/5111042975465472 + // document.patch, - -+ -+ -+ - + ++
++ ++
++ + + +- +\ No newline at end of file ++ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -85,6 +85,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -84,6 +84,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { static get properties() { return { @@ -244,7 +251,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch isGuest_: { type: Boolean, value() { -@@ -337,6 +354,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -341,6 +358,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { }; } @@ -255,7 +262,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1414,6 +1414,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1279,6 +1279,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history @@ -277,7 +284,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2002,6 +2002,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2055,6 +2055,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE}, {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD}, {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC}, @@ -648,7 +655,7 @@ diff --git a/components/history_embeddings/sql_database.cc b/components/history_ diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc --- a/components/omnibox/browser/shortcuts_backend.cc +++ b/components/omnibox/browser/shortcuts_backend.cc -@@ -545,7 +545,7 @@ void ShortcutsBackend::ComputeDatabaseMetrics() { +@@ -556,7 +556,7 @@ void ShortcutsBackend::ComputeDatabaseMetrics() { const base::Time now(base::Time::Now()); for (const auto& shortcut_pair : shortcuts_map_) { if (now - shortcut_pair.second.last_access_time > @@ -657,7 +664,7 @@ diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibo num_old_shortcuts++; } } -@@ -715,7 +715,7 @@ ShortcutsDatabase::ShortcutIDs ShortcutsBackend::GetShortcutsWithExpiredTime() +@@ -726,7 +726,7 @@ ShortcutsDatabase::ShortcutIDs ShortcutsBackend::GetShortcutsWithExpiredTime() const base::Time now(base::Time::Now()); for (const auto& guid_pair : guid_map_) { if (now - guid_pair.second->second.last_access_time > diff --git a/build/patches/Improve-the-browser-sandbox.patch b/build/patches/Improve-the-browser-sandbox.patch index a6ee7500..9c36bace 100644 --- a/build/patches/Improve-the-browser-sandbox.patch +++ b/build/patches/Improve-the-browser-sandbox.patch @@ -30,7 +30,7 @@ new file mode 100644 diff --git a/sandbox/policy/features.cc b/sandbox/policy/features.cc --- a/sandbox/policy/features.cc +++ b/sandbox/policy/features.cc -@@ -224,4 +224,13 @@ bool IsParallelLaunchEnabled() { +@@ -210,4 +210,13 @@ bool IsParallelLaunchEnabled() { return base::FeatureList::IsEnabled(kWinSboxParallelProcessLaunch); } #endif // BUILDFLAG(IS_WIN) diff --git a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch index 48edecec..6defba87 100644 --- a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch +++ b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc --- a/components/omnibox/browser/autocomplete_result.cc +++ b/components/omnibox/browser/autocomplete_result.cc -@@ -98,10 +98,11 @@ constexpr size_t kMaxPedalMatchIndex = +@@ -112,10 +112,11 @@ omnibox::ChromeAimEntryPoint GetAimActionEntrypointID() { size_t AutocompleteResult::GetMaxMatches( bool is_zero_suggest, AutocompleteInput::FeaturedKeywordMode featured_keyword_mode) { @@ -30,7 +30,7 @@ diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omni diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc -@@ -297,7 +297,11 @@ void OmniboxFieldTrial::GetDemotionsByType( +@@ -172,7 +172,11 @@ void OmniboxFieldTrial::GetActiveSuggestFieldTrialHashes( size_t OmniboxFieldTrial::GetProviderMaxMatches( AutocompleteProvider::Type provider) { diff --git a/build/patches/Internal-firewall.patch b/build/patches/Internal-firewall.patch index dd0dde53..32f0a66b 100644 --- a/build/patches/Internal-firewall.patch +++ b/build/patches/Internal-firewall.patch @@ -59,7 +59,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2569,6 +2569,7 @@ static_library("browser") { +@@ -2584,6 +2584,7 @@ static_library("browser") { "//third_party/ungoogled:switches", "//services/device/public/mojom", "//services/device/public/mojom:usb", @@ -70,7 +70,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -235,6 +235,7 @@ +@@ -233,6 +233,7 @@ #include "sandbox/policy/features.h" #include "sandbox/policy/switches.h" #include "services/device/public/cpp/device_features.h" @@ -289,12 +289,12 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1156,6 +1156,7 @@ component("net") { +@@ -1161,6 +1161,7 @@ component("net") { "//components/network_time/time_tracker", "//components/network_session_configurator/common", "//net/http:transport_security_state_generated_files", + "//services/firewall/public:firewall_builders", - "//third_party/simdutf:simdutf", + "//third_party/simdutf", ] diff --git a/net/traffic_annotation/network_traffic_annotation.h b/net/traffic_annotation/network_traffic_annotation.h @@ -314,7 +314,7 @@ diff --git a/net/traffic_annotation/network_traffic_annotation.h b/net/traffic_a diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -429,6 +429,9 @@ URLRequestHttpJob::URLRequestHttpJob( +@@ -439,6 +439,9 @@ URLRequestHttpJob::URLRequestHttpJob( : URLRequestJob(request), http_user_agent_settings_(http_user_agent_settings) { ResetTimer(); @@ -324,7 +324,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } URLRequestHttpJob::~URLRequestHttpJob() { -@@ -718,6 +721,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { +@@ -728,6 +731,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { void URLRequestHttpJob::StartTransactionInternal() { DCHECK(!override_response_headers_); @@ -1665,7 +1665,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont #include "services/network/brokered_client_socket_factory.h" #include "services/network/connection_change_observer.h" #include "services/network/cookie_manager.h" -@@ -1817,6 +1818,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { +@@ -1818,6 +1819,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { void NetworkContext::CreateUDPSocket( mojo::PendingReceiver receiver, mojo::PendingRemote listener) { @@ -1675,7 +1675,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener)); } -@@ -1829,6 +1833,17 @@ void NetworkContext::CreateRestrictedUDPSocket( +@@ -1830,6 +1834,17 @@ void NetworkContext::CreateRestrictedUDPSocket( mojo::PendingRemote listener, CreateRestrictedUDPSocketCallback callback) { // SimpleHostResolver is transitively owned by |this|. @@ -1693,7 +1693,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateRestrictedUDPSocket( addr, mode, traffic_annotation, std::move(params), std::move(receiver), std::move(listener), SimpleHostResolver::Create(this), -@@ -1841,6 +1856,17 @@ void NetworkContext::CreateTCPServerSocket( +@@ -1842,6 +1857,17 @@ void NetworkContext::CreateTCPServerSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPServerSocketCallback callback) { @@ -1711,7 +1711,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPServerSocket( local_addr, std::move(options), static_cast(traffic_annotation), -@@ -1855,6 +1881,21 @@ void NetworkContext::CreateTCPConnectedSocket( +@@ -1856,6 +1882,21 @@ void NetworkContext::CreateTCPConnectedSocket( mojo::PendingReceiver receiver, mojo::PendingRemote observer, CreateTCPConnectedSocketCallback callback) { @@ -1733,7 +1733,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPConnectedSocket( local_addr, remote_addr_list, std::move(tcp_connected_socket_options), static_cast(traffic_annotation), -@@ -1866,6 +1907,20 @@ void NetworkContext::CreateTCPBoundSocket( +@@ -1867,6 +1908,20 @@ void NetworkContext::CreateTCPBoundSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPBoundSocketCallback callback) { @@ -1754,7 +1754,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPBoundSocket( local_addr, static_cast(traffic_annotation), -@@ -1932,6 +1987,24 @@ void NetworkContext::CreateWebSocket( +@@ -1933,6 +1988,24 @@ void NetworkContext::CreateWebSocket( mojo::PendingRemote auth_handler, mojo::PendingRemote header_client, const std::optional& throttling_profile_id) { @@ -2056,7 +2056,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc b/t diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc -@@ -279,7 +279,7 @@ void URLLoader::Context::Start( +@@ -278,7 +278,7 @@ void URLLoader::Context::Start( download_to_blob_registry.InitWithNewPipeAndPassReceiver()); } net::NetworkTrafficAnnotationTag tag = @@ -2065,7 +2065,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loa resource_request_sender_->SendSync( std::move(request), tag, loader_options, sync_load_response, url_loader_factory_, std::move(throttles), timeout_interval, -@@ -292,7 +292,7 @@ void URLLoader::Context::Start( +@@ -291,7 +291,7 @@ void URLLoader::Context::Start( TRACE_EVENT_WITH_FLOW0("loading", "URLLoader::Context::Start", this, TRACE_EVENT_FLAG_FLOW_OUT); net::NetworkTrafficAnnotationTag tag = diff --git a/build/patches/Invalidate-components-public-key.patch b/build/patches/Invalidate-components-public-key.patch index d22fe2d8..ffdab5c8 100644 --- a/build/patches/Invalidate-components-public-key.patch +++ b/build/patches/Invalidate-components-public-key.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.cc b/chrome/browser/component_updater/pki_metadata_component_installer.cc --- a/chrome/browser/component_updater/pki_metadata_component_installer.cc +++ b/chrome/browser/component_updater/pki_metadata_component_installer.cc -@@ -79,7 +79,8 @@ const uint64_t kMaxSupportedKPCompatibilityVersion = 1; +@@ -81,7 +81,8 @@ const uint64_t kMaxSupportedKPCompatibilityVersion = 1; // The extension id is: efniojlnjndmcbiieegkicadnoecjjef const uint8_t kPKIMetadataPublicKeySHA256[32] = { 0x45, 0xd8, 0xe9, 0xbd, 0x9d, 0x3c, 0x21, 0x88, 0x44, 0x6a, 0x82, diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 8e659e55..22e6ad7d 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -279,8 +279,8 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -604,7 +604,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -610,7 +610,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, @@ -291,7 +291,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -4191,12 +4191,17 @@ UrlInfo NavigationRequest::GetUrlInfo() { +@@ -4199,12 +4199,17 @@ UrlInfo NavigationRequest::GetUrlInfo() { // Compute the WebExposedIsolationInfo that will be bundled into UrlInfo. auto web_exposed_isolation_info = ComputeWebExposedIsolationInfo(); @@ -313,7 +313,7 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3407,6 +3407,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3387,6 +3387,9 @@ void RenderProcessHostImpl::AppendRendererCommandLine( if (IsJitDisabled()) { command_line->AppendSwitchASCII(blink::switches::kJavaScriptFlags, "--jitless"); @@ -326,7 +326,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content diff --git a/content/browser/site_info.cc b/content/browser/site_info.cc --- a/content/browser/site_info.cc +++ b/content/browser/site_info.cc -@@ -281,6 +281,13 @@ SiteInfo SiteInfo::CreateInternal(const IsolationContext& isolation_context, +@@ -329,6 +329,13 @@ SiteInfo SiteInfo::CreateInternal(const IsolationContext& isolation_context, is_jitless = is_jitless || GetContentClient()->browser()->IsJitDisabledForSite( browser_context, lock_url_or_default); @@ -337,9 +337,9 @@ diff --git a/content/browser/site_info.cc b/content/browser/site_info.cc + is_jitless = false; + } + } - are_v8_optimizations_disabled = - GetContentClient()->browser()->AreV8OptimizationsDisabledForSite( - browser_context, lock_url_or_default); + are_v8_optimizations_disabled = CheckAndCacheShouldDisableV8Optimization( + browser_context, isolation_context.browsing_instance_id(), + url::Origin::Create(lock_url_or_default)); diff --git a/content/browser/url_info.cc b/content/browser/url_info.cc --- a/content/browser/url_info.cc +++ b/content/browser/url_info.cc diff --git a/build/patches/Keep-ComputePressure-disabled.patch b/build/patches/Keep-ComputePressure-disabled.patch index e12710c8..39020416 100644 --- a/build/patches/Keep-ComputePressure-disabled.patch +++ b/build/patches/Keep-ComputePressure-disabled.patch @@ -10,8 +10,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1024,11 +1024,9 @@ - status: "stable", +@@ -1047,11 +1047,9 @@ + status: "experimental", }, { - name: "ComputePressure", diff --git a/build/patches/Keep-Manta-Service-Disabled.patch b/build/patches/Keep-Manta-Service-Disabled.patch index 995292b9..05798cde 100644 --- a/build/patches/Keep-Manta-Service-Disabled.patch +++ b/build/patches/Keep-Manta-Service-Disabled.patch @@ -3,19 +3,25 @@ Date: Tue, 31 Oct 2023 16:20:12 +0000 Subject: Keep Manta Service Disabled --- - components/manta/features.cc | 7 +++++++ - 1 file changed, 7 insertions(+) + .../profiles/chrome_browser_main_extra_parts_profiles.cc | 1 - + components/manta/features.cc | 6 ++++++ + 2 files changed, 6 insertions(+), 1 deletion(-) +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 +@@ -1020,7 +1020,6 @@ void ChromeBrowserMainExtraPartsProfiles:: + #if !BUILDFLAG(IS_ANDROID) + ManagedConfigurationAPIFactory::GetInstance(); + #endif +- manta::MantaServiceFactory::GetInstance(); + MediaDeviceSaltServiceFactory::GetInstance(); + #if !BUILDFLAG(IS_ANDROID) + media_router::AccessCodeCastSinkServiceFactory::GetInstance(); diff --git a/components/manta/features.cc b/components/manta/features.cc --- a/components/manta/features.cc +++ b/components/manta/features.cc -@@ -9,36 +9,43 @@ - namespace manta::features { - - BASE_FEATURE(kMantaService, "MantaService", base::FEATURE_ENABLED_BY_DEFAULT); -+SET_CROMITE_FEATURE_DISABLED(kMantaService); - - // Enables Anchovy Prod Server +@@ -12,31 +12,37 @@ namespace manta::features { BASE_FEATURE(kAnchovyUseProdServer, "AnchovyUseProdServer", base::FEATURE_ENABLED_BY_DEFAULT); @@ -51,6 +57,6 @@ diff --git a/components/manta/features.cc b/components/manta/features.cc base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kWalrusUseProdServer); - bool IsMantaServiceEnabled() { - return base::FeatureList::IsEnabled(kMantaService); + bool IsAnchovyUseProdServerEnabled() { + return base::FeatureList::IsEnabled(kAnchovyUseProdServer); -- diff --git a/build/patches/Keep-disabled-FetchLaterAPI.patch b/build/patches/Keep-disabled-FetchLaterAPI.patch index a8ba660b..398ca21b 100644 --- a/build/patches/Keep-disabled-FetchLaterAPI.patch +++ b/build/patches/Keep-disabled-FetchLaterAPI.patch @@ -22,8 +22,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/loader/keep_alive_url_loader.cc --- a/content/browser/loader/keep_alive_url_loader.cc +++ b/content/browser/loader/keep_alive_url_loader.cc -@@ -44,6 +44,36 @@ - #include "services/network/public/mojom/url_request.mojom.h" +@@ -49,6 +49,36 @@ + #include "third_party/abseil-cpp/absl/container/flat_hash_map.h" #include "third_party/blink/public/common/features.h" +namespace { @@ -59,7 +59,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l namespace features { // See third_party/blink/renderer/core/fetch/retry_options.idl for details of -@@ -416,7 +446,6 @@ KeepAliveURLLoader::KeepAliveURLLoader( +@@ -436,7 +466,6 @@ KeepAliveURLLoader::KeepAliveURLLoader( forwarding_client_( std::make_unique(this, std::move(forwarding_client))), @@ -67,7 +67,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l network_loader_factory_(std::move(network_loader_factory)), stored_url_load_(std::make_unique()), policy_container_host_(std::move(policy_container_host)), -@@ -492,7 +521,7 @@ void KeepAliveURLLoader::StartInternal(bool is_retry) { +@@ -512,7 +541,7 @@ void KeepAliveURLLoader::StartInternal(bool is_retry) { url_loader_ = blink::ThrottlingURLLoader::CreateLoaderAndStart( network_loader_factory_, throttles_getter_.Run(), request_id_, options_, &resource_request_, forwarding_client_.get(), @@ -79,7 +79,7 @@ diff --git a/content/browser/loader/keep_alive_url_loader.cc b/content/browser/l diff --git a/content/browser/loader/keep_alive_url_loader.h b/content/browser/loader/keep_alive_url_loader.h --- a/content/browser/loader/keep_alive_url_loader.h +++ b/content/browser/loader/keep_alive_url_loader.h -@@ -427,9 +427,6 @@ class CONTENT_EXPORT KeepAliveURLLoader +@@ -429,9 +429,6 @@ class CONTENT_EXPORT KeepAliveURLLoader // disconnected from the remote of URLLoader in the renderer. base::OneShotTimer disconnected_loader_timer_; @@ -99,7 +99,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc --- a/third_party/blink/renderer/core/fetch/fetch_manager.cc +++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc -@@ -271,6 +271,7 @@ class ResponseResolver final : public GarbageCollected { +@@ -276,6 +276,7 @@ class ResponseResolver final : public GarbageCollected { // Rejects the promise with the supplied object. void Reject(v8::Local error); void Reject(DOMException*); @@ -107,7 +107,7 @@ diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_part // Rejects the promise with the TypeError exception created at construction // time. Also optionally passes `devtools_request_id`, `issue_id`, and -@@ -326,6 +327,12 @@ void ResponseResolver::Reject(DOMException* dom_exception) { +@@ -331,6 +332,12 @@ void ResponseResolver::Reject(DOMException* dom_exception) { Clear(); } @@ -120,7 +120,7 @@ diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_part void ResponseResolver::RejectBecauseFailed( std::optional devtools_request_id, std::optional issue_id, -@@ -1302,10 +1309,20 @@ void FetchManager::Loader::Failed( +@@ -1312,10 +1319,20 @@ void FetchManager::Loader::Failed( if (response_resolver_) { ScriptState::Scope scope(GetScriptState()); if (dom_exception) { @@ -177,7 +177,7 @@ diff --git a/third_party/blink/renderer/platform/loader/child_url_loader_factory diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc -@@ -2998,7 +2998,7 @@ void ResourceFetcher::PrepareForLeakDetection() { +@@ -2994,7 +2994,7 @@ void ResourceFetcher::PrepareForLeakDetection() { void ResourceFetcher::StopFetchingInternal(StopFetchingTarget target) { // TODO(toyoshim): May want to suspend scheduler while canceling loaders so // that the cancellations below do not awake unnecessary scheduling. @@ -189,7 +189,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2205,8 +2205,8 @@ +@@ -2179,8 +2179,8 @@ { // The Blink runtime-enabled feature name for the API's IDL. // https://chromestatus.com/feature/4654499737632768 diff --git a/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch b/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch index 48ec2e62..d8c3f069 100644 --- a/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch +++ b/build/patches/Keep-disabled-WebViewMediaIntegrityApi.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/common/aw_features.cc b/android_webview/common/aw_features.cc --- a/android_webview/common/aw_features.cc +++ b/android_webview/common/aw_features.cc -@@ -81,6 +81,7 @@ BASE_FEATURE(kWebViewLazyFetchHandWritingIcon, +@@ -74,6 +74,7 @@ BASE_FEATURE(kWebViewLazyFetchHandWritingIcon, BASE_FEATURE(kWebViewMediaIntegrityApiBlinkExtension, "WebViewMediaIntegrityApiBlinkExtension", base::FEATURE_ENABLED_BY_DEFAULT); diff --git a/build/patches/Keep-empty-tabs-between-sessions.patch b/build/patches/Keep-empty-tabs-between-sessions.patch index cd72cd34..f1634c13 100644 --- a/build/patches/Keep-empty-tabs-between-sessions.patch +++ b/build/patches/Keep-empty-tabs-between-sessions.patch @@ -12,10 +12,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java -@@ -971,7 +971,7 @@ public class MultiWindowUtils implements ActivityStateListener { +@@ -1001,7 +1001,7 @@ public class MultiWindowUtils implements ActivityStateListener { for (TabModel model : models) { for (int i = 0; i < model.getCount(); i++) { - Tab tab = model.getTabAt(i); + Tab tab = model.getTabAtChecked(i); - if (!TabPersistentStore.shouldSkipTab(tab)) { + if ((true)) { totalCount++; @@ -24,7 +24,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/Mul diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -1268,27 +1268,12 @@ public class TabPersistentStore { +@@ -2108,27 +2108,12 @@ public class TabPersistentStore { continue; } @@ -49,7 +49,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer - return tab.getTabGroupId() == null; - } - - private void saveListToFile(TabModelSelectorMetadata listData) { - if (Objects.equals(mLastSavedMetadata, listData)) return; - // Save the index file containing the list of tabs to restore. + /** + * @return The shared pref APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE. This is used when we need to + * know the last known tab state before the active tab from the tab state is read. -- diff --git a/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch b/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch index 61b183a7..1009f654 100644 --- a/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch +++ b/build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch @@ -28,15 +28,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/incognito/Incog diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -5802,9 +5802,9 @@ +@@ -5855,10 +5855,10 @@ "expiry_milestone": -1 }, { - "name": "incognito-screenshot", - "owners": [ "zalmashni@google.com", "sideyilmaz@chromium.org", "chrome-incognito@google.com" ], -- "expiry_milestone": 140 + "name": "incognito-screenshot", // Bromite: guard this feature flag + "owners": [ "zalmashni@google.com", "sideyilmaz@chromium.org", "chrome-incognito@google.com" ], // - + // This flag is used by testers and developers to screenshot incognito features. +- "expiry_milestone": -1 + "expiry_milestone": -1 // - }, { diff --git a/build/patches/Keyboard-protection-flag.patch b/build/patches/Keyboard-protection-flag.patch index e0fc1704..fed69bfe 100644 --- a/build/patches/Keyboard-protection-flag.patch +++ b/build/patches/Keyboard-protection-flag.patch @@ -23,7 +23,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java -@@ -1028,6 +1028,11 @@ public final class ProductionSupportedFlagList { +@@ -1002,6 +1002,11 @@ public final class ProductionSupportedFlagList { CcFeatures.EXPORT_FRAME_TIMING_AFTER_FRAME_DONE, "When enabled, moves the layer tree client's metric export call for from beginning" + " of the subsequent frame to the end of the subsequent frame."), @@ -233,7 +233,7 @@ diff --git a/third_party/blink/renderer/core/events/keyboard_event.h b/third_par diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc -@@ -195,6 +195,14 @@ BASE_FEATURE(kSystemKeyboardLock, +@@ -159,6 +159,14 @@ BASE_FEATURE(kSystemKeyboardLock, "SystemKeyboardLock", base::FEATURE_ENABLED_BY_DEFAULT); @@ -251,9 +251,9 @@ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h -@@ -26,6 +26,8 @@ BASE_DECLARE_FEATURE(kSettingsShowsPerKeyboardSettings); - COMPONENT_EXPORT(UI_BASE_FEATURES) - BASE_DECLARE_FEATURE(kInputMethodSettingsUiUpdate); +@@ -24,6 +24,8 @@ COMPONENT_EXPORT(UI_BASE_FEATURES) + BASE_DECLARE_FEATURE(kSettingsShowsPerKeyboardSettings); + #endif // BUILDFLAG(IS_CHROMEOS) COMPONENT_EXPORT(UI_BASE_FEATURES) BASE_DECLARE_FEATURE(kSystemKeyboardLock); +COMPONENT_EXPORT(UI_BASE_FEATURES) BASE_DECLARE_FEATURE(kSystemKeyboardProtection); +COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsSystemKeyboardProtectionEnabled(); diff --git a/build/patches/Lock-Profile-Cookie-Database.patch b/build/patches/Lock-Profile-Cookie-Database.patch index 42d60889..6b2db280 100644 --- a/build/patches/Lock-Profile-Cookie-Database.patch +++ b/build/patches/Lock-Profile-Cookie-Database.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -1384,6 +1384,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( +@@ -1389,6 +1389,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( network_context_params->file_paths->cookie_database_name = base::FilePath(chrome::kCookieFilename); @@ -56,7 +56,7 @@ new file mode 100644 diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -3181,7 +3181,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const { +@@ -3188,7 +3188,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const { #if BUILDFLAG(IS_WIN) const bool enable_exclusive_access = @@ -68,7 +68,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -354,6 +354,14 @@ struct NetworkContextParams { +@@ -360,6 +360,14 @@ struct NetworkContextParams { // If true, cookies will be stored encrypted. bool enable_encrypted_cookies = true; diff --git a/build/patches/Log-dangling-attributes-in-some-html-elements.patch b/build/patches/Log-dangling-attributes-in-some-html-elements.patch index 4dee0833..ce501937 100644 --- a/build/patches/Log-dangling-attributes-in-some-html-elements.patch +++ b/build/patches/Log-dangling-attributes-in-some-html-elements.patch @@ -42,7 +42,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc -@@ -4902,6 +4902,14 @@ void Document::ProcessBaseElement() { +@@ -5052,6 +5052,14 @@ void Document::ProcessBaseElement() { KURL base_element_url; if (href) { String stripped_href = StripLeadingAndTrailingHTMLSpaces(*href); @@ -57,7 +57,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink if (!stripped_href.empty()) base_element_url = KURL(FallbackBaseURL(), stripped_href); } -@@ -4919,6 +4927,14 @@ void Document::ProcessBaseElement() { +@@ -5069,6 +5077,14 @@ void Document::ProcessBaseElement() { !GetExecutionContext()->GetSecurityOrigin()->CanRequest( base_element_url)) { UseCounter::Count(*this, WebFeature::kBaseWithCrossOriginHref); @@ -72,7 +72,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink } } -@@ -4949,6 +4965,8 @@ void Document::ProcessBaseElement() { +@@ -5099,6 +5115,8 @@ void Document::ProcessBaseElement() { if (target->Contains('<')) UseCounter::Count(*this, WebFeature::kBaseWithOpenBracketInTarget); base_target_ = *target; @@ -84,7 +84,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc -@@ -3495,8 +3495,26 @@ void Element::StripScriptingAttributes( +@@ -3632,8 +3632,26 @@ void Element::StripScriptingAttributes( attribute_vector.Shrink(destination); } @@ -115,7 +115,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/ diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h --- a/third_party/blink/renderer/core/dom/element.h +++ b/third_party/blink/renderer/core/dom/element.h -@@ -740,7 +740,8 @@ class CORE_EXPORT Element : public ContainerNode, public Animatable { +@@ -764,7 +764,8 @@ class CORE_EXPORT Element : public ContainerNode, public Animatable { virtual bool HasLegalLinkAttribute(const QualifiedName&) const; // Only called by the parser immediately after element construction. @@ -137,7 +137,7 @@ diff --git a/third_party/blink/renderer/core/editing/serializers/markup_formatte #include "third_party/blink/renderer/core/dom/cdata_section.h" #include "third_party/blink/renderer/core/dom/comment.h" #include "third_party/blink/renderer/core/dom/document.h" -@@ -216,6 +218,13 @@ void MarkupFormatter::AppendAttributeValue(StringBuilder& result, +@@ -214,6 +216,13 @@ void MarkupFormatter::AppendAttributeValue(StringBuilder& result, const Document& document) { if (attribute.Contains('<') || attribute.Contains('>')) { document.CountUse(mojom::blink::WebFeature::kAttributeValueContainsLtOrGt); @@ -214,7 +214,7 @@ diff --git a/third_party/blink/renderer/core/html/html_frame_element_base.cc b/t diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third_party/blink/renderer/core/html/html_iframe_element.cc --- a/third_party/blink/renderer/core/html/html_iframe_element.cc +++ b/third_party/blink/renderer/core/html/html_iframe_element.cc -@@ -166,6 +166,12 @@ void HTMLIFrameElement::CollectStyleForPresentationAttribute( +@@ -168,6 +168,12 @@ void HTMLIFrameElement::CollectStyleForPresentationAttribute( } } @@ -227,7 +227,7 @@ diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third void HTMLIFrameElement::ParseAttribute( const AttributeModificationParams& params) { const QualifiedName& name = params.name; -@@ -180,6 +186,16 @@ void HTMLIFrameElement::ParseAttribute( +@@ -182,6 +188,16 @@ void HTMLIFrameElement::ParseAttribute( } AtomicString old_name = name_; name_ = value; @@ -247,9 +247,9 @@ diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third diff --git a/third_party/blink/renderer/core/html/html_iframe_element.h b/third_party/blink/renderer/core/html/html_iframe_element.h --- a/third_party/blink/renderer/core/html/html_iframe_element.h +++ b/third_party/blink/renderer/core/html/html_iframe_element.h -@@ -65,6 +65,8 @@ class CORE_EXPORT HTMLIFrameElement : public HTMLFrameElementBase, - - void NaturalSizingInfoChanged() override; +@@ -68,6 +68,8 @@ class CORE_EXPORT HTMLIFrameElement : public HTMLFrameElementBase, + const V8UnionStringOrTrustedHTML* srcdoc() const; + void setSrcdoc(const V8UnionStringOrTrustedHTML*, ExceptionState&); + void ParserSetAttributes(Vector&) override; + @@ -331,9 +331,9 @@ diff --git a/third_party/blink/renderer/core/page/frame_tree.cc b/third_party/bl diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2025,8 +2025,8 @@ +@@ -2018,8 +2018,8 @@ // Escapes "<" and ">" in attribute values. This was launched - // in M138, and this flag can be removed in M140. + // in M139, and this flag can be removed in M141. // See: crbug.com/1175016 - name: "EscapeLtGtInAttributes", - status: "stable", @@ -341,8 +341,8 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 + status: "stable", // enabled by default }, { - name: "EventTimingHandleKeyboardEventSimulatedClick", -@@ -3078,6 +3078,12 @@ + name: "EventTimingInteractionCount", +@@ -3013,6 +3013,12 @@ name: "MacDisableCtrlHomeEnd", status: "stable", }, diff --git a/build/patches/Logcat-crash-reports-UI.patch b/build/patches/Logcat-crash-reports-UI.patch index 96ebf407..7e4e3baf 100644 --- a/build/patches/Logcat-crash-reports-UI.patch +++ b/build/patches/Logcat-crash-reports-UI.patch @@ -153,7 +153,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -647,6 +647,7 @@ static_library("ui") { +@@ -639,6 +639,7 @@ static_library("ui") { "//third_party/re2", "//third_party/webrtc_overrides:webrtc_component", "//third_party/zlib", diff --git a/build/patches/Media-fingerprinting-mitigations.patch b/build/patches/Media-fingerprinting-mitigations.patch index bf330c29..3b88245a 100644 --- a/build/patches/Media-fingerprinting-mitigations.patch +++ b/build/patches/Media-fingerprinting-mitigations.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/modules/webcodecs/video_decoder.cc b/third_party/blink/renderer/modules/webcodecs/video_decoder.cc --- a/third_party/blink/renderer/modules/webcodecs/video_decoder.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_decoder.cc -@@ -302,7 +302,7 @@ ScriptPromise VideoDecoder::isConfigSupported( +@@ -301,7 +301,7 @@ ScriptPromise VideoDecoder::isConfigSupported( auto* config_copy = CopyConfig(*config); // Run the "Check Configuration Support" algorithm. diff --git a/build/patches/Modify-default-preferences.patch b/build/patches/Modify-default-preferences.patch index 179f2a19..1fab63c0 100644 --- a/build/patches/Modify-default-preferences.patch +++ b/build/patches/Modify-default-preferences.patch @@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -86,6 +86,7 @@ +@@ -85,6 +85,7 @@ #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_switches.h" #include "components/autofill/core/common/autofill_util.h" @@ -78,7 +78,7 @@ diff --git a/chrome/browser/preloading/preloading_prefs.h b/chrome/browser/prelo diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -318,7 +318,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; +@@ -325,7 +325,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kSearchSuggestEnabled, @@ -102,7 +102,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -113,10 +113,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -117,10 +117,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); registry->RegisterBooleanPref( @@ -115,7 +115,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup); registry->RegisterDictionaryPref(prefs::kAppWindowPlacement); -@@ -189,7 +189,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -194,7 +194,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { #endif registry->RegisterBooleanPref( @@ -218,8 +218,8 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -151,7 +151,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -157,7 +157,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::NOTIFICATIONS, "notifications", - CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE, @@ -227,8 +227,8 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. /*allowlisted_primary_schemes=*/{}, /*valid_settings=*/ {CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, CONTENT_SETTING_ASK}, -@@ -239,7 +239,7 @@ void ContentSettingsRegistry::Init() { - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -245,7 +245,7 @@ void ContentSettingsRegistry::Init() { + PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync", - CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE, @@ -236,7 +236,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. /*allowlisted_primary_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -@@ -385,7 +385,7 @@ void ContentSettingsRegistry::Init() { +@@ -391,7 +391,7 @@ void ContentSettingsRegistry::Init() { // TODO(crbug.com/40602007): Update this to "SECURE_ONLY" once // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure // contexts. @@ -291,7 +291,7 @@ diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/compo diff --git a/components/signin/internal/identity_manager/primary_account_manager.cc b/components/signin/internal/identity_manager/primary_account_manager.cc --- a/components/signin/internal/identity_manager/primary_account_manager.cc +++ b/components/signin/internal/identity_manager/primary_account_manager.cc -@@ -342,7 +342,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -331,7 +331,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) { prefs::kGoogleServicesSyncingGaiaIdMigratedToSignedIn, std::string()); registry->RegisterStringPref( prefs::kGoogleServicesSyncingUsernameMigratedToSignedIn, std::string()); diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 90164ed5..0a1fae64 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -26,6 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../TabListEmptyCoordinator.java | 17 +- .../tab_management/TabSwitcherPaneBase.java | 9 + .../browser/feed/FeedSurfaceCoordinator.java | 4 + + .../android/java/res/xml/main_preferences.xml | 3 +- .../ChromeAccessibilitySettingsDelegate.java | 70 ++++++++ .../HeadlessBrowserControlsStateProvider.java | 5 + .../compositor/CompositorViewHolder.java | 7 + @@ -84,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../toolbar/LocationBarFocusScrimHandler.java | 5 + .../bottom/BottomControlsContentDelegate.java | 12 +- .../bottom/BottomControlsCoordinator.java | 11 +- - .../bottom/BottomControlsMediator.java | 20 ++- + .../bottom/BottomControlsMediator.java | 32 +++- .../bottom/BottomControlsProperties.java | 6 +- .../bottom/BottomControlsViewBinder.java | 2 + .../bottom/ScrollingBottomViewSceneLayer.java | 19 ++- @@ -98,16 +99,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/viz/common/features.cc | 2 + .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ - 85 files changed, 1048 insertions(+), 76 deletions(-) + 86 files changed, 1061 insertions(+), 78 deletions(-) create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc +++ b/cc/base/features.cc -@@ -37,6 +37,14 @@ BASE_FEATURE(kZeroCopyRBPPartialRasterWithGpuCompositor, - "ZeroCopyRBPPartialRasterWithGpuCompositor", +@@ -40,6 +40,14 @@ BASE_FEATURE(kSynchronizedScrolling, base::FEATURE_ENABLED_BY_DEFAULT); + #endif +BASE_FEATURE(kMoveTopToolbarToBottom, + "MoveTopToolbarToBottom", @@ -123,10 +124,10 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc diff --git a/cc/base/features.h b/cc/base/features.h --- a/cc/base/features.h +++ b/cc/base/features.h -@@ -20,6 +20,8 @@ CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); - // Enables partial raster in ZeroCopyRasterBufferProvider when used with the GPU - // compositor. - CC_BASE_EXPORT BASE_DECLARE_FEATURE(kZeroCopyRBPPartialRasterWithGpuCompositor); +@@ -17,6 +17,8 @@ namespace features { + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kAlignSurfaceLayerImplToPixelGrid); + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kComputeRasterTranslateForExternalScale); + CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kMoveTopToolbarToBottom); +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kDisableToolbarSwipeUp); @@ -143,7 +144,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont namespace cc { namespace { -@@ -543,6 +544,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( +@@ -540,6 +541,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( // content. If the top controls have no height, the content should scroll // immediately. gfx::Vector2dF applied_delta(0.f, old_top_offset - ContentTopOffset()); @@ -158,7 +159,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -5008,6 +5008,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -5098,6 +5098,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { if (scroll_delta.IsZero()) return false; @@ -171,7 +172,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java -@@ -55,6 +55,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; +@@ -58,6 +58,7 @@ import org.chromium.components.sensitive_content.SensitiveContentFeatures; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; @@ -179,8 +180,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.util.List; -@@ -191,7 +192,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T - @Override +@@ -196,7 +197,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T + @Initializer public void initializeWithNative( BottomControlsCoordinator.BottomControlsVisibilityController visibilityController, - Callback onSnapshotTokenChange) { @@ -189,7 +190,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser ObservableSupplierImpl tabStripTokenSupplier = new ObservableSupplierImpl<>(); var currentTabGroupModelFilterSupplier = -@@ -283,7 +285,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T +@@ -291,7 +293,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T sharedImageTilesConfigBuilder, mThemeColorProvider, onSnapshotTokenChange, @@ -202,7 +203,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java -@@ -75,6 +75,12 @@ import org.chromium.url.GURL; +@@ -76,6 +76,12 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Objects; @@ -213,9 +214,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser +import androidx.annotation.ColorInt; + /** A mediator for the TabGroupUi. Responsible for managing the internal state of the component. */ + @NullMarked public class TabGroupUiMediator implements BackPressHandler { - -@@ -147,6 +153,11 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -151,6 +157,11 @@ public class TabGroupUiMediator implements BackPressHandler { private final Callback mOnSnapshotTokenChange; private final ObservableSupplier mChildTokenSupplier; @@ -226,9 +227,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + // These should only be used when regular (non-incognito) tabs are set in the model. private final @Nullable SharedImageTilesCoordinator mSharedImageTilesCoordinator; - private final @Nullable SharedImageTilesConfig.Builder mSharedImageTilesConfigBuilder; -@@ -179,7 +190,9 @@ public class TabGroupUiMediator implements BackPressHandler { - @Nullable SharedImageTilesConfig.Builder sharedImageTilesConfigBuilder, + private final SharedImageTilesConfig.@Nullable Builder mSharedImageTilesConfigBuilder; +@@ -182,7 +193,9 @@ public class TabGroupUiMediator implements BackPressHandler { + SharedImageTilesConfig.@Nullable Builder sharedImageTilesConfigBuilder, ThemeColorProvider themeColorProvider, Callback onSnapshotTokenChange, - ObservableSupplierImpl childTokenSupplier) { @@ -238,7 +239,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mResetHandler = resetHandler; mModel = model; mTabModelSelector = tabModelSelector; -@@ -233,11 +246,30 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -236,11 +249,30 @@ public class TabGroupUiMediator implements BackPressHandler { mIsShowingHub = true; } @@ -269,7 +270,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser resetTabStrip(); } -@@ -259,6 +291,8 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -262,6 +294,8 @@ public class TabGroupUiMediator implements BackPressHandler { @Override public void restoreCompleted() { resetTabStrip(); @@ -278,7 +279,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } @Override -@@ -358,6 +392,8 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -360,6 +394,8 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TabGroupUiProperties.WIDTH_PX_CALLBACK, mWidthPxSupplier::set); resetTabStrip(); @@ -287,7 +288,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mHandleBackPressChangedSupplier = handleBackPressChangedSupplier; if (mTabGridDialogControllerSupplier != null) { mTabGridDialogControllerSupplier.onAvailable( -@@ -388,6 +424,18 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -392,6 +428,18 @@ public class TabGroupUiMediator implements BackPressHandler { mModel.set(TINT, mThemeColorProvider.getTint()); } @@ -306,9 +307,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser private void setupToolbarButtons() { View.OnClickListener showGroupDialogOnClickListener = view -> { -@@ -575,6 +623,7 @@ public class TabGroupUiMediator implements BackPressHandler { - } +@@ -582,6 +630,7 @@ public class TabGroupUiMediator implements BackPressHandler { + @SuppressWarnings("NullAway") public void destroy() { + mTabObserver.destroy(); if (mTabModelSelector != null) { @@ -399,9 +400,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java -@@ -6,8 +6,14 @@ package org.chromium.chrome.browser.tasks.tab_management; - - import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.CARD_TYPE; +@@ -10,8 +10,14 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.Card + import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.ModelType.TAB; + import static org.chromium.chrome.browser.tasks.tab_management.TabProperties.TAB_ID; +import android.os.Parcel; +import android.os.Parcelable; @@ -413,8 +414,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser +import android.content.res.Configuration; import android.graphics.Rect; import android.util.Size; - import android.view.LayoutInflater; -@@ -68,6 +74,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; + import android.view.InputDevice; +@@ -75,6 +81,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.recyclerview.widget.ItemTouchHelper2; import org.chromium.ui.widget.ViewLookupCachingFrameLayout; @@ -422,8 +423,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; - import java.util.List; -@@ -149,6 +157,124 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + import java.util.ArrayList; +@@ -162,6 +170,124 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO private int mAwaitingTabId = Tab.INVALID_TAB_ID; private @TabActionState int mTabActionState; @@ -445,7 +446,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + } + + @Override -+ public void writeToParcel(@NonNull Parcel dest, int flags) { ++ public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(superState, flags); + dest.writeInt(mTopPadding); + } @@ -548,7 +549,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Construct a coordinator for UI that shows a list of tabs. * -@@ -403,6 +529,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -415,6 +541,12 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO checkAwaitingLayout(); } }; @@ -561,7 +562,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mRecyclerView.setLayoutManager(gridLayoutManager); mMediator.registerOrientationListener(gridLayoutManager); mMediator.updateSpanCount( -@@ -422,6 +554,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO +@@ -434,6 +566,25 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO } }; mRecyclerView.setLayoutManager(layoutManager); @@ -587,16 +588,16 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations); } -@@ -442,7 +593,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO - if (hasEmptyView) { +@@ -456,7 +607,7 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + assumeNonNull(mTabListEmptyCoordinator); mTabListEmptyCoordinator = new TabListEmptyCoordinator( - parentView, mModelList, this::runOnItemAnimatorFinished); + parentView, mModelList, this::runOnItemAnimatorFinished, mBrowserControlsStateProvider); } mTabListHighlighter = new TabListHighlighter(mModelList); - -@@ -756,6 +907,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO + mTabListMergeAnimationManager = new TabListMergeAnimationManager(mRecyclerView); +@@ -790,6 +941,9 @@ public class TabListCoordinator implements PriceWelcomeMessageProvider, DestroyO void prepareTabSwitcherPaneView() { registerLayoutChangeListener(); mRecyclerView.setupCustomItemAnimator(); @@ -666,15 +667,15 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java -@@ -45,6 +45,7 @@ import org.chromium.base.task.PostTask; - import org.chromium.base.task.TaskTraits; - import org.chromium.build.BuildConfig; +@@ -46,6 +46,7 @@ import org.chromium.build.BuildConfig; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.compositor.CompositorViewHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.hub.DisplayButtonData; import org.chromium.chrome.browser.hub.FadeHubLayoutAnimationFactory; import org.chromium.chrome.browser.hub.FullButtonData; -@@ -169,6 +170,7 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc +@@ -174,6 +175,7 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc private @Nullable PaneHubController mPaneHubController; private @Nullable Long mWaitForTabStateInitializedStartTimeMs; private final @Nullable ObservableSupplier mXrSpaceModeObservableSupplier; @@ -682,7 +683,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * @param context The activity context. -@@ -465,6 +467,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc +@@ -471,6 +473,13 @@ public abstract class TabSwitcherPaneBase implements Pane, TabSwitcher, TabSwitc Log.d(TAG, "Geometry not ready using fallback animation."); useFallbackAnimation = true; } @@ -699,7 +700,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java -@@ -16,6 +16,7 @@ import android.os.Looper; +@@ -19,6 +19,7 @@ import android.os.Looper; import android.os.SystemClock; import android.view.Gravity; import android.view.LayoutInflater; @@ -707,7 +708,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -@@ -620,6 +621,9 @@ public class FeedSurfaceCoordinator +@@ -661,6 +662,9 @@ public class FeedSurfaceCoordinator ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMarginStart(margin); layoutParams.setMarginEnd(margin); @@ -717,6 +718,19 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ mNtpHeader.setLayoutParams(layoutParams); } +diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml +--- a/chrome/android/java/res/xml/main_preferences.xml ++++ b/chrome/android/java/res/xml/main_preferences.xml +@@ -48,7 +48,8 @@ for the previous order (main_preferences_legacy). --> + android:fragment="org.chromium.chrome.browser.toolbar.settings.AddressBarSettingsFragment" + android:key="address_bar" + android:order="7" +- android:title="@string/address_bar_settings"/> ++ android:title="@string/address_bar_settings" ++ app:isPreferenceVisible="false"/> + getBrowserControlsManager()); addSceneOverlay(mTabStripLayoutHelperManager); addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); @@ -957,7 +971,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/ScrollDelegate.java -@@ -351,7 +351,7 @@ public class ScrollDelegate { +@@ -355,7 +355,7 @@ public class ScrollDelegate { boolean useUnadjustedScrollOffset = isRtl != isLeft; float scrollOffset = mScrollOffset; @@ -969,7 +983,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -29,6 +29,7 @@ import androidx.appcompat.content.res.AppCompatResources; +@@ -30,6 +30,7 @@ import androidx.appcompat.content.res.AppCompatResources; import org.chromium.base.Callback; import org.chromium.base.metrics.RecordUserAction; @@ -977,7 +991,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.Supplier; -@@ -107,6 +108,8 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -116,6 +117,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -986,14 +1000,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -256,12 +259,16 @@ public class StripLayoutHelperManager +@@ -272,12 +275,16 @@ public class StripLayoutHelperManager // Drag-Drop - @Nullable private TabStripDragHandler mTabStripDragHandler; + private @Nullable TabStripDragHandler mTabStripDragHandler; + private final Supplier mBrowserControlsManagerSupplier; + private final float mDpToPx; + - private class TabStripEventHandler implements MotionEventHandler { + private class TabStripEventHandler implements AreaMotionEventHandler { @Override public void onDown(float x, float y, int buttons) { if (DragDropGlobalState.hasValue()) { @@ -1003,7 +1017,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null && mModelSelectorButton.onDown(x, y, buttons)) { return; } -@@ -286,6 +293,7 @@ public class StripLayoutHelperManager +@@ -302,6 +309,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1011,15 +1025,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton != null) { mModelSelectorButton.drag(x, y); } -@@ -297,6 +305,7 @@ public class StripLayoutHelperManager +@@ -313,6 +321,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } + y -= mStripFilterArea.top; long time = time(); if (mModelSelectorButton != null && mModelSelectorButton.click(x, y, buttons)) { - mModelSelectorButton.handleClick(time, buttons); -@@ -310,6 +319,7 @@ public class StripLayoutHelperManager + mModelSelectorButton.handleClick(time, buttons, modifiers); +@@ -326,6 +335,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1027,7 +1041,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -318,6 +328,7 @@ public class StripLayoutHelperManager +@@ -334,6 +344,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1035,17 +1049,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(x, y); } -@@ -457,7 +468,8 @@ public class StripLayoutHelperManager - DataSharingTabManager dataSharingTabManager, - @NonNull BottomSheetController bottomSheetController, - @NonNull Supplier shareDelegateSupplier, -- @Nullable ObservableSupplier xrSpaceModeObservableSupplier) { -+ @Nullable ObservableSupplier xrSpaceModeObservableSupplier, +@@ -475,7 +486,8 @@ public class StripLayoutHelperManager + BottomSheetController bottomSheetController, + Supplier shareDelegateSupplier, + @Nullable ObservableSupplier xrSpaceModeObservableSupplier, +- TopControlsStacker topControlsStacker) { ++ TopControlsStacker topControlsStacker, + Supplier browserControlsManagerSupplier) { mContext = context; Resources res = context.getResources(); mManagerHost = managerHost; -@@ -566,6 +578,8 @@ public class StripLayoutHelperManager +@@ -586,6 +598,8 @@ public class StripLayoutHelperManager multiInstanceManager, shareDelegateSupplier, TabGroupListBottomSheetCoordinator::new); @@ -1054,7 +1068,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -820,6 +834,10 @@ public class StripLayoutHelperManager +@@ -854,6 +868,10 @@ public class StripLayoutHelperManager yOffset = 0; } @@ -1065,7 +1079,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -833,7 +851,9 @@ public class StripLayoutHelperManager +@@ -867,7 +885,9 @@ public class StripLayoutHelperManager mStripTransitionScrimOpacity, mLeftPadding, mRightPadding, @@ -1076,7 +1090,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -899,11 +919,21 @@ public class StripLayoutHelperManager +@@ -933,11 +953,21 @@ public class StripLayoutHelperManager mRightPadding, mTopPadding); @@ -1112,7 +1126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** A SceneLayer to render a static tab. */ @NullMarked @JNINamespace("android") -@@ -52,7 +54,10 @@ public class StaticTabSceneLayer extends SceneLayer { +@@ -53,7 +55,10 @@ public class StaticTabSceneLayer extends SceneLayer { float y = model.get(LayoutTab.CONTENT_OFFSET) + model.get(LayoutTab.RENDER_Y) * LayoutTab.sDpToPx; @@ -1136,9 +1150,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** * A SceneLayer to render a tab stack. * TODO(changwan): change layouts to share one instance of this. -@@ -93,6 +95,12 @@ public class TabListSceneLayer extends SceneLayer { +@@ -91,6 +93,12 @@ public class TabListSceneLayer extends SceneLayer { - TabListSceneLayerJni.get().beginBuildingFrame(mNativePtr, TabListSceneLayer.this); + TabListSceneLayerJni.get().beginBuildingFrame(mNativePtr); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // the tabs list content window is fixed at the top, where the top toolbar used to be @@ -1152,7 +1166,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java -@@ -25,6 +25,9 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; +@@ -26,6 +26,9 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; import org.chromium.chrome.browser.layouts.scene_layer.SceneOverlayLayer; import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; import org.chromium.ui.resources.ResourceManager; @@ -1218,16 +1232,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/findinpage/Find diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java -@@ -48,6 +48,8 @@ import org.chromium.ui.OffsetTagConstraints; +@@ -54,6 +54,8 @@ import org.chromium.ui.OffsetTagConstraints; import org.chromium.ui.base.ViewUtils; import org.chromium.ui.util.TokenHolder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; + /** A class that manages browser control visibility and positioning. */ + @NullMarked public class BrowserControlsManager implements ActivityStateListener, BrowserControlsSizer { - // The amount of time to delay the control show request after returning to a once visible -@@ -568,6 +570,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -580,6 +582,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon } } @@ -1242,7 +1256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow @Override public int getTopControlsMinHeight() { return mTopControlsMinHeight; -@@ -669,6 +679,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -681,6 +691,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon @Override public float getTopVisibleContentOffset() { @@ -1262,9 +1276,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag +import org.chromium.chrome.browser.flags.ChromeFeatureList; + /** - * Coordinator of {@link MessageContainer}, which can adjust margins of the message container - * and control the visibility of browser control when message is being shown. -@@ -59,7 +62,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider + * Coordinator of {@link MessageContainer}, which can adjust margins of the message container and + * control the visibility of browser control when message is being shown. +@@ -62,7 +65,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider } CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams(); @@ -1278,22 +1292,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag mContainer.setLayoutParams(params); } -@@ -132,6 +140,11 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider - - /** @return Offset of the message container from the top of the screen. */ +@@ -141,7 +149,10 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider + */ private int getContainerTopOffset() { + assert mContainer != null; +- + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + return mControlsManager.getContentOffset() + + (mControlsManager.getBottomControlsHeight() - mControlsManager.getBottomControlOffset()); + } -+ if (mControlsManager.getContentOffset() == 0) return 0; final Resources res = mContainer.getResources(); return mControlsManager.getContentOffset() diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java b/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java --- a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter.java -@@ -338,7 +338,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter +@@ -352,7 +352,7 @@ public class ChromeTabModalPresenter extends TabModalPresenter Resources resources, BrowserControlsStateProvider provider) { int scrimVerticalMargin = resources.getDimensionPixelSize(R.dimen.tab_modal_scrim_vertical_margin); @@ -1305,7 +1319,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -115,6 +115,7 @@ import org.chromium.content_public.browser.NavigationController; +@@ -124,6 +124,7 @@ import org.chromium.content_public.browser.NavigationController; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1313,7 +1327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import androidx.annotation.NonNull; import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; -@@ -773,11 +774,16 @@ public class NewTabPage +@@ -839,11 +840,16 @@ public class NewTabPage final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1332,7 +1346,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -793,9 +799,7 @@ public class NewTabPage +@@ -859,9 +865,7 @@ public class NewTabPage * strip. */ private int getToolbarExtraYOffset() { @@ -1346,9 +1360,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -15,6 +15,9 @@ import android.util.AttributeSet; +@@ -14,6 +14,9 @@ import android.text.Editable; + import android.util.AttributeSet; import android.view.DragEvent; - import android.view.LayoutInflater; import android.view.ViewStub; +import android.view.ViewGroup.LayoutParams; +import android.widget.FrameLayout; @@ -1356,10 +1370,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; -@@ -196,7 +199,12 @@ public class NewTabPageLayout extends LinearLayout +@@ -214,7 +217,12 @@ public class NewTabPageLayout extends LinearLayout mFakeSearchBoxLayout = findViewById(R.id.search_box); mFakeSearchBoxEditText = findViewById(R.id.search_box_text); - insertSiteSectionView(); + initializeSiteSectionView(); - + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + FrameLayout.LayoutParams params = @@ -1373,7 +1387,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java -@@ -32,6 +32,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; +@@ -34,6 +34,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; @@ -1381,7 +1395,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP /** * The native recent tabs page. Lists recently closed tabs, open windows and tabs from the user's -@@ -106,7 +107,8 @@ public class RecentTabsPage +@@ -118,7 +119,8 @@ public class RecentTabsPage mView.addOnAttachStateChangeListener(this); @@ -1391,7 +1405,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mBrowserControlsStateProvider = browserControlsStateProvider; mBrowserControlsStateProvider.addObserver(this); onBottomControlsHeightChanged( -@@ -118,14 +120,23 @@ public class RecentTabsPage +@@ -130,14 +132,23 @@ public class RecentTabsPage mTabStripHeightSupplier = tabStripHeightSupplier; mView.setPadding(0, mTabStripHeightSupplier.get(), 0, 0); @@ -1417,16 +1431,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mEdgeToEdgeSupplier = edgeToEdgeSupplier; if (EdgeToEdgeUtils.isDrawKeyNativePageToEdgeEnabled()) { mPadAdjuster = -@@ -337,7 +348,7 @@ public class RecentTabsPage +@@ -365,7 +376,7 @@ public class RecentTabsPage + if (mBrowserControlsStateProvider == null) return; - private void updateMargins() { final View recentTabsRoot = mView.findViewById(R.id.recent_tabs_root); - final int topControlsHeight = mBrowserControlsStateProvider.getTopControlsHeight(); + final int topControlsHeight = mBrowserControlsStateProvider.getTopControlsHeightRealOffset(); final int contentOffset = mBrowserControlsStateProvider.getContentOffset(); ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) recentTabsRoot.getLayoutParams(); -@@ -353,9 +364,17 @@ public class RecentTabsPage +@@ -381,9 +392,17 @@ public class RecentTabsPage // If the content offset is different from the margin, we use translationY to position the // view in line with the content offset. @@ -1461,7 +1475,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se import java.lang.ref.WeakReference; /** Queries the user's default search engine and shows autocomplete suggestions. */ -@@ -296,6 +301,12 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -298,6 +303,12 @@ public class SearchActivity extends AsyncInitializationActivity // Build the search box. mSearchBox = contentView.findViewById(R.id.search_location_bar); mAnchorView = contentView.findViewById(R.id.toolbar); @@ -1477,7 +1491,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -219,6 +219,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -208,6 +208,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier); } @@ -1526,7 +1540,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato import java.util.List; -@@ -81,7 +82,10 @@ class StatusIndicatorSceneLayer extends SceneOverlayLayer implements SceneOverla +@@ -80,7 +81,10 @@ class StatusIndicatorSceneLayer extends SceneOverlayLayer implements SceneOverla @Override public SceneOverlayLayer getUpdatedSceneOverlayTree( RectF viewport, RectF visibleViewport, ResourceManager resourceManager, float yOffset) { @@ -1536,8 +1550,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato + offset = (int)viewport.bottom - offset; + } StatusIndicatorSceneLayerJni.get() - .updateStatusIndicatorLayer( - mNativePtr, + .updateStatusIndicatorLayer(mNativePtr, resourceManager, mResourceId, offset); + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java @@ -1551,7 +1565,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar /** * Contains logic for managing the toolbar visual component. This class manages the interactions * with the rest of the application to ensure the toolbar is always visually up to date. -@@ -860,6 +863,17 @@ public class ToolbarManager +@@ -863,6 +866,17 @@ public class ToolbarManager }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); mControlContainer = controlContainer; mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); @@ -1569,7 +1583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBookmarkModelSupplier = bookmarkModelSupplier; mBookmarkModelSupplier.addObserver(mBookmarkModelSupplierObserver); -@@ -1487,6 +1501,7 @@ public class ToolbarManager +@@ -1505,6 +1519,7 @@ public class ToolbarManager // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1577,7 +1591,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } else if (mLayoutChangeListener == null) { mLayoutChangeListener = (view, -@@ -1500,6 +1515,7 @@ public class ToolbarManager +@@ -1518,6 +1533,7 @@ public class ToolbarManager oldBottom) -> { if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1585,7 +1599,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener( mLayoutChangeListener); mLayoutChangeListener = null; -@@ -2069,9 +2085,21 @@ public class ToolbarManager +@@ -2122,9 +2138,21 @@ public class ToolbarManager return ((LocationBarCoordinator) mLocationBar).getUrlBarViewRectProvider(); } @@ -1608,7 +1622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar assert mTabGroupUiOneshotSupplier == null; assert mUndoBarThrottle != null; ThemeColorProvider bottomUiThemeColorProvider = -@@ -2086,7 +2114,7 @@ public class ToolbarManager +@@ -2139,7 +2167,7 @@ public class ToolbarManager mActivityTabProvider, mTabModelSelector, mActivity, @@ -1617,7 +1631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBrowserControlsSizer, mScrimManager, mOmniboxFocusStateSupplier, -@@ -2113,7 +2141,7 @@ public class ToolbarManager +@@ -2166,7 +2194,7 @@ public class ToolbarManager mControlsVisibilityDelegate, mFullscreenManager, mEdgeToEdgeControllerSupplier, @@ -1626,7 +1640,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar bottomControlsContentDelegateSupplier, mTabObscuringHandler, mOverlayPanelVisibilitySupplier, -@@ -2121,7 +2149,8 @@ public class ToolbarManager +@@ -2174,7 +2202,8 @@ public class ToolbarManager /* readAloudRestoringSupplier= */ () -> { final var readAloud = mReadAloudControllerSupplier.get(); return readAloud != null && readAloud.isRestoringPlayer(); @@ -1746,7 +1760,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/android/chrome_jni_headers/TabStripSceneLayer_jni.h" -@@ -125,8 +126,10 @@ void TabStripSceneLayer::SetContentTree( +@@ -124,8 +125,10 @@ void TabStripSceneLayer::SetContentTree( content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1759,7 +1773,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -187,7 +190,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -181,7 +184,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, jfloat right_padding, jfloat top_padding) { gfx::RectF content(0, y_offset, width, height); @@ -1773,7 +1787,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer background_layer_->SetBounds(gfx::Size(width, height)); background_layer_->SetBackgroundColor(SkColor4f::FromColor(background_color)); -@@ -196,7 +204,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -190,7 +198,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, tab_strip_layer_->SetPosition(gfx::PointF(0, top_padding)); // Content tree should not be affected by tab strip scene layer visibility. @@ -1785,7 +1799,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BottomControlsStacker.java -@@ -273,7 +273,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser +@@ -275,7 +275,7 @@ public class BottomControlsStacker implements BrowserControlsStateProvider.Obser /** * @return {@link BrowserControlsStateProvider} instance in the current Activity. */ @@ -1866,9 +1880,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse #include "chrome/browser/android/webapk/webapk_features.h" #include "chrome/browser/browser_features.h" #include "chrome/browser/contextmenu/context_menu_features.h" -@@ -342,6 +343,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -354,6 +355,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kNativePageTransitionHardwareCapture, &kNavBarColorAnimation, - &kNavBarColorMatchesTabBackground, &kNewTabPageAndroidTriggerForPrerender2, + &features::kMoveTopToolbarToBottom, + &features::kDisableToolbarSwipeUp, @@ -1878,7 +1892,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -474,6 +474,10 @@ public abstract class ChromeFeatureList { +@@ -490,6 +490,10 @@ public abstract class ChromeFeatureList { "NewTabPageAndroidTriggerForPrerender2"; public static final String NEW_TAB_PAGE_CUSTOMIZATION = "NewTabPageCustomization"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_FOR_MVT = "NewTabPageCustomizationForMvt"; @@ -1889,7 +1903,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NEW_TAB_PAGE_CUSTOMIZATION_TOOLBAR_BUTTON = "NewTabPageCustomizationToolbarButton"; public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2"; -@@ -937,6 +941,10 @@ public abstract class ChromeFeatureList { +@@ -980,6 +984,10 @@ public abstract class ChromeFeatureList { newCachedFlag(NOTIFICATION_TRAMPOLINE, false); public static final CachedFlag sOptimizationGuidePushNotifications = newCachedFlag(OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, true); @@ -1900,7 +1914,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false); public static final CachedFlag sPostGetMyMemoryStateToBackground = newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true); -@@ -1137,6 +1145,8 @@ public abstract class ChromeFeatureList { +@@ -1190,6 +1198,8 @@ public abstract class ChromeFeatureList { sNewTabPageCustomizationV2, sNotificationTrampoline, sOptimizationGuidePushNotifications, @@ -1918,9 +1932,9 @@ diff --git a/chrome/browser/hub/internal/BUILD.gn b/chrome/browser/hub/internal/ sources = [ + "android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java", "android/java/src/org/chromium/chrome/browser/hub/ApplyButtonData.java", + "android/java/src/org/chromium/chrome/browser/hub/EmptyHubBottomToolbarDelegate.java", "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactory.java", - "android/java/src/org/chromium/chrome/browser/hub/FadeHubLayoutAnimationFactoryImpl.java", -@@ -89,6 +90,10 @@ android_library("java") { +@@ -102,6 +103,10 @@ android_library("java") { "//ui/android:ui_no_recycler_view_java", "//url:url_java", ] @@ -1941,8 +1955,8 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br +import android.widget.LinearLayout; import org.chromium.base.Callback; - import org.chromium.base.supplier.ObservableSupplier; -@@ -22,6 +23,7 @@ import org.chromium.base.supplier.TransitiveObservableSupplier; + import org.chromium.base.metrics.RecordUserAction; +@@ -23,6 +24,7 @@ import org.chromium.base.supplier.TransitiveObservableSupplier; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.feature_engagement.TrackerFactory; @@ -1950,7 +1964,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.tab.Tab; -@@ -133,6 +135,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { +@@ -164,6 +166,12 @@ public class HubCoordinator implements PaneHubController, BackPressHandler { mHubPaneHostCoordinator = new HubPaneHostCoordinator( hubPaneHostView, paneManager.getFocusedPaneSupplier(), hubColorMixer); @@ -1961,8 +1975,8 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br + hubPaneHostView.setLayoutParams(params); + } - TransitiveObservableSupplier overlayViewSupplier = - new TransitiveObservableSupplier<>( + ObservableSupplier<@Nullable View> overlayViewSupplier = + new TransitiveObservableSupplier( diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java --- a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java +++ b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubManagerImpl.java @@ -2006,7 +2020,7 @@ diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/br mHubContainerView.setLayoutParams(params); } -@@ -292,6 +300,8 @@ public class HubManagerImpl implements HubManager, HubController { +@@ -297,6 +305,8 @@ public class HubManagerImpl implements HubManager, HubController { } mSnackbarOverrideToken = mSnackbarManager.pushParentViewToOverrideStack( @@ -2072,12 +2086,12 @@ diff --git a/chrome/browser/hub/internal/android/res/layout/hub_layout.xml b/chr - -@@ -17,7 +17,7 @@ found in the LICENSE file. - - +@@ -22,7 +22,7 @@ found in the LICENSE file. + android:layout_height="0dp" + android:layout_weight="1"/> - + @@ -2108,7 +2122,7 @@ diff --git a/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.x diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -2395,7 +2395,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2315,7 +2315,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, @@ -2126,9 +2140,9 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.SystemClock; - import android.util.SparseArray; import android.view.Gravity; -@@ -48,6 +49,7 @@ import org.chromium.build.annotations.NullMarked; + import android.view.KeyEvent; +@@ -46,6 +47,7 @@ import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.RequiresNonNull; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider.ControlsPosition; @@ -2136,7 +2150,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.chrome.browser.ui.appmenu.internal.R; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.chips.ChipView; -@@ -250,6 +252,12 @@ class AppMenu implements OnKeyListener { +@@ -249,6 +251,12 @@ class AppMenu implements OnKeyListener { } mListView = contentView.findViewById(R.id.app_menu_list); @@ -2147,18 +2161,18 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch + mListView.setStackFromBottom(true); + } - int footerHeight = inflateFooter(footerResourceId, contentView, menuWidth); - int headerHeight = inflateHeader(headerResourceId, contentView, menuWidth); -@@ -288,7 +296,7 @@ class AppMenu implements OnKeyListener { + int footerHeight = attachFooter(footer, (ViewGroup) contentView, menuWidth); + int headerHeight = attachHeader(header, menuWidth); +@@ -287,7 +295,7 @@ class AppMenu implements OnKeyListener { Math.min( Math.abs(mTempLocation[1] - visibleDisplayFrame.top), Math.abs(mTempLocation[1] - visibleDisplayFrame.bottom)); - setMenuHeight( + int popupHeight = setMenuHeight( - menuItemIds, - heightList, + mInitialSizingHelper, visibleDisplayFrame, -@@ -308,8 +316,14 @@ class AppMenu implements OnKeyListener { + sizingPadding, +@@ -305,8 +313,14 @@ class AppMenu implements OnKeyListener { sizingPadding, anchorView, popupWidth, @@ -2174,7 +2188,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch try { mPopup.showAtLocation( -@@ -370,11 +384,20 @@ class AppMenu implements OnKeyListener { +@@ -381,11 +395,20 @@ class AppMenu implements OnKeyListener { Rect padding, View anchorView, int popupWidth, @@ -2196,16 +2210,16 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch int[] offsets = new int[2]; // If we have a hardware menu button, locate the app menu closer to the estimated // hardware menu button location. -@@ -479,7 +502,7 @@ class AppMenu implements OnKeyListener { +@@ -491,7 +514,7 @@ class AppMenu implements OnKeyListener { } @RequiresNonNull("mPopup") - private void setMenuHeight( + private int setMenuHeight( - List menuItemIds, - List heightList, + InitialSizingHelper sizingHelper, Rect appDimensions, -@@ -498,7 +521,13 @@ class AppMenu implements OnKeyListener { + Rect padding, +@@ -509,7 +532,13 @@ class AppMenu implements OnKeyListener { - footerHeight - headerHeight - anchorViewImpactHeight; @@ -2220,8 +2234,8 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch if (mIsByPermanentButton) availableScreenSpace -= padding.top; if (availableScreenSpace <= 0 && sExceptionReporter != null) { String logMessage = -@@ -528,6 +557,7 @@ class AppMenu implements OnKeyListener { - menuItemIds, heightList, groupDividerResourceId, availableScreenSpace); +@@ -546,6 +575,7 @@ class AppMenu implements OnKeyListener { + int menuHeight = calculateHeightForItems(heightList, canBeLastList, availableScreenSpace); menuHeight += footerHeight + headerHeight + padding.top + padding.bottom; mPopup.setHeight(menuHeight); + return menuHeight; @@ -2239,7 +2253,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch import org.chromium.base.supplier.Supplier; import org.chromium.build.annotations.MonotonicNonNull; import org.chromium.build.annotations.NullMarked; -@@ -267,7 +268,16 @@ class AppMenuHandlerImpl +@@ -273,7 +274,16 @@ class AppMenuHandlerImpl assert !(isByPermanentButton && startDragging); mModelList = mDelegate.getMenuItems(); @@ -2254,12 +2268,12 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch mModelList.addObserver(mListObserver); + ContextThemeWrapper wrapper = - new ContextThemeWrapper(mContext, R.style.OverflowMenuThemeOverlay); + new ContextThemeWrapper(mContext, R.style.AppMenuThemeOverlay); diff --git a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java b/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java --- a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java +++ b/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeControllerImpl.java -@@ -696,6 +696,7 @@ public class EdgeToEdgeControllerImpl +@@ -710,6 +710,7 @@ public class EdgeToEdgeControllerImpl * the system insets due to the keyboard or the bottom controls being visible. */ private boolean shouldPadAdjusters() { @@ -2270,15 +2284,15 @@ diff --git a/chrome/browser/ui/android/edge_to_edge/internal/java/src/org/chromi diff --git a/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java b/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java --- a/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java +++ b/chrome/browser/ui/android/edge_to_edge/java/src/org/chromium/chrome/browser/ui/edge_to_edge/EdgeToEdgeUtils.java -@@ -132,6 +132,7 @@ public class EdgeToEdgeUtils { +@@ -134,6 +134,7 @@ public class EdgeToEdgeUtils { * being attached to the window. */ public static boolean isEdgeToEdgeBottomChinEnabled(Activity activity) { + if ((true)) return false; // Make sure we test SDK version before checking the Feature so Field Trials only collect // from qualifying devices. - if (!EdgeToEdgeFieldTrial.getBottomChinOverrides().isEnabledForManufacturerVersion()) { -@@ -422,6 +423,7 @@ public class EdgeToEdgeUtils { + if (!EdgeToEdgeFieldTrialImpl.getBottomChinOverrides().isEnabledForManufacturerVersion()) { +@@ -399,6 +400,7 @@ public class EdgeToEdgeUtils { */ @Deprecated static boolean hasTappableNavigationBar(Window window) { @@ -2325,7 +2339,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -230,6 +230,7 @@ public class LocationBarCoordinator +@@ -214,6 +214,7 @@ public class LocationBarCoordinator uiOverrides.isForcedPhoneStyleOmnibox(), baseChromeLayout, deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, @@ -2463,7 +2477,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** An observer watching for changes to the visual state of the omnibox suggestions. */ public interface OmniboxSuggestionsVisualStateObserver { -@@ -104,6 +107,7 @@ public class AutocompleteCoordinator +@@ -105,6 +108,7 @@ public class AutocompleteCoordinator Context context = parent.getContext(); ModelList listItems = new ModelList(); @@ -2471,7 +2485,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow PropertyModel listModel = new PropertyModel.Builder(SuggestionListProperties.ALL_KEYS) .with(SuggestionListProperties.EMBEDDER, dropdownEmbedder) -@@ -226,6 +230,16 @@ public class AutocompleteCoordinator +@@ -228,6 +232,16 @@ public class AutocompleteCoordinator dropdown.forcePhoneStyleOmnibox(forcePhoneStyleOmnibox); dropdown.setAdapter(mAdapter); @@ -2491,7 +2505,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java -@@ -71,6 +71,8 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -72,6 +72,8 @@ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2500,7 +2514,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.List; import java.util.Optional; -@@ -1188,7 +1190,9 @@ class AutocompleteMediator +@@ -1189,7 +1191,9 @@ class AutocompleteMediator @Override public void onSuggestionDropdownScroll() { mSuggestionsListScrolled = true; @@ -2612,7 +2626,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1698,6 +1698,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1563,6 +1563,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2628,7 +2642,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn --- a/chrome/browser/ui/android/toolbar/BUILD.gn +++ b/chrome/browser/ui/android/toolbar/BUILD.gn -@@ -206,6 +206,7 @@ android_library("java") { +@@ -211,6 +211,7 @@ android_library("java") { "//content/public/android:content_java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_annotation_annotation_experimental_java", @@ -2756,15 +2770,27 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mIsBottomControlsVisible = visible; updateCompositedViewVisibility(); updateAndroidViewVisibility(); -@@ -193,6 +200,7 @@ class BottomControlsMediator - boolean bottomControlsMinHeightChanged, - boolean requestNewFrame, - boolean isVisibilityForced) { -+ mModel.set(BottomControlsProperties.TOPCONTROLSMINHEIGHT_OFFSET, topControlsMinHeightOffset); - // Method call routed to onBrowserControlsOffsetUpdate. - if (BottomControlsStacker.isDispatchingYOffset()) return; +@@ -183,6 +190,19 @@ class BottomControlsMediator + mTabObscuringHandler.removeObserver(this); + } -@@ -302,11 +310,13 @@ class BottomControlsMediator ++ @Override ++ public void onControlsOffsetChanged( ++ int topOffset, ++ int topControlsMinHeightOffset, ++ boolean topControlsMinHeightChanged, ++ int bottomOffset, ++ int bottomControlsMinHeightOffset, ++ boolean bottomControlsMinHeightChanged, ++ boolean requestNewFrame, ++ boolean isVisibilityForced) { ++ mModel.set(BottomControlsProperties.TOPCONTROLSMINHEIGHT_OFFSET, topControlsMinHeightOffset); ++ } ++ + @Override + public void onBottomControlsHeightChanged( + int bottomControlsHeight, int bottomControlsMinHeight) { +@@ -272,11 +292,13 @@ class BottomControlsMediator && !mIsInSwipeLayout && getBrowserControls().getBottomControlOffset() == 0; if (visible) { @@ -2808,7 +2834,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder.java -@@ -55,6 +55,8 @@ class BottomControlsViewBinder { +@@ -56,6 +56,8 @@ class BottomControlsViewBinder { view.sceneLayer.setYOffset(model.get(BottomControlsProperties.Y_OFFSET)); } else if (BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y == propertyKey) { view.root.setTranslationY(model.get(BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y)); @@ -2853,7 +2879,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * @param visible Whether this {@link SceneLayer} is visible. */ -@@ -134,6 +146,11 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements +@@ -132,6 +144,11 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements isShadowVisible = mBottomView.getVisibility() != View.VISIBLE; } @@ -2865,7 +2891,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ScrollingBottomViewSceneLayerJni.get() .updateScrollingBottomViewLayer( mNativePtr, -@@ -142,7 +159,7 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements +@@ -139,7 +156,7 @@ public class ScrollingBottomViewSceneLayer extends SceneOverlayLayer implements mResourceId, mTopShadowHeightPx, mCurrentXOffsetPx, @@ -2877,7 +2903,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java -@@ -72,6 +72,10 @@ import java.lang.annotation.Retention; +@@ -76,6 +76,10 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.function.BooleanSupplier; @@ -2888,7 +2914,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** Layout for the browser controls (omnibox, menu, tab strip, etc..). */ @NullMarked public class ToolbarControlContainer extends OptimizedFrameLayout -@@ -179,6 +183,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout +@@ -183,6 +187,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout if (view != null) ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height; } @@ -2973,7 +2999,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** A SceneLayer to render the top toolbar. This is the "view" piece of the top toolbar overlay. */ @JNINamespace("android") -@@ -43,6 +44,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -44,6 +45,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { /** Push all information about the texture to native at once. */ private void pushProperties(PropertyModel model) { if (mResourceManagerSupplier.get() == null) return; @@ -3114,8 +3140,8 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kAndroidBcivBottomControls); - #endif // BUILDFLAG(IS_ANDROID) - + // If this flag is enabled, a DumpWithoutCrashing() is captured when a bad + // state is detected when moving the composited UI. For example, this could diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc @@ -3126,8 +3152,8 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ +#include "cc/base/features.h" #include "cc/base/math_util.h" #include "cc/slim/layer.h" - #include "components/input/events_helper.h" -@@ -918,6 +919,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( + #include "components/input/cursor_manager.h" +@@ -916,6 +917,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( // factor. Thus, |top_content_offset| in CSS pixels is also in DIPs. float top_content_offset = metadata.top_controls_height * metadata.top_controls_shown_ratio; diff --git a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch index fb291d69..5784d9d3 100644 --- a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch +++ b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch @@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -436,6 +436,10 @@ For more settings that use data to improve your Chrome experience, go to diff --git a/build/patches/Multi-Screen-Window-Placement-API-fix.patch b/build/patches/Multi-Screen-Window-Placement-API-fix.patch index 616e943a..3d32f403 100644 --- a/build/patches/Multi-Screen-Window-Placement-API-fix.patch +++ b/build/patches/Multi-Screen-Window-Placement-API-fix.patch @@ -14,7 +14,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/third_party/blink/renderer/core/frame/screen.cc b/third_party/blink/renderer/core/frame/screen.cc --- a/third_party/blink/renderer/core/frame/screen.cc +++ b/third_party/blink/renderer/core/frame/screen.cc -@@ -226,7 +226,7 @@ bool Screen::isExtended() const { +@@ -211,7 +211,7 @@ bool Screen::isExtended() const { return false; } diff --git a/build/patches/Multiple-fingerprinting-mitigations.patch b/build/patches/Multiple-fingerprinting-mitigations.patch index b9b05ca4..46c8b56d 100644 --- a/build/patches/Multiple-fingerprinting-mitigations.patch +++ b/build/patches/Multiple-fingerprinting-mitigations.patch @@ -37,7 +37,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/svg/svg_text_content_element.cc | 28 +++- .../canvas2d/base_rendering_context_2d.cc | 24 ++- third_party/blink/renderer/platform/BUILD.gn | 5 +- - .../platform/exported/web_runtime_features.cc | 9 + + .../platform/exported/web_runtime_features.cc | 8 + .../platform/graphics/image_data_buffer.cc | 8 + .../platform/graphics/static_bitmap_image.cc | 154 ++++++++++++++++++ .../platform/graphics/static_bitmap_image.h | 2 + @@ -46,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/ungoogled/BUILD.gn | 10 ++ third_party/ungoogled/ungoogled_switches.cc | 15 ++ third_party/ungoogled/ungoogled_switches.h | 17 ++ - 25 files changed, 356 insertions(+), 16 deletions(-) + 25 files changed, 355 insertions(+), 16 deletions(-) create mode 100755 cromite_flags/chrome/browser/about_flags_cc/Multiple-fingerprinting-mitigations.inc create mode 100644 third_party/ungoogled/BUILD.gn create mode 100644 third_party/ungoogled/ungoogled_switches.cc @@ -55,7 +55,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2549,6 +2549,7 @@ static_library("browser") { +@@ -2564,6 +2564,7 @@ static_library("browser") { "//services/device/public/cpp/bluetooth", "//services/device/public/cpp/geolocation", "//services/device/public/cpp/usb", @@ -66,19 +66,19 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -262,6 +262,8 @@ +@@ -260,6 +260,8 @@ #include "ui/ui_features.h" #include "url/url_features.h" +#include "third_party/ungoogled/ungoogled_switches.h" + - #if BUILDFLAG(ENABLE_EXTENSIONS) - #include "extensions/common/extension_features.h" - #endif + #if BUILDFLAG(IS_ANDROID) + #include "base/android/pre_freeze_background_memory_trimmer.h" + #include "chrome/browser/contextmenu/context_menu_features.h" diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn -@@ -294,6 +294,7 @@ source_set("browser") { +@@ -298,6 +298,7 @@ source_set("browser") { "//third_party/re2", "//third_party/snappy", "//third_party/sqlite", @@ -89,7 +89,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -216,6 +216,7 @@ +@@ -217,6 +217,7 @@ #include "url/gurl.h" #include "url/origin.h" @@ -97,7 +97,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #if BUILDFLAG(IS_ANDROID) #include "base/android/child_process_binding_types.h" #include "content/browser/font_unique_name_lookup/font_unique_name_lookup_service.h" -@@ -3477,6 +3478,8 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3458,6 +3459,8 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kDisableBestEffortTasks, switches::kDisableBreakpad, switches::kDisableFileSystem, @@ -129,7 +129,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. #if BUILDFLAG(IS_ANDROID) #include "base/android/build_info.h" #endif -@@ -520,6 +522,10 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { +@@ -514,6 +516,10 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) { // as a last resort. void SetCustomizedRuntimeFeaturesFromCombinedArgs( const base::CommandLine& command_line) { @@ -180,7 +180,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -@@ -984,6 +985,16 @@ Document::Document(const DocumentInit& initializer, +@@ -1085,6 +1086,16 @@ Document::Document(const DocumentInit& initializer, TRACE_EVENT_WITH_FLOW0("blink", "Document::Document", TRACE_ID_LOCAL(this), TRACE_EVENT_FLAG_FLOW_OUT); DCHECK(agent_); @@ -197,7 +197,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink if (base::FeatureList::IsEnabled(features::kDelayAsyncScriptExecution) && features::kDelayAsyncScriptExecutionDelayByDefaultParam.Get()) { script_runner_delayer_->Activate(); -@@ -2647,6 +2658,14 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() { +@@ -2778,6 +2789,14 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() { #endif } @@ -215,7 +215,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h --- a/third_party/blink/renderer/core/dom/document.h +++ b/third_party/blink/renderer/core/dom/document.h -@@ -582,6 +582,10 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -572,6 +572,10 @@ class CORE_EXPORT Document : public ContainerNode, has_xml_declaration_ = has_xml_declaration ? 1 : 0; } @@ -226,7 +226,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/ V8VisibilityState visibilityState() const; String visibilityStateAsString() const; bool IsPageVisible() const; -@@ -2780,6 +2784,9 @@ class CORE_EXPORT Document : public ContainerNode, +@@ -2770,6 +2774,9 @@ class CORE_EXPORT Document : public ContainerNode, base::ElapsedTimer start_time_; @@ -247,7 +247,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creat #include "third_party/blink/renderer/platform/graphics/skia/skia_utils.h" #include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" -@@ -219,6 +220,9 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator( +@@ -220,6 +221,9 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator( std::min(info.height(), max_dimension)); src_data_.reset(info, src_data_.addr(), src_data_.rowBytes()); } @@ -377,7 +377,7 @@ diff --git a/third_party/blink/renderer/core/svg/svg_text_content_element.cc b/t diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc -@@ -105,6 +105,10 @@ +@@ -104,6 +104,10 @@ #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "ui/gfx/geometry/skia_conversions.h" @@ -388,7 +388,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c // Including "base/time/time.h" triggers a bug in IWYU. // https://github.com/include-what-you-use/include-what-you-use/issues/1122 // IWYU pragma: no_include "base/numerics/clamped_math.h" -@@ -552,6 +556,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( +@@ -554,6 +558,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal( snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds(); DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh))); } @@ -399,7 +399,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c } return image_data; -@@ -1246,13 +1254,27 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { +@@ -1248,13 +1256,27 @@ TextMetrics* BaseRenderingContext2D::measureText(const String& text) { TextDirection direction = ToTextDirection(state.GetDirection(), host, computed_style); @@ -431,7 +431,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -1736,7 +1736,9 @@ component("platform") { +@@ -1741,7 +1741,9 @@ component("platform") { "//third_party/blink/renderer:non_test_config", ] @@ -442,22 +442,21 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re allow_circular_includes_from = [ "//third_party/blink/renderer/platform/blob", -@@ -1819,6 +1821,7 @@ component("platform") { +@@ -1823,6 +1825,7 @@ component("platform") { "//third_party/blink/public/strings", "//third_party/blink/renderer/platform/wtf", "//third_party/ced", + "//third_party/ungoogled:switches", "//third_party/emoji-segmenter", + "//third_party/harfbuzz-ng", "//third_party/highway:libhwy", - "//third_party/icu", diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc -@@ -68,4 +68,13 @@ void WebRuntimeFeatures::EnableFluentScrollbars(bool enable) { - void WebRuntimeFeatures::EnableFluentOverlayScrollbars(bool enable) { +@@ -69,6 +69,14 @@ void WebRuntimeFeatures::EnableFluentOverlayScrollbars(bool enable) { RuntimeEnabledFeatures::SetFluentOverlayScrollbarsEnabled(enable); } -+ + +void WebRuntimeFeatures::EnableFingerprintingCanvasMeasureTextNoise(bool enable) { + RuntimeEnabledFeatures::SetFingerprintingCanvasMeasureTextNoiseEnabled(enable); +} @@ -466,7 +465,9 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c + RuntimeEnabledFeatures::SetFingerprintingCanvasImageDataNoiseEnabled(enable); +} + - } // namespace blink + void WebRuntimeFeatures::EnableLocalNetworkAccessWebRTC(bool enable) { + RuntimeEnabledFeatures::SetLocalNetworkAccessWebRTCEnabled(enable); + } diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc --- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc +++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc @@ -684,7 +685,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3367,6 +3367,12 @@ +@@ -3320,6 +3320,12 @@ status: {"Mac": "test", "default": "stable"}, base_feature: "none", }, diff --git a/build/patches/Never-treat-Proguard-warnings-as-errors.patch b/build/patches/Never-treat-Proguard-warnings-as-errors.patch index 24ee00e5..66f3a549 100644 --- a/build/patches/Never-treat-Proguard-warnings-as-errors.patch +++ b/build/patches/Never-treat-Proguard-warnings-as-errors.patch @@ -9,7 +9,7 @@ Subject: Never treat Proguard warnings as errors diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni -@@ -1194,9 +1194,9 @@ if (enable_java_templates) { +@@ -1221,9 +1221,9 @@ if (enable_java_templates) { _source_file_template, "--proguard-configs=@FileArg($_rebased_build_config:proguard_all_configs)", ] diff --git a/build/patches/OpenSearch-miscellaneous.patch b/build/patches/OpenSearch-miscellaneous.patch index 265b32ee..4fdb541a 100644 --- a/build/patches/OpenSearch-miscellaneous.patch +++ b/build/patches/OpenSearch-miscellaneous.patch @@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java --- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java +++ b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java -@@ -291,7 +291,9 @@ public class SearchEngineAdapter extends BaseAdapter +@@ -292,7 +292,9 @@ public class SearchEngineAdapter extends BaseAdapter continue; } if (recentEngineNum < MAX_RECENT_ENGINE_NUM @@ -176,7 +176,7 @@ diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/c #include "base/metrics/histogram_macros.h" #include "base/no_destructor.h" #include "base/strings/string_number_conversions.h" -@@ -261,6 +262,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { +@@ -262,6 +263,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() { GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL(); if (!osdd_url.is_empty()) { @@ -321,7 +321,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc // regardless of |url| if the default search provider is managed by policy or // controlled by an extension. bool CanMakeDefault(const TemplateURL* url) const; -@@ -777,9 +780,6 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -774,9 +777,6 @@ class TemplateURLService final : public WebDataServiceConsumer, // SetKeywordSearchTermsForURL is invoked. void UpdateKeywordSearchTermsForURL(const URLVisitedDetails& details); diff --git a/build/patches/Override-Navigator-Language.patch b/build/patches/Override-Navigator-Language.patch index b3abe16c..1e023a94 100644 --- a/build/patches/Override-Navigator-Language.patch +++ b/build/patches/Override-Navigator-Language.patch @@ -69,7 +69,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content #include "components/metrics/single_sample_metrics.h" #include "components/services/storage/privileged/mojom/indexed_db_control.mojom.h" #include "components/services/storage/public/cpp/buckets/bucket_id.h" -@@ -3389,8 +3390,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( +@@ -3369,8 +3370,11 @@ void RenderProcessHostImpl::AppendRendererCommandLine( PropagateBrowserCommandLineToRenderer(browser_command_line, command_line); // Pass on the browser locale. diff --git a/build/patches/Partition-Blink-memory-cache.patch b/build/patches/Partition-Blink-memory-cache.patch index a0968183..e73c1bf5 100644 --- a/build/patches/Partition-Blink-memory-cache.patch +++ b/build/patches/Partition-Blink-memory-cache.patch @@ -40,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc b diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_network_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_network_agent.cc -@@ -2654,7 +2654,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document, +@@ -2661,7 +2661,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document, if (!cached_resource) { cached_resource = MemoryCache::Get()->ResourceForURL( url, document->Fetcher()->GetCacheIdentifier( @@ -77,7 +77,7 @@ diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_part diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc --- a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc +++ b/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc -@@ -209,7 +209,7 @@ void MemoryCache::RemoveInternal(ResourceMap* resource_map, +@@ -282,7 +282,7 @@ void MemoryCache::RemoveInternal(ResourceMap* resource_map, } bool MemoryCache::Contains(const Resource* resource) const { @@ -86,7 +86,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/ return false; const auto resource_maps_it = -@@ -225,13 +225,9 @@ bool MemoryCache::Contains(const Resource* resource) const { +@@ -298,13 +298,9 @@ bool MemoryCache::Contains(const Resource* resource) const { return resource == resources_it->value->GetResource(); } @@ -98,7 +98,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.cc b/ Resource* MemoryCache::ResourceForURL(const KURL& resource_url, const String& cache_identifier) const { + if (cache_identifier.empty()) return nullptr; - DCHECK(WTF::IsMainThread()); + DCHECK(IsMainThread()); if (!resource_url.IsValid() || resource_url.IsNull()) return nullptr; diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.h b/third_party/blink/renderer/platform/loader/fetch/memory_cache.h @@ -127,7 +127,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/memory_cache.h b/t diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc -@@ -989,7 +989,8 @@ Resource* ResourceFetcher::CreateResourceForStaticData( +@@ -985,7 +985,8 @@ Resource* ResourceFetcher::CreateResourceForStaticData( } const String cache_identifier = GetCacheIdentifier( @@ -137,7 +137,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c // Most off-main-thread resource fetches use Resource::kRaw and don't reach // this point, but off-main-thread module fetches might. if (IsMainThread()) { -@@ -1393,7 +1394,8 @@ Resource* ResourceFetcher::RequestResource(FetchParameters& params, +@@ -1389,7 +1390,8 @@ Resource* ResourceFetcher::RequestResource(FetchParameters& params, params.Url(), GetCacheIdentifier( params.Url(), @@ -147,7 +147,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c if (resource) { policy = DetermineRevalidationPolicy(resource_type, params, *resource, is_static_data); -@@ -1706,7 +1708,8 @@ Resource* ResourceFetcher::CreateResourceForLoading( +@@ -1702,7 +1704,8 @@ Resource* ResourceFetcher::CreateResourceForLoading( const ResourceFactory& factory) { const String cache_identifier = GetCacheIdentifier(params.GetResourceRequest().Url(), @@ -157,7 +157,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c DCHECK(!IsMainThread() || params.IsStaleRevalidation() || !MemoryCache::Get()->ResourceForURL(params.GetResourceRequest().Url(), cache_identifier)); -@@ -2832,11 +2835,47 @@ void ResourceFetcher::UpdateImagePrioritiesAndSpeculativeDecodes() { +@@ -2828,11 +2831,47 @@ void ResourceFetcher::UpdateImagePrioritiesAndSpeculativeDecodes() { } String ResourceFetcher::GetCacheIdentifier(const KURL& url, @@ -210,7 +210,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c } // Requests that can be satisfied via `archive_` (i.e. MHTML) or -@@ -2851,7 +2890,7 @@ String ResourceFetcher::GetCacheIdentifier(const KURL& url, +@@ -2847,7 +2886,7 @@ String ResourceFetcher::GetCacheIdentifier(const KURL& url, return bundle->GetCacheIdentifier(); } @@ -222,7 +222,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.c diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h -@@ -282,7 +282,12 @@ class PLATFORM_EXPORT ResourceFetcher +@@ -287,7 +287,12 @@ class PLATFORM_EXPORT ResourceFetcher // `url` is used for finding a matching WebBundle. // If `skip_service_worker` is true, the identifier won't be a ServiceWorker's // identifier to keep the cache separated. diff --git a/build/patches/Partition-HSTS-cache-by-NAK.patch b/build/patches/Partition-HSTS-cache-by-NAK.patch index c47309c7..cb8cf3ba 100644 --- a/build/patches/Partition-HSTS-cache-by-NAK.patch +++ b/build/patches/Partition-HSTS-cache-by-NAK.patch @@ -43,7 +43,7 @@ diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/s diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc --- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc +++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc -@@ -402,7 +402,10 @@ void NetInternalsMessageHandler::OnDomainSecurityPolicyDelete( +@@ -395,7 +395,10 @@ void NetInternalsMessageHandler::OnDomainSecurityPolicyDelete( // There cannot be a unicode entry in the HSTS set. return; } @@ -54,7 +54,7 @@ diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/ *domain, base::BindOnce(&IgnoreBoolCallback)); } -@@ -412,7 +415,10 @@ void NetInternalsMessageHandler::OnHSTSQuery(const base::Value::List& list) { +@@ -405,7 +408,10 @@ void NetInternalsMessageHandler::OnHSTSQuery(const base::Value::List& list) { DCHECK(callback_id && domain); AllowJavascript(); @@ -65,7 +65,7 @@ diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/ *domain, base::BindOnce(&NetInternalsMessageHandler::ResolveCallbackWithResult, weak_factory_.GetWeakPtr(), *callback_id)); -@@ -438,8 +444,12 @@ void NetInternalsMessageHandler::OnHSTSAdd(const base::Value::List& list) { +@@ -431,8 +437,12 @@ void NetInternalsMessageHandler::OnHSTSAdd(const base::Value::List& list) { const bool sts_include_subdomains = list[1].GetBool(); base::Time expiry = base::Time::Now() + base::Days(1000); @@ -94,7 +94,7 @@ diff --git a/components/password_manager/core/browser/hsts_query.cc b/components diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/browser/web_package/signed_exchange_handler.cc --- a/content/browser/web_package/signed_exchange_handler.cc +++ b/content/browser/web_package/signed_exchange_handler.cc -@@ -93,6 +93,7 @@ using VerifyCallback = +@@ -94,6 +94,7 @@ using VerifyCallback = void VerifyCert(const scoped_refptr& certificate, const GURL& url, @@ -102,7 +102,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br const std::string& ocsp_result, const std::string& sct_list, FrameTreeNodeId frame_tree_node_id, -@@ -114,7 +115,7 @@ void VerifyCert(const scoped_refptr& certificate, +@@ -115,7 +116,7 @@ void VerifyCert(const scoped_refptr& certificate, } network_context->VerifyCertForSignedExchange( @@ -111,7 +111,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br std::move(wrapped_callback)); } -@@ -176,6 +177,7 @@ SignedExchangeHandler::SignedExchangeHandler( +@@ -177,6 +178,7 @@ SignedExchangeHandler::SignedExchangeHandler( std::unique_ptr body, ExchangeHeadersCallback headers_callback, std::unique_ptr cert_fetcher_factory, @@ -119,7 +119,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br std::optional outer_request_isolation_info, int load_flags, const net::IPEndPoint& remote_endpoint, -@@ -189,6 +191,7 @@ SignedExchangeHandler::SignedExchangeHandler( +@@ -190,6 +192,7 @@ SignedExchangeHandler::SignedExchangeHandler( source_(std::move(body)), cert_fetcher_factory_(std::move(cert_fetcher_factory)), devtools_proxy_(std::move(devtools_proxy)), @@ -127,7 +127,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br outer_request_isolation_info_(std::move(outer_request_isolation_info)), load_flags_(load_flags), remote_endpoint_(remote_endpoint), -@@ -528,7 +531,7 @@ void SignedExchangeHandler::OnCertReceived( +@@ -529,7 +532,7 @@ void SignedExchangeHandler::OnCertReceived( // property, or const std::string& stapled_ocsp_response = unverified_cert_chain_->ocsp(); @@ -228,7 +228,7 @@ new file mode 100644 diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc -@@ -87,7 +87,7 @@ bool AddHash(base::span sha256_hash, HashValueVector& out) { +@@ -79,7 +79,7 @@ bool HashesIntersect(const absl::flat_hash_set& a, // Converts |hostname| from dotted form ("www.google.com") to the form // used in DNS: "\x03www\x06google\x03com", lowercases that, and returns // the result. @@ -237,7 +237,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // We cannot perform the operations as detailed in the spec here as `host` // has already undergone IDN processing before it reached us. Thus, we // lowercase the input (probably redudnant since most input here has been -@@ -108,6 +108,29 @@ std::vector CanonicalizeHost(std::string_view host) { +@@ -100,6 +100,29 @@ std::vector CanonicalizeHost(std::string_view host) { return std::move(new_host).value(); } @@ -267,7 +267,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // PreloadResult is the result of resolving a specific name in the preloaded // data. struct PreloadResult { -@@ -199,7 +222,7 @@ bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { +@@ -191,7 +214,7 @@ bool DecodeHSTSPreload(std::string_view search_hostname, PreloadResult* out) { // Ensure that |search_hostname| is a valid hostname before // processing. @@ -276,7 +276,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -259,18 +282,19 @@ TransportSecurityState::TransportSecurityState( +@@ -250,18 +273,19 @@ TransportSecurityState::TransportSecurityState( // Both HSTS and HPKP cause fatal SSL errors, so return true if a // host has either. @@ -299,7 +299,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ dict.Set("should_upgrade_to_ssl", sts_state.ShouldUpgradeToSSL()); dict.Set("host_found_in_hsts_bypass_list", hsts_host_bypass_list_.find(host) != hsts_host_bypass_list_.end()); -@@ -278,12 +302,13 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( +@@ -269,12 +293,13 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( } SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( @@ -314,7 +314,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // Only top level navigations should be upgraded when // kHstsTopLevelNavigationsOnly is enabled. -@@ -294,7 +319,7 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( +@@ -285,7 +310,7 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( STSState sts_state; // Check the dynamic list first (removing the entry if expired). @@ -323,7 +323,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // [*.]localhost hosts now ignore Strict-Transport-Security response // headers, but an entry may have been stored before this restriction // was introduced (crbug.com/41251622). -@@ -319,29 +344,31 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( +@@ -310,29 +335,31 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( } bool TransportSecurityState::ShouldUpgradeToSSL( @@ -339,8 +339,8 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins( std::string_view host, bool is_issued_by_known_root, -- const HashValueVector& public_key_hashes) { -+ const HashValueVector& public_key_hashes, +- const std::vector& public_key_hashes) { ++ const std::vector& public_key_hashes, + const NetworkAnonymizationKey& network_anonymization_key) { // Perform pin validation only if the server actually has public key pins. - if (!HasPublicKeyPins(host)) { @@ -361,14 +361,14 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } ct::CTRequirementsStatus TransportSecurityState::CheckCTRequirements( -@@ -395,12 +422,13 @@ void TransportSecurityState::UpdatePinList( +@@ -386,12 +413,13 @@ void TransportSecurityState::UpdatePinList( } void TransportSecurityState::AddHSTSInternal( + const NetworkAnonymizationKey& nak, std::string_view host, TransportSecurityState::STSState::UpgradeMode upgrade_mode, - const base::Time& expiry, + base::Time expiry, bool include_subdomains) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - const std::vector canonicalized_host = CanonicalizeHost(host); @@ -376,15 +376,15 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -424,13 +452,14 @@ void TransportSecurityState::AddHSTSInternal( +@@ -415,13 +443,14 @@ void TransportSecurityState::AddHSTSInternal( DirtyNotify(); } -void TransportSecurityState::AddHPKPInternal(std::string_view host, +void TransportSecurityState::AddHPKPInternal(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& last_observed, - const base::Time& expiry, + base::Time last_observed, + base::Time expiry, bool include_subdomains, const HashValueVector& hashes) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -393,7 +393,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -474,10 +503,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( +@@ -469,10 +498,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( return PKPStatus::VIOLATED; } @@ -406,7 +406,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -554,7 +583,8 @@ void TransportSecurityState::DirtyNotify() { +@@ -549,7 +578,8 @@ void TransportSecurityState::DirtyNotify() { delegate_->StateIsDirty(this); } @@ -416,7 +416,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ std::string_view value) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); -@@ -573,23 +603,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host, +@@ -568,23 +598,25 @@ bool TransportSecurityState::AddHSTSHeader(std::string_view host, upgrade_mode = STSState::MODE_FORCE_HTTPS; } @@ -428,7 +428,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ -void TransportSecurityState::AddHSTS(std::string_view host, +void TransportSecurityState::AddHSTS(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& expiry, + base::Time expiry, bool include_subdomains) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - AddHSTSInternal(host, STSState::MODE_FORCE_HTTPS, expiry, include_subdomains); @@ -438,7 +438,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ -void TransportSecurityState::AddHPKP(std::string_view host, +void TransportSecurityState::AddHPKP(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& expiry, + base::Time expiry, bool include_subdomains, const HashValueVector& hashes) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -447,12 +447,12 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } size_t TransportSecurityState::num_sts_entries() const { -@@ -613,9 +645,10 @@ bool TransportSecurityState::IsBuildTimely() { - TransportSecurityState::PKPStatus - TransportSecurityState::CheckPublicKeyPinsImpl(std::string_view host, - bool is_issued_by_known_root, -- const HashValueVector& hashes) { -+ const HashValueVector& hashes, +@@ -609,9 +641,10 @@ TransportSecurityState::PKPStatus + TransportSecurityState::CheckPublicKeyPinsImpl( + std::string_view host, + bool is_issued_by_known_root, +- const std::vector& hashes) { ++ const std::vector& hashes, + const NetworkAnonymizationKey& network_anonymization_key) { PKPState pkp_state; - bool found_state = GetPKPState(host, &pkp_state); @@ -460,7 +460,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // HasPublicKeyPins should have returned true in order for this method to have // been called. -@@ -656,7 +689,7 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, +@@ -652,7 +685,7 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, PreloadResult result; if (host_pins_.has_value()) { // Ensure that |host| is a valid hostname before processing. @@ -469,7 +469,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -740,21 +773,21 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, +@@ -717,21 +750,21 @@ bool TransportSecurityState::GetStaticPKPState(std::string_view host, return false; } @@ -497,7 +497,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -791,11 +824,11 @@ bool TransportSecurityState::GetDynamicSTSState(std::string_view host, +@@ -768,11 +801,11 @@ bool TransportSecurityState::GetDynamicSTSState(std::string_view host, return false; } @@ -514,7 +514,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_state.h --- a/net/http/transport_security_state.h +++ b/net/http/transport_security_state.h -@@ -246,6 +246,7 @@ class NET_EXPORT TransportSecurityState { +@@ -248,6 +248,7 @@ class NET_EXPORT TransportSecurityState { // As ShouldUpgradeToSSL(), but also returns whether the decision came from // static or dynamic state, for metrics. SSLUpgradeDecision GetSSLUpgradeDecision( @@ -522,7 +522,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s std::string_view host, bool is_top_level_nav, const NetLogWithSource& net_log = NetLogWithSource()); -@@ -255,14 +256,15 @@ class NET_EXPORT TransportSecurityState { +@@ -257,15 +258,16 @@ class NET_EXPORT TransportSecurityState { // primary public interface; direct access to STS and PKP states is best // left to tests. The caller needs to handle the optional pinning override // when is_issued_by_known_root is false. @@ -532,17 +532,18 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s + bool ShouldUpgradeToSSL(const NetworkAnonymizationKey& nak, std::string_view host, bool is_top_level_nav, const NetLogWithSource& net_log = NetLogWithSource()); - PKPStatus CheckPublicKeyPins(std::string_view host, - bool is_issued_by_known_root, -- const HashValueVector& hashes); + PKPStatus CheckPublicKeyPins( + std::string_view host, + bool is_issued_by_known_root, +- const std::vector& public_key_hashes); - bool HasPublicKeyPins(std::string_view host); -+ const HashValueVector& hashes, ++ const std::vector& public_key_hashes, + const NetworkAnonymizationKey& nak); + bool HasPublicKeyPins(const NetworkAnonymizationKey& nak, std::string_view host); // Returns CT_REQUIREMENTS_NOT_MET if a connection violates CT policy // requirements: that is, if a connection to |host|, using the validated -@@ -348,7 +350,7 @@ class NET_EXPORT TransportSecurityState { +@@ -351,7 +353,7 @@ class NET_EXPORT TransportSecurityState { // // If an entry is deleted, the new state will be persisted through // the Delegate (if any). @@ -551,7 +552,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| if |host| has dynamic or static // HSTS/HPKP (respectively) state. If multiple entries match |host|, dynamic -@@ -358,8 +360,8 @@ class NET_EXPORT TransportSecurityState { +@@ -361,8 +363,8 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -562,7 +563,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| iff |host| has static HSTS/HPKP // (respectively) state. If multiple entries match |host|, the most specific -@@ -373,22 +375,24 @@ class NET_EXPORT TransportSecurityState { +@@ -376,22 +378,24 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -581,7 +582,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s - void AddHSTS(std::string_view host, + void AddHSTS(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& expiry, + base::Time expiry, bool include_subdomains); // Adds explicitly-specified data as if it was processed from an HPKP header. @@ -589,10 +590,10 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s - void AddHPKP(std::string_view host, + void AddHPKP(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& expiry, + base::Time expiry, bool include_subdomains, const HashValueVector& hashes); -@@ -430,7 +434,7 @@ class NET_EXPORT TransportSecurityState { +@@ -433,7 +437,7 @@ class NET_EXPORT TransportSecurityState { typedef std::map STSStateMap; typedef std::map PKPStateMap; @@ -601,17 +602,17 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // IsBuildTimely returns true if the current build is new enough ensure that // built in security information (i.e. HSTS preloading and pinning -@@ -440,7 +444,8 @@ class NET_EXPORT TransportSecurityState { +@@ -443,7 +447,8 @@ class NET_EXPORT TransportSecurityState { // Helper method for actually checking pins. PKPStatus CheckPublicKeyPinsImpl(std::string_view host, bool is_issued_by_known_root, -- const HashValueVector& hashes); -+ const HashValueVector& hashes, +- const std::vector& hashes); ++ const std::vector& hashes, + const NetworkAnonymizationKey& network_anonymization_key); // If a Delegate is present, notify it that the internal state has // changed. -@@ -450,11 +455,13 @@ class NET_EXPORT TransportSecurityState { +@@ -453,11 +458,13 @@ class NET_EXPORT TransportSecurityState { // any previous state for the |host|, including static entries. // // The new state for |host| is persisted using the Delegate (if any). @@ -619,13 +620,13 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s + void AddHSTSInternal(const NetworkAnonymizationKey& nak, + std::string_view host, STSState::UpgradeMode upgrade_mode, - const base::Time& expiry, + base::Time expiry, bool include_subdomains); - void AddHPKPInternal(std::string_view host, + void AddHPKPInternal(const NetworkAnonymizationKey& nak, + std::string_view host, - const base::Time& last_observed, - const base::Time& expiry, + base::Time last_observed, + base::Time expiry, bool include_subdomains, diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc --- a/net/quic/crypto/proof_verifier_chromium.cc @@ -652,7 +653,7 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc --- a/net/quic/quic_chromium_client_session.cc +++ b/net/quic/quic_chromium_client_session.cc -@@ -1547,7 +1547,7 @@ bool QuicChromiumClientSession::CanPool( +@@ -1543,7 +1543,7 @@ bool QuicChromiumClientSession::CanPool( return SpdySession::CanPool(transport_security_state_, ssl_info, *ssl_config_service_, session_key_.host(), @@ -664,7 +665,7 @@ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_c 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 -@@ -1230,7 +1230,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1231,7 +1231,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { context_->transport_security_state()->CheckPublicKeyPins( host_and_port_.host(), server_cert_verify_result_.is_issued_by_known_root, @@ -674,7 +675,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket switch (pin_validity) { case TransportSecurityState::PKPStatus::VIOLATED: server_cert_verify_result_.cert_status |= -@@ -1250,7 +1251,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1251,7 +1252,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { IsCertStatusError(server_cert_verify_result_.cert_status) && result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED && context_->transport_security_state()->ShouldSSLErrorsBeFatal( @@ -715,7 +716,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc } void SpdySession::EnqueueStreamWrite( -@@ -3084,7 +3086,8 @@ void SpdySession::OnAltSvc( +@@ -3104,7 +3106,8 @@ void SpdySession::OnAltSvc( return; } if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_, @@ -741,7 +742,7 @@ diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc -@@ -404,20 +404,6 @@ std::unique_ptr URLRequestContextBuilder::Build() { +@@ -406,20 +406,6 @@ std::unique_ptr URLRequestContextBuilder::Build() { context->set_transport_security_state( std::make_unique(hsts_policy_bypass_list_)); @@ -765,7 +766,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -368,6 +368,7 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -378,6 +378,7 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { if (TransportSecurityState* hsts = request->context()->transport_security_state()) { upgrade_decision = hsts->GetSSLUpgradeDecision( @@ -773,7 +774,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque url.host(), /*is_top_level_nav=*/ request->isolation_info().IsOutermostMainFrameRequest(), -@@ -1247,7 +1248,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { +@@ -1257,7 +1258,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { std::optional value; if ((value = headers->EnumerateHeader(nullptr, "Strict-Transport-Security"))) { @@ -782,7 +783,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } } -@@ -1318,7 +1319,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { +@@ -1328,7 +1329,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { TransportSecurityState* state = context->transport_security_state(); NotifySSLCertificateError( result, transaction_->GetResponseInfo()->ssl_info, @@ -794,7 +795,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -2047,6 +2047,7 @@ void NetworkContext::CreateHostResolver( +@@ -2049,6 +2049,7 @@ void NetworkContext::CreateHostResolver( void NetworkContext::VerifyCertInternal( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -802,7 +803,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& ocsp_result, const std::string& sct_list, CTVerificationMode ct_verification_mode, -@@ -2058,6 +2059,7 @@ void NetworkContext::VerifyCertInternal( +@@ -2060,6 +2061,7 @@ void NetworkContext::VerifyCertInternal( pending_cert_verify->result = std::make_unique(); pending_cert_verify->certificate = certificate; pending_cert_verify->host_port = host_port; @@ -810,7 +811,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont net::CertVerifier* cert_verifier = g_cert_verifier_for_testing ? g_cert_verifier_for_testing : url_request_context_->cert_verifier(); -@@ -2088,20 +2090,22 @@ void NetworkContext::VerifyCertInternal( +@@ -2090,20 +2092,22 @@ void NetworkContext::VerifyCertInternal( void NetworkContext::VerifyCert( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -835,7 +836,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont CTVerificationMode::kSignedExchange, std::move(callback)); } -@@ -2142,17 +2146,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( +@@ -2144,17 +2148,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( std::move(callback).Run(); } @@ -858,7 +859,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont bool is_top_level_nav, IsHSTSActiveForHostCallback callback) { net::TransportSecurityState* security_state = -@@ -2164,10 +2170,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, +@@ -2166,10 +2172,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, } std::move(callback).Run( @@ -871,7 +872,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont GetHSTSStateCallback callback) { base::Value::Dict result; -@@ -2205,10 +2211,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -2207,10 +2213,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, net::TransportSecurityState::STSState dynamic_sts_state; net::TransportSecurityState::PKPState dynamic_pkp_state; bool found_sts_dynamic = transport_security_state->GetDynamicSTSState( @@ -884,7 +885,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont if (found_sts_dynamic) { result.Set("dynamic_upgrade_mode", static_cast(dynamic_sts_state.upgrade_mode)); -@@ -2246,6 +2252,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -2248,6 +2254,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, } void NetworkContext::DeleteDynamicDataForHost( @@ -892,7 +893,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& host, DeleteDynamicDataForHostCallback callback) { net::TransportSecurityState* transport_security_state = -@@ -2256,7 +2263,7 @@ void NetworkContext::DeleteDynamicDataForHost( +@@ -2258,7 +2265,7 @@ void NetworkContext::DeleteDynamicDataForHost( } std::move(callback).Run( @@ -901,7 +902,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont } void NetworkContext::EnableStaticKeyPinningForTesting( -@@ -2311,7 +2318,7 @@ void NetworkContext::PreconnectSockets( +@@ -2313,7 +2320,7 @@ void NetworkContext::PreconnectSockets( DCHECK(!require_network_anonymization_key_ || !network_anonymization_key.IsEmpty()); @@ -910,7 +911,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // |PreconnectSockets| may receive arguments from the renderer, which is not // guaranteed to validate them. -@@ -3151,7 +3158,9 @@ void NetworkContext::OnConnectionError() { +@@ -3158,7 +3165,9 @@ void NetworkContext::OnConnectionError() { } } @@ -921,7 +922,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // TODO(lilyhoughton) This needs to be gotten rid of once explicit // construction with a URLRequestContext is no longer supported. -@@ -3177,6 +3186,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { +@@ -3184,6 +3193,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) { // top-level navigation so we need to disallow HSTS upgrades for every // preconnect. if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL( @@ -929,7 +930,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont original_url.host(), /*is_top_level_nav=*/false)) { RecordHSTSPreconnectUpgradeReason( HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin); -@@ -3230,7 +3240,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) { +@@ -3237,7 +3247,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) { url_request_context_->transport_security_state()->CheckPublicKeyPins( pending_cert_verify->host_port.host(), pending_cert_verify->result->is_issued_by_known_root, @@ -942,7 +943,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -417,12 +417,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -418,12 +418,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingReceiver receiver) override; void VerifyCert(const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -957,7 +958,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& ocsp_result, const std::string& sct_list, VerifyCertCallback callback) override; -@@ -431,16 +433,18 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -432,16 +434,18 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext const std::string& hostname, const scoped_refptr& tls_certificate, Verify2QwacCertBindingCallback callback) override; @@ -979,7 +980,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& host, DeleteDynamicDataForHostCallback callback) override; void SetCorsOriginAccessListsForOrigin( -@@ -797,7 +801,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -798,7 +802,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingRemote cookie_observer, net::FirstPartySetMetadata first_party_set_metadata); @@ -989,7 +990,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte #if BUILDFLAG(IS_P2P_ENABLED) void DestroySocketManager(P2PSocketManager* socket_manager); -@@ -809,6 +814,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -810,6 +815,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void VerifyCertInternal( const scoped_refptr& certificate, const net::HostPortPair& host_port, @@ -997,7 +998,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& ocsp_result, const std::string& sct_list, CTVerificationMode ct_verification_mode, -@@ -989,6 +995,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -990,6 +996,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext VerifyCertCallback callback; scoped_refptr certificate; net::HostPortPair host_port; @@ -1008,7 +1009,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1553,6 +1553,7 @@ interface NetworkContext { +@@ -1560,6 +1560,7 @@ interface NetworkContext { // Checks the given certificate against the CertVerifier and CTVerifier. VerifyCert(X509Certificate certificate, HostPortPair host_port, @@ -1016,7 +1017,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw string ocsp_response, string sct_list) => (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed); -@@ -1561,6 +1562,7 @@ interface NetworkContext { +@@ -1568,6 +1569,7 @@ interface NetworkContext { // This implementation is specific for use by Signed Exchange. VerifyCertForSignedExchange(X509Certificate certificate, HostPortPair host_port, @@ -1024,7 +1025,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw string ocsp_response, string sct_list) => (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed); -@@ -1575,18 +1577,18 @@ interface NetworkContext { +@@ -1582,18 +1584,18 @@ interface NetworkContext { // Adds explicitly-specified data as if it was processed from an // HSTS header. Used by tests and implementation of chrome://net-internals. @@ -1046,7 +1047,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw // Sets allowed and blocked origins respectively for the URLLoaderFactory // consumers to access beyond the same-origin policy. The list is managed per -@@ -1605,7 +1607,7 @@ interface NetworkContext { +@@ -1612,7 +1614,7 @@ interface NetworkContext { // Deletes any dynamic data stored for |host| from the transport // security state. Returns true iff an entry was deleted. // See net::TransportSecurityState::DeleteDynamicDataForHost for more detail. diff --git a/build/patches/Partition-blobs-by-top-frame-URL.patch b/build/patches/Partition-blobs-by-top-frame-URL.patch index 92a94405..6909607b 100644 --- a/build/patches/Partition-blobs-by-top-frame-URL.patch +++ b/build/patches/Partition-blobs-by-top-frame-URL.patch @@ -10,18 +10,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../renderer_host/render_frame_host_impl.cc | 2 + .../Partition-blobs-by-top-frame-URL.inc | 1 + - storage/browser/blob/blob_url_store_impl.cc | 63 ++++++++++++++++++- - storage/browser/blob/blob_url_store_impl.h | 13 ++++ + storage/browser/blob/blob_url_registry.cc | 31 +++++++++- + storage/browser/blob/blob_url_registry.h | 11 +++- + storage/browser/blob/blob_url_store_impl.cc | 62 +++++++++++++++++-- + storage/browser/blob/blob_url_store_impl.h | 15 ++++- storage/browser/blob/features.cc | 1 + - .../public/mojom/blob/blob_url_store.mojom | 8 ++- - .../core/fileapi/public_url_manager.cc | 17 +++++ - 7 files changed, 101 insertions(+), 4 deletions(-) + .../public/mojom/blob/blob_url_store.mojom | 13 +++- + .../core/fileapi/public_url_manager.cc | 33 +++++++++- + 9 files changed, 154 insertions(+), 15 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -12792,6 +12792,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( +@@ -12939,6 +12939,8 @@ void RenderFrameHostImpl::ReportBlockingCrossPartitionBlobURL( } bool RenderFrameHostImpl::IsFullCookieAccessAllowed() { @@ -36,10 +38,106 @@ new file mode 100644 +++ b/cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc @@ -0,0 +1 @@ +SET_CROMITE_FEATURE_ENABLED(kEnforceNoopenerOnBlobURLNavigation); +diff --git a/storage/browser/blob/blob_url_registry.cc b/storage/browser/blob/blob_url_registry.cc +--- a/storage/browser/blob/blob_url_registry.cc ++++ b/storage/browser/blob/blob_url_registry.cc +@@ -93,13 +93,18 @@ bool BlobUrlRegistry::AddUrlMapping( + mojo::PendingRemote blob, + const blink::StorageKey& storage_key, + const url::Origin& renderer_origin, +- int render_process_host_id) { ++ int render_process_host_id, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!BlobUrlUtils::UrlHasFragment(blob_url)); + if (IsUrlMapped(blob_url, storage_key) == + BlobUrlRegistry::MappingStatus::kIsMapped) { + return false; + } ++ url_to_unsafe_agent_cluster_id_[blob_url] = unsafe_agent_cluster_id; ++ if (unsafe_top_level_site) ++ url_to_unsafe_top_level_site_[blob_url] = *unsafe_top_level_site; + BlobUrlData data; + data.blob = std::move(blob); + data.storage_key = storage_key; +@@ -121,6 +126,8 @@ bool BlobUrlRegistry::RemoveUrlMapping(const GURL& blob_url, + return false; + } + url_to_data_.erase(data_it); ++ url_to_unsafe_agent_cluster_id_.erase(blob_url); ++ url_to_unsafe_top_level_site_.erase(blob_url); + return true; + } + +@@ -184,6 +191,28 @@ BlobUrlRegistry::MappingStatus BlobUrlRegistry::IsUrlMapped( + return BlobUrlRegistry::MappingStatus::kNotMappedOther; + } + ++std::optional BlobUrlRegistry::GetUnsafeAgentClusterID( ++ const GURL& blob_url) const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto it = url_to_unsafe_agent_cluster_id_.find(blob_url); ++ if (it != url_to_unsafe_agent_cluster_id_.end()) ++ return it->second; ++ if (fallback_) ++ return fallback_->GetUnsafeAgentClusterID(blob_url); ++ return std::nullopt; ++} ++ ++std::optional BlobUrlRegistry::GetUnsafeTopLevelSite( ++ const GURL& blob_url) const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto it = url_to_unsafe_top_level_site_.find(blob_url); ++ if (it != url_to_unsafe_top_level_site_.end()) ++ return it->second; ++ if (fallback_) ++ return fallback_->GetUnsafeTopLevelSite(blob_url); ++ return std::nullopt; ++} ++ + mojo::PendingRemote BlobUrlRegistry::GetBlobFromUrl( + const GURL& url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +diff --git a/storage/browser/blob/blob_url_registry.h b/storage/browser/blob/blob_url_registry.h +--- a/storage/browser/blob/blob_url_registry.h ++++ b/storage/browser/blob/blob_url_registry.h +@@ -97,7 +97,9 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + mojo::PendingRemote blob, + const blink::StorageKey& storage_key, + const url::Origin& renderer_origin, +- int render_process_host_id); ++ int render_process_host_id, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site); + + // Removes the given URL mapping associated with `storage_key`. Returns false + // if the URL wasn't mapped. +@@ -108,6 +110,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + MappingStatus IsUrlMapped(const GURL& blob_url, + const blink::StorageKey& storage_key) const; + ++ std::optional GetUnsafeAgentClusterID( ++ const GURL& blob_url) const; ++ std::optional GetUnsafeTopLevelSite( ++ const GURL& blob_url) const; ++ + // Returns the blob from the given url. Returns a null remote if the mapping + // doesn't exist. + mojo::PendingRemote GetBlobFromUrl(const GURL& url); +@@ -163,6 +170,8 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry { + }; + + std::map url_to_data_; ++ std::map url_to_unsafe_agent_cluster_id_; ++ std::map url_to_unsafe_top_level_site_; + std::map>> + token_to_url_and_blob_; diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/blob_url_store_impl.cc --- a/storage/browser/blob/blob_url_store_impl.cc +++ b/storage/browser/blob/blob_url_store_impl.cc -@@ -106,6 +106,30 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { +@@ -113,9 +113,35 @@ BlobURLStoreImpl::~BlobURLStoreImpl() { } } @@ -70,10 +168,15 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ void BlobURLStoreImpl::Register( mojo::PendingRemote blob, const GURL& url, -@@ -120,6 +144,14 @@ void BlobURLStoreImpl::Register( ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site, + RegisterCallback callback) { + // TODO(crbug.com/40061399): Generate blob URLs here, rather than + // validating the URLs the renderer process generated. +@@ -123,10 +149,18 @@ void BlobURLStoreImpl::Register( + std::move(callback).Run(); return; } - + // LOG(INFO) << "---BlobURLStoreImpl Register" + // << " url=" << url + // << " storage_key_origin=" << storage_key_.GetDebugString() @@ -81,11 +184,16 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ + // << " render_process_host_id_=" << render_process_host_id_ + // << " unsafe_top_level_site=" << (unsafe_top_level_site.has_value() ? unsafe_top_level_site->GetDebugString() : "") + // << " unsafe_agent_cluster_id=" << unsafe_agent_cluster_id.ToString(); -+ + if (registry_) registry_->AddUrlMapping(url, std::move(blob), storage_key_, - renderer_origin_, render_process_host_id_, -@@ -145,7 +177,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( +- renderer_origin_, render_process_host_id_); ++ renderer_origin_, render_process_host_id_, ++ unsafe_agent_cluster_id, unsafe_top_level_site); + urls_.insert(url); + std::move(callback).Run(); + } +@@ -148,7 +182,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( features::kBlockCrossPartitionBlobUrlFetching) && !partitioning_disabled_by_policy_; @@ -94,127 +202,108 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/ has_storage_access_handle && mapping_status == BlobUrlRegistry::MappingStatus:: -@@ -156,26 +188,38 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( +@@ -158,7 +192,9 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess( + void BlobURLStoreImpl::ResolveAsURLLoaderFactory( const GURL& url, - mojo::PendingReceiver receiver, +- mojo::PendingReceiver receiver) { ++ mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback) { ++ const std::optional& unsafe_top_level_site) { if (!registry_) { BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); - std::move(callback).Run(std::nullopt, std::nullopt); return; - } -- FinishResolveAsURLLoaderFactory(url, std::move(receiver), std::move(callback), -+ FinishResolveAsURLLoaderFactory(url, std::move(receiver), -+ unsafe_agent_cluster_id, unsafe_top_level_site, -+ std::move(callback), - storage_access_check_callback_.Run()); - } - - void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( - const GURL& url, - mojo::PendingReceiver receiver, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback, - bool has_storage_access_handle) { -+ if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); -+ std::move(callback).Run(std::nullopt, std::nullopt); -+ return; -+ } - const BlobUrlRegistry::MappingStatus mapping_status = - registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), storage_key_); - if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { - if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, - mapping_status)) { -+ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked" << url; - partitioning_blob_url_closure_.Run(url, - blink::mojom::PartitioningBlobURLInfo:: - kBlockedCrossPartitionFetching); -@@ -187,6 +231,12 @@ void BlobURLStoreImpl::FinishResolveAsURLLoaderFactory( - partitioning_blob_url_closure_.Run(url, std::nullopt); +@@ -181,6 +217,7 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { + if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, + mapping_status)) { ++ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked" << url; + partitioning_blob_url_closure_.Run( + url, blink::mojom::PartitioningBlobURLInfo:: + kBlockedCrossPartitionFetching); +@@ -192,6 +229,13 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + } } + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { ++ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked by IsSamePartition" << url; + BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver)); -+ std::move(callback).Run(std::nullopt, std::nullopt); ++ //std::move(callback).Run(std::nullopt, std::nullopt); + return; + } + // LOG(INFO) << "---ResolveAsURLLoaderFactory allowed " << url; BlobURLLoaderFactory::Create(registry_->GetBlobFromUrl(url), url, std::move(receiver)); - // When a fragment URL is present, registry_->GetUnsafeAgentClusterID(url) and -@@ -201,6 +251,8 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + } +@@ -199,7 +243,9 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory( + void BlobURLStoreImpl::ResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, - bool is_top_level_navigation, +- bool is_top_level_navigation) { ++ bool is_top_level_navigation, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback) { ++ const std::optional& unsafe_top_level_site) { // This function is known to be heap allocation heavy and performance // critical. Extra memory safety checks can introduce regression -@@ -212,6 +264,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( - return; + // (https://crbug.com/414710225) and these are disabled here. +@@ -216,6 +262,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), + storage_key_); + if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) { ++ // LOG(INFO) << "---ResolveAsBlobURLToken blocked" << url; + if (ShouldPartitionBlobUrlAccess(has_storage_access_handle, + mapping_status)) { + partitioning_blob_url_closure_.Run( +@@ -226,12 +273,17 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken( + partitioning_blob_url_closure_.Run(url, std::nullopt); + } } - FinishResolveAsBlobURLToken(url, std::move(token), is_top_level_navigation, -+ unsafe_agent_cluster_id, unsafe_top_level_site, - std::move(callback), - storage_access_check_callback_.Run()); - } -@@ -220,8 +273,14 @@ void BlobURLStoreImpl::FinishResolveAsBlobURLToken( - const GURL& url, - mojo::PendingReceiver token, - bool is_top_level_navigation, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback, - bool has_storage_access_handle) { + if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) { -+ std::move(callback).Run(std::nullopt); ++ // LOG(INFO) << "---ResolveAsBlobURLToken blocked by IsSamePartition" << url; ++ //std::move(callback).Run(std::nullopt); + return; + } - if (!is_top_level_navigation) { - const BlobUrlRegistry::MappingStatus mapping_status = - registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), + + mojo::PendingRemote blob = registry_->GetBlobFromUrl(url); + if (!blob) { + return; + } +- ++ // LOG(INFO) << "---ResolveAsBlobURLToken allowed " << url; + new BlobURLTokenImpl(registry_, url, std::move(blob), std::move(token)); + } + diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/blob_url_store_impl.h --- a/storage/browser/blob/blob_url_store_impl.h +++ b/storage/browser/blob/blob_url_store_impl.h -@@ -60,11 +60,15 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - void ResolveAsURLLoaderFactory( +@@ -55,16 +55,22 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl + void Register( + mojo::PendingRemote blob, const GURL& url, - mojo::PendingReceiver receiver, + const base::UnguessableToken& unsafe_agent_cluster_id, + const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback) override; + RegisterCallback callback) override; + void Revoke(const GURL& url) override; + void ResolveAsURLLoaderFactory( + const GURL& url, +- mojo::PendingReceiver receiver) ++ mojo::PendingReceiver receiver, ++ const base::UnguessableToken& unsafe_agent_cluster_id, ++ const std::optional& unsafe_top_level_site) + override; void ResolveAsBlobURLToken( const GURL& url, mojo::PendingReceiver token, - bool is_top_level_navigation, +- bool is_top_level_navigation) override; ++ bool is_top_level_navigation, + const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback) override; ++ const std::optional& unsafe_top_level_site) override; private: -@@ -81,6 +85,8 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - void FinishResolveAsURLLoaderFactory( - const GURL& url, - mojo::PendingReceiver receiver, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsURLLoaderFactoryCallback callback, - bool has_storage_access_handle); - -@@ -88,9 +94,16 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl - const GURL& url, - mojo::PendingReceiver token, - bool is_top_level_navigation, -+ const base::UnguessableToken& unsafe_agent_cluster_id, -+ const std::optional& unsafe_top_level_site, - ResolveAsBlobURLTokenCallback callback, - bool has_storage_access_handle); + // Checks if the passed in url is a valid blob url for this blob url store. +@@ -77,6 +83,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl + bool has_storage_access_handle, + BlobUrlRegistry::MappingStatus mapping_status); + bool IsSamePartition( + const GURL& blob_url, @@ -227,10 +316,10 @@ diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/b diff --git a/storage/browser/blob/features.cc b/storage/browser/blob/features.cc --- a/storage/browser/blob/features.cc +++ b/storage/browser/blob/features.cc -@@ -18,6 +18,7 @@ BASE_FEATURE(kBlockCrossPartitionBlobUrlFetching, - #else +@@ -10,6 +10,7 @@ namespace features { + BASE_FEATURE(kBlockCrossPartitionBlobUrlFetching, + "BlockCrossPartitionBlobUrlFetching", base::FEATURE_ENABLED_BY_DEFAULT); - #endif +SET_CROMITE_FEATURE_ENABLED(kBlockCrossPartitionBlobUrlFetching); // Please keep features in alphabetical order. @@ -238,32 +327,51 @@ diff --git a/storage/browser/blob/features.cc b/storage/browser/blob/features.cc diff --git a/third_party/blink/public/mojom/blob/blob_url_store.mojom b/third_party/blink/public/mojom/blob/blob_url_store.mojom --- a/third_party/blink/public/mojom/blob/blob_url_store.mojom +++ b/third_party/blink/public/mojom/blob/blob_url_store.mojom -@@ -37,7 +37,9 @@ interface BlobURLStore { +@@ -4,6 +4,7 @@ + module blink.mojom; + + import "mojo/public/mojom/base/unguessable_token.mojom"; ++import "services/network/public/mojom/schemeful_site.mojom"; + import "services/network/public/mojom/url_loader_factory.mojom"; + import "third_party/blink/public/mojom/blob/blob.mojom"; + import "url/mojom/url.mojom"; +@@ -19,7 +20,9 @@ interface BlobURLStore { + // new blob: URL rather than letting the caller in the renderer provide one. + [Sync] Register( + pending_remote blob, +- url.mojom.Url url) => (); ++ url.mojom.Url url, ++ mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, ++ network.mojom.SchemefulSite? unsafe_top_level_site) => (); + + // Revokes a public Blob URL. + Revoke(url.mojom.Url url); +@@ -33,7 +36,9 @@ interface BlobURLStore { // both the blob URL and all other references to the blob have been dropped. ResolveAsURLLoaderFactory( url.mojom.Url url, -- pending_receiver factory) => ( +- pending_receiver factory); + pending_receiver factory, + mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, -+ network.mojom.SchemefulSite? unsafe_top_level_site) => ( - // TODO(https://crbug.com/1224926): Remove these once experiment is over. - mojo_base.mojom.UnguessableToken? unsafe_agent_cluster_id, - network.mojom.SchemefulSite? unsafe_top_level_site); -@@ -48,7 +50,9 @@ interface BlobURLStore { ++ network.mojom.SchemefulSite? unsafe_top_level_site); + + // Resolves a public Blob URL into a BlobURLToken. The BlobURLToken can be + // used by the browser process to securely look up the blob a URL used to +@@ -41,7 +46,9 @@ interface BlobURLStore { // As long as the token is alive, the resolved blob will also be kept alive. ResolveAsBlobURLToken(url.mojom.Url url, pending_receiver token, -- bool is_top_level_navigation) => ( +- bool is_top_level_navigation); + bool is_top_level_navigation, + mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id, -+ network.mojom.SchemefulSite? unsafe_top_level_site) => ( - // TODO(https://crbug.com/1224926): Remove this once experiment is over. - mojo_base.mojom.UnguessableToken? unsafe_agent_cluster_id); ++ network.mojom.SchemefulSite? unsafe_top_level_site); }; + + // A token representing a Blob URL. The browser process can use this to look up diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/third_party/blink/renderer/core/fileapi/public_url_manager.cc --- a/third_party/blink/renderer/core/fileapi/public_url_manager.cc +++ b/third_party/blink/renderer/core/fileapi/public_url_manager.cc -@@ -63,6 +63,21 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { +@@ -61,6 +61,21 @@ static void RemoveFromNullOriginMapIfNecessary(const KURL& blob_url) { BlobURLNullOriginMap::GetInstance()->Remove(blob_url); } @@ -285,20 +393,43 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi } // namespace PublicURLManager::PublicURLManager(ExecutionContext* execution_context) -@@ -269,6 +284,7 @@ void PublicURLManager::Resolve( +@@ -158,7 +173,17 @@ String PublicURLManager::RegisterURL(URLRegistrable* registrable) { + mojo::PendingReceiver blob_receiver = + blob_remote.InitWithNewPipeAndPassReceiver(); - GetBlobURLStore().ResolveAsURLLoaderFactory( - url, std::move(factory_receiver), -+ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext()), - WTF::BindOnce(metrics_callback, WrapPersistent(GetExecutionContext()))); +- GetBlobURLStore().Register(std::move(blob_remote), url); ++ std::optional top_level_site; ++ if (GetExecutionContext()->IsWindow()) { ++ auto* window = To(GetExecutionContext()); ++ if (window->top() && window->top()->GetFrame()) { ++ top_level_site = BlinkSchemefulSite(window->top() ++ ->GetFrame() ++ ->GetSecurityContext() ++ ->GetSecurityOrigin()); ++ } ++ } ++ GetBlobURLStore().Register(std::move(blob_remote), url, GetExecutionContext()->GetAgentClusterID(), top_level_site); + + mojo_urls_.insert(url_string); + registrable->CloneMojoBlob(std::move(blob_receiver)); +@@ -208,7 +233,8 @@ void PublicURLManager::Resolve( + + DCHECK(url.ProtocolIs("blob")); + +- GetBlobURLStore().ResolveAsURLLoaderFactory(url, std::move(factory_receiver)); ++ GetBlobURLStore().ResolveAsURLLoaderFactory(url, std::move(factory_receiver), ++ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext())); } -@@ -293,6 +309,7 @@ void PublicURLManager::ResolveAsBlobURLToken( + void PublicURLManager::ResolveAsBlobURLToken( +@@ -221,7 +247,8 @@ void PublicURLManager::ResolveAsBlobURLToken( + DCHECK(url.ProtocolIs("blob")); - GetBlobURLStore().ResolveAsBlobURLToken( - url, std::move(token_receiver), is_top_level_navigation, -+ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext()), - WTF::BindOnce(metrics_callback, WrapPersistent(GetExecutionContext()))); + GetBlobURLStore().ResolveAsBlobURLToken(url, std::move(token_receiver), +- is_top_level_navigation); ++ is_top_level_navigation, ++ GetExecutionContext()->GetAgentClusterID(), GetInsecureTopLevelSite(GetExecutionContext())); } + void PublicURLManager::ContextDestroyed() { -- diff --git a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch index ffaacc64..3f0ea255 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -51,7 +51,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -3700,7 +3700,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( +@@ -3692,7 +3692,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); if (!cookie_settings) { @@ -77,7 +77,7 @@ diff --git a/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chrome/b diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -1044,16 +1044,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( +@@ -1127,16 +1127,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( // UI to interact with SameSite cookies on accounts.google.com, which is used // for displaying a list of available accounts on the NTP // (chrome://new-tab-page), etc. @@ -164,7 +164,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen Third-party cookies are blocked in Incognito mode -@@ -645,7 +645,7 @@ +@@ -658,7 +658,7 @@ Allow third-party cookies @@ -197,7 +197,7 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/components/content_settings/core/common/cookie_settings_base.cc --- a/components/content_settings/core/common/cookie_settings_base.cc +++ b/components/content_settings/core/common/cookie_settings_base.cc -@@ -667,18 +667,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, +@@ -668,18 +668,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, ThirdPartyCookieAllowMechanism::kAllowByGlobalSetting}; } @@ -216,7 +216,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c if (IsAllowedByStorageAccessGrant(url, first_party_url, overrides)) { return AllowAllCookies{ ThirdPartyCookieAllowMechanism::kAllowByStorageAccess, -@@ -689,54 +677,11 @@ CookieSettingsBase::DecideAccess(const GURL& url, +@@ -690,54 +678,11 @@ CookieSettingsBase::DecideAccess(const GURL& url, ThirdPartyCookieAllowMechanism::kAllowBySandboxValue}; } @@ -271,7 +271,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c return AllowPartitionedCookies{}; } -@@ -766,7 +711,7 @@ CookieSettingsBase::GetCookieSettingInternal( +@@ -767,7 +712,7 @@ CookieSettingsBase::GetCookieSettingInternal( } return CookieSettingWithMetadata{/*cookie_setting=*/CONTENT_SETTING_ALLOW, /*allow_partitioned_cookies=*/true, @@ -330,7 +330,7 @@ new file mode 100644 diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc -@@ -1038,11 +1038,6 @@ CanonicalCookie::IsCanonicalForFromStorage() const { +@@ -1036,11 +1036,6 @@ CanonicalCookie::IsCanonicalForFromStorage() const { return Fail(CanonicalizationFailure::kEmptyNameWithHiddenPrefix); } @@ -358,7 +358,7 @@ diff --git a/net/cookies/cookie_deletion_info.cc b/net/cookies/cookie_deletion_i diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc -@@ -2293,6 +2293,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( +@@ -2292,6 +2292,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( if (cookie_partition_it == partitioned_cookies_.end()) return num_deleted; @@ -369,7 +369,7 @@ diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc diff --git a/net/cookies/cookie_util.cc b/net/cookies/cookie_util.cc --- a/net/cookies/cookie_util.cc +++ b/net/cookies/cookie_util.cc -@@ -803,6 +803,7 @@ bool IsCookiePartitionedValid(const GURL& url, +@@ -828,6 +828,7 @@ bool IsCookiePartitionedValid(const GURL& url, bool secure, bool is_partitioned, bool partition_has_nonce) { @@ -401,17 +401,17 @@ diff --git a/net/cookies/cookie_util.h b/net/cookies/cookie_util.h diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h --- a/net/cookies/parsed_cookie.h +++ b/net/cookies/parsed_cookie.h -@@ -12,6 +12,7 @@ - #include +@@ -13,6 +13,7 @@ #include + #include "base/functional/function_ref.h" +#include "net/base/features.h" #include "net/base/net_export.h" #include "net/cookies/cookie_constants.h" -@@ -87,7 +88,10 @@ class NET_EXPORT ParsedCookie { - CookieSameSite SameSite( - CookieSameSiteString* samesite_string = nullptr) const; +@@ -84,7 +85,10 @@ class NET_EXPORT ParsedCookie { + // attribute value. + std::pair SameSite() const; CookiePriority Priority() const; - bool IsPartitioned() const { return partitioned_index_ != 0; } + bool IsPartitioned() const { @@ -455,7 +455,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -868,13 +868,9 @@ void URLRequestHttpJob::SetCookieHeaderAndStart( +@@ -878,13 +878,9 @@ void URLRequestHttpJob::SetCookieHeaderAndStart( AnnotateAndMoveUserBlockedCookies(maybe_included_cookies, excluded_cookies); } @@ -472,7 +472,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque if (!maybe_included_cookies.empty()) { std::string cookie_line = -@@ -1635,6 +1631,7 @@ bool URLRequestHttpJob::NeedsRetryWithStorageAccess() { +@@ -1645,6 +1641,7 @@ bool URLRequestHttpJob::NeedsRetryWithStorageAccess() { auto determine_storage_access_retry_outcome = [&]() -> cookie_util::ActivateStorageAccessRetryOutcome { using enum cookie_util::ActivateStorageAccessRetryOutcome; @@ -533,7 +533,7 @@ diff --git a/services/network/restricted_cookie_manager.cc b/services/network/re diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc -@@ -2522,6 +2522,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { +@@ -2544,6 +2544,7 @@ bool URLLoader::ShouldSetLoadWithStorageAccess() const { auto determine_storage_access_load_outcome = [&]() -> net::cookie_util::ActivateStorageAccessLoadOutcome { @@ -554,7 +554,7 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_init.idl b/t diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc --- a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc +++ b/third_party/blink/renderer/modules/cookie_store/cookie_store.cc -@@ -358,6 +358,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, +@@ -386,6 +386,7 @@ ScriptPromise CookieStore::set(ScriptState* script_state, CookieInit* set_options = CookieInit::Create(); set_options->setName(name); set_options->setValue(value); @@ -562,17 +562,17 @@ diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_store.cc b/t return set(script_state, set_options, exception_state); } -@@ -381,6 +382,7 @@ ScriptPromise CookieStore::Delete( +@@ -409,6 +410,7 @@ ScriptPromise CookieStore::Delete( set_options->setName(name); - set_options->setValue("deleted"); + set_options->setValue(name.empty() ? "deleted" : ""); set_options->setExpires(0); + set_options->setPartitioned(true); return DoWrite(script_state, set_options, exception_state); } -@@ -396,6 +398,7 @@ ScriptPromise CookieStore::Delete( +@@ -424,6 +426,7 @@ ScriptPromise CookieStore::Delete( set_options->setPath(options->path()); - set_options->setSameSite("strict"); + set_options->setSameSite(V8CookieSameSite::Enum::kStrict); set_options->setPartitioned(options->partitioned()); + set_options->setPartitioned(true); return DoWrite(script_state, set_options, exception_state); diff --git a/build/patches/Private-network-access-content-settings.patch b/build/patches/Private-network-access-content-settings.patch index db96d0f1..5224e6a5 100644 --- a/build/patches/Private-network-access-content-settings.patch +++ b/build/patches/Private-network-access-content-settings.patch @@ -12,18 +12,20 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../insecure_private_network.grdp | 18 ++++ .../insecure_private_network.inc | 25 +++++ .../INSECURE_PRIVATE_NETWORK.inc | 3 + - services/network/cors/cors_url_loader.cc | 8 +- - .../network/private_network_access_checker.cc | 16 +++- - 7 files changed, 188 insertions(+), 11 deletions(-) + ...rivate-network-access-content-settings.inc | 1 + + services/network/cors/cors_url_loader.cc | 2 +- + services/network/public/cpp/features.cc | 2 +- + 8 files changed, 175 insertions(+), 5 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteInsecurePrivateNetworkContentSetting.java create mode 100644 components/browser_ui/strings/bromite_content_settings/insecure_private_network.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/insecure_private_network.inc create mode 100644 components/content_settings/core/common/bromite_content_settings/INSECURE_PRIVATE_NETWORK.inc + create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Private-network-access-content-settings.inc 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 -@@ -1351,6 +1351,31 @@ bool IsDefaultSearchEngine(Profile* profile, const GURL& url) { +@@ -1348,6 +1348,31 @@ bool IsDefaultSearchEngine(Profile* profile, const GURL& url) { url); } @@ -55,7 +57,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch } // namespace // static -@@ -7640,12 +7665,17 @@ content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride +@@ -7582,12 +7607,17 @@ content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy( content::BrowserContext* browser_context, const url::Origin& origin) { @@ -209,7 +211,7 @@ new file mode 100644 + WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, + WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); + + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::INSECURE_PRIVATE_NETWORK) @@ -235,10 +237,16 @@ new file mode 100644 + // Stores whether to allow insecure websites to make private network requests. + // See also: https://wicg.github.io/cors-rfc1918 + INSECURE_PRIVATE_NETWORK, +diff --git a/cromite_flags/services/network/public/cpp/features_cc/Private-network-access-content-settings.inc b/cromite_flags/services/network/public/cpp/features_cc/Private-network-access-content-settings.inc +new file mode 100644 +--- /dev/null ++++ b/cromite_flags/services/network/public/cpp/features_cc/Private-network-access-content-settings.inc +@@ -0,0 +1 @@ ++SET_CROMITE_FEATURE_ENABLED(kLocalNetworkAccessChecks); diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc -@@ -1090,7 +1090,7 @@ std::optional CorsURLLoader::ConvertPreflightResult( +@@ -1067,7 +1067,7 @@ std::optional CorsURLLoader::ConvertPreflightResult( } // Private Network Access warning: ignore net and CORS errors. @@ -247,61 +255,16 @@ diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/co CHECK(ShouldIgnorePrivateNetworkAccessErrors( request_.required_ip_address_space)); CHECK_EQ(*reason, PreflightRequiredReason::kPrivateNetworkAccess); -@@ -1403,12 +1403,6 @@ bool CorsURLLoader::ShouldIgnorePrivateNetworkAccessErrors( - if (!state) { - return false; - } -- // When the PNA permission prompt shown, we should always respect the -- // preflight results, otherwise it would be a bypass of mixed content checker. -- if (PrivateNetworkAccessChecker::NeedPermission( -- request_.url, state->is_web_secure_context, target_address_space)) { -- return false; -- } - return state->private_network_request_policy == - mojom::PrivateNetworkRequestPolicy::kPreflightWarn; - } -diff --git a/services/network/private_network_access_checker.cc b/services/network/private_network_access_checker.cc ---- a/services/network/private_network_access_checker.cc -+++ b/services/network/private_network_access_checker.cc -@@ -7,6 +7,7 @@ - #include "base/feature_list.h" - #include "base/metrics/histogram_functions.h" - #include "net/base/transport_info.h" -+#include "net/base/url_util.h" - #include "services/network/public/cpp/features.h" - #include "services/network/public/cpp/ip_address_space_util.h" - #include "services/network/public/cpp/is_potentially_trustworthy.h" -@@ -20,6 +21,13 @@ - namespace network { - namespace { +diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc +--- a/services/network/public/cpp/features.cc ++++ b/services/network/public/cpp/features.cc +@@ -236,7 +236,7 @@ BASE_FEATURE_PARAM(bool, + kLocalNetworkAccessChecksWarn, + &kLocalNetworkAccessChecks, + /*name=*/"LocalNetworkAccessChecksWarn", +- /*default_value=*/true); ++ /*default_value=*/false); -+bool IsReservedIPAddress(const std::string host) { -+ net::IPAddress address; -+ if (!net::ParseURLHostnameToAddress(host, &address)) -+ return false; -+ return !address.IsPubliclyRoutable(); -+} -+ - using Result = PrivateNetworkAccessCheckResult; - using Policy = mojom::PrivateNetworkRequestPolicy; - -@@ -260,11 +268,17 @@ bool PrivateNetworkAccessChecker::NeedPermission( - const GURL& url, - bool is_web_secure_context, - mojom::IPAddressSpace target_address_space) { -- return base::FeatureList::IsEnabled( -+ bool need_permission = base::FeatureList::IsEnabled( - network::features::kPrivateNetworkAccessPermissionPrompt) && - is_web_secure_context && !network::IsUrlPotentiallyTrustworthy(url) && - (target_address_space == mojom::IPAddressSpace::kLocal || - target_address_space == mojom::IPAddressSpace::kPrivate); -+ std::string host = url.host(); -+ if (IsReservedIPAddress(host) || host == "0.0.0.0" || -+ host == "[::1]" || net::HostStringIsLocalhost(host)) { -+ need_permission = true; -+ } -+ return need_permission; - } - - } // namespace network + // Enables Local Network Access checks for WebRTC. + // Blocks local network requests without user permission to prevent exploitation -- diff --git a/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch b/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch index 5e922874..b2c7d7d8 100644 --- a/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch +++ b/build/patches/PublicKeyCredential-fingerprinting-mitigations.patch @@ -13,7 +13,7 @@ the Windows platform diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/browser/webauth/authenticator_common_impl.cc --- a/content/browser/webauth/authenticator_common_impl.cc +++ b/content/browser/webauth/authenticator_common_impl.cc -@@ -1807,6 +1807,7 @@ void AuthenticatorCommonImpl::GetClientCapabilities( +@@ -1845,6 +1845,7 @@ void AuthenticatorCommonImpl::GetClientCapabilities( base::FeatureList::IsEnabled(device::kWebAuthnPasskeyUpgrade))); IsHybridTransportSupported( @@ -21,7 +21,7 @@ diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/brow base::BindOnce(&MakeCapability, client_capabilities::kHybridTransport) .Then(barrier_callback)); -@@ -1827,11 +1828,25 @@ void AuthenticatorCommonImpl::GetClientCapabilities( +@@ -1865,11 +1866,25 @@ void AuthenticatorCommonImpl::GetClientCapabilities( } void AuthenticatorCommonImpl::IsHybridTransportSupported( @@ -47,7 +47,7 @@ diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/brow device::BluetoothAdapterFactory::Get()->GetAdapter( base::BindOnce([](scoped_refptr adapter) { -@@ -1877,6 +1892,13 @@ void AuthenticatorCommonImpl::ContinueIsUvpaaAfterOverrideCheck( +@@ -1915,6 +1930,13 @@ void AuthenticatorCommonImpl::ContinueIsUvpaaAfterOverrideCheck( IsUserVerifyingPlatformAuthenticatorAvailableCallback callback, bool is_get_client_capabilities_call, std::optional is_uvpaa_override) { diff --git a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch index 99f1df4a..95728a47 100644 --- a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch +++ b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch @@ -45,9 +45,9 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -233,6 +233,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kAsyncNotificationManager, +@@ -248,6 +248,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kAsyncNotificationManagerForDownload, + &kAutomotiveBackButtonBarStreamline, &kAuxiliarySearchDonation, + &kCloseAllTabsModalDialog, &kBatchTabRestore, @@ -56,7 +56,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -338,6 +338,7 @@ public abstract class ChromeFeatureList { +@@ -353,6 +353,7 @@ public abstract class ChromeFeatureList { "ClearBrowsingDataAndroidSurvey"; public static final String CLEAR_INSTANCE_INFO_WHEN_CLOSED_INTENTIONALLY = "ClearInstanceInfoWhenClosedIntentionally"; diff --git a/build/patches/Re-introduce-override_build_timestamp.patch b/build/patches/Re-introduce-override_build_timestamp.patch index b9e00054..db0bd3bd 100644 --- a/build/patches/Re-introduce-override_build_timestamp.patch +++ b/build/patches/Re-introduce-override_build_timestamp.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -4308,8 +4308,12 @@ if (current_toolchain == default_toolchain) { +@@ -4349,8 +4349,12 @@ if (current_toolchain == default_toolchain) { outputs = [ _build_date_header_internal ] args = [ rebase_path(_build_date_header_internal, root_build_dir), @@ -42,7 +42,7 @@ diff --git a/build_overrides/build.gni b/build_overrides/build.gni + # details; expected format is Unix Epoch time in seconds. + override_build_timestamp = "N/A" + - # Allows googletest to pretty-print various absl types. Disabled for nacl due - # to lack of toolchain support. - gtest_enable_absl_printers = !is_nacl + # Allows googletest to pretty-print various absl types. + gtest_enable_absl_printers = true + -- diff --git a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch index e9302cae..b9340ad7 100644 --- a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch +++ b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch @@ -35,7 +35,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -527,6 +527,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -537,6 +537,7 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( // fields in the referrer. GURL referrer(request_->referrer()); @@ -43,7 +43,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque // Our consumer should have made sure that this is a safe referrer (e.g. via // URLRequestJob::ComputeReferrerForPolicy). if (referrer.is_valid()) { -@@ -534,11 +535,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( +@@ -544,11 +545,14 @@ void URLRequestHttpJob::OnGotFirstPartySetMetadata( request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer, referer_value); } @@ -58,7 +58,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque AddExtraHeaders(); -@@ -784,10 +788,10 @@ void URLRequestHttpJob::StartTransactionInternal() { +@@ -794,10 +798,10 @@ void URLRequestHttpJob::StartTransactionInternal() { void URLRequestHttpJob::AddExtraHeaders() { request_info_.extra_headers.SetAcceptEncodingIfMissing( request()->url(), request()->accepted_stream_types(), diff --git a/build/patches/Remove-ChromiumNetworkAdapter.patch b/build/patches/Remove-ChromiumNetworkAdapter.patch index b01e313b..3263d2d1 100644 --- a/build/patches/Remove-ChromiumNetworkAdapter.patch +++ b/build/patches/Remove-ChromiumNetworkAdapter.patch @@ -254,10 +254,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivit diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java -@@ -457,8 +457,7 @@ public class OmahaBase { +@@ -469,8 +469,7 @@ public class OmahaBase { }"""); try { - URL url = new URL(getRequestGenerator().getServerUrl()); + URL url = new URL(assumeNonNull(getRequestGenerator()).getServerUrl()); - HttpURLConnection connection = - (HttpURLConnection) ChromiumNetworkAdapter.openConnection(url, annotation); + HttpURLConnection connection = null; diff --git a/build/patches/Remove-EV-certificates.patch b/build/patches/Remove-EV-certificates.patch index 22c2b735..855d51e5 100644 --- a/build/patches/Remove-EV-certificates.patch +++ b/build/patches/Remove-EV-certificates.patch @@ -37,7 +37,7 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc #endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA) } // namespace -@@ -116,7 +128,6 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) { +@@ -114,7 +126,6 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) { // bool EVRootCAMetadata::IsEVPolicyOID(bssl::der::Input policy_oid) const { @@ -56,5 +56,5 @@ diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h +//#define PLATFORM_USES_CHROMIUM_EV_METADATA #endif - namespace base { + namespace bssl { -- diff --git a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch index b855c7e2..25eb39ac 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -646,6 +646,8 @@ chrome_java_resources = [ +@@ -634,6 +634,8 @@ chrome_java_resources = [ "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", "java/res/xml/privacy_preferences.xml", @@ -56,7 +56,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -917,6 +917,8 @@ chrome_java_sources = [ +@@ -923,6 +923,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarLimiter.java", @@ -395,7 +395,7 @@ new file mode 100644 diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -229,6 +229,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -231,6 +231,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kExpireDaysThreshold] = settings_api::PrefType::kNumber; @@ -410,7 +410,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -611,6 +611,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( +@@ -678,6 +678,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( base::BindRepeating(&SystemNetworkContextManager::UpdateReferrersEnabled, base::Unretained(this))); @@ -420,7 +420,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows pref_change_registrar_.Add( prefs::kExplicitlyAllowedNetworkPorts, base::BindRepeating( -@@ -692,6 +695,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -760,6 +763,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { // the system NetworkContext, and the per-profile pref values are used for // the profile NetworkContexts. registry->RegisterBooleanPref(prefs::kEnableReferrers, true); @@ -456,13 +456,13 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ + on-settings-control-change="onReferersPolicyChanged_"> + + - - -