Carl 2 лет назад
Родитель
Сommit
fa31ed23d4
100 измененных файлов с 1464 добавлено и 1922 удалено
  1. 1 1
      build/LASTCHANGE
  2. 1 1
      build/RELEASE
  3. 1 1
      build/RELEASE_COMMIT
  4. 23 25
      build/bromite_patches_list.txt
  5. 0 1
      build/chromium_patches_list.txt
  6. 8 8
      build/patches/AImageReader-CFI-crash-mitigations.patch
  7. 4 4
      build/patches/AV1-codec-support.patch
  8. 21 23
      build/patches/Add-AllowUserCertificates-flag.patch
  9. 99 99
      build/patches/Add-DuckDuckGo-Lite-search-engine.patch
  10. 108 108
      build/patches/Add-English-only-search-engine.patch
  11. 5 5
      build/patches/Add-IsCleartextPermitted-flag.patch
  12. 20 20
      build/patches/Add-a-proxy-configuration-page.patch
  13. 56 56
      build/patches/Add-an-always-incognito-mode.patch
  14. 29 29
      build/patches/Add-bookmark-import-export-actions.patch
  15. 7 7
      build/patches/Add-custom-tab-intents-privacy-option.patch
  16. 7 7
      build/patches/Add-exit-menu-item.patch
  17. 10 10
      build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch
  18. 3 3
      build/patches/Add-flag-for-save-data-header.patch
  19. 4 4
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  20. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  21. 4 4
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  22. 5 5
      build/patches/Add-flag-to-disable-external-intent-requests.patch
  23. 20 20
      build/patches/Add-flag-to-disable-vibration.patch
  24. 45 108
      build/patches/Add-lifetime-options-for-permissions.patch
  25. 43 43
      build/patches/Add-menu-item-to-bookmark-all-tabs.patch
  26. 20 16
      build/patches/Add-menu-item-to-view-source.patch
  27. 7 7
      build/patches/Add-option-to-force-tablet-UI.patch
  28. 9 9
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  29. 4 4
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  30. 4 4
      build/patches/Add-site-engagement-flag.patch
  31. 2 2
      build/patches/Add-support-for-ISupportHelpAndFeedback.patch
  32. 12 12
      build/patches/Add-webGL-site-setting.patch
  33. 11 11
      build/patches/Add-webRTC-site-settings.patch
  34. 22 22
      build/patches/Allow-building-without-enable_reporting.patch
  35. 3 3
      build/patches/Allow-playing-audio-in-background.patch
  36. 1 1
      build/patches/Ask-user-before-closing-all-tabs.patch
  37. 1 1
      build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch
  38. 44 478
      build/patches/Automated-domain-substitution.patch
  39. 3 3
      build/patches/Block-gateway-attacks-via-websockets.patch
  40. 6 6
      build/patches/Block-qjz9zk-or-trk-requests.patch
  41. 1 1
      build/patches/Bookmarks-select-all-menu-entry.patch
  42. 20 20
      build/patches/Bromite-AdBlockUpdaterService.patch
  43. 9 9
      build/patches/Bromite-auto-updater.patch
  44. 1 1
      build/patches/Bromite-package-name.patch
  45. 10 30
      build/patches/Client-hints-overrides.patch
  46. 29 29
      build/patches/Content-settings-infrastructure.patch
  47. 5 5
      build/patches/Dictionary-suggestions-for-the-Omnibox.patch
  48. 16 16
      build/patches/Disable-AGSA-by-default.patch
  49. 2 2
      build/patches/Disable-Accessibility-service-by-default.patch
  50. 1 1
      build/patches/Disable-AsyncDNS-by-default.patch
  51. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  52. 9 9
      build/patches/Disable-FLoC-and-privacy-sandbox.patch
  53. 2 2
      build/patches/Disable-PrivacyGuide.patch
  54. 27 0
      build/patches/Disable-StartSurface-feature.patch
  55. 13 13
      build/patches/Disable-TLS-resumption.patch
  56. 10 10
      build/patches/Disable-all-predictors-code.patch
  57. 3 3
      build/patches/Disable-all-promo-dialogs.patch
  58. 10 10
      build/patches/Disable-conversion-measurement-api.patch
  59. 1 1
      build/patches/Disable-crash-reporting.patch
  60. 1 1
      build/patches/Disable-feeds-support-by-default.patch
  61. 5 5
      build/patches/Disable-fetching-of-all-field-trials.patch
  62. 1 1
      build/patches/Disable-idle-detection.patch
  63. 1 1
      build/patches/Disable-lock-icon-in-address-bar-by-default.patch
  64. 1 1
      build/patches/Disable-media-router-and-remoting-by-default.patch
  65. 181 117
      build/patches/Disable-safe-browsing.patch
  66. 6 6
      build/patches/Disable-safety-check.patch
  67. 5 5
      build/patches/Disable-smart-selection-by-default.patch
  68. 3 6
      build/patches/Disable-some-signed-exchange-features.patch
  69. 40 24
      build/patches/Disable-text-fragments-by-default.patch
  70. 8 8
      build/patches/Disable-third-party-origin-trials.patch
  71. 1 1
      build/patches/Disable-update-scheduler.patch
  72. 4 4
      build/patches/Disable-various-metrics.patch
  73. 1 1
      build/patches/Do-not-build-API-keys-infobar.patch
  74. 2 2
      build/patches/Do-not-compile-QR-code-sharing.patch
  75. 1 1
      build/patches/Do-not-hide-component-extensions.patch
  76. 1 1
      build/patches/Do-not-link-with-libatomic.patch
  77. 1 1
      build/patches/DoH-improvements.patch
  78. 23 18
      build/patches/Enable-Certificate-Transparency.patch
  79. 1 1
      build/patches/Enable-ECH-by-default.patch
  80. 10 6
      build/patches/Enable-HEVC-by-default.patch
  81. 1 1
      build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch
  82. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  83. 4 4
      build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch
  84. 1 1
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  85. 124 111
      build/patches/Enable-native-Android-autofill.patch
  86. 2 2
      build/patches/Enable-network-isolation-features.patch
  87. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  88. 13 13
      build/patches/Enable-share-intent.patch
  89. 0 23
      build/patches/Enable-user-agent-freeze-by-default.patch
  90. 75 119
      build/patches/Experimental-user-scripts-support.patch
  91. 0 22
      build/patches/Fix-segmentation-platform-build-error.patch
  92. 25 0
      build/patches/Guard-for-user-agent-reduction.patch
  93. 13 13
      build/patches/History-number-of-days-privacy-setting.patch
  94. 4 4
      build/patches/Improve-plain-text-rendering-on-mobile.patch
  95. 10 12
      build/patches/Increase-number-of-autocomplete-matches-to-10.patch
  96. 11 11
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  97. 21 21
      build/patches/JIT-site-settings.patch
  98. 1 1
      build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch
  99. 1 1
      build/patches/Logcat-crash-reports-UI.patch
  100. 12 12
      build/patches/Modify-default-preferences.patch

+ 1 - 1
build/LASTCHANGE

@@ -1 +1 @@
-b9c06a0f04c03ea3997e667dff0eb39165741528-
+5e4e695db5ae34eebbd81741c4add61b263fcca5-

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-106.0.5249.163
+107.0.5304.96

+ 1 - 1
build/RELEASE_COMMIT

@@ -1 +1 @@
-8afcb6d66c09af9ccf2f306c5e0d1f997bfea024
+cc848a50ac06860b606b3adc58a9397b6d171c66

+ 23 - 25
build/bromite_patches_list.txt

@@ -3,7 +3,26 @@ do-not-hide-.orig-files.patch
 Do-not-link-with-libatomic.patch
 do-not-add-suffix-to-package-name.patch
 exit-on-failure-of-inclusion.patch
-Fix-segmentation-platform-build-error.patch
+Disable-safe-browsing.patch
+Remove-signin-and-sync-integrations.patch
+Move-some-account-settings-back-to-privacy-settings.patch
+Remove-contextual-search-manager.patch
+kill-Vision.patch
+kill-Location-fall-back-to-system.patch
+kill-Auth.patch
+Remove-binary-blob-integrations.patch
+Remove-SMS-integration.patch
+Remove-price-shopping-commerce-integrations.patch
+Remove-voice-recognition-integration.patch
+Do-not-compile-QR-code-sharing.patch
+Timezone-customization.patch
+Revert-the-removal-of-an-option-to-block-autoplay.patch
+Add-support-for-ISupportHelpAndFeedback.patch
+JIT-site-settings.patch
+Site-setting-for-images.patch
+Content-settings-infrastructure.patch
+Add-webGL-site-setting.patch
+Add-webRTC-site-settings.patch
 AV1-codec-support.patch
 Switch-to-fstack-protector-strong.patch
 Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
@@ -29,9 +48,7 @@ ungoogled-chromium-Disable-intranet-detector.patch
 ungoogled-chromium-no-special-hosts-domains.patch
 ungoogled-chromium-Disable-Gaia.patch
 ungoogled-chromium-Disable-Network-Time-Tracker.patch
-Disable-safe-browsing.patch
 Disable-all-promo-dialogs.patch
-Remove-signin-and-sync-integrations.patch
 Disable-update-scheduler.patch
 Add-English-only-search-engine.patch
 Add-DuckDuckGo-Lite-search-engine.patch
@@ -53,8 +70,6 @@ Add-an-always-incognito-mode.patch
 Keep-flag-to-allow-screenshots-in-Incognito-mode.patch
 Add-option-to-not-persist-tabs-across-sessions.patch
 Add-a-proxy-configuration-page.patch
-Move-some-account-settings-back-to-privacy-settings.patch
-Remove-contextual-search-manager.patch
 Add-custom-tab-intents-privacy-option.patch
 Disable-FLoC-and-privacy-sandbox.patch
 History-number-of-days-privacy-setting.patch
@@ -69,14 +84,6 @@ autofill-miscellaneous.patch
 Enable-native-Android-autofill.patch
 first_run-deactivate-autoupdate-globally.patch
 translate-disable-fetching-of-languages-from-server.patch
-kill-Vision.patch
-kill-Location-fall-back-to-system.patch
-kill-Auth.patch
-Remove-binary-blob-integrations.patch
-Remove-SMS-integration.patch
-Remove-price-shopping-commerce-integrations.patch
-Remove-voice-recognition-integration.patch
-Do-not-compile-QR-code-sharing.patch
 Offer-builtin-autocomplete-for-chrome-flags.patch
 Use-4-tile-rows-never-show-logo.patch
 Disable-various-metrics.patch
@@ -101,7 +108,7 @@ Disable-feeds-support-by-default.patch
 Show-site-settings-for-cookies-javascript-and-ads.patch
 Disable-DRM-media-origin-IDs-preprovisioning.patch
 Disable-smart-selection-by-default.patch
-Enable-user-agent-freeze-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
@@ -114,10 +121,8 @@ Disable-the-DIAL-repeating-discovery.patch
 Block-qjz9zk-or-trk-requests.patch
 Hardening-against-incognito-mode-detection.patch
 Remove-weblayer-dependency-on-Play-Services.patch
-Timezone-customization.patch
 Restore-Simplified-NTP-launch.patch
 Add-option-to-use-home-page-as-NTP.patch
-Revert-the-removal-of-an-option-to-block-autoplay.patch
 Disable-text-fragments-by-default.patch
 disable-WebView-variations-support.patch
 Enable-network-isolation-features.patch
@@ -139,8 +144,6 @@ Revert-Delete-block-external-form-redirects.patch
 Enable-IntentBlockExternalFormRedirectsNoGesture.patch
 Add-flag-to-disable-external-intent-requests.patch
 Logcat-crash-reports-UI.patch
-Add-support-for-ISupportHelpAndFeedback.patch
-JIT-site-settings.patch
 API-level-21-prevent-crash-on-download.patch
 Add-flag-to-disable-vibration.patch
 mime_util-force-text-x-suse-ymp-to-be-downloaded.patch
@@ -149,7 +152,6 @@ Disable-AGSA-by-default.patch
 Allow-building-without-enable_reporting.patch
 Disable-lock-icon-in-address-bar-by-default.patch
 Enable-share-intent.patch
-Site-setting-for-images.patch
 Bromite-auto-updater.patch
 Experimental-user-scripts-support.patch
 Keep-empty-tabs-between-sessions.patch
@@ -177,14 +179,10 @@ Add-lifetime-options-for-permissions.patch
 Disable-crash-reporting.patch
 Samsung-Note-9-SDK27-crazylinker-workaround.patch
 Disable-TLS-resumption.patch
-Partition-DNS-requests-by-top-frame-NIK.patch
 Remove-mremap-from-seccomp-baseline-policy.patch
 Move-navigation-bar-to-bottom.patch
 Welcome-screen.patch
-Content-settings-infrastructure.patch
-Add-webGL-site-setting.patch
 Add-site-engagement-flag.patch
-Add-webRTC-site-settings.patch
 Enable-Certificate-Transparency.patch
 Invalidate-components-public-key.patch
 Improve-plain-text-rendering-on-mobile.patch
@@ -198,11 +196,11 @@ Disable-PrivacyGuide.patch
 Re-introduce-modal-dialog-flag-to-close-all-tabs.patch
 sharing-hub-always-use-visible-URL.patch
 Re-introduce-kWebAuthCable.patch
-Revert-clipboard-user-gesture-requirement-removal.patch
 Enable-HEVC-by-default.patch
 Partition-blobs-by-top-frame-URL.patch
 Override-Navigator-Language.patch
 Disable-add-to-home-screen-prompt.patch
 Remove-HTTP-referrals-in-cross-origin-navigation.patch
-Automated-domain-substitution.patch
 Enable-ECH-by-default.patch
+Disable-StartSurface-feature.patch
+Automated-domain-substitution.patch

+ 0 - 1
build/chromium_patches_list.txt

@@ -9,4 +9,3 @@ Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
 enable-ftrivial-auto-var-init-zero.patch
 Disable-feeds-support-by-default.patch
 Chromium-package-name.patch
-Fix-segmentation-platform-build-error.patch

+ 8 - 8
build/patches/AImageReader-CFI-crash-mitigations.patch

@@ -84,8 +84,8 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2372,9 +2372,9 @@
-     "expiry_milestone": 106
+@@ -2410,9 +2410,9 @@
+     "expiry_milestone": 115
    },
    {
 -    "name": "enable-image-reader",
@@ -152,7 +152,7 @@ diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
 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
-@@ -122,6 +122,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
+@@ -121,6 +121,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
  #if !BUILDFLAG(IS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
@@ -162,7 +162,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -345,6 +348,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -344,6 +347,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] =
          kGpuFeatureStatusBlocklisted;
    }
@@ -182,13 +182,13 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
  disable_2d_canvas_auto_flush
  disable_accelerated_av1_decode
 +disable_aimagereader
+ disable_accelerated_av1_encode
  disable_accelerated_h264_encode
  disable_accelerated_hevc_decode
- disable_accelerated_vp8_decode
 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
-@@ -624,6 +624,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -640,6 +640,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
    }
  #endif  // BUILDFLAG(IS_WIN)
  
@@ -231,7 +231,7 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_
 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
-@@ -754,6 +754,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -750,6 +750,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  // Note: Has no effect if kMediaDrmPreprovisioning feature is disabled.
  const base::Feature kMediaDrmPreprovisioningAtStartup{
      "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
@@ -245,7 +245,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
-@@ -233,6 +233,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders;
+@@ -232,6 +232,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders;
  MEDIA_EXPORT extern const base::Feature kAllowNonSecureOverlays;
  MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense;

+ 4 - 4
build/patches/AV1-codec-support.patch

@@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 --- a/third_party/libaom/BUILD.gn
 +++ b/third_party/libaom/BUILD.gn
-@@ -81,7 +81,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
+@@ -85,7 +85,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
        sources += aom_dsp_encoder_asm_sse2_x86_64
        sources += aom_dsp_encoder_asm_ssse3_x86_64
      }
@@ -23,7 +23,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
      include_dirs = libaom_include_dirs
    }
  
-@@ -193,7 +193,7 @@ if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
+@@ -197,7 +197,7 @@ if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
      configs += [ "//build/config/compiler:no_chromium_code" ]
      if (current_cpu == "arm") {
        configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
@@ -32,7 +32,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
      }
      configs += [ ":libaom_config" ]
  
-@@ -255,6 +255,8 @@ static_library("libaom") {
+@@ -259,6 +259,8 @@ static_library("libaom") {
    if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
        cpu_arch_full == "arm-neon-cpu-detect") {
      deps += [ ":libaom_intrinsics_neon" ]
@@ -44,7 +44,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
 --- a/third_party/libaom/libaom_srcs.gni
 +++ b/third_party/libaom/libaom_srcs.gni
-@@ -666,6 +666,11 @@ aom_rc_interface_sources = [
+@@ -673,6 +673,11 @@ aom_rc_interface_sources = [
    "//third_party/libaom/source/libaom/test/yuv_video_source.h",
  ]
  

+ 21 - 23
build/patches/Add-AllowUserCertificates-flag.patch

@@ -5,22 +5,22 @@ Subject: Add AllowUserCertificates flag
 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
 ---
- .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 3 +++
- .../chrome/browser/app/flags/ChromeCachedFlags.java         | 1 +
- chrome/browser/about_flags.cc                               | 6 +++++-
- chrome/browser/flag_descriptions.cc                         | 5 +++++
- chrome/browser/flag_descriptions.h                          | 3 +++
- chrome/browser/flags/android/chrome_feature_list.cc         | 4 ++++
- chrome/browser/flags/android/chrome_feature_list.h          | 1 +
- .../chromium/chrome/browser/flags/CachedFeatureFlags.java   | 1 +
- .../chromium/chrome/browser/flags/ChromeFeatureList.java    | 3 +++
- net/android/java/src/org/chromium/net/X509Util.java         | 5 +++++
- 10 files changed, 31 insertions(+), 1 deletion(-)
+ .../src/org/chromium/chrome/browser/app/ChromeActivity.java  | 3 +++
+ .../chromium/chrome/browser/app/flags/ChromeCachedFlags.java | 1 +
+ chrome/browser/about_flags.cc                                | 4 ++++
+ chrome/browser/flag_descriptions.cc                          | 5 +++++
+ chrome/browser/flag_descriptions.h                           | 3 +++
+ chrome/browser/flags/android/chrome_feature_list.cc          | 4 ++++
+ chrome/browser/flags/android/chrome_feature_list.h           | 1 +
+ .../chromium/chrome/browser/flags/CachedFeatureFlags.java    | 1 +
+ .../org/chromium/chrome/browser/flags/ChromeFeatureList.java | 3 +++
+ net/android/java/src/org/chromium/net/X509Util.java          | 5 +++++
+ 10 files changed, 30 insertions(+)
 
 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
-@@ -223,6 +223,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
+@@ -225,6 +225,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
  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;
-@@ -945,6 +946,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -955,6 +956,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          UpdateMenuItemHelper.getInstance().onStart();
          ChromeActivitySessionTracker.getInstance().onStartWithNative();
          ChromeCachedFlags.getInstance().cacheNativeFlags();
@@ -51,12 +51,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/Chrom
 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
-@@ -3466,7 +3466,11 @@ const FeatureEntry kFeatureEntries[] = {
-     {"enable-container-queries", flag_descriptions::kCSSContainerQueriesName,
-      flag_descriptions::kCSSContainerQueriesDescription, kOsAll,
-      FEATURE_VALUE_TYPE(blink::features::kCSSContainerQueries)},
--#if BUILDFLAG(IS_ANDROID)
-+#if BUILDFLAG(IS_ANDROID) // Bromite allow user certificates
+@@ -3595,6 +3595,10 @@ const FeatureEntry kFeatureEntries[] = {
+      SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)},
+ #endif  // ENABLE_EXTENSIONS
+ #if BUILDFLAG(IS_ANDROID)
 +    {"allow-user-certificates",
 +     flag_descriptions::kAllowUserCertificatesName,
 +     flag_descriptions::kAllowUserCertificatesDescription, kOsAndroid,
@@ -95,7 +93,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -148,6 +148,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -149,6 +149,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &feed::kFeedNoViewCache,
      &feed::kFeedReplaceAll,
      &feed::kInterestFeedContentSuggestions,
@@ -103,7 +101,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &feed::kInterestFeedV1ClicksAndViewsConditionalUpload,
      &feed::kInterestFeedV2,
      &feed::kInterestFeedV2Autoplay,
-@@ -441,6 +442,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
+@@ -453,6 +454,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
      "AdaptiveButtonInTopToolbarCustomizationV2",
      base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -111,7 +109,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 +    "AllowUserCertificates", base::FEATURE_DISABLED_BY_DEFAULT};
 +
  const base::Feature kAddToHomescreenIPH{"AddToHomescreenIPH",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+                                         base::FEATURE_DISABLED_BY_DEFAULT};
  
 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
@@ -146,7 +144,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      public static final String ABOUT_THIS_SITE_BANNER = "AboutThisSiteBanner";
      public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar";
      public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
-@@ -613,6 +614,8 @@ public abstract class ChromeFeatureList {
+@@ -637,6 +638,8 @@ public abstract class ChromeFeatureList {
      public static final String FEED_REPLACE_ALL = "FeedReplaceAll";
  
      /* Alphabetical: */

+ 99 - 99
build/patches/Add-DuckDuckGo-Lite-search-engine.patch

@@ -43,7 +43,7 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
 diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
 --- a/components/search_engines/template_url_prepopulate_data.cc
 +++ b/components/search_engines/template_url_prepopulate_data.cc
-@@ -41,7 +41,7 @@ const PrepopulatedEngine* const engines_AE[] = {
+@@ -42,7 +42,7 @@ const PrepopulatedEngine* const engines_AE[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -52,7 +52,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -50,7 +50,7 @@ const PrepopulatedEngine* const engines_AL[] = {
+@@ -51,7 +51,7 @@ const PrepopulatedEngine* const engines_AL[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -61,7 +61,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -59,7 +59,7 @@ const PrepopulatedEngine* const engines_AR[] = {
+@@ -60,7 +60,7 @@ const PrepopulatedEngine* const engines_AR[] = {
      &googleen, &google,
      &bing,
      &yahoo_ar,
@@ -70,7 +70,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -67,7 +67,7 @@ const PrepopulatedEngine* const engines_AR[] = {
+@@ -68,7 +68,7 @@ const PrepopulatedEngine* const engines_AR[] = {
  const PrepopulatedEngine* const engines_AT[] = {
      &googleen, &google,
      &bing,
@@ -79,7 +79,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_at,
      &ecosia,
  };
-@@ -77,7 +77,7 @@ const PrepopulatedEngine* const engines_AU[] = {
+@@ -78,7 +78,7 @@ const PrepopulatedEngine* const engines_AU[] = {
      &googleen, &google,
      &bing,
      &yahoo_au,
@@ -88,7 +88,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -86,7 +86,7 @@ const PrepopulatedEngine* const engines_BA[] = {
+@@ -87,7 +87,7 @@ const PrepopulatedEngine* const engines_BA[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -97,7 +97,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -96,7 +96,7 @@ const PrepopulatedEngine* const engines_BE[] = {
+@@ -97,7 +97,7 @@ const PrepopulatedEngine* const engines_BE[] = {
      &bing,
      &yahoo,
      &ecosia,
@@ -106,7 +106,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Bulgaria
-@@ -104,7 +104,7 @@ const PrepopulatedEngine* const engines_BG[] = {
+@@ -105,7 +105,7 @@ const PrepopulatedEngine* const engines_BG[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -115,7 +115,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -113,7 +113,7 @@ const PrepopulatedEngine* const engines_BH[] = {
+@@ -114,7 +114,7 @@ const PrepopulatedEngine* const engines_BH[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -124,7 +124,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -122,7 +122,7 @@ const PrepopulatedEngine* const engines_BI[] = {
+@@ -123,7 +123,7 @@ const PrepopulatedEngine* const engines_BI[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -133,7 +133,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -131,7 +131,7 @@ const PrepopulatedEngine* const engines_BN[] = {
+@@ -132,7 +132,7 @@ const PrepopulatedEngine* const engines_BN[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -142,7 +142,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -140,7 +140,7 @@ const PrepopulatedEngine* const engines_BO[] = {
+@@ -141,7 +141,7 @@ const PrepopulatedEngine* const engines_BO[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -151,7 +151,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -149,7 +149,7 @@ const PrepopulatedEngine* const engines_BR[] = {
+@@ -150,7 +150,7 @@ const PrepopulatedEngine* const engines_BR[] = {
      &googleen, &google,
      &bing,
      &yahoo_br,
@@ -160,7 +160,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -159,7 +159,7 @@ const PrepopulatedEngine* const engines_BY[] = {
+@@ -160,7 +160,7 @@ const PrepopulatedEngine* const engines_BY[] = {
      &yandex_by,
      &mail_ru,
      &bing,
@@ -169,7 +169,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Belize
-@@ -167,7 +167,7 @@ const PrepopulatedEngine* const engines_BZ[] = {
+@@ -168,7 +168,7 @@ const PrepopulatedEngine* const engines_BZ[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -178,7 +178,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -176,7 +176,7 @@ const PrepopulatedEngine* const engines_CA[] = {
+@@ -177,7 +177,7 @@ const PrepopulatedEngine* const engines_CA[] = {
      &googleen, &google,
      &bing,
      &yahoo_ca,
@@ -187,7 +187,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -184,7 +184,7 @@ const PrepopulatedEngine* const engines_CA[] = {
+@@ -185,7 +185,7 @@ const PrepopulatedEngine* const engines_CA[] = {
  const PrepopulatedEngine* const engines_CH[] = {
      &googleen, &google,
      &bing,
@@ -196,7 +196,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
      &yahoo_ch,
  };
-@@ -194,7 +194,7 @@ const PrepopulatedEngine* const engines_CL[] = {
+@@ -195,7 +195,7 @@ const PrepopulatedEngine* const engines_CL[] = {
      &googleen, &google,
      &bing,
      &yahoo_cl,
@@ -205,7 +205,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -213,7 +213,7 @@ const PrepopulatedEngine* const engines_CO[] = {
+@@ -214,7 +214,7 @@ const PrepopulatedEngine* const engines_CO[] = {
      &bing,
      &yahoo_co,
      &ecosia,
@@ -214,7 +214,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Costa Rica
-@@ -221,7 +221,7 @@ const PrepopulatedEngine* const engines_CR[] = {
+@@ -222,7 +222,7 @@ const PrepopulatedEngine* const engines_CR[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -223,7 +223,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -231,7 +231,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
+@@ -232,7 +232,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
      &seznam_cz,
      &bing,
      &yahoo,
@@ -232,7 +232,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Germany
-@@ -239,7 +239,7 @@ const PrepopulatedEngine* const engines_DE[] = {
+@@ -240,7 +240,7 @@ const PrepopulatedEngine* const engines_DE[] = {
      &googleen, &google,
      &bing,
      &ecosia,
@@ -241,7 +241,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_de,
  };
  
-@@ -248,7 +248,7 @@ const PrepopulatedEngine* const engines_DK[] = {
+@@ -249,7 +249,7 @@ const PrepopulatedEngine* const engines_DK[] = {
      &googleen, &google,
      &bing,
      &yahoo_dk,
@@ -250,7 +250,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -257,7 +257,7 @@ const PrepopulatedEngine* const engines_DO[] = {
+@@ -258,7 +258,7 @@ const PrepopulatedEngine* const engines_DO[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -259,7 +259,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -267,7 +267,7 @@ const PrepopulatedEngine* const engines_DZ[] = {
+@@ -268,7 +268,7 @@ const PrepopulatedEngine* const engines_DZ[] = {
      &bing,
      &yahoo_fr,
      &yandex_com,
@@ -268,7 +268,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Ecuador
-@@ -276,7 +276,7 @@ const PrepopulatedEngine* const engines_EC[] = {
+@@ -277,7 +277,7 @@ const PrepopulatedEngine* const engines_EC[] = {
      &bing,
      &yahoo,
      &ecosia,
@@ -277,7 +277,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Estonia
-@@ -284,7 +284,7 @@ const PrepopulatedEngine* const engines_EE[] = {
+@@ -285,7 +285,7 @@ const PrepopulatedEngine* const engines_EE[] = {
      &googleen, &google,
      &bing,
      &yandex_ru,
@@ -286,7 +286,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
  };
  
-@@ -294,7 +294,7 @@ const PrepopulatedEngine* const engines_EG[] = {
+@@ -295,7 +295,7 @@ const PrepopulatedEngine* const engines_EG[] = {
      &bing,
      &yahoo,
      &yandex_com,
@@ -295,7 +295,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Spain
-@@ -302,7 +302,7 @@ const PrepopulatedEngine* const engines_ES[] = {
+@@ -303,7 +303,7 @@ const PrepopulatedEngine* const engines_ES[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -304,7 +304,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -311,7 +311,7 @@ const PrepopulatedEngine* const engines_FI[] = {
+@@ -312,7 +312,7 @@ const PrepopulatedEngine* const engines_FI[] = {
      &googleen, &google,
      &bing,
      &yahoo_fi,
@@ -313,7 +313,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -320,7 +320,7 @@ const PrepopulatedEngine* const engines_FO[] = {
+@@ -321,7 +321,7 @@ const PrepopulatedEngine* const engines_FO[] = {
      &googleen, &google,
      &bing,
      &yahoo_dk,
@@ -322,7 +322,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -338,7 +338,7 @@ const PrepopulatedEngine* const engines_GB[] = {
+@@ -339,7 +339,7 @@ const PrepopulatedEngine* const engines_GB[] = {
      &googleen, &google,
      &bing,
      &yahoo_uk,
@@ -331,7 +331,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -347,7 +347,7 @@ const PrepopulatedEngine* const engines_GR[] = {
+@@ -348,7 +348,7 @@ const PrepopulatedEngine* const engines_GR[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -340,7 +340,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -356,7 +356,7 @@ const PrepopulatedEngine* const engines_GT[] = {
+@@ -357,7 +357,7 @@ const PrepopulatedEngine* const engines_GT[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -349,7 +349,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -366,7 +366,7 @@ const PrepopulatedEngine* const engines_HK[] = {
+@@ -367,7 +367,7 @@ const PrepopulatedEngine* const engines_HK[] = {
      &yahoo_hk,
      &bing,
      &baidu,
@@ -358,7 +358,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Honduras
-@@ -374,7 +374,7 @@ const PrepopulatedEngine* const engines_HN[] = {
+@@ -375,7 +375,7 @@ const PrepopulatedEngine* const engines_HN[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -367,7 +367,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -383,7 +383,7 @@ const PrepopulatedEngine* const engines_HR[] = {
+@@ -384,7 +384,7 @@ const PrepopulatedEngine* const engines_HR[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -376,7 +376,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -392,7 +392,7 @@ const PrepopulatedEngine* const engines_HU[] = {
+@@ -393,7 +393,7 @@ const PrepopulatedEngine* const engines_HU[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -385,7 +385,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -402,7 +402,7 @@ const PrepopulatedEngine* const engines_ID[] = {
+@@ -403,7 +403,7 @@ const PrepopulatedEngine* const engines_ID[] = {
      &yahoo_id,
      &bing,
      &yandex_com,
@@ -394,7 +394,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Ireland
-@@ -410,7 +410,7 @@ const PrepopulatedEngine* const engines_IE[] = {
+@@ -411,7 +411,7 @@ const PrepopulatedEngine* const engines_IE[] = {
      &googleen, &google,
      &bing,
      &yahoo_uk,
@@ -403,7 +403,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -420,7 +420,7 @@ const PrepopulatedEngine* const engines_IL[] = {
+@@ -421,7 +421,7 @@ const PrepopulatedEngine* const engines_IL[] = {
      &bing,
      &yandex_ru,
      &yahoo,
@@ -412,7 +412,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // India
-@@ -428,7 +428,7 @@ const PrepopulatedEngine* const engines_IN[] = {
+@@ -429,7 +429,7 @@ const PrepopulatedEngine* const engines_IN[] = {
      &googleen, &google,
      &bing,
      &yahoo_in,
@@ -421,7 +421,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &info_com,
  };
  
-@@ -438,7 +438,7 @@ const PrepopulatedEngine* const engines_IQ[] = {
+@@ -439,7 +439,7 @@ const PrepopulatedEngine* const engines_IQ[] = {
      &bing,
      &yahoo,
      &yandex_tr,
@@ -430,7 +430,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Iran
-@@ -447,14 +447,14 @@ const PrepopulatedEngine* const engines_IR[] = {
+@@ -448,14 +448,14 @@ const PrepopulatedEngine* const engines_IR[] = {
      &bing,
      &yahoo,
      &ask,
@@ -447,7 +447,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
      &ecosia,
  };
-@@ -464,7 +464,7 @@ const PrepopulatedEngine* const engines_IT[] = {
+@@ -465,7 +465,7 @@ const PrepopulatedEngine* const engines_IT[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -456,7 +456,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -473,7 +473,7 @@ const PrepopulatedEngine* const engines_JM[] = {
+@@ -474,7 +474,7 @@ const PrepopulatedEngine* const engines_JM[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -465,7 +465,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -482,7 +482,7 @@ const PrepopulatedEngine* const engines_JO[] = {
+@@ -483,7 +483,7 @@ const PrepopulatedEngine* const engines_JO[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -474,7 +474,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -491,7 +491,7 @@ const PrepopulatedEngine* const engines_JP[] = {
+@@ -492,7 +492,7 @@ const PrepopulatedEngine* const engines_JP[] = {
      &googleen, &google,
      &yahoo_jp,
      &bing,
@@ -483,7 +483,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &baidu,
  };
  
-@@ -500,7 +500,7 @@ const PrepopulatedEngine* const engines_KE[] = {
+@@ -501,7 +501,7 @@ const PrepopulatedEngine* const engines_KE[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -492,7 +492,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -518,7 +518,7 @@ const PrepopulatedEngine* const engines_KW[] = {
+@@ -519,7 +519,7 @@ const PrepopulatedEngine* const engines_KW[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -501,7 +501,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -528,7 +528,7 @@ const PrepopulatedEngine* const engines_KZ[] = {
+@@ -529,7 +529,7 @@ const PrepopulatedEngine* const engines_KZ[] = {
      &yandex_kz,
      &mail_ru,
      &bing,
@@ -510,7 +510,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Lebanon
-@@ -536,7 +536,7 @@ const PrepopulatedEngine* const engines_LB[] = {
+@@ -537,7 +537,7 @@ const PrepopulatedEngine* const engines_LB[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -519,7 +519,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -544,7 +544,7 @@ const PrepopulatedEngine* const engines_LB[] = {
+@@ -545,7 +545,7 @@ const PrepopulatedEngine* const engines_LB[] = {
  const PrepopulatedEngine* const engines_LI[] = {
      &googleen, &google,
      &bing,
@@ -528,7 +528,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
      &ecosia,
  };
-@@ -554,7 +554,7 @@ const PrepopulatedEngine* const engines_LT[] = {
+@@ -555,7 +555,7 @@ const PrepopulatedEngine* const engines_LT[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -537,7 +537,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -562,7 +562,7 @@ const PrepopulatedEngine* const engines_LT[] = {
+@@ -563,7 +563,7 @@ const PrepopulatedEngine* const engines_LT[] = {
  const PrepopulatedEngine* const engines_LU[] = {
      &googleen, &google,
      &bing,
@@ -546,7 +546,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
      &ecosia,
  };
-@@ -573,7 +573,7 @@ const PrepopulatedEngine* const engines_LV[] = {
+@@ -574,7 +574,7 @@ const PrepopulatedEngine* const engines_LV[] = {
      &bing,
      &yandex_ru,
      &yahoo,
@@ -555,7 +555,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Libya
-@@ -582,7 +582,7 @@ const PrepopulatedEngine* const engines_LY[] = {
+@@ -583,7 +583,7 @@ const PrepopulatedEngine* const engines_LY[] = {
      &bing,
      &yahoo,
      &yandex_com,
@@ -564,7 +564,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Morocco
-@@ -591,14 +591,14 @@ const PrepopulatedEngine* const engines_MA[] = {
+@@ -592,14 +592,14 @@ const PrepopulatedEngine* const engines_MA[] = {
      &bing,
      &yahoo_fr,
      &yandex_com,
@@ -581,7 +581,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_fr,
      &ecosia,
  };
-@@ -618,7 +618,7 @@ const PrepopulatedEngine* const engines_ME[] = {
+@@ -619,7 +619,7 @@ const PrepopulatedEngine* const engines_ME[] = {
      &bing,
      &yahoo,
      &yandex_ru,
@@ -590,7 +590,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Macedonia
-@@ -626,7 +626,7 @@ const PrepopulatedEngine* const engines_MK[] = {
+@@ -627,7 +627,7 @@ const PrepopulatedEngine* const engines_MK[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -599,7 +599,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -635,7 +635,7 @@ const PrepopulatedEngine* const engines_MX[] = {
+@@ -636,7 +636,7 @@ const PrepopulatedEngine* const engines_MX[] = {
      &googleen, &google,
      &bing,
      &yahoo_mx,
@@ -608,7 +608,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -644,7 +644,7 @@ const PrepopulatedEngine* const engines_MY[] = {
+@@ -645,7 +645,7 @@ const PrepopulatedEngine* const engines_MY[] = {
      &googleen, &google,
      &bing,
      &yahoo_my,
@@ -617,7 +617,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -653,7 +653,7 @@ const PrepopulatedEngine* const engines_NI[] = {
+@@ -654,7 +654,7 @@ const PrepopulatedEngine* const engines_NI[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -626,7 +626,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -662,7 +662,7 @@ const PrepopulatedEngine* const engines_NL[] = {
+@@ -663,7 +663,7 @@ const PrepopulatedEngine* const engines_NL[] = {
      &googleen, &google,
      &bing,
      &yahoo_nl,
@@ -635,7 +635,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -671,7 +671,7 @@ const PrepopulatedEngine* const engines_NO[] = {
+@@ -672,7 +672,7 @@ const PrepopulatedEngine* const engines_NO[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -644,7 +644,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -680,7 +680,7 @@ const PrepopulatedEngine* const engines_NZ[] = {
+@@ -681,7 +681,7 @@ const PrepopulatedEngine* const engines_NZ[] = {
      &googleen, &google,
      &bing,
      &yahoo_nz,
@@ -653,7 +653,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -689,7 +689,7 @@ const PrepopulatedEngine* const engines_OM[] = {
+@@ -690,7 +690,7 @@ const PrepopulatedEngine* const engines_OM[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -662,7 +662,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &petal_search,
  };
  
-@@ -698,7 +698,7 @@ const PrepopulatedEngine* const engines_PA[] = {
+@@ -699,7 +699,7 @@ const PrepopulatedEngine* const engines_PA[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -671,7 +671,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -708,7 +708,7 @@ const PrepopulatedEngine* const engines_PE[] = {
+@@ -709,7 +709,7 @@ const PrepopulatedEngine* const engines_PE[] = {
      &bing,
      &yahoo_pe,
      &ecosia,
@@ -680,7 +680,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Philippines
-@@ -717,7 +717,7 @@ const PrepopulatedEngine* const engines_PH[] = {
+@@ -718,7 +718,7 @@ const PrepopulatedEngine* const engines_PH[] = {
      &bing,
      &yahoo,
      &ecosia,
@@ -689,7 +689,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Pakistan
-@@ -725,7 +725,7 @@ const PrepopulatedEngine* const engines_PK[] = {
+@@ -726,7 +726,7 @@ const PrepopulatedEngine* const engines_PK[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -698,7 +698,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -734,7 +734,7 @@ const PrepopulatedEngine* const engines_PL[] = {
+@@ -735,7 +735,7 @@ const PrepopulatedEngine* const engines_PL[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -707,7 +707,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -743,7 +743,7 @@ const PrepopulatedEngine* const engines_PR[] = {
+@@ -744,7 +744,7 @@ const PrepopulatedEngine* const engines_PR[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -716,7 +716,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -752,7 +752,7 @@ const PrepopulatedEngine* const engines_PT[] = {
+@@ -753,7 +753,7 @@ const PrepopulatedEngine* const engines_PT[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -725,7 +725,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -761,7 +761,7 @@ const PrepopulatedEngine* const engines_PY[] = {
+@@ -762,7 +762,7 @@ const PrepopulatedEngine* const engines_PY[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -734,7 +734,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -770,7 +770,7 @@ const PrepopulatedEngine* const engines_QA[] = {
+@@ -771,7 +771,7 @@ const PrepopulatedEngine* const engines_QA[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -743,7 +743,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_tr,
  };
  
-@@ -779,7 +779,7 @@ const PrepopulatedEngine* const engines_RO[] = {
+@@ -780,7 +780,7 @@ const PrepopulatedEngine* const engines_RO[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -752,7 +752,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_tr,
  };
  
-@@ -788,7 +788,7 @@ const PrepopulatedEngine* const engines_RS[] = {
+@@ -789,7 +789,7 @@ const PrepopulatedEngine* const engines_RS[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -761,7 +761,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
  };
  
-@@ -798,7 +798,7 @@ const PrepopulatedEngine* const engines_RU[] = {
+@@ -799,7 +799,7 @@ const PrepopulatedEngine* const engines_RU[] = {
      &yandex_ru,
      &mail_ru,
      &bing,
@@ -770,7 +770,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Rwanda
-@@ -806,7 +806,7 @@ const PrepopulatedEngine* const engines_RW[] = {
+@@ -807,7 +807,7 @@ const PrepopulatedEngine* const engines_RW[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -779,7 +779,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -816,7 +816,7 @@ const PrepopulatedEngine* const engines_SA[] = {
+@@ -817,7 +817,7 @@ const PrepopulatedEngine* const engines_SA[] = {
      &bing,
      &yahoo,
      &yandex_com,
@@ -788,7 +788,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Sweden
-@@ -824,7 +824,7 @@ const PrepopulatedEngine* const engines_SE[] = {
+@@ -825,7 +825,7 @@ const PrepopulatedEngine* const engines_SE[] = {
      &googleen, &google,
      &bing,
      &yahoo_se,
@@ -797,7 +797,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -833,7 +833,7 @@ const PrepopulatedEngine* const engines_SG[] = {
+@@ -834,7 +834,7 @@ const PrepopulatedEngine* const engines_SG[] = {
      &googleen, &google,
      &bing,
      &yahoo_sg,
@@ -806,7 +806,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &baidu,
  };
  
-@@ -841,7 +841,7 @@ const PrepopulatedEngine* const engines_SG[] = {
+@@ -842,7 +842,7 @@ const PrepopulatedEngine* const engines_SG[] = {
  const PrepopulatedEngine* const engines_SI[] = {
      &googleen, &google,
      &bing,
@@ -815,7 +815,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
      &yandex_com,
  };
-@@ -850,7 +850,7 @@ const PrepopulatedEngine* const engines_SI[] = {
+@@ -851,7 +851,7 @@ const PrepopulatedEngine* const engines_SI[] = {
  const PrepopulatedEngine* const engines_SK[] = {
      &googleen, &google,
      &bing,
@@ -824,7 +824,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
      &yandex_com,
  };
-@@ -860,7 +860,7 @@ const PrepopulatedEngine* const engines_SV[] = {
+@@ -861,7 +861,7 @@ const PrepopulatedEngine* const engines_SV[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -833,7 +833,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -870,7 +870,7 @@ const PrepopulatedEngine* const engines_SY[] = {
+@@ -871,7 +871,7 @@ const PrepopulatedEngine* const engines_SY[] = {
      &bing,
      &yahoo,
      &yandex_com,
@@ -842,7 +842,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Thailand
-@@ -887,7 +887,7 @@ const PrepopulatedEngine* const engines_TN[] = {
+@@ -888,7 +888,7 @@ const PrepopulatedEngine* const engines_TN[] = {
      &googleen, &google,
      &bing,
      &yahoo_fr,
@@ -851,7 +851,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_com,
  };
  
-@@ -897,7 +897,7 @@ const PrepopulatedEngine* const engines_TR[] = {
+@@ -898,7 +898,7 @@ const PrepopulatedEngine* const engines_TR[] = {
      &yandex_tr,
      &yahoo_tr,
      &bing,
@@ -860,7 +860,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Trinidad and Tobago
-@@ -905,7 +905,7 @@ const PrepopulatedEngine* const engines_TT[] = {
+@@ -906,7 +906,7 @@ const PrepopulatedEngine* const engines_TT[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -869,7 +869,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -915,7 +915,7 @@ const PrepopulatedEngine* const engines_TW[] = {
+@@ -916,7 +916,7 @@ const PrepopulatedEngine* const engines_TW[] = {
      &yahoo_tw,
      &bing,
      &baidu,
@@ -878,7 +878,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // Tanzania
-@@ -923,7 +923,7 @@ const PrepopulatedEngine* const engines_TZ[] = {
+@@ -924,7 +924,7 @@ const PrepopulatedEngine* const engines_TZ[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -887,7 +887,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &baidu,
  };
  
-@@ -932,7 +932,7 @@ const PrepopulatedEngine* const engines_UA[] = {
+@@ -933,7 +933,7 @@ const PrepopulatedEngine* const engines_UA[] = {
      &googleen, &google,
      &yandex_ua,
      &bing,
@@ -896,7 +896,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo,
  };
  
-@@ -941,7 +941,7 @@ const PrepopulatedEngine* const engines_US[] = {
+@@ -942,7 +942,7 @@ const PrepopulatedEngine* const engines_US[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -905,7 +905,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -950,7 +950,7 @@ const PrepopulatedEngine* const engines_UY[] = {
+@@ -951,7 +951,7 @@ const PrepopulatedEngine* const engines_UY[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -914,7 +914,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -959,7 +959,7 @@ const PrepopulatedEngine* const engines_VE[] = {
+@@ -960,7 +960,7 @@ const PrepopulatedEngine* const engines_VE[] = {
      &googleen, &google,
      &bing,
      &yahoo_es,
@@ -923,7 +923,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -978,7 +978,7 @@ const PrepopulatedEngine* const engines_YE[] = {
+@@ -979,7 +979,7 @@ const PrepopulatedEngine* const engines_YE[] = {
      &bing,
      &yahoo,
      &yandex_com,
@@ -932,7 +932,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
  };
  
  // South Africa
-@@ -986,7 +986,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
+@@ -987,7 +987,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
      &googleen, &google,
      &bing,
      &yahoo,
@@ -941,7 +941,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &ecosia,
  };
  
-@@ -995,7 +995,7 @@ const PrepopulatedEngine* const engines_ZW[] = {
+@@ -996,7 +996,7 @@ const PrepopulatedEngine* const engines_ZW[] = {
      &googleen, &google,
      &bing,
      &yahoo,

+ 108 - 108
build/patches/Add-English-only-search-engine.patch

@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
 --- a/components/search_engines/prepopulated_engines.json
 +++ b/components/search_engines/prepopulated_engines.json
-@@ -135,6 +135,27 @@
+@@ -136,6 +136,27 @@
        "id": 1
      },
  
@@ -57,7 +57,7 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
 diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
 --- a/components/search_engines/template_url_prepopulate_data.cc
 +++ b/components/search_engines/template_url_prepopulate_data.cc
-@@ -28,7 +28,7 @@ namespace {
+@@ -29,7 +29,7 @@ namespace {
  
  // Default (for countries with no better engine set)
  const PrepopulatedEngine* const engines_default[] = {
@@ -66,7 +66,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
  };
-@@ -38,7 +38,7 @@ const PrepopulatedEngine* const engines_default[] = {
+@@ -39,7 +39,7 @@ const PrepopulatedEngine* const engines_default[] = {
  // clang-format off
  // United Arab Emirates
  const PrepopulatedEngine* const engines_AE[] = {
@@ -75,7 +75,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -47,7 +47,7 @@ const PrepopulatedEngine* const engines_AE[] = {
+@@ -48,7 +48,7 @@ const PrepopulatedEngine* const engines_AE[] = {
  
  // Albania
  const PrepopulatedEngine* const engines_AL[] = {
@@ -84,7 +84,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -56,7 +56,7 @@ const PrepopulatedEngine* const engines_AL[] = {
+@@ -57,7 +57,7 @@ const PrepopulatedEngine* const engines_AL[] = {
  
  // Argentina
  const PrepopulatedEngine* const engines_AR[] = {
@@ -93,7 +93,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_ar,
      &duckduckgo,
-@@ -65,7 +65,7 @@ const PrepopulatedEngine* const engines_AR[] = {
+@@ -66,7 +66,7 @@ const PrepopulatedEngine* const engines_AR[] = {
  
  // Austria
  const PrepopulatedEngine* const engines_AT[] = {
@@ -102,7 +102,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo_at,
-@@ -74,7 +74,7 @@ const PrepopulatedEngine* const engines_AT[] = {
+@@ -75,7 +75,7 @@ const PrepopulatedEngine* const engines_AT[] = {
  
  // Australia
  const PrepopulatedEngine* const engines_AU[] = {
@@ -111,7 +111,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_au,
      &duckduckgo,
-@@ -83,7 +83,7 @@ const PrepopulatedEngine* const engines_AU[] = {
+@@ -84,7 +84,7 @@ const PrepopulatedEngine* const engines_AU[] = {
  
  // Bosnia and Herzegovina
  const PrepopulatedEngine* const engines_BA[] = {
@@ -120,7 +120,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -92,7 +92,7 @@ const PrepopulatedEngine* const engines_BA[] = {
+@@ -93,7 +93,7 @@ const PrepopulatedEngine* const engines_BA[] = {
  
  // Belgium
  const PrepopulatedEngine* const engines_BE[] = {
@@ -129,7 +129,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &ecosia,
-@@ -101,7 +101,7 @@ const PrepopulatedEngine* const engines_BE[] = {
+@@ -102,7 +102,7 @@ const PrepopulatedEngine* const engines_BE[] = {
  
  // Bulgaria
  const PrepopulatedEngine* const engines_BG[] = {
@@ -138,7 +138,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -110,7 +110,7 @@ const PrepopulatedEngine* const engines_BG[] = {
+@@ -111,7 +111,7 @@ const PrepopulatedEngine* const engines_BG[] = {
  
  // Bahrain
  const PrepopulatedEngine* const engines_BH[] = {
@@ -147,7 +147,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -119,7 +119,7 @@ const PrepopulatedEngine* const engines_BH[] = {
+@@ -120,7 +120,7 @@ const PrepopulatedEngine* const engines_BH[] = {
  
  // Burundi
  const PrepopulatedEngine* const engines_BI[] = {
@@ -156,7 +156,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -128,7 +128,7 @@ const PrepopulatedEngine* const engines_BI[] = {
+@@ -129,7 +129,7 @@ const PrepopulatedEngine* const engines_BI[] = {
  
  // Brunei
  const PrepopulatedEngine* const engines_BN[] = {
@@ -165,7 +165,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -137,7 +137,7 @@ const PrepopulatedEngine* const engines_BN[] = {
+@@ -138,7 +138,7 @@ const PrepopulatedEngine* const engines_BN[] = {
  
  // Bolivia
  const PrepopulatedEngine* const engines_BO[] = {
@@ -174,7 +174,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -146,7 +146,7 @@ const PrepopulatedEngine* const engines_BO[] = {
+@@ -147,7 +147,7 @@ const PrepopulatedEngine* const engines_BO[] = {
  
  // Brazil
  const PrepopulatedEngine* const engines_BR[] = {
@@ -183,7 +183,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_br,
      &duckduckgo,
-@@ -155,7 +155,7 @@ const PrepopulatedEngine* const engines_BR[] = {
+@@ -156,7 +156,7 @@ const PrepopulatedEngine* const engines_BR[] = {
  
  // Belarus
  const PrepopulatedEngine* const engines_BY[] = {
@@ -192,7 +192,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_by,
      &mail_ru,
      &bing,
-@@ -164,7 +164,7 @@ const PrepopulatedEngine* const engines_BY[] = {
+@@ -165,7 +165,7 @@ const PrepopulatedEngine* const engines_BY[] = {
  
  // Belize
  const PrepopulatedEngine* const engines_BZ[] = {
@@ -201,7 +201,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -173,7 +173,7 @@ const PrepopulatedEngine* const engines_BZ[] = {
+@@ -174,7 +174,7 @@ const PrepopulatedEngine* const engines_BZ[] = {
  
  // Canada
  const PrepopulatedEngine* const engines_CA[] = {
@@ -210,7 +210,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_ca,
      &duckduckgo,
-@@ -182,7 +182,7 @@ const PrepopulatedEngine* const engines_CA[] = {
+@@ -183,7 +183,7 @@ const PrepopulatedEngine* const engines_CA[] = {
  
  // Switzerland
  const PrepopulatedEngine* const engines_CH[] = {
@@ -219,7 +219,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &ecosia,
-@@ -191,7 +191,7 @@ const PrepopulatedEngine* const engines_CH[] = {
+@@ -192,7 +192,7 @@ const PrepopulatedEngine* const engines_CH[] = {
  
  // Chile
  const PrepopulatedEngine* const engines_CL[] = {
@@ -228,7 +228,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_cl,
      &duckduckgo,
-@@ -203,13 +203,13 @@ const PrepopulatedEngine* const engines_CN[] = {
+@@ -204,13 +204,13 @@ const PrepopulatedEngine* const engines_CN[] = {
      &sogou,
      &baidu,
      &bing,
@@ -244,7 +244,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_co,
      &ecosia,
-@@ -218,7 +218,7 @@ const PrepopulatedEngine* const engines_CO[] = {
+@@ -219,7 +219,7 @@ const PrepopulatedEngine* const engines_CO[] = {
  
  // Costa Rica
  const PrepopulatedEngine* const engines_CR[] = {
@@ -253,7 +253,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -227,7 +227,7 @@ const PrepopulatedEngine* const engines_CR[] = {
+@@ -228,7 +228,7 @@ const PrepopulatedEngine* const engines_CR[] = {
  
  // Czech Republic
  const PrepopulatedEngine* const engines_CZ[] = {
@@ -262,7 +262,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &seznam_cz,
      &bing,
      &yahoo,
-@@ -236,7 +236,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
+@@ -237,7 +237,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
  
  // Germany
  const PrepopulatedEngine* const engines_DE[] = {
@@ -271,7 +271,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &ecosia,
      &duckduckgo,
-@@ -245,7 +245,7 @@ const PrepopulatedEngine* const engines_DE[] = {
+@@ -246,7 +246,7 @@ const PrepopulatedEngine* const engines_DE[] = {
  
  // Denmark
  const PrepopulatedEngine* const engines_DK[] = {
@@ -280,7 +280,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_dk,
      &duckduckgo,
-@@ -254,7 +254,7 @@ const PrepopulatedEngine* const engines_DK[] = {
+@@ -255,7 +255,7 @@ const PrepopulatedEngine* const engines_DK[] = {
  
  // Dominican Republic
  const PrepopulatedEngine* const engines_DO[] = {
@@ -289,7 +289,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -263,7 +263,7 @@ const PrepopulatedEngine* const engines_DO[] = {
+@@ -264,7 +264,7 @@ const PrepopulatedEngine* const engines_DO[] = {
  
  // Algeria
  const PrepopulatedEngine* const engines_DZ[] = {
@@ -298,7 +298,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_fr,
      &yandex_com,
-@@ -272,7 +272,7 @@ const PrepopulatedEngine* const engines_DZ[] = {
+@@ -273,7 +273,7 @@ const PrepopulatedEngine* const engines_DZ[] = {
  
  // Ecuador
  const PrepopulatedEngine* const engines_EC[] = {
@@ -307,7 +307,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &ecosia,
-@@ -281,7 +281,7 @@ const PrepopulatedEngine* const engines_EC[] = {
+@@ -282,7 +282,7 @@ const PrepopulatedEngine* const engines_EC[] = {
  
  // Estonia
  const PrepopulatedEngine* const engines_EE[] = {
@@ -316,7 +316,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yandex_ru,
      &duckduckgo,
-@@ -290,7 +290,7 @@ const PrepopulatedEngine* const engines_EE[] = {
+@@ -291,7 +291,7 @@ const PrepopulatedEngine* const engines_EE[] = {
  
  // Egypt
  const PrepopulatedEngine* const engines_EG[] = {
@@ -325,7 +325,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_com,
-@@ -299,7 +299,7 @@ const PrepopulatedEngine* const engines_EG[] = {
+@@ -300,7 +300,7 @@ const PrepopulatedEngine* const engines_EG[] = {
  
  // Spain
  const PrepopulatedEngine* const engines_ES[] = {
@@ -334,7 +334,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -308,7 +308,7 @@ const PrepopulatedEngine* const engines_ES[] = {
+@@ -309,7 +309,7 @@ const PrepopulatedEngine* const engines_ES[] = {
  
  // Finland
  const PrepopulatedEngine* const engines_FI[] = {
@@ -343,7 +343,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_fi,
      &duckduckgo,
-@@ -317,7 +317,7 @@ const PrepopulatedEngine* const engines_FI[] = {
+@@ -318,7 +318,7 @@ const PrepopulatedEngine* const engines_FI[] = {
  
  // Faroe Islands
  const PrepopulatedEngine* const engines_FO[] = {
@@ -352,7 +352,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_dk,
      &duckduckgo,
-@@ -326,7 +326,7 @@ const PrepopulatedEngine* const engines_FO[] = {
+@@ -327,7 +327,7 @@ const PrepopulatedEngine* const engines_FO[] = {
  
  // France
  const PrepopulatedEngine* const engines_FR[] = {
@@ -361,7 +361,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_fr,
      &qwant,
-@@ -335,7 +335,7 @@ const PrepopulatedEngine* const engines_FR[] = {
+@@ -336,7 +336,7 @@ const PrepopulatedEngine* const engines_FR[] = {
  
  // United Kingdom
  const PrepopulatedEngine* const engines_GB[] = {
@@ -370,7 +370,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_uk,
      &duckduckgo,
-@@ -344,7 +344,7 @@ const PrepopulatedEngine* const engines_GB[] = {
+@@ -345,7 +345,7 @@ const PrepopulatedEngine* const engines_GB[] = {
  
  // Greece
  const PrepopulatedEngine* const engines_GR[] = {
@@ -379,7 +379,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -353,7 +353,7 @@ const PrepopulatedEngine* const engines_GR[] = {
+@@ -354,7 +354,7 @@ const PrepopulatedEngine* const engines_GR[] = {
  
  // Guatemala
  const PrepopulatedEngine* const engines_GT[] = {
@@ -388,7 +388,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -362,7 +362,7 @@ const PrepopulatedEngine* const engines_GT[] = {
+@@ -363,7 +363,7 @@ const PrepopulatedEngine* const engines_GT[] = {
  
  // Hong Kong
  const PrepopulatedEngine* const engines_HK[] = {
@@ -397,7 +397,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_hk,
      &bing,
      &baidu,
-@@ -371,7 +371,7 @@ const PrepopulatedEngine* const engines_HK[] = {
+@@ -372,7 +372,7 @@ const PrepopulatedEngine* const engines_HK[] = {
  
  // Honduras
  const PrepopulatedEngine* const engines_HN[] = {
@@ -406,7 +406,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -380,7 +380,7 @@ const PrepopulatedEngine* const engines_HN[] = {
+@@ -381,7 +381,7 @@ const PrepopulatedEngine* const engines_HN[] = {
  
  // Croatia
  const PrepopulatedEngine* const engines_HR[] = {
@@ -415,7 +415,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -389,7 +389,7 @@ const PrepopulatedEngine* const engines_HR[] = {
+@@ -390,7 +390,7 @@ const PrepopulatedEngine* const engines_HR[] = {
  
  // Hungary
  const PrepopulatedEngine* const engines_HU[] = {
@@ -424,7 +424,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -398,7 +398,7 @@ const PrepopulatedEngine* const engines_HU[] = {
+@@ -399,7 +399,7 @@ const PrepopulatedEngine* const engines_HU[] = {
  
  // Indonesia
  const PrepopulatedEngine* const engines_ID[] = {
@@ -433,7 +433,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_id,
      &bing,
      &yandex_com,
-@@ -407,7 +407,7 @@ const PrepopulatedEngine* const engines_ID[] = {
+@@ -408,7 +408,7 @@ const PrepopulatedEngine* const engines_ID[] = {
  
  // Ireland
  const PrepopulatedEngine* const engines_IE[] = {
@@ -442,7 +442,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_uk,
      &duckduckgo,
-@@ -416,7 +416,7 @@ const PrepopulatedEngine* const engines_IE[] = {
+@@ -417,7 +417,7 @@ const PrepopulatedEngine* const engines_IE[] = {
  
  // Israel
  const PrepopulatedEngine* const engines_IL[] = {
@@ -451,7 +451,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yandex_ru,
      &yahoo,
-@@ -425,7 +425,7 @@ const PrepopulatedEngine* const engines_IL[] = {
+@@ -426,7 +426,7 @@ const PrepopulatedEngine* const engines_IL[] = {
  
  // India
  const PrepopulatedEngine* const engines_IN[] = {
@@ -460,7 +460,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_in,
      &duckduckgo,
-@@ -434,7 +434,7 @@ const PrepopulatedEngine* const engines_IN[] = {
+@@ -435,7 +435,7 @@ const PrepopulatedEngine* const engines_IN[] = {
  
  // Iraq
  const PrepopulatedEngine* const engines_IQ[] = {
@@ -469,7 +469,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_tr,
-@@ -443,7 +443,7 @@ const PrepopulatedEngine* const engines_IQ[] = {
+@@ -444,7 +444,7 @@ const PrepopulatedEngine* const engines_IQ[] = {
  
  // Iran
  const PrepopulatedEngine* const engines_IR[] = {
@@ -478,7 +478,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &ask,
-@@ -452,7 +452,7 @@ const PrepopulatedEngine* const engines_IR[] = {
+@@ -453,7 +453,7 @@ const PrepopulatedEngine* const engines_IR[] = {
  
  // Iceland
  const PrepopulatedEngine* const engines_IS[] = {
@@ -487,7 +487,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo,
-@@ -461,7 +461,7 @@ const PrepopulatedEngine* const engines_IS[] = {
+@@ -462,7 +462,7 @@ const PrepopulatedEngine* const engines_IS[] = {
  
  // Italy
  const PrepopulatedEngine* const engines_IT[] = {
@@ -496,7 +496,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -470,7 +470,7 @@ const PrepopulatedEngine* const engines_IT[] = {
+@@ -471,7 +471,7 @@ const PrepopulatedEngine* const engines_IT[] = {
  
  // Jamaica
  const PrepopulatedEngine* const engines_JM[] = {
@@ -505,7 +505,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -479,7 +479,7 @@ const PrepopulatedEngine* const engines_JM[] = {
+@@ -480,7 +480,7 @@ const PrepopulatedEngine* const engines_JM[] = {
  
  // Jordan
  const PrepopulatedEngine* const engines_JO[] = {
@@ -514,7 +514,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -488,7 +488,7 @@ const PrepopulatedEngine* const engines_JO[] = {
+@@ -489,7 +489,7 @@ const PrepopulatedEngine* const engines_JO[] = {
  
  // Japan
  const PrepopulatedEngine* const engines_JP[] = {
@@ -523,7 +523,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_jp,
      &bing,
      &duckduckgo,
-@@ -497,7 +497,7 @@ const PrepopulatedEngine* const engines_JP[] = {
+@@ -498,7 +498,7 @@ const PrepopulatedEngine* const engines_JP[] = {
  
  // Kenya
  const PrepopulatedEngine* const engines_KE[] = {
@@ -532,7 +532,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -506,7 +506,7 @@ const PrepopulatedEngine* const engines_KE[] = {
+@@ -507,7 +507,7 @@ const PrepopulatedEngine* const engines_KE[] = {
  
  // South Korea
  const PrepopulatedEngine* const engines_KR[] = {
@@ -541,7 +541,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &naver,
      &daum,
      &bing,
-@@ -515,7 +515,7 @@ const PrepopulatedEngine* const engines_KR[] = {
+@@ -516,7 +516,7 @@ const PrepopulatedEngine* const engines_KR[] = {
  
  // Kuwait
  const PrepopulatedEngine* const engines_KW[] = {
@@ -550,7 +550,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -524,7 +524,7 @@ const PrepopulatedEngine* const engines_KW[] = {
+@@ -525,7 +525,7 @@ const PrepopulatedEngine* const engines_KW[] = {
  
  // Kazakhstan
  const PrepopulatedEngine* const engines_KZ[] = {
@@ -559,7 +559,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_kz,
      &mail_ru,
      &bing,
-@@ -533,7 +533,7 @@ const PrepopulatedEngine* const engines_KZ[] = {
+@@ -534,7 +534,7 @@ const PrepopulatedEngine* const engines_KZ[] = {
  
  // Lebanon
  const PrepopulatedEngine* const engines_LB[] = {
@@ -568,7 +568,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -542,7 +542,7 @@ const PrepopulatedEngine* const engines_LB[] = {
+@@ -543,7 +543,7 @@ const PrepopulatedEngine* const engines_LB[] = {
  
  // Liechtenstein
  const PrepopulatedEngine* const engines_LI[] = {
@@ -577,7 +577,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo,
-@@ -551,7 +551,7 @@ const PrepopulatedEngine* const engines_LI[] = {
+@@ -552,7 +552,7 @@ const PrepopulatedEngine* const engines_LI[] = {
  
  // Lithuania
  const PrepopulatedEngine* const engines_LT[] = {
@@ -586,7 +586,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -560,7 +560,7 @@ const PrepopulatedEngine* const engines_LT[] = {
+@@ -561,7 +561,7 @@ const PrepopulatedEngine* const engines_LT[] = {
  
  // Luxembourg
  const PrepopulatedEngine* const engines_LU[] = {
@@ -595,7 +595,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo,
-@@ -569,7 +569,7 @@ const PrepopulatedEngine* const engines_LU[] = {
+@@ -570,7 +570,7 @@ const PrepopulatedEngine* const engines_LU[] = {
  
  // Latvia
  const PrepopulatedEngine* const engines_LV[] = {
@@ -604,7 +604,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yandex_ru,
      &yahoo,
-@@ -578,7 +578,7 @@ const PrepopulatedEngine* const engines_LV[] = {
+@@ -579,7 +579,7 @@ const PrepopulatedEngine* const engines_LV[] = {
  
  // Libya
  const PrepopulatedEngine* const engines_LY[] = {
@@ -613,7 +613,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_com,
-@@ -587,7 +587,7 @@ const PrepopulatedEngine* const engines_LY[] = {
+@@ -588,7 +588,7 @@ const PrepopulatedEngine* const engines_LY[] = {
  
  // Morocco
  const PrepopulatedEngine* const engines_MA[] = {
@@ -622,7 +622,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_fr,
      &yandex_com,
-@@ -596,7 +596,7 @@ const PrepopulatedEngine* const engines_MA[] = {
+@@ -597,7 +597,7 @@ const PrepopulatedEngine* const engines_MA[] = {
  
  // Monaco
  const PrepopulatedEngine* const engines_MC[] = {
@@ -631,7 +631,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo_fr,
-@@ -605,7 +605,7 @@ const PrepopulatedEngine* const engines_MC[] = {
+@@ -606,7 +606,7 @@ const PrepopulatedEngine* const engines_MC[] = {
  
  // Moldova
  const PrepopulatedEngine* const engines_MD[] = {
@@ -640,7 +640,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
      &bing,
      &mail_ru,
-@@ -614,7 +614,7 @@ const PrepopulatedEngine* const engines_MD[] = {
+@@ -615,7 +615,7 @@ const PrepopulatedEngine* const engines_MD[] = {
  
  // Montenegro
  const PrepopulatedEngine* const engines_ME[] = {
@@ -649,7 +649,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_ru,
-@@ -623,7 +623,7 @@ const PrepopulatedEngine* const engines_ME[] = {
+@@ -624,7 +624,7 @@ const PrepopulatedEngine* const engines_ME[] = {
  
  // Macedonia
  const PrepopulatedEngine* const engines_MK[] = {
@@ -658,7 +658,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -632,7 +632,7 @@ const PrepopulatedEngine* const engines_MK[] = {
+@@ -633,7 +633,7 @@ const PrepopulatedEngine* const engines_MK[] = {
  
  // Mexico
  const PrepopulatedEngine* const engines_MX[] = {
@@ -667,7 +667,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_mx,
      &duckduckgo,
-@@ -641,7 +641,7 @@ const PrepopulatedEngine* const engines_MX[] = {
+@@ -642,7 +642,7 @@ const PrepopulatedEngine* const engines_MX[] = {
  
  // Malaysia
  const PrepopulatedEngine* const engines_MY[] = {
@@ -676,7 +676,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_my,
      &duckduckgo,
-@@ -650,7 +650,7 @@ const PrepopulatedEngine* const engines_MY[] = {
+@@ -651,7 +651,7 @@ const PrepopulatedEngine* const engines_MY[] = {
  
  // Nicaragua
  const PrepopulatedEngine* const engines_NI[] = {
@@ -685,7 +685,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -659,7 +659,7 @@ const PrepopulatedEngine* const engines_NI[] = {
+@@ -660,7 +660,7 @@ const PrepopulatedEngine* const engines_NI[] = {
  
  // Netherlands
  const PrepopulatedEngine* const engines_NL[] = {
@@ -694,7 +694,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_nl,
      &duckduckgo,
-@@ -668,7 +668,7 @@ const PrepopulatedEngine* const engines_NL[] = {
+@@ -669,7 +669,7 @@ const PrepopulatedEngine* const engines_NL[] = {
  
  // Norway
  const PrepopulatedEngine* const engines_NO[] = {
@@ -703,7 +703,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -677,7 +677,7 @@ const PrepopulatedEngine* const engines_NO[] = {
+@@ -678,7 +678,7 @@ const PrepopulatedEngine* const engines_NO[] = {
  
  // New Zealand
  const PrepopulatedEngine* const engines_NZ[] = {
@@ -712,7 +712,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_nz,
      &duckduckgo,
-@@ -686,7 +686,7 @@ const PrepopulatedEngine* const engines_NZ[] = {
+@@ -687,7 +687,7 @@ const PrepopulatedEngine* const engines_NZ[] = {
  
  // Oman
  const PrepopulatedEngine* const engines_OM[] = {
@@ -721,7 +721,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -695,7 +695,7 @@ const PrepopulatedEngine* const engines_OM[] = {
+@@ -696,7 +696,7 @@ const PrepopulatedEngine* const engines_OM[] = {
  
  // Panama
  const PrepopulatedEngine* const engines_PA[] = {
@@ -730,7 +730,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -704,7 +704,7 @@ const PrepopulatedEngine* const engines_PA[] = {
+@@ -705,7 +705,7 @@ const PrepopulatedEngine* const engines_PA[] = {
  
  // Peru
  const PrepopulatedEngine* const engines_PE[] = {
@@ -739,7 +739,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_pe,
      &ecosia,
-@@ -713,7 +713,7 @@ const PrepopulatedEngine* const engines_PE[] = {
+@@ -714,7 +714,7 @@ const PrepopulatedEngine* const engines_PE[] = {
  
  // Philippines
  const PrepopulatedEngine* const engines_PH[] = {
@@ -748,7 +748,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &ecosia,
-@@ -722,7 +722,7 @@ const PrepopulatedEngine* const engines_PH[] = {
+@@ -723,7 +723,7 @@ const PrepopulatedEngine* const engines_PH[] = {
  
  // Pakistan
  const PrepopulatedEngine* const engines_PK[] = {
@@ -757,7 +757,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -731,7 +731,7 @@ const PrepopulatedEngine* const engines_PK[] = {
+@@ -732,7 +732,7 @@ const PrepopulatedEngine* const engines_PK[] = {
  
  // Poland
  const PrepopulatedEngine* const engines_PL[] = {
@@ -766,7 +766,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -740,7 +740,7 @@ const PrepopulatedEngine* const engines_PL[] = {
+@@ -741,7 +741,7 @@ const PrepopulatedEngine* const engines_PL[] = {
  
  // Puerto Rico
  const PrepopulatedEngine* const engines_PR[] = {
@@ -775,7 +775,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -749,7 +749,7 @@ const PrepopulatedEngine* const engines_PR[] = {
+@@ -750,7 +750,7 @@ const PrepopulatedEngine* const engines_PR[] = {
  
  // Portugal
  const PrepopulatedEngine* const engines_PT[] = {
@@ -784,7 +784,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -758,7 +758,7 @@ const PrepopulatedEngine* const engines_PT[] = {
+@@ -759,7 +759,7 @@ const PrepopulatedEngine* const engines_PT[] = {
  
  // Paraguay
  const PrepopulatedEngine* const engines_PY[] = {
@@ -793,7 +793,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -767,7 +767,7 @@ const PrepopulatedEngine* const engines_PY[] = {
+@@ -768,7 +768,7 @@ const PrepopulatedEngine* const engines_PY[] = {
  
  // Qatar
  const PrepopulatedEngine* const engines_QA[] = {
@@ -802,7 +802,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -776,7 +776,7 @@ const PrepopulatedEngine* const engines_QA[] = {
+@@ -777,7 +777,7 @@ const PrepopulatedEngine* const engines_QA[] = {
  
  // Romania
  const PrepopulatedEngine* const engines_RO[] = {
@@ -811,7 +811,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -785,7 +785,7 @@ const PrepopulatedEngine* const engines_RO[] = {
+@@ -786,7 +786,7 @@ const PrepopulatedEngine* const engines_RO[] = {
  
  // Serbia
  const PrepopulatedEngine* const engines_RS[] = {
@@ -820,7 +820,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -794,7 +794,7 @@ const PrepopulatedEngine* const engines_RS[] = {
+@@ -795,7 +795,7 @@ const PrepopulatedEngine* const engines_RS[] = {
  
  // Russia
  const PrepopulatedEngine* const engines_RU[] = {
@@ -829,7 +829,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ru,
      &mail_ru,
      &bing,
-@@ -803,7 +803,7 @@ const PrepopulatedEngine* const engines_RU[] = {
+@@ -804,7 +804,7 @@ const PrepopulatedEngine* const engines_RU[] = {
  
  // Rwanda
  const PrepopulatedEngine* const engines_RW[] = {
@@ -838,7 +838,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -812,7 +812,7 @@ const PrepopulatedEngine* const engines_RW[] = {
+@@ -813,7 +813,7 @@ const PrepopulatedEngine* const engines_RW[] = {
  
  // Saudi Arabia
  const PrepopulatedEngine* const engines_SA[] = {
@@ -847,7 +847,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_com,
-@@ -821,7 +821,7 @@ const PrepopulatedEngine* const engines_SA[] = {
+@@ -822,7 +822,7 @@ const PrepopulatedEngine* const engines_SA[] = {
  
  // Sweden
  const PrepopulatedEngine* const engines_SE[] = {
@@ -856,7 +856,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_se,
      &duckduckgo,
-@@ -830,7 +830,7 @@ const PrepopulatedEngine* const engines_SE[] = {
+@@ -831,7 +831,7 @@ const PrepopulatedEngine* const engines_SE[] = {
  
  // Singapore
  const PrepopulatedEngine* const engines_SG[] = {
@@ -865,7 +865,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_sg,
      &duckduckgo,
-@@ -839,7 +839,7 @@ const PrepopulatedEngine* const engines_SG[] = {
+@@ -840,7 +840,7 @@ const PrepopulatedEngine* const engines_SG[] = {
  
  // Slovenia
  const PrepopulatedEngine* const engines_SI[] = {
@@ -874,7 +874,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo,
-@@ -848,7 +848,7 @@ const PrepopulatedEngine* const engines_SI[] = {
+@@ -849,7 +849,7 @@ const PrepopulatedEngine* const engines_SI[] = {
  
  // Slovakia
  const PrepopulatedEngine* const engines_SK[] = {
@@ -883,7 +883,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &duckduckgo,
      &yahoo,
-@@ -857,7 +857,7 @@ const PrepopulatedEngine* const engines_SK[] = {
+@@ -858,7 +858,7 @@ const PrepopulatedEngine* const engines_SK[] = {
  
  // El Salvador
  const PrepopulatedEngine* const engines_SV[] = {
@@ -892,7 +892,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -866,7 +866,7 @@ const PrepopulatedEngine* const engines_SV[] = {
+@@ -867,7 +867,7 @@ const PrepopulatedEngine* const engines_SV[] = {
  
  // Syria
  const PrepopulatedEngine* const engines_SY[] = {
@@ -901,7 +901,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_com,
-@@ -875,7 +875,7 @@ const PrepopulatedEngine* const engines_SY[] = {
+@@ -876,7 +876,7 @@ const PrepopulatedEngine* const engines_SY[] = {
  
  // Thailand
  const PrepopulatedEngine* const engines_TH[] = {
@@ -910,7 +910,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_th,
      &yandex_ru,
-@@ -884,7 +884,7 @@ const PrepopulatedEngine* const engines_TH[] = {
+@@ -885,7 +885,7 @@ const PrepopulatedEngine* const engines_TH[] = {
  
  // Tunisia
  const PrepopulatedEngine* const engines_TN[] = {
@@ -919,7 +919,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_fr,
      &duckduckgo,
-@@ -893,7 +893,7 @@ const PrepopulatedEngine* const engines_TN[] = {
+@@ -894,7 +894,7 @@ const PrepopulatedEngine* const engines_TN[] = {
  
  // Turkey
  const PrepopulatedEngine* const engines_TR[] = {
@@ -928,7 +928,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_tr,
      &yahoo_tr,
      &bing,
-@@ -902,7 +902,7 @@ const PrepopulatedEngine* const engines_TR[] = {
+@@ -903,7 +903,7 @@ const PrepopulatedEngine* const engines_TR[] = {
  
  // Trinidad and Tobago
  const PrepopulatedEngine* const engines_TT[] = {
@@ -937,7 +937,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -911,7 +911,7 @@ const PrepopulatedEngine* const engines_TT[] = {
+@@ -912,7 +912,7 @@ const PrepopulatedEngine* const engines_TT[] = {
  
  // Taiwan
  const PrepopulatedEngine* const engines_TW[] = {
@@ -946,7 +946,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yahoo_tw,
      &bing,
      &baidu,
-@@ -920,7 +920,7 @@ const PrepopulatedEngine* const engines_TW[] = {
+@@ -921,7 +921,7 @@ const PrepopulatedEngine* const engines_TW[] = {
  
  // Tanzania
  const PrepopulatedEngine* const engines_TZ[] = {
@@ -955,7 +955,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -929,7 +929,7 @@ const PrepopulatedEngine* const engines_TZ[] = {
+@@ -930,7 +930,7 @@ const PrepopulatedEngine* const engines_TZ[] = {
  
  // Ukraine
  const PrepopulatedEngine* const engines_UA[] = {
@@ -964,7 +964,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &yandex_ua,
      &bing,
      &duckduckgo,
-@@ -938,7 +938,7 @@ const PrepopulatedEngine* const engines_UA[] = {
+@@ -939,7 +939,7 @@ const PrepopulatedEngine* const engines_UA[] = {
  
  // United States
  const PrepopulatedEngine* const engines_US[] = {
@@ -973,7 +973,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -947,7 +947,7 @@ const PrepopulatedEngine* const engines_US[] = {
+@@ -948,7 +948,7 @@ const PrepopulatedEngine* const engines_US[] = {
  
  // Uruguay
  const PrepopulatedEngine* const engines_UY[] = {
@@ -982,7 +982,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -956,7 +956,7 @@ const PrepopulatedEngine* const engines_UY[] = {
+@@ -957,7 +957,7 @@ const PrepopulatedEngine* const engines_UY[] = {
  
  // Venezuela
  const PrepopulatedEngine* const engines_VE[] = {
@@ -991,7 +991,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo_es,
      &duckduckgo,
-@@ -965,7 +965,7 @@ const PrepopulatedEngine* const engines_VE[] = {
+@@ -966,7 +966,7 @@ const PrepopulatedEngine* const engines_VE[] = {
  
  // Vietnam
  const PrepopulatedEngine* const engines_VN[] = {
@@ -1000,7 +1000,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &coccoc,
      &yahoo,
      &bing,
-@@ -974,7 +974,7 @@ const PrepopulatedEngine* const engines_VN[] = {
+@@ -975,7 +975,7 @@ const PrepopulatedEngine* const engines_VN[] = {
  
  // Yemen
  const PrepopulatedEngine* const engines_YE[] = {
@@ -1009,7 +1009,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &yandex_com,
-@@ -983,7 +983,7 @@ const PrepopulatedEngine* const engines_YE[] = {
+@@ -984,7 +984,7 @@ const PrepopulatedEngine* const engines_YE[] = {
  
  // South Africa
  const PrepopulatedEngine* const engines_ZA[] = {
@@ -1018,7 +1018,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
      &bing,
      &yahoo,
      &duckduckgo,
-@@ -992,7 +992,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
+@@ -993,7 +993,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
  
  // Zimbabwe
  const PrepopulatedEngine* const engines_ZW[] = {

+ 5 - 5
build/patches/Add-IsCleartextPermitted-flag.patch

@@ -16,7 +16,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
-@@ -8660,6 +8660,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8862,6 +8862,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kRequestDesktopSiteExceptionsName,
       flag_descriptions::kRequestDesktopSiteExceptionsDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)},
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1647,6 +1647,10 @@ const char kHttpsOnlyModeDescription[] =
+@@ -1661,6 +1661,10 @@ const char kHttpsOnlyModeDescription[] =
      "Adds a setting under chrome://settings/security to opt-in to HTTPS-First "
      "Mode.";
  
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -925,6 +925,9 @@ extern const char kHideShelfControlsInTabletModeDescription[];
+@@ -927,6 +927,9 @@ extern const char kHideShelfControlsInTabletModeDescription[];
  extern const char kHttpsOnlyModeName[];
  extern const char kHttpsOnlyModeDescription[];
  
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -111,6 +111,9 @@ const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
+@@ -113,6 +113,9 @@ const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
  const base::Feature kEncryptedClientHello{"EncryptedClientHello",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -82,7 +82,7 @@ diff --git a/net/base/features.h b/net/base/features.h
 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
-@@ -211,6 +211,10 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
+@@ -212,6 +212,10 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
      }
  
  #if BUILDFLAG(IS_ANDROID)

+ 20 - 20
build/patches/Add-a-proxy-configuration-page.patch

@@ -45,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -25,6 +25,9 @@
+@@ -27,6 +27,9 @@ found in the LICENSE file.
      <!-- Compositor Tab Title Text -->
      <bool name="compositor_tab_title_fake_bold_text">true</bool>
  
@@ -58,7 +58,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -6,6 +6,10 @@
+@@ -8,6 +8,10 @@ found in the LICENSE file.
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
  
@@ -72,9 +72,9 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -57,6 +57,7 @@ public class PrivacySettings
-     private static final String PREF_PRIVACY_GUIDE = "privacy_guide";
-     private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
+@@ -70,6 +70,7 @@ public class PrivacySettings
+             SharedPreferencesManager.getInstance();
+     private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
  
 +    private static final String PREF_PROXY_OPTIONS = "proxy";
      private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
@@ -83,7 +83,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
-@@ -275,6 +275,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -273,6 +273,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUISettingsURL));
  #endif
@@ -136,12 +136,12 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
 -  return std::make_unique<PrefProxyConfigTrackerImpl>(profile_prefs, nullptr);
 +  // Migrate from profile_prefs to local_state_prefs
 +  if (local_state_prefs->GetBoolean("proxy_migrated") == false) {
-+    const base::Value* dict =
-+        profile_prefs->GetDictionary(proxy_config::prefs::kProxy);
++    const base::Value::Dict& dict =
++        profile_prefs->GetDict(proxy_config::prefs::kProxy);
 +
 +    LOG(INFO) << "CreatePrefProxyConfigTrackerOfProfile: Migration from profile to local state";
 +
-+    const base::Value /*ProxyConfigDictionary*/ proxy_dict(dict->Clone());
++    const base::Value /*ProxyConfigDictionary*/ proxy_dict(dict.Clone());
 +    local_state_prefs->Set(proxy_config::prefs::kProxy, proxy_dict);
 +
 +    local_state_prefs->SetBoolean("proxy_migrated", true);
@@ -192,7 +192,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #if BUILDFLAG(ENABLE_BACKGROUND_MODE)
  #include "chrome/browser/background/background_mode_manager.h"
  #endif
-@@ -1014,6 +1016,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
+@@ -1042,6 +1044,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
    chrome::enterprise_util::RegisterLocalStatePrefs(registry);
    component_updater::RegisterPrefs(registry);
    embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
@@ -637,7 +637,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
-@@ -282,6 +282,8 @@ static_library("ui") {
+@@ -280,6 +280,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -657,7 +657,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
  #include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h"
  #include "chrome/browser/ui/webui/signin_internals_ui.h"
-@@ -781,6 +782,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -782,6 +783,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -930,9 +930,9 @@ new file mode 100644
 +  net::ProxyConfigWithAnnotation config;
 +  auto availability = proxy_config_service_->GetLatestProxyConfig(&config);
 +
-+  const base::Value* dict =
-+      pref_service_->GetDictionary(proxy_config::prefs::kProxy);
-+  ProxyConfigDictionary proxy_dict(dict->Clone());
++  const PrefService::Preference* const pref =
++      pref_service_->FindPreference(proxy_config::prefs::kProxy);
++  ProxyConfigDictionary proxy_dict(pref->GetValue()->Clone());
 +  ProxyPrefs::ProxyMode mode;
 +  if (!proxy_dict.GetMode(&mode) || mode == ProxyPrefs::MODE_SYSTEM) {
 +    availability = net::ProxyConfigService::CONFIG_UNSET;
@@ -1128,7 +1128,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
-@@ -46,6 +46,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
+@@ -47,6 +47,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
  const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
  const char kChromeUIChromeSigninHost[] = "chrome-signin";
  const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
@@ -1137,7 +1137,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUIChromeURLsHost[] = "chrome-urls";
  const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
  const char kChromeUIComponentsHost[] = "components";
-@@ -437,6 +439,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -439,6 +441,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
      kChromeUILockScreenNetworkHost,
      kChromeUILockScreenStartReauthHost,
      kChromeUIMobileSetupHost,
@@ -1145,7 +1145,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIMultiDeviceSetupHost,
      kChromeUINetworkHost,
      kChromeUINotificationTesterHost,
-@@ -701,6 +704,7 @@ const char* const kChromeHostURLs[] = {
+@@ -704,6 +707,7 @@ const char* const kChromeHostURLs[] = {
  #if !BUILDFLAG(IS_ANDROID)
  #if !BUILDFLAG(IS_CHROMEOS_ASH)
      kChromeUIAppLauncherPageHost,
@@ -1156,7 +1156,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
-@@ -133,6 +133,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -134,6 +134,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];
@@ -1304,7 +1304,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox
 diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc
 --- a/components/proxy_config/proxy_policy_handler.cc
 +++ b/components/proxy_config/proxy_policy_handler.cc
-@@ -260,7 +260,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
+@@ -264,7 +264,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
              ProxyConfigDictionary::CreateFixedServers(
                  server->GetString(), bypass_list && bypass_list->is_string()
                                           ? bypass_list->GetString()

+ 56 - 56
build/patches/Add-an-always-incognito-mode.patch

@@ -91,7 +91,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
-@@ -667,6 +667,7 @@ chrome_java_resources = [
+@@ -654,6 +654,7 @@ chrome_java_resources = [
    "java/res/xml/main_preferences.xml",
    "java/res/xml/manage_sync_preferences.xml",
    "java/res/xml/phone_as_a_security_key_accessory_filter.xml",
@@ -110,7 +110,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",
-@@ -958,6 +959,7 @@ chrome_java_sources = [
+@@ -912,6 +913,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",
@@ -163,7 +163,7 @@ new file mode 100644
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -38,6 +38,11 @@
+@@ -40,6 +40,11 @@ found in the LICENSE file.
          android:key="secure_dns"
          android:title="@string/settings_secure_dns_title"
          android:fragment="org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings"/>
@@ -236,15 +236,15 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -56,6 +56,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier;
- import org.chromium.base.task.PostTask;
+@@ -57,6 +57,7 @@ import org.chromium.base.task.PostTask;
+ import org.chromium.build.annotations.UsedByReflection;
  import org.chromium.cc.input.BrowserControlsState;
  import org.chromium.chrome.R;
 +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
-@@ -1895,8 +1896,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1899,8 +1900,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -259,15 +259,15 @@ 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
-@@ -97,6 +97,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
- import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
- import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate;
+@@ -93,6 +93,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.ContentOffsetProvi
+ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
+ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerHandler;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
 +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
  import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides;
  import org.chromium.chrome.browser.device.DeviceClassManager;
-@@ -1817,6 +1818,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1812,6 +1813,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -288,7 +288,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  import org.chromium.chrome.browser.banners.AppMenuVerbiage;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
  import org.chromium.chrome.browser.bookmarks.BookmarkFeatures;
-@@ -101,6 +102,10 @@ import java.util.ArrayList;
+@@ -98,6 +99,10 @@ import java.util.ArrayList;
  import java.util.List;
  import java.util.Map;
  
@@ -299,7 +299,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  /**
   * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu
   * items based on activity state.
-@@ -561,6 +566,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -558,6 +563,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -313,7 +313,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
          // We have to iterate all menu items since same menu item ID may be associated with more
          // than one menu items.
          boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU;
-@@ -621,7 +633,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -616,7 +628,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
              }
  
              if (item.getItemId() == R.id.recent_tabs_menu_id) {
@@ -330,7 +330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
              }
              if (item.getItemId() == R.id.menu_group_tabs) {
                  // Disable incognito group tabs when a re-authentication screen is shown.
-@@ -863,7 +883,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -858,7 +878,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          //                is not persisted when adding to the homescreen.
          // * If creating shortcuts it not supported by the current home screen.
          return WebappsUtils.isAddToHomeIntentSupported() && !isChromeScheme && !isFileScheme
@@ -448,7 +448,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.ArrayList;
-@@ -793,7 +796,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
+@@ -847,7 +850,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
  
      @Override
      public boolean isIncognito() {
@@ -468,7 +468,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
  import org.chromium.chrome.browser.ChromeTabbedActivity;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.app.download.home.DownloadActivity;
-@@ -73,6 +74,10 @@ import org.chromium.ui.widget.Toast;
+@@ -74,6 +75,10 @@ import org.chromium.url.GURL;
  
  import java.io.File;
  
@@ -479,7 +479,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
  /**
   * A class containing some utility static methods.
   */
-@@ -317,7 +322,16 @@ public class DownloadUtils {
+@@ -318,7 +323,16 @@ public class DownloadUtils {
          // Offline pages isn't supported in Incognito. This should be checked before calling
          // OfflinePageBridge.getForProfile because OfflinePageBridge instance will not be found
          // for incognito profile.
@@ -521,7 +521,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
  /**
   * Combines and manages the different UI components of browsing history.
   */
-@@ -493,7 +500,16 @@ public class HistoryManager implements OnMenuItemClickListener, SelectionObserve
+@@ -504,7 +511,16 @@ public class HistoryManager implements OnMenuItemClickListener, SelectionObserve
          return mRootView;
      }
  
@@ -789,7 +789,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
  import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable;
  import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
-@@ -253,6 +254,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -254,6 +255,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
          if (fragment instanceof AdPersonalizationRemovedFragment) {
              ((AdPersonalizationRemovedFragment) fragment).setSnackbarManager(getSnackbarManager());
          }
@@ -912,7 +912,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/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
-@@ -126,6 +126,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto
+@@ -122,6 +122,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto
  import org.chromium.content_public.browser.WebContents;
  import org.chromium.ui.base.ActivityWindowAndroid;
  import org.chromium.ui.base.DeviceFormFactor;
@@ -921,7 +921,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.modaldialog.ModalDialogManager;
  
-@@ -492,7 +494,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -482,7 +484,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                      mAppMenuCoordinator == null ? null : mAppMenuCoordinator.getAppMenuHandler();
              mEmptyBackgroundViewWrapper =
                      new EmptyBackgroundViewWrapper(mTabModelSelectorSupplier.get(),
@@ -1046,7 +1046,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI
 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
-@@ -4651,6 +4651,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4713,6 +4713,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kOfflinePagesLivePageSharingName,
       flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)},
@@ -1113,7 +1113,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -301,6 +301,13 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager()
+@@ -299,6 +299,13 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager()
    return IdentityManagerFactory::GetForProfile(profile_);
  }
  
@@ -1148,8 +1148,8 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
 +#include "chrome/common/pref_names.h"
  #include "components/content_settings/core/browser/content_settings_pref_provider.h"
  #include "components/content_settings/core/browser/host_content_settings_map.h"
- #include "components/keyed_service/content/browser_context_dependency_manager.h"
-@@ -96,9 +97,23 @@ scoped_refptr<RefcountedKeyedService>
+ #include "components/permissions/features.h"
+@@ -95,9 +96,23 @@ scoped_refptr<RefcountedKeyedService>
    if (profile->IsOffTheRecord() && !profile->IsGuestSession())
      GetForProfile(original_profile);
  
@@ -1174,7 +1174,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
        /*store_last_modified=*/true,
        profile->ShouldRestoreOldSessionCookies()));
  
-@@ -108,6 +123,9 @@ scoped_refptr<RefcountedKeyedService>
+@@ -107,6 +122,9 @@ scoped_refptr<RefcountedKeyedService>
        HostContentSettingsMap::WEBUI_ALLOWLIST_PROVIDER,
        std::move(allowlist_provider));
  
@@ -1187,7 +1187,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3676,6 +3676,12 @@ const char kOfflinePagesLivePageSharingDescription[] =
+@@ -3758,6 +3758,12 @@ const char kOfflinePagesLivePageSharingDescription[] =
      "Enables to share current loaded page as offline page by saving as MHTML "
      "first.";
  
@@ -1203,7 +1203,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -2092,6 +2092,9 @@ extern const char kNotificationPermissionRationaleDescription[];
+@@ -2141,6 +2141,9 @@ extern const char kNotificationPermissionRationaleDescription[];
  extern const char kOfflinePagesLivePageSharingName[];
  extern const char kOfflinePagesLivePageSharingDescription[];
  
@@ -1216,7 +1216,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -533,8 +533,8 @@ const base::Feature kCCTNewDownloadTab{"CCTNewDownloadTab",
+@@ -535,8 +535,8 @@ const base::Feature kCCTNewDownloadTab{"CCTNewDownloadTab",
  const base::Feature kCCTIncognito{"CCTIncognito",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -1226,11 +1226,11 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 +    "CCTIncognitoAvailableToThirdParty", base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTPackageNameRecording{"CCTPackageNameRecording",
-                                              base::FEATURE_DISABLED_BY_DEFAULT};
+                                              base::FEATURE_ENABLED_BY_DEFAULT};
 diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc
 --- a/chrome/browser/history/history_tab_helper.cc
 +++ b/chrome/browser/history/history_tab_helper.cc
-@@ -36,6 +36,9 @@
+@@ -38,6 +38,9 @@
  #include "chrome/browser/ui/android/tab_model/tab_model_list.h"
  #include "components/feed/core/v2/public/feed_api.h"
  #include "components/feed/core/v2/public/feed_service.h"
@@ -1240,7 +1240,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"
-@@ -410,6 +413,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
+@@ -459,6 +462,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
  history::HistoryService* HistoryTabHelper::GetHistoryService() {
    Profile* profile =
        Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -1252,9 +1252,9 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
 +#endif
 +
    if (profile->IsOffTheRecord())
-     return NULL;
+     return nullptr;
  
-@@ -417,6 +427,14 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
+@@ -466,6 +476,14 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
        profile, ServiceAccessType::IMPLICIT_ACCESS);
  }
  
@@ -1267,13 +1267,13 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
 +}
 +
  void HistoryTabHelper::WebContentsDestroyed() {
-   // We update the history for this URL.
-   WebContents* tab = web_contents();
+   translate_observation_.Reset();
+ 
 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
-@@ -9,6 +9,8 @@
- #include "build/build_config.h"
+@@ -12,6 +12,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"
 +#include "components/prefs/pref_registry_simple.h"
@@ -1281,7 +1281,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
  
  namespace history {
  struct HistoryAddPageArgs;
-@@ -41,6 +43,11 @@ class HistoryTabHelper : public content::WebContentsObserver,
+@@ -51,6 +53,11 @@ class HistoryTabHelper
      force_eligible_tab_for_testing_ = force;
    }
  
@@ -1293,9 +1293,9 @@ 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<HistoryTabHelper>;
-@@ -69,9 +76,6 @@ class HistoryTabHelper : public content::WebContentsObserver,
-                            bool started_from_context_menu,
-                            bool renderer_initiated) override;
+@@ -83,9 +90,6 @@ class HistoryTabHelper
+   void OnLanguageDetermined(
+       const translate::LanguageDetectionDetails& details) override;
  
 -  // Helper function to return the history service.  May return null.
 -  history::HistoryService* GetHistoryService();
@@ -1559,7 +1559,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
  #include "chrome/browser/android/explore_sites/history_statistics_reporter.h"
  #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h"
-@@ -1389,6 +1390,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1416,6 +1417,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
    variations::VariationsService::RegisterProfilePrefs(registry);
    video_tutorials::RegisterPrefs(registry);
@@ -1568,7 +1568,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
 +                              /*default_value=*/false);
 +  HistoryTabHelper::RegisterProfilePrefs(registry);
  #else   // BUILDFLAG(IS_ANDROID)
-   ApcClient::RegisterPrefs(registry);
+   autofill_assistant::AutofillAssistant::RegisterProfilePrefs(registry);
    AppShortcutManager::RegisterProfilePrefs(registry);
 diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn
 --- a/chrome/browser/ui/android/native_page/BUILD.gn
@@ -1633,7 +1633,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -1168,6 +1168,37 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1151,6 +1151,37 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY_SYNCED_NO_LINK" desc="A text for the basic tab explaining browsing history for users with history sync. This version is shown when the link to MyActivity is displayed separately.">
          Clears history from all synced devices.
        </message>
@@ -1717,7 +1717,7 @@ new file mode 100644
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -3435,6 +3435,12 @@ const char kShowCaretBrowsingDialog[] =
+@@ -3437,6 +3437,12 @@ const char kShowCaretBrowsingDialog[] =
  const char kLacrosLaunchSwitch[] = "lacros_launch_switch";
  #endif
  
@@ -1733,7 +1733,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 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
-@@ -1215,6 +1215,8 @@ extern const char kDiscountConsentShowInterestIn[];
+@@ -1214,6 +1214,8 @@ extern const char kDiscountConsentShowInterestIn[];
  
  #if BUILDFLAG(IS_ANDROID)
  extern const char kWebXRImmersiveArEnabled[];
@@ -1742,7 +1742,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
  #endif
  
  #if !BUILDFLAG(IS_ANDROID)
-@@ -1252,6 +1254,10 @@ extern const char kPrivacyGuideViewed[];
+@@ -1251,6 +1253,10 @@ extern const char kPrivacyGuideViewed[];
  
  extern const char kCorsNonWildcardRequestHeadersSupport[];
  
@@ -1791,7 +1791,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
                 bool store_last_modified,
                 bool restore_session);
  
-@@ -86,6 +87,7 @@ class PrefProvider : public UserModifiableProvider {
+@@ -88,6 +89,7 @@ class PrefProvider : public UserModifiableProvider {
    raw_ptr<PrefService> prefs_;
  
    const bool off_the_record_;
@@ -1802,7 +1802,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
-@@ -242,6 +242,7 @@ const char* ContentSettingToString(ContentSetting setting) {
+@@ -243,6 +243,7 @@ const char* ContentSettingToString(ContentSetting setting) {
  HostContentSettingsMap::HostContentSettingsMap(
      PrefService* prefs,
      bool is_off_the_record,
@@ -1810,7 +1810,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
      bool store_last_modified,
      bool restore_session)
      : RefcountedKeyedService(base::ThreadTaskRunnerHandle::Get()),
-@@ -250,6 +251,7 @@ HostContentSettingsMap::HostContentSettingsMap(
+@@ -251,6 +252,7 @@ HostContentSettingsMap::HostContentSettingsMap(
  #endif
        prefs_(prefs),
        is_off_the_record_(is_off_the_record),
@@ -1818,7 +1818,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) {
    TRACE_EVENT0("startup", "HostContentSettingsMap::HostContentSettingsMap");
-@@ -261,7 +263,7 @@ HostContentSettingsMap::HostContentSettingsMap(
+@@ -262,7 +264,7 @@ HostContentSettingsMap::HostContentSettingsMap(
    policy_provider->AddObserver(this);
  
    auto pref_provider_ptr = std::make_unique<content_settings::PrefProvider>(
@@ -1830,7 +1830,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
-@@ -80,6 +80,7 @@ class HostContentSettingsMap : public content_settings::Observer,
+@@ -81,6 +81,7 @@ class HostContentSettingsMap : public content_settings::Observer,
    // profile or a guest session.
    HostContentSettingsMap(PrefService* prefs,
                           bool is_off_the_record,
@@ -1838,7 +1838,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
                           bool store_last_modified,
                           bool restore_session);
  
-@@ -450,6 +451,8 @@ class HostContentSettingsMap : public content_settings::Observer,
+@@ -442,6 +443,8 @@ class HostContentSettingsMap : public content_settings::Observer,
    // Whether this settings map is for an incognito or guest session.
    bool is_off_the_record_;
  
@@ -1896,7 +1896,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
-@@ -271,7 +271,7 @@ bool BaseSearchProvider::CanSendRequest(
+@@ -272,7 +272,7 @@ bool BaseSearchProvider::CanSendRequest(
    }
  
    // Don't run if in incognito mode.
@@ -1908,7 +1908,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
-@@ -835,7 +835,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const {
+@@ -836,7 +836,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const {
    // keyword input to a keyword suggest server, if any.)
    const TemplateURL* default_url = providers_.GetDefaultProviderURL();
    const TemplateURL* keyword_url = providers_.GetKeywordProviderURL();

+ 29 - 29
build/patches/Add-bookmark-import-export-actions.patch

@@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -59,7 +59,6 @@ by a child template that "extends" this file.
+@@ -61,7 +61,6 @@ by a child template that "extends" this file.
      <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_SCAN"
                              android:usesPermissionFlags="neverForLocation"/>
  
@@ -61,7 +61,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
 --- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
 +++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
-@@ -21,6 +21,20 @@
+@@ -23,6 +23,20 @@ found in the LICENSE file.
              android:visible="false"
              app:showAsAction="ifRoom"
              app:iconTint="@color/default_icon_color_secondary_tint_list" />
@@ -249,7 +249,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import android.text.TextUtils;
  import android.util.Pair;
  
-@@ -46,6 +59,32 @@ import java.util.HashMap;
+@@ -43,6 +56,32 @@ import java.util.HashMap;
  import java.util.HashSet;
  import java.util.List;
  
@@ -282,7 +282,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  /**
   * Provides the communication channel for Android to fetch and manipulate the
   * bookmark model stored in native.
-@@ -737,6 +776,209 @@ public class BookmarkBridge {
+@@ -653,6 +692,209 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
      }
  
@@ -492,7 +492,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
-@@ -1285,6 +1527,39 @@ public class BookmarkBridge {
+@@ -1201,6 +1443,39 @@ public class BookmarkBridge {
          depthList.add(depth);
      }
  
@@ -532,7 +532,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          for (int i = 0; i < left.length; i++) {
-@@ -1356,6 +1631,9 @@ public class BookmarkBridge {
+@@ -1272,6 +1547,9 @@ public class BookmarkBridge {
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
                  List<BookmarkId> bookmarksList);
@@ -565,7 +565,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
-@@ -36,6 +36,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils;
+@@ -34,6 +34,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils;
  import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate;
  import org.chromium.components.browser_ui.widget.selectable_list.SelectableListLayout;
  import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar.SearchDelegate;
@@ -574,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelegate;
  import org.chromium.components.favicon.LargeIconBridge;
  import org.chromium.url.GURL;
-@@ -58,6 +60,8 @@ public class BookmarkManager
+@@ -56,6 +58,8 @@ public class BookmarkManager
      private ComponentName mOpenBookmarkComponentName;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
@@ -583,7 +583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private BookmarkUndoController mUndoController;
      private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
      private BasicNativePage mNativePage;
-@@ -352,6 +356,14 @@ public class BookmarkManager
+@@ -341,6 +345,14 @@ public class BookmarkManager
          mNativePage = nativePage;
      }
  
@@ -598,7 +598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @return Current URL representing the UI state of bookmark manager. If no state has been shown
       *         yet in this session, on phone return last used state stored in preference; on tablet
-@@ -532,6 +544,16 @@ public class BookmarkManager
+@@ -521,6 +533,16 @@ public class BookmarkManager
          }
      }
  
@@ -704,7 +704,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
-@@ -1863,6 +1863,13 @@ static_library("browser") {
+@@ -1875,6 +1875,13 @@ static_library("browser") {
      ]
    }
  
@@ -718,7 +718,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
    configs += [
      "//build/config/compiler:wexit_time_destructors",
      "//build/config:precompiled_headers",
-@@ -2885,6 +2892,8 @@ static_library("browser") {
+@@ -2891,6 +2898,8 @@ static_library("browser") {
        "autofill/manual_filling_controller.h",
        "autofill/manual_filling_controller_impl.cc",
        "autofill/manual_filling_controller_impl.h",
@@ -727,7 +727,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "autofill/manual_filling_utils.cc",
        "autofill/manual_filling_utils.h",
        "autofill/manual_filling_view_interface.h",
-@@ -3558,8 +3567,6 @@ static_library("browser") {
+@@ -3570,8 +3579,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -739,7 +739,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
-@@ -8654,6 +8654,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8831,6 +8831,12 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)},
  #endif
  
@@ -755,7 +755,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 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
-@@ -59,6 +59,25 @@
+@@ -60,6 +60,25 @@
  #include "content/public/browser/browser_thread.h"
  #include "content/public/browser/web_contents.h"
  
@@ -781,7 +781,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
  using base::android::AttachCurrentThread;
  using base::android::ConvertUTF16ToJavaString;
  using base::android::ConvertUTF8ToJavaString;
-@@ -76,8 +95,92 @@ using bookmarks::android::JavaBookmarkIdGetType;
+@@ -77,8 +96,92 @@ using bookmarks::android::JavaBookmarkIdGetType;
  using content::BrowserThread;
  using power_bookmarks::PowerBookmarkMeta;
  
@@ -874,7 +874,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
  class BookmarkTitleComparer {
   public:
    explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge,
-@@ -163,6 +266,10 @@ BookmarkBridge::~BookmarkBridge() {
+@@ -164,6 +267,10 @@ BookmarkBridge::~BookmarkBridge() {
    if (partner_bookmarks_shim_)
      partner_bookmarks_shim_->RemoveObserver(this);
    reading_list_manager_->RemoveObserver(this);
@@ -885,7 +885,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
  }
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -573,6 +680,182 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -574,6 +681,182 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
  }
  
@@ -1128,7 +1128,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
    void SetBookmarkTitle(JNIEnv* env,
                          const base::android::JavaParamRef<jobject>& obj,
                          jlong id,
-@@ -371,12 +391,16 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -372,12 +392,16 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
    void DestroyJavaObject();
  
    raw_ptr<Profile> profile_;
@@ -1145,7 +1145,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.
-@@ -388,6 +412,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -389,6 +413,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
    // Observes the profile destruction and creation.
    base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this};
  
@@ -1251,7 +1251,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -6458,6 +6458,11 @@ const char kDisableLacrosTtsSupportDescription[] =
+@@ -6615,6 +6615,11 @@ const char kDisableLacrosTtsSupportDescription[] =
  
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -1266,7 +1266,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -3734,6 +3734,9 @@ extern const char kDisableLacrosTtsSupportName[];
+@@ -3821,6 +3821,9 @@ extern const char kDisableLacrosTtsSupportName[];
  extern const char kDisableLacrosTtsSupportDescription[];
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -1287,7 +1287,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCriticalPersistedTabData,
      &kCommerceCoupons,
      &kCCTBackgroundTab,
-@@ -952,6 +953,10 @@ const base::Feature kWebApkInstallService{"WebApkInstallService",
+@@ -951,6 +952,10 @@ const base::Feature kWebApkInstallService{"WebApkInstallService",
  const base::Feature kWebApkTrampolineOnInitialIntent{
      "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -1301,9 +1301,9 @@ 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
-@@ -162,6 +162,7 @@ extern const base::Feature kTabReparenting;
- extern const base::Feature kTabSelectionEditorV2;
+@@ -161,6 +161,7 @@ extern const base::Feature kTabSelectionEditorV2;
  extern const base::Feature kTabStripImprovements;
+ extern const base::Feature kDiscoverFeedMultiColumn;
  extern const base::Feature kTabSwitcherOnReturn;
 +extern const base::Feature kBookmarksExportUseSaf;
  extern const base::Feature kTabToGTSAnimation;
@@ -1312,7 +1312,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -588,6 +588,7 @@ public abstract class ChromeFeatureList {
+@@ -612,6 +612,7 @@ public abstract class ChromeFeatureList {
      public static final String USE_CHIME_ANDROID_SDK = "UseChimeAndroidSdk";
      public static final String USE_CLIENT_CONFIG_IPH = "UseClientConfigIPH";
      public static final String VOICE_SEARCH_AUDIO_CAPTURE_POLICY = "VoiceSearchAudioCapturePolicy";
@@ -1381,7 +1381,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
 diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
 +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
-@@ -99,6 +99,8 @@ public final class ChromePreferenceKeys {
+@@ -100,6 +100,8 @@ public final class ChromePreferenceKeys {
      public static final String BOOKMARKS_LAST_USED_URL = "enhanced_bookmark_last_used_url";
      public static final String BOOKMARKS_LAST_USED_PARENT =
              "enhanced_bookmark_last_used_parent_folder";
@@ -1390,7 +1390,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
  
      /**
       * Whether Chrome is set as the default browser.
-@@ -1001,6 +1003,7 @@ public final class ChromePreferenceKeys {
+@@ -1027,6 +1029,7 @@ public final class ChromePreferenceKeys {
                  ASSISTANT_VOICE_SEARCH_ENABLED,
                  APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
                  APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@@ -1429,7 +1429,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -404,6 +404,9 @@ static_library("common_lib") {
+@@ -402,6 +402,9 @@ static_library("common_lib") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",

+ 7 - 7
build/patches/Add-custom-tab-intents-privacy-option.patch

@@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -56,6 +56,16 @@
+@@ -58,6 +58,16 @@ found in the LICENSE file.
          android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
          android:key="do_not_track"
          android:title="@string/do_not_track_title"/>
@@ -42,7 +42,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
-@@ -44,6 +44,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
+@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
  import org.chromium.chrome.browser.searchwidget.SearchActivity;
  import org.chromium.chrome.browser.tab.Tab;
@@ -50,7 +50,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
  import org.chromium.chrome.browser.translate.TranslateIntentHandler;
  import org.chromium.chrome.browser.util.AndroidTaskUtils;
  import org.chromium.chrome.browser.vr.VrModuleProvider;
-@@ -57,6 +58,8 @@ import java.lang.annotation.Retention;
+@@ -58,6 +59,8 @@ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.Set;
  
@@ -59,7 +59,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.
-@@ -267,6 +270,9 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -268,6 +271,9 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
          if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
                  || !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
              return false;
-@@ -286,6 +292,10 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -287,6 +293,10 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
          newIntent.setData(uri);
          newIntent.setClassName(context, CustomTabActivity.class.getName());
  
@@ -80,7 +80,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());
-@@ -421,6 +431,18 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -431,6 +441,18 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
  
          if (Intent.ACTION_VIEW.equals(newIntent.getAction())
                  && !IntentHandler.wasIntentSenderChrome(newIntent)) {
@@ -196,7 +196,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso
 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
-@@ -4800,6 +4800,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4818,6 +4818,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_NEAR_OOM_REDUCTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can be reloaded.">
           Show original
        </message>

+ 7 - 7
build/patches/Add-exit-menu-item.patch

@@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -159,6 +159,9 @@
+@@ -161,6 +161,9 @@ found in the LICENSE file.
          <item android:id="@+id/managed_by_menu_id"
              android:title="@string/managed_browser"
              android:icon="@drawable/ic_business" />
@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
      </group>
  
      <!-- Items shown only in the tab switcher -->
-@@ -185,6 +188,9 @@
+@@ -187,6 +190,9 @@ found in the LICENSE file.
          <item android:id="@id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
@@ -59,7 +59,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLife
 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
-@@ -222,6 +222,8 @@ import java.util.HashSet;
+@@ -223,6 +223,8 @@ import java.util.HashSet;
  import java.util.List;
  import java.util.Locale;
  
@@ -68,7 +68,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.
-@@ -2174,6 +2176,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2183,6 +2185,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          } else if (id == R.id.close_tab) {
              getCurrentTabModel().closeTab(currentTab, true, false, true);
              RecordUserAction.record("MobileTabClosed");
@@ -80,7 +80,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
-@@ -61,6 +61,7 @@ import org.chromium.chrome.R;
+@@ -62,6 +62,7 @@ import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ActivityTabProvider;
  import org.chromium.chrome.browser.ActivityUtils;
  import org.chromium.chrome.browser.AppHooks;
@@ -88,7 +88,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;
-@@ -2322,6 +2323,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2290,6 +2291,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -3511,6 +3511,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3497,6 +3497,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_AUTO_DARK_WEB_CONTENTS" desc="Menu item in Chrome's overflow/options menu. When Chrome's browser UI is set to dark theme and this option is checked, sites will have a dark theme automatically applied as well. [CHAR_LIMIT=24]">
          Dark theme
        </message>

+ 10 - 10
build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch

@@ -17,7 +17,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
-@@ -519,6 +519,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
+@@ -521,6 +521,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
  #endif  // BUILDFLAG(IS_ANDROID)
  
  #if BUILDFLAG(IS_ANDROID)
@@ -40,8 +40,8 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = {
      {"mode", "always-none"}};
  const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNewTab[] = {
-@@ -4174,7 +4190,11 @@ const FeatureEntry kFeatureEntries[] = {
-      kOsMac | kOsLinux | kOsLacros | kOsWin,
+@@ -4265,7 +4281,11 @@ const FeatureEntry kFeatureEntries[] = {
+      kOsMac | kOsLinux | kOsWin,
       FEATURE_VALUE_TYPE(features::kSystemNotifications)},
  #endif  // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH)
 -#if BUILDFLAG(IS_ANDROID)
@@ -65,7 +65,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/
  #include "base/feature_list.h"
  #include "base/format_macros.h"
  #include "base/metrics/histogram_functions.h"
-@@ -318,6 +320,15 @@ AutocompleteController::AutocompleteController(
+@@ -327,6 +329,15 @@ AutocompleteController::AutocompleteController(
        is_cros_launcher_(is_cros_launcher),
        search_service_worker_signal_sent_(false),
        template_url_service_(provider_client_->GetTemplateURLService()) {
@@ -84,7 +84,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/
 diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
 --- a/components/omnibox/browser/history_url_provider.cc
 +++ b/components/omnibox/browser/history_url_provider.cc
-@@ -474,6 +474,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
+@@ -475,6 +475,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
    if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
      matches_.push_back(what_you_typed_match);
  
@@ -105,7 +105,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
  #include "base/feature_list.h"
  #include "base/i18n/break_iterator.h"
  #include "base/i18n/case_conversion.h"
-@@ -680,6 +681,9 @@ void SearchProvider::Run(bool query_is_private) {
+@@ -681,6 +682,9 @@ void SearchProvider::Run(bool query_is_private) {
  }
  
  void SearchProvider::DoHistoryQuery(bool minimal_changes) {
@@ -118,16 +118,16 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
 diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
 --- a/components/url_formatter/url_fixer.cc
 +++ b/components/url_formatter/url_fixer.cc
-@@ -9,6 +9,8 @@
- #include <algorithm>
+@@ -7,6 +7,8 @@
+ #include <stddef.h>
  
  #include "base/check_op.h"
 +#include "base/containers/contains.h"
 +#include "base/command_line.h"
  #include "base/files/file_path.h"
  #include "base/files/file_util.h"
- #include "base/ranges/algorithm.h"
-@@ -607,6 +609,8 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
+ #include "base/i18n/char_iterator.h"
+@@ -608,6 +610,8 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
  
      FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url);
      if (chrome_url && !parts.host.is_valid())

+ 3 - 3
build/patches/Add-flag-for-save-data-header.patch

@@ -15,7 +15,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
-@@ -4771,7 +4771,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4861,7 +4861,10 @@ const FeatureEntry kFeatureEntries[] = {
      {"force-text-direction", flag_descriptions::kForceTextDirectionName,
       flag_descriptions::kForceTextDirectionDescription, kOsAll,
       MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1227,6 +1227,10 @@ const char kDeprecateAltBasedSixPackDescription[] =
+@@ -1230,6 +1230,10 @@ const char kDeprecateAltBasedSixPackDescription[] =
      "Show deprecation notifications and disable functionality for Alt based "
      "six pack deprecations. The Search based versions continue to work.";
  
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -647,6 +647,9 @@ extern const char kDeprecateAltClickDescription[];
+@@ -644,6 +644,9 @@ extern const char kDeprecateAltClickDescription[];
  extern const char kDeprecateAltBasedSixPackName[];
  extern const char kDeprecateAltBasedSixPackDescription[];
  

+ 4 - 4
build/patches/Add-flag-to-configure-maximum-connections-per-host.patch

@@ -21,7 +21,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
-@@ -1018,6 +1018,11 @@ const FeatureEntry::Choice kForceColorProfileChoices[] = {
+@@ -1010,6 +1010,11 @@ const FeatureEntry::Choice kForceColorProfileChoices[] = {
       switches::kForceDisplayColorProfile, "hdr10"},
  };
  
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  const FeatureEntry::Choice kMemlogModeChoices[] = {
      {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
      {flag_descriptions::kMemlogModeMinimal, heap_profiling::kMemlogMode,
-@@ -4695,6 +4700,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4760,6 +4765,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidPictureInPictureAPIName,
       flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
@@ -46,7 +46,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1794,6 +1794,10 @@ const char kUnthrottledNestedTimeoutDescription[] =
+@@ -1815,6 +1815,10 @@ const char kUnthrottledNestedTimeoutDescription[] =
      "websites abusing the API will still eventually have their setTimeouts "
      "clamped.";
  
@@ -60,7 +60,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1009,6 +1009,9 @@ extern const char kLogJsConsoleMessagesDescription[];
+@@ -1014,6 +1014,9 @@ extern const char kLogJsConsoleMessagesDescription[];
  extern const char kUnthrottledNestedTimeoutName[];
  extern const char kUnthrottledNestedTimeoutDescription[];
  

+ 4 - 4
build/patches/Add-flag-to-control-video-playback-resume-feature.patch

@@ -15,7 +15,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
-@@ -3396,6 +3396,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3527,6 +3527,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebRtcRemoteEventLogName,
       flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop,
       FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)},
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1318,6 +1318,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
+@@ -1332,6 +1332,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
      "Enables image options to be surfaced in the context menu for nodes "
      "covered by transparent overlays.";
  
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -726,6 +726,9 @@ extern const char kEnablePortalsDescription[];
+@@ -729,6 +729,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsCrossOriginName[];
  extern const char kEnablePortalsCrossOriginDescription[];
  
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -287,11 +287,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -283,11 +283,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

+ 4 - 4
build/patches/Add-flag-to-disable-IPv6-probes.patch

@@ -17,7 +17,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
-@@ -5729,6 +5729,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5850,6 +5850,10 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName,
       flag_descriptions::kReaderModeInCCTDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3373,6 +3373,10 @@ const char kCCTRealTimeEngagementSignalsDescription[] =
+@@ -3438,6 +3438,10 @@ const char kCCTRealTimeEngagementSignalsDescription[] =
      "Enables sending real-time engagement signals (e.g. scroll) through "
      "CustomTabsCallback.";
  
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -792,6 +792,9 @@ extern const char kEnableWasmLazyCompilationName[];
+@@ -795,6 +795,9 @@ extern const char kEnableWasmLazyCompilationName[];
  extern const char kEnableWasmLazyCompilationDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
-@@ -4074,8 +4075,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -4084,8 +4085,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {

+ 5 - 5
build/patches/Add-flag-to-disable-external-intent-requests.patch

@@ -15,7 +15,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
-@@ -3389,6 +3389,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3521,6 +3521,9 @@ const FeatureEntry kFeatureEntries[] = {
      {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName,
       flag_descriptions::kUiPartialSwapDescription, kOsAll,
       SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3735,6 +3735,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
+@@ -3817,6 +3817,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
  const char kPhotoPickerVideoSupportDescription[] =
      "Enables video files to be shown in the Photo Picker dialog";
  
@@ -44,9 +44,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -2137,6 +2137,9 @@ extern const char kQueryTilesDescription[];
- extern const char kQueryTilesNTPName[];
- extern const char kQueryTilesNTPDescription[];
+@@ -2188,6 +2188,9 @@ extern const char kQueryTilesNTPDescription[];
+ extern const char kQueryTilesOnStartName[];
+ extern const char kQueryTilesOnStartDescription[];
  extern const char kQueryTilesSingleTierName[];
 +extern const char kDisableExternalIntentRequestsName[];
 +extern const char kDisableExternalIntentRequestsDescription[];

+ 20 - 20
build/patches/Add-flag-to-disable-vibration.patch

@@ -19,7 +19,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
-@@ -7096,6 +7096,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7243,6 +7243,10 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
  #endif
  
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -6104,6 +6104,9 @@ extern const char kLacrosScreenCoordinatesDescription[];
+@@ -6242,6 +6242,9 @@ extern const char kLacrosScreenCoordinatesDescription[];
  
  #endif  // #if BUILDFLAG(IS_CHROMEOS_LACROS)
  
@@ -46,7 +46,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -3727,6 +3727,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
+@@ -3814,6 +3814,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
  extern const char kWebUITabStripTabDragIntegrationDescription[];
  #endif  // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -83,7 +83,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
-@@ -332,6 +332,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
+@@ -337,6 +337,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
      kCompositorLockTimeout;
  
  #endif  // BUILDFLAG(IS_ANDROID)
@@ -95,26 +95,26 @@ diff --git a/content/public/common/content_features.h b/content/public/common/co
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -88,6 +88,7 @@ class WebRuntimeFeatures {
-   BLINK_PLATFORM_EXPORT static void EnableBlockingFocusWithoutUserActivation(
-       bool);
-   BLINK_PLATFORM_EXPORT static void EnableClickPointerEvent(bool enable);
-+  BLINK_PLATFORM_EXPORT static void EnableVibration(bool);
-   BLINK_PLATFORM_EXPORT static void EnableCompositeBGColorAnimation(
-       bool enable);
-   BLINK_PLATFORM_EXPORT static void EnableCanvas2dImageChromium(bool);
+@@ -70,6 +70,7 @@ class BLINK_PLATFORM_EXPORT WebRuntimeFeatures : public WebRuntimeFeaturesBase {
+   static void EnableFingerprintingCanvasMeasureTextNoise(bool);
+   static void EnableFingerprintingCanvasImageDataNoise(bool);
+   static void EnableFluentScrollbars(bool);
++  static void EnableVibration(bool);
+ 
+   WebRuntimeFeatures() = delete;
+ };
 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
-@@ -30,6 +30,7 @@
+@@ -29,6 +29,7 @@
+ #include "third_party/blink/renderer/core/frame/local_frame.h"
  #include "third_party/blink/renderer/core/frame/navigator.h"
  #include "third_party/blink/renderer/core/page/page.h"
- #include "third_party/blink/renderer/platform/mojo/mojo_helper.h"
 +#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  
  // Maximum number of entries in a vibration pattern.
  const unsigned kVibrationPatternLengthMax = 99;
-@@ -153,6 +154,8 @@ bool VibrationController::vibrate(Navigator& navigator,
+@@ -152,6 +153,8 @@ bool VibrationController::vibrate(Navigator& navigator,
    // reference to |window| or |navigator| was retained in another window.
    if (!navigator.DomWindow())
      return false;
@@ -126,21 +126,21 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c
 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
-@@ -160,6 +160,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
-   RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
+@@ -52,6 +52,10 @@ void WebRuntimeFeatures::EnableTestOnlyFeatures(bool enable) {
+   RuntimeEnabledFeatures::SetTestFeaturesEnabled(enable);
  }
  
 +void WebRuntimeFeatures::EnableVibration(bool enable) {
 +  RuntimeEnabledFeatures::SetVibrationEnabled(enable);
 +}
 +
- void WebRuntimeFeatures::EnableKeyboardAccessibleTooltip(bool enable) {
-   RuntimeEnabledFeatures::SetKeyboardAccessibleTooltipEnabled(enable);
+ void WebRuntimeFeatures::EnableOriginTrialControlledFeatures(bool enable) {
+   RuntimeEnabledFeatures::SetOriginTrialControlledFeaturesEnabled(enable);
  }
 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
-@@ -1569,6 +1569,10 @@
+@@ -1786,6 +1786,10 @@
        name: "OrientationEvent",
        status: {"Android": "stable"},
      },

+ 45 - 108
build/patches/Add-lifetime-options-for-permissions.patch

@@ -65,9 +65,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  components/content_settings/android/BUILD.gn  |  1 +
  .../core/browser/content_settings_utils.cc    | 29 +++++++
  .../core/browser/content_settings_utils.h     |  6 ++
- .../core/browser/host_content_settings_map.cc |  2 +-
- .../core/common/content_settings.cc           |  7 +-
- .../core/common/content_settings.h            |  4 +-
  .../common/content_settings_constraints.h     | 11 +++
  .../page_info/PageInfoController.java         |  4 +-
  .../PermissionParamsListBuilder.java          | 13 ++-
@@ -90,7 +87,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  components/permissions/permission_request.h   | 17 +++-
  .../permissions/permission_request_manager.cc | 37 ++++++---
  .../permissions/permission_request_manager.h  | 11 ++-
- 38 files changed, 481 insertions(+), 60 deletions(-)
+ 35 files changed, 472 insertions(+), 56 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
@@ -184,7 +181,7 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker_factory.cc b/c
 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
-@@ -407,10 +407,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -410,10 +410,7 @@ void ChromeBrowserMainExtraPartsProfiles::
    LacrosFirstRunServiceFactory::GetInstance();
  #endif
    LanguageModelManagerFactory::GetInstance();
@@ -199,7 +196,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 --- a/chrome/browser/ui/tab_helpers.cc
 +++ b/chrome/browser/ui/tab_helpers.cc
-@@ -484,6 +484,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -503,6 +503,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
          web_contents);
    }
    video_tutorials::VideoTutorialTabHelper::CreateForWebContents(web_contents);
@@ -260,8 +257,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +import org.chromium.components.content_settings.SessionModel;
  import org.chromium.components.embedder_support.util.Origin;
  import org.chromium.content_public.browser.BrowserContextHandle;
- 
-@@ -523,6 +524,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+ import org.chromium.content_public.browser.ContentFeatureList;
+@@ -528,6 +529,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          }
      }
  
@@ -273,7 +270,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      private void setUpClearDataPreference() {
          ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA);
          long usage = mSite.getTotalUsage();
-@@ -915,6 +921,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -926,6 +932,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          if (contentType == mHighlightedPermission) {
              switchPreference.setBackgroundColor(mHighlightColor);
          }
@@ -332,7 +329,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
      insertionFunc(env, static_cast<int>(content_type), list,
                    ConvertOriginToJavaString(env, origin), jembedder,
 -                  /*is_embargoed=*/false);
-+                  /*is_embargoed=*/false, static_cast<int>(settings_it.session_model));
++                  /*is_embargoed=*/false, static_cast<int>(settings_it.metadata.session_model));
    }
  
    // Add any origins which have a default content setting value (thus skipped
@@ -348,7 +345,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
-@@ -600,6 +600,11 @@
+@@ -602,6 +602,11 @@
        <message name="IDS_PAGE_INFO_URL_TRUNCATED" desc="Accessibility announcement when the URL in PageInfo switches from full to truncated display">
          URL truncated
        </message>
@@ -374,7 +371,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s
 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
-@@ -184,4 +184,33 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) {
+@@ -189,6 +189,35 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) {
    return base::Time::Now() + duration;
  }
  
@@ -392,13 +389,13 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 +
 +bool IsConstraintSessionExpiration(const ContentSettingPatternSource& source,
 +                                   LifetimeMode lifetime_mode) {
-+  if (source.session_model != content_settings::SessionModel::UserSession)
++  if (source.metadata.session_model != content_settings::SessionModel::UserSession)
 +    return false;
 +
 +  LifetimeMode type;
-+  if (source.expiration == base::Time()) {
++  if (source.metadata.expiration == base::Time()) {
 +    type = LifetimeMode::UntilBrowserClosed;
-+  } else if (source.expiration == (base::Time() + base::Hours(1))) {
++  } else if (source.metadata.expiration == (base::Time() + base::Hours(1))) {
 +    type = LifetimeMode::OnlyThisTime;
 +  } else {
 +    type = LifetimeMode::UntilOriginClosed;
@@ -407,13 +404,15 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 +  return lifetime_mode == type;
 +}
 +
- }  // namespace content_settings
+ bool CanTrackLastVisit(ContentSettingsType type) {
+ #if BUILDFLAG(IS_ANDROID)
+   // The notification provider on Android does not support last visit tracking.
 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);
- // Returns the expiration time for a supplied |duration|.
- base::Time GetConstraintExpiration(const base::TimeDelta duration);
+@@ -76,6 +76,12 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration);
+ // Returns whether the given type supports tracking last_visit timestamps.
+ bool CanTrackLastVisit(ContentSettingsType type);
  
 +ContentSettingConstraints GetConstraintSessionExpiration(LifetimeMode lifetime_mode);
 +
@@ -421,71 +420,9 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b
 +    const ContentSettingPatternSource& source,
 +    LifetimeMode lifetime_mode);
 +
- }  // namespace content_settings
- 
- #endif  // COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_UTILS_H_
-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
-@@ -847,7 +847,7 @@ void HostContentSettingsMap::AddSettingsForOneType(
-     settings->emplace_back(rule.primary_pattern, rule.secondary_pattern,
-                            std::move(value),
-                            kProviderNamesSourceMap[provider_type].provider_name,
--                           incognito, rule.expiration);
-+                           incognito, rule.expiration, rule.session_model);
-   }
- }
- 
-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
-@@ -158,13 +158,15 @@ ContentSettingPatternSource::ContentSettingPatternSource(
-     base::Value setting_value,
-     const std::string& source,
-     bool incognito,
--    base::Time expiration)
-+    base::Time expiration,
-+    content_settings::SessionModel session_model)
-     : primary_pattern(primary_pattern),
-       secondary_pattern(secondary_pattern),
-       setting_value(std::move(setting_value)),
-       expiration(expiration),
-       source(source),
--      incognito(incognito) {}
-+      incognito(incognito),
-+      session_model(session_model) {}
- 
- ContentSettingPatternSource::ContentSettingPatternSource() : incognito(false) {}
- 
-@@ -181,6 +183,7 @@ ContentSettingPatternSource& ContentSettingPatternSource::operator=(
-   expiration = other.expiration;
-   source = other.source;
-   incognito = other.incognito;
-+  session_model = other.session_model;
-   return *this;
- }
- 
-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
-@@ -49,7 +49,8 @@ struct ContentSettingPatternSource {
-                               base::Value setting_value,
-                               const std::string& source,
-                               bool incognito,
--                              base::Time expiration = base::Time());
-+                              base::Time expiration = base::Time(),
-+                              content_settings::SessionModel session_model = content_settings::SessionModel::Durable);
-   ContentSettingPatternSource(const ContentSettingPatternSource& other);
-   ContentSettingPatternSource();
-   ContentSettingPatternSource& operator=(
-@@ -64,6 +65,7 @@ struct ContentSettingPatternSource {
-   base::Time expiration;
-   std::string source;
-   bool incognito;
-+  content_settings::SessionModel session_model;
- };
+ // Get a timestamp with week-precision.
+ base::Time GetCoarseTime(base::Time time);
  
- typedef std::vector<ContentSettingPatternSource> ContentSettingsForOneType;
 diff --git a/components/content_settings/core/common/content_settings_constraints.h b/components/content_settings/core/common/content_settings_constraints.h
 --- a/components/content_settings/core/common/content_settings_constraints.h
 +++ b/components/content_settings/core/common/content_settings_constraints.h
@@ -555,7 +492,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_
              }
          }
  
-@@ -123,13 +128,15 @@ public class PermissionParamsListBuilder {
+@@ -124,13 +129,15 @@ public class PermissionParamsListBuilder {
          public final String nameMidSentence;
          public final int type;
          public final @ContentSettingValues int setting;
@@ -575,7 +512,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
-@@ -162,6 +162,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
+@@ -171,6 +171,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
  
    std::map<ContentSettingsType, ContentSetting>
        user_specified_settings_to_display;
@@ -584,7 +521,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)) {
-@@ -170,6 +172,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
+@@ -179,6 +181,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
        if (setting_to_display) {
          user_specified_settings_to_display[permission.type] =
              *setting_to_display;
@@ -593,7 +530,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
        }
      }
    }
-@@ -186,7 +190,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
+@@ -195,7 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
            ConvertUTF16ToJavaString(env, setting_title),
            ConvertUTF16ToJavaString(env, setting_title_mid_sentence),
            static_cast<jint>(permission),
@@ -603,7 +540,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
      }
    }
  
-@@ -199,7 +204,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
+@@ -208,7 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo(
          env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title),
          ConvertUTF16ToJavaString(env, object_title),
          static_cast<jint>(chosen_object->ui_info.content_settings_type),
@@ -616,19 +553,19 @@ 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
-@@ -1084,6 +1084,8 @@ void PageInfo::PresentSitePermissions() {
+@@ -1151,6 +1151,8 @@ void PageInfo::PresentSitePermissions() {
      permission_info.source = info.source;
-     permission_info.is_one_time =
-         (info.session_model == content_settings::SessionModel::OneTime);
+     permission_info.is_one_time = (info.metadata.session_model ==
+                                    content_settings::SessionModel::OneTime);
 +    permission_info.is_user_session =
-+        (info.session_model == content_settings::SessionModel::UserSession);
++        (info.metadata.session_model == content_settings::SessionModel::UserSession);
  
      if (info.primary_pattern == ContentSettingsPattern::Wildcard() &&
          info.secondary_pattern == ContentSettingsPattern::Wildcard()) {
 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
-@@ -178,6 +178,7 @@ class PageInfo {
+@@ -180,6 +180,7 @@ class PageInfo : private content_settings::CookieControlsView {
      content_settings::SettingSource source =
          content_settings::SETTING_SOURCE_NONE;
      bool is_one_time = false;
@@ -1021,7 +958,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
 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
-@@ -250,6 +250,20 @@ PermissionContextBase::CreatePermissionRequest(
+@@ -252,6 +252,20 @@ PermissionContextBase::CreatePermissionRequest(
        std::move(delete_callback));
  }
  
@@ -1042,7 +979,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
  PermissionResult PermissionContextBase::GetPermissionStatus(
      content::RenderFrameHost* render_frame_host,
      const GURL& requesting_origin,
-@@ -441,7 +455,8 @@ void PermissionContextBase::PermissionDecided(
+@@ -443,7 +457,8 @@ void PermissionContextBase::PermissionDecided(
      const GURL& embedding_origin,
      BrowserPermissionCallback callback,
      ContentSetting content_setting,
@@ -1052,7 +989,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
    DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
           content_setting == CONTENT_SETTING_BLOCK ||
           content_setting == CONTENT_SETTING_DEFAULT);
-@@ -449,9 +464,9 @@ void PermissionContextBase::PermissionDecided(
+@@ -451,9 +466,9 @@ void PermissionContextBase::PermissionDecided(
                               content_setting);
  
    bool persist = content_setting != CONTENT_SETTING_DEFAULT;
@@ -1064,7 +1001,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
  }
  
  content::BrowserContext* PermissionContextBase::browser_context() const {
-@@ -501,11 +516,26 @@ void PermissionContextBase::NotifyPermissionSet(
+@@ -503,11 +518,26 @@ void PermissionContextBase::NotifyPermissionSet(
      bool persist,
      ContentSetting content_setting,
      bool is_one_time) {
@@ -1092,7 +1029,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
    }
  
    UpdateTabContext(id, requesting_origin,
-@@ -526,6 +556,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
+@@ -528,6 +558,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
                                                   const GURL& embedding_origin,
                                                   ContentSetting content_setting,
                                                   bool is_one_time) {
@@ -1108,7 +1045,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
    DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL());
    DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL());
    DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
-@@ -534,6 +573,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
+@@ -536,6 +575,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
    content_settings::ContentSettingConstraints constraints = {
        base::Time(), is_one_time ? content_settings::SessionModel::OneTime
                                  : content_settings::SessionModel::Durable};
@@ -1299,7 +1236,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
-@@ -152,7 +152,7 @@ void PermissionRequestManager::AddRequest(
+@@ -156,7 +156,7 @@ void PermissionRequestManager::AddRequest(
  
    if (base::CommandLine::ForCurrentProcess()->HasSwitch(
            switches::kDenyPermissionPrompts)) {
@@ -1308,7 +1245,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
      request->RequestFinished();
      return;
    }
-@@ -228,7 +228,7 @@ void PermissionRequestManager::AddRequest(
+@@ -232,7 +232,7 @@ void PermissionRequestManager::AddRequest(
    if (auto_approval_origin) {
      if (url::Origin::Create(request->requesting_origin()) ==
          auto_approval_origin.value()) {
@@ -1317,7 +1254,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
      }
      request->RequestFinished();
      return;
-@@ -487,12 +487,13 @@ void PermissionRequestManager::Accept() {
+@@ -491,12 +491,13 @@ void PermissionRequestManager::Accept() {
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
      PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1333,7 +1270,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    if (ignore_callbacks_from_prompt_)
      return;
    DCHECK(view_);
-@@ -500,12 +501,22 @@ void PermissionRequestManager::AcceptThisTime() {
+@@ -504,12 +505,22 @@ void PermissionRequestManager::AcceptThisTime() {
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
      PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1357,7 +1294,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    if (ignore_callbacks_from_prompt_)
      return;
    DCHECK(view_);
-@@ -527,7 +538,7 @@ void PermissionRequestManager::Deny() {
+@@ -529,7 +540,7 @@ void PermissionRequestManager::Deny() {
    std::vector<PermissionRequest*>::iterator requests_iter;
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
@@ -1366,7 +1303,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    }
    FinalizeCurrentRequests(PermissionAction::DENIED);
  }
-@@ -892,25 +903,25 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest(
+@@ -894,25 +905,25 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest(
  
  void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
      PermissionRequest* request,
@@ -1398,7 +1335,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
  }
  
  void PermissionRequestManager::CancelledIncludingDuplicates(
-@@ -1090,7 +1101,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) {
+@@ -1092,7 +1103,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) {
  void PermissionRequestManager::DoAutoResponseForTesting() {
    switch (auto_response_for_test_) {
      case ACCEPT_ONCE:
@@ -1410,7 +1347,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
-@@ -134,8 +134,10 @@ class PermissionRequestManager
+@@ -136,8 +136,10 @@ class PermissionRequestManager
    GURL GetRequestingOrigin() const override;
    GURL GetEmbeddingOrigin() const override;
    void Accept() override;
@@ -1422,7 +1359,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe
    void Dismiss() override;
    void Ignore() override;
    bool WasCurrentRequestAlreadyDisplayed() override;
-@@ -272,9 +274,12 @@ class PermissionRequestManager
+@@ -274,9 +276,12 @@ class PermissionRequestManager
  
    // Calls PermissionGranted on a request and all its duplicates.
    void PermissionGrantedIncludingDuplicates(PermissionRequest* request,

+ 43 - 43
build/patches/Add-menu-item-to-bookmark-all-tabs.patch

@@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -64,6 +64,10 @@
+@@ -66,6 +66,10 @@ found in the LICENSE file.
          <item android:id="@+id/all_bookmarks_menu_id"
              android:title="@string/menu_bookmarks"
              android:icon="@drawable/btn_star_filled" />
@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
          <item android:id="@+id/recent_tabs_menu_id"
              android:title="@string/menu_recent_tabs"
              android:icon="@drawable/devices_black_24dp" />
-@@ -182,6 +186,9 @@
+@@ -184,6 +188,9 @@ found in the LICENSE file.
          <item android:id="@+id/menu_group_tabs"
              android:title="@string/menu_group_tabs"
              android:icon="@drawable/ic_widgets" />
@@ -54,7 +54,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -75,6 +75,8 @@ import org.chromium.chrome.browser.back_press.MinimizeAppAndCloseTabBackPressHan
+@@ -76,6 +76,8 @@ import org.chromium.chrome.browser.back_press.MinimizeAppAndCloseTabBackPressHan
  import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
  import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
  import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -63,7 +63,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  import org.chromium.chrome.browser.compositor.layouts.Layout;
  import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
  import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
-@@ -2188,6 +2190,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2197,6 +2199,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              CloseAllTabsDialog.show(this, getModalDialogManagerSupplier(),
                      () -> getTabModelSelector().closeAllTabs(), /*isIncognito=*/false);
              RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -72,7 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
          } else if (id == R.id.close_all_incognito_tabs_menu_id) {
              // Close only incognito tabs
              CloseAllTabsDialog.show(this, getModalDialogManagerSupplier(),
-@@ -2240,6 +2244,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2249,6 +2253,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          mTabModalHandler.onOmniboxFocusChanged(hasFocus);
      }
  
@@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
-@@ -616,6 +616,7 @@ public class BookmarkUtils {
+@@ -614,6 +614,7 @@ public class BookmarkUtils {
          List<BookmarkId> topLevelFolders = new ArrayList<>();
          BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId();
          BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId();
@@ -217,7 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          BookmarkId othersNodeId = bookmarkModel.getOtherFolderId();
  
          List<BookmarkId> specialFoldersIds =
-@@ -641,6 +642,9 @@ public class BookmarkUtils {
+@@ -639,6 +640,9 @@ public class BookmarkUtils {
          if (bookmarkModel.isFolderVisible(mobileNodeId)) {
              topLevelFolders.add(mobileNodeId);
          }
@@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 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
-@@ -436,6 +436,11 @@ void BookmarkBridge::GetTopLevelFolderIDs(
+@@ -437,6 +437,11 @@ void BookmarkBridge::GetTopLevelFolderIDs(
          top_level_folders.push_back(node.get());
      }
  
@@ -242,7 +242,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
      for (const auto& node : bookmark_model_->bookmark_bar_node()->children()) {
        if (node->is_folder())
          top_level_folders.push_back(node.get());
-@@ -483,6 +488,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
+@@ -484,6 +489,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
    // Vector to temporarily contain all child bookmarks at same level for sorting
    std::vector<const BookmarkNode*> bookmarks = {
        bookmark_model_->mobile_node(),
@@ -250,7 +250,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
        bookmark_model_->bookmark_bar_node(),
        bookmark_model_->other_node(),
    };
-@@ -535,6 +541,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
+@@ -536,6 +542,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
    return folder_id_obj;
  }
  
@@ -317,7 +317,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
 diff --git a/chrome/browser/bookmarks/chrome_bookmark_client.cc b/chrome/browser/bookmarks/chrome_bookmark_client.cc
 --- a/chrome/browser/bookmarks/chrome_bookmark_client.cc
 +++ b/chrome/browser/bookmarks/chrome_bookmark_client.cc
-@@ -117,6 +117,8 @@ bool ChromeBookmarkClient::IsPermanentNodeVisibleWhenEmpty(
+@@ -144,6 +144,8 @@ bool ChromeBookmarkClient::IsPermanentNodeVisibleWhenEmpty(
        return !is_mobile;
      case bookmarks::BookmarkNode::MOBILE:
        return is_mobile;
@@ -350,7 +350,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
-@@ -3600,6 +3600,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3609,6 +3609,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_TRACK_PRICES" desc="Menu item for tracking prices on tabs. [CHAR_LIMIT=27]">
          Track prices
        </message>
@@ -386,7 +386,7 @@ diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_stri
 diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmarks/browser/bookmark_codec.cc
 --- a/components/bookmarks/browser/bookmark_codec.cc
 +++ b/components/bookmarks/browser/bookmark_codec.cc
-@@ -34,6 +34,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar";
+@@ -35,6 +35,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar";
  const char BookmarkCodec::kOtherBookmarkFolderNameKey[] = "other";
  // The value is left as 'synced' for historical reasons.
  const char BookmarkCodec::kMobileBookmarkFolderNameKey[] = "synced";
@@ -394,33 +394,33 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
  const char BookmarkCodec::kVersionKey[] = "version";
  const char BookmarkCodec::kChecksumKey[] = "checksum";
  const char BookmarkCodec::kIdKey[] = "id";
-@@ -76,7 +77,8 @@ BookmarkCodec::~BookmarkCodec() = default;
+@@ -78,7 +79,8 @@ BookmarkCodec::~BookmarkCodec() = default;
  base::Value BookmarkCodec::Encode(BookmarkModel* model,
                                    std::string sync_metadata_str) {
    return Encode(model->bookmark_bar_node(), model->other_node(),
 -                model->mobile_node(), model->root_node()->GetMetaInfoMap(),
 +                model->mobile_node(), model->tabs_collection_node(),
 +                model->root_node()->GetMetaInfoMap(),
+                 model->root_node()->GetUnsyncedMetaInfoMap(),
                  std::move(sync_metadata_str));
  }
- 
-@@ -84,6 +86,7 @@ base::Value BookmarkCodec::Encode(
+@@ -87,6 +89,7 @@ base::Value BookmarkCodec::Encode(
      const BookmarkNode* bookmark_bar_node,
      const BookmarkNode* other_folder_node,
      const BookmarkNode* mobile_folder_node,
 +    const BookmarkNode* tabs_folder_node,
      const BookmarkNode::MetaInfoMap* model_meta_info_map,
+     const BookmarkNode::MetaInfoMap* model_unsynced_meta_info_map,
      std::string sync_metadata_str) {
-   ids_reassigned_ = false;
-@@ -105,6 +108,7 @@ base::Value BookmarkCodec::Encode(
+@@ -109,6 +112,7 @@ base::Value BookmarkCodec::Encode(
    roots.SetKey(kBookmarkBarFolderNameKey, EncodeNode(bookmark_bar_node));
    roots.SetKey(kOtherBookmarkFolderNameKey, EncodeNode(other_folder_node));
    roots.SetKey(kMobileBookmarkFolderNameKey, EncodeNode(mobile_folder_node));
 +  roots.SetKey(kTabsBookmarkFolderNameKey, EncodeNode(tabs_folder_node));
    if (model_meta_info_map)
      roots.SetKey(kMetaInfo, EncodeMetaInfo(*model_meta_info_map));
-   FinalizeChecksum();
-@@ -121,6 +125,7 @@ bool BookmarkCodec::Decode(const base::Value& value,
+   if (model_unsynced_meta_info_map) {
+@@ -130,6 +134,7 @@ bool BookmarkCodec::Decode(const base::Value& value,
                             BookmarkNode* bb_node,
                             BookmarkNode* other_folder_node,
                             BookmarkNode* mobile_folder_node,
@@ -428,7 +428,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
                             int64_t* max_id,
                             std::string* sync_metadata_str) {
    ids_.clear();
-@@ -128,7 +133,8 @@ bool BookmarkCodec::Decode(const base::Value& value,
+@@ -137,7 +142,8 @@ bool BookmarkCodec::Decode(const base::Value& value,
              base::GUID::ParseLowercase(BookmarkNode::kBookmarkBarNodeGuid),
              base::GUID::ParseLowercase(BookmarkNode::kOtherBookmarksNodeGuid),
              base::GUID::ParseLowercase(BookmarkNode::kMobileBookmarksNodeGuid),
@@ -438,7 +438,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    ids_reassigned_ = false;
    guids_reassigned_ = false;
    ids_valid_ = true;
-@@ -136,12 +142,13 @@ bool BookmarkCodec::Decode(const base::Value& value,
+@@ -145,12 +151,13 @@ bool BookmarkCodec::Decode(const base::Value& value,
    stored_checksum_.clear();
    InitializeChecksum();
    bool success = DecodeHelper(bb_node, other_folder_node, mobile_folder_node,
@@ -453,7 +453,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    *max_id = maximum_id_ + 1;
    return success;
  }
-@@ -194,6 +201,7 @@ base::Value BookmarkCodec::EncodeMetaInfo(
+@@ -207,6 +214,7 @@ base::Value BookmarkCodec::EncodeMetaInfo(
  bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
                                   BookmarkNode* other_folder_node,
                                   BookmarkNode* mobile_folder_node,
@@ -461,7 +461,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
                                   const base::Value& value,
                                   std::string* sync_metadata_str) {
    if (!value.is_dict())
-@@ -225,6 +233,12 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
+@@ -238,6 +246,12 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
      return false;
  
    DecodeNode(*bb_value, nullptr, bb_node);
@@ -474,7 +474,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    DecodeNode(*other_folder_value, nullptr, other_folder_node);
    DecodeNode(*mobile_folder_value, nullptr, mobile_folder_node);
  
-@@ -470,11 +484,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
+@@ -508,11 +522,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
  
  void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
                                  BookmarkNode* other_node,
@@ -493,14 +493,14 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
 --- a/components/bookmarks/browser/bookmark_codec.h
 +++ b/components/bookmarks/browser/bookmark_codec.h
 @@ -48,6 +48,7 @@ class BookmarkCodec {
-   base::Value Encode(const BookmarkNode* bookmark_bar_node,
-                      const BookmarkNode* other_folder_node,
-                      const BookmarkNode* mobile_folder_node,
+   base::Value Encode(
+       const BookmarkNode* bookmark_bar_node,
+       const BookmarkNode* other_folder_node,
 +                     const BookmarkNode* tabs_folder_node,
-                      const BookmarkNode::MetaInfoMap* model_meta_info_map,
-                      std::string sync_metadata_str);
- 
-@@ -60,6 +61,7 @@ class BookmarkCodec {
+       const BookmarkNode* mobile_folder_node,
+       const BookmarkNode::MetaInfoMap* model_meta_info_map,
+       const BookmarkNode::MetaInfoMap* model_unsynced_meta_info_map,
+@@ -62,6 +63,7 @@ class BookmarkCodec {
                BookmarkNode* bb_node,
                BookmarkNode* other_folder_node,
                BookmarkNode* mobile_folder_node,
@@ -508,7 +508,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
                int64_t* max_node_id,
                std::string* sync_metadata_str);
  
-@@ -105,6 +107,7 @@ class BookmarkCodec {
+@@ -113,6 +115,7 @@ class BookmarkCodec {
    // Allows the BookmarkClient to read and a write a string blob from the JSON
    // file. That string captures the bookmarks sync metadata.
    static const char kSyncMetadata[];
@@ -516,7 +516,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
    static const char kDateLastUsed[];
  
    // Possible values for kTypeKey.
-@@ -122,6 +125,7 @@ class BookmarkCodec {
+@@ -130,6 +133,7 @@ class BookmarkCodec {
    bool DecodeHelper(BookmarkNode* bb_node,
                      BookmarkNode* other_folder_node,
                      BookmarkNode* mobile_folder_node,
@@ -524,7 +524,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
                      const base::Value& value,
                      std::string* sync_metadata_str);
  
-@@ -133,7 +137,8 @@ class BookmarkCodec {
+@@ -141,7 +145,8 @@ class BookmarkCodec {
    // Reassigns bookmark IDs for all nodes.
    void ReassignIDs(BookmarkNode* bb_node,
                     BookmarkNode* other_node,
@@ -559,7 +559,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b
  
    TitledUrlIndex* index() { return index_.get(); }
    std::unique_ptr<TitledUrlIndex> owned_index() { return std::move(index_); }
-@@ -103,6 +104,7 @@ class BookmarkLoadDetails {
+@@ -110,6 +111,7 @@ class BookmarkLoadDetails {
    raw_ptr<BookmarkPermanentNode> bb_node_ = nullptr;
    raw_ptr<BookmarkPermanentNode> other_folder_node_ = nullptr;
    raw_ptr<BookmarkPermanentNode> mobile_folder_node_ = nullptr;
@@ -570,7 +570,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/b
 diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
 --- a/components/bookmarks/browser/bookmark_model.cc
 +++ b/components/bookmarks/browser/bookmark_model.cc
-@@ -618,7 +618,7 @@ bool BookmarkModel::HasBookmarks() {
+@@ -666,7 +666,7 @@ bool BookmarkModel::HasBookmarks() {
  bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() {
    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
    return bookmark_bar_node_->children().empty() &&
@@ -579,7 +579,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
  }
  
  bool BookmarkModel::IsBookmarked(const GURL& url) {
-@@ -871,6 +871,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
+@@ -920,6 +920,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
    bookmark_bar_node_ = details->bb_node();
    other_node_ = details->other_folder_node();
    mobile_node_ = details->mobile_folder_node();
@@ -590,7 +590,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
 diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h
 --- a/components/bookmarks/browser/bookmark_model.h
 +++ b/components/bookmarks/browser/bookmark_model.h
-@@ -121,6 +121,12 @@ class BookmarkModel : public BookmarkUndoProvider,
+@@ -122,6 +122,12 @@ class BookmarkModel : public BookmarkUndoProvider,
      return mobile_node_;
    }
  
@@ -603,7 +603,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark
    bool is_root_node(const BookmarkNode* node) const {
      DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
      return node == root_;
-@@ -426,6 +432,7 @@ class BookmarkModel : public BookmarkUndoProvider,
+@@ -445,6 +451,7 @@ class BookmarkModel : public BookmarkUndoProvider,
    raw_ptr<BookmarkPermanentNode> bookmark_bar_node_ = nullptr;
    raw_ptr<BookmarkPermanentNode> other_node_ = nullptr;
    raw_ptr<BookmarkPermanentNode> mobile_node_ = nullptr;
@@ -625,7 +625,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmark
  // static
  const char BookmarkNode::kManagedNodeGuid[] =
      "323123f4-9381-5aee-80e6-ea5fca2f7672";
-@@ -225,6 +229,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
+@@ -275,6 +279,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
        visible_when_empty));
  }
  
@@ -662,7 +662,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks
    static const char kManagedNodeGuid[];
  
    // A bug in sync caused some problematic GUIDs to be produced.
-@@ -256,6 +258,9 @@ class BookmarkPermanentNode : public BookmarkNode {
+@@ -270,6 +272,9 @@ class BookmarkPermanentNode : public BookmarkNode {
    static std::unique_ptr<BookmarkPermanentNode> CreateMobileBookmarks(
        int64_t id,
        bool visible_when_empty);
@@ -688,7 +688,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks
 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
-@@ -441,6 +441,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
+@@ -446,6 +446,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
      case bookmarks::BookmarkNode::BOOKMARK_BAR:
      case bookmarks::BookmarkNode::OTHER_NODE:
      case bookmarks::BookmarkNode::MOBILE:

+ 20 - 16
build/patches/Add-menu-item-to-view-source.patch

@@ -4,19 +4,19 @@ Subject: Add menu item to view source
 
 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 ---
- chrome/android/java/res/menu/custom_tabs_menu.xml  |  3 +++
- chrome/android/java/res/menu/main_menu.xml         |  3 +++
- .../chrome/browser/ChromeTabbedActivity.java       |  2 ++
- .../chrome/browser/app/ChromeActivity.java         |  5 +++++
- .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
- .../CustomTabAppMenuPropertiesDelegate.java        |  1 +
- .../ui/android/strings/android_chrome_strings.grd  |  4 ++++
- 7 files changed, 32 insertions(+)
+ .../android/java/res/menu/custom_tabs_menu.xml |  3 +++
+ chrome/android/java/res/menu/main_menu.xml     |  3 +++
+ .../chrome/browser/ChromeTabbedActivity.java   |  2 ++
+ .../chrome/browser/app/ChromeActivity.java     |  5 +++++
+ .../appmenu/AppMenuPropertiesDelegateImpl.java | 18 ++++++++++++++++++
+ .../CustomTabAppMenuPropertiesDelegate.java    |  1 +
+ .../android/strings/android_chrome_strings.grd |  4 ++++
+ 7 files changed, 36 insertions(+)
 
 diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
 --- a/chrome/android/java/res/menu/custom_tabs_menu.xml
 +++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
-@@ -46,6 +46,9 @@
+@@ -48,6 +48,9 @@ found in the LICENSE file.
          <item android:id="@+id/add_to_homescreen_id"
              android:title="@string/menu_add_to_homescreen"
              android:orderInCategory="2" />
@@ -29,7 +29,7 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -106,6 +106,9 @@
+@@ -108,6 +108,9 @@ found in the LICENSE file.
          <item android:id="@+id/add_to_homescreen_id"
              android:title="@string/menu_add_to_homescreen"
              android:icon="@drawable/ic_add_to_home_screen" />
@@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -2214,6 +2214,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2223,6 +2223,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -54,7 +54,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
-@@ -2428,6 +2428,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2446,6 +2446,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -69,7 +69,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
-@@ -540,6 +540,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -541,6 +541,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
                          isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme);
@@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  
          updateAutoDarkMenuItem(menu, currentTab, isChromeScheme);
  
-@@ -1170,6 +1171,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -1208,6 +1209,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          stopPriceTrackingMenuItem.setVisible(false);
      }
  
@@ -90,8 +90,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
 +    protected void updateViewSourceMenuItem(
 +            Menu menu, Tab currentTab) {
 +        MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
-+        String url = currentTab.getUrl().getSpec();
-+        viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
++        boolean visible = false;
++        if (currentTab != null) {
++                String url = currentTab.getUrl().getSpec();
++                visible = !url.isEmpty() && !url.startsWith("view-source:");
++        }
++        viewSourceMenuItem.setVisible(visible);
 +    }
 +
      /**

+ 7 - 7
build/patches/Add-option-to-force-tablet-UI.patch

@@ -50,7 +50,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
 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
-@@ -390,6 +390,7 @@ public final class ChromePreferenceKeys {
+@@ -414,6 +414,7 @@ public final class ChromePreferenceKeys {
              AccessibilityConstants.FONT_USER_SET_FORCE_ENABLE_ZOOM;
  
      public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
@@ -72,7 +72,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
 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
-@@ -355,7 +355,7 @@ public class LocationBarCoordinator implements LocationBar, NativeInitObserver,
+@@ -368,7 +368,7 @@ public class LocationBarCoordinator implements LocationBar, NativeInitObserver,
      // OmniboxSuggestionsDropdownEmbedder implementation
      @Override
      public boolean isTablet() {
@@ -84,7 +84,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
-@@ -1433,6 +1433,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1439,6 +1439,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_PRIVACY_GUIDE_SB_ENHANCED_ITEM_SEVEN" desc="Seventh bullet point that describes the details of the Safe Browsing control.">
          Temporarily links this data to your Google Account when you’re signed in, to protect you across Google apps
        </message>
@@ -135,7 +135,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
    disallowed_extension_deps_ = [
      # Components should largely not depend on //extensions. Since // extensions
      # is not a component target and is linked with //chrome, depending on most
-@@ -667,7 +667,7 @@ test("components_unittests") {
+@@ -673,7 +673,7 @@ test("components_unittests") {
    # On other platforms, no components should depend on Chrome.
    # Since //chrome depends on //extensions, we also only assert_no_deps on
    # extensions targets for non-lacros builds.
@@ -144,7 +144,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
      assert_no_deps = [ "//chrome/*" ]
      assert_no_deps += disallowed_extension_deps_
    }
-@@ -955,7 +955,7 @@ if (!is_ios) {
+@@ -974,7 +974,7 @@ if (!is_ios) {
      # dependency. On other platforms, no components should depend on Chrome.
      # Since //chrome depends on //extensions, we also only assert_no_deps on
      # extensions targets for non-lacros builds.
@@ -156,7 +156,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
 diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
 --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
 +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
-@@ -34,6 +34,11 @@
+@@ -36,6 +36,11 @@ found in the LICENSE file.
          android:summary="@string/accessibility_tab_switcher_summary"
          android:title="@string/accessibility_tab_switcher_title" />
  
@@ -217,7 +217,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
 diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
 --- a/ui/android/BUILD.gn
 +++ b/ui/android/BUILD.gn
-@@ -370,6 +370,8 @@ android_library("ui_no_recycler_view_java") {
+@@ -372,6 +372,8 @@ android_library("ui_no_recycler_view_java") {
    deps = [
      ":ui_java_resources",
      ":ui_utils_java",

+ 9 - 9
build/patches/Add-option-to-not-persist-tabs-across-sessions.patch

@@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -43,6 +43,11 @@
+@@ -45,6 +45,11 @@ found in the LICENSE file.
          android:title="@string/incognito_settings_title"
          android:summary="@string/incognito_settings_summary"
          android:fragment="org.chromium.chrome.browser.privacy.settings.IncognitoSettings"/>
@@ -28,7 +28,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
-@@ -38,6 +38,7 @@ import androidx.lifecycle.LifecycleRegistry;
+@@ -39,6 +39,7 @@ import androidx.lifecycle.LifecycleRegistry;
  
  import org.chromium.base.CallbackController;
  import org.chromium.base.CommandLine;
@@ -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;
-@@ -1312,8 +1313,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1316,8 +1317,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -68,16 +68,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -54,6 +57,8 @@ public class PrivacySettings
-     private static final String PREF_PRIVACY_GUIDE = "privacy_guide";
-     private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
+@@ -67,6 +70,8 @@ public class PrivacySettings
+             SharedPreferencesManager.getInstance();
+     private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
  
 +    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
 +
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private IncognitoLockSettings mIncognitoLockSettings;
  
-@@ -115,7 +120,11 @@ public class PrivacySettings
+@@ -132,7 +137,11 @@ public class PrivacySettings
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
          String key = preference.getKey();
@@ -90,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
-@@ -156,6 +165,11 @@ public class PrivacySettings
+@@ -176,6 +185,11 @@ public class PrivacySettings
                      PreloadPagesSettingsFragment.getPreloadPagesSummaryString(getContext()));
          }
  
@@ -105,7 +105,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
-@@ -4475,6 +4475,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4438,6 +4438,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
          IMAGE
        </message>

+ 4 - 4
build/patches/Add-option-to-use-home-page-as-NTP.patch

@@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
 --- a/chrome/android/java/res/xml/homepage_preferences.xml
 +++ b/chrome/android/java/res/xml/homepage_preferences.xml
-@@ -12,6 +12,11 @@
+@@ -14,6 +14,11 @@ found in the LICENSE file.
          android:summaryOn="@string/text_on"
          android:summaryOff="@string/text_off" />
  
@@ -134,7 +134,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
-@@ -401,6 +401,7 @@ public final class ChromePreferenceKeys {
+@@ -425,6 +425,7 @@ public final class ChromePreferenceKeys {
      public static final String HOMEPAGE_PARTNER_CUSTOMIZED_DEFAULT_GURL =
              "Chrome.Homepage.PartnerCustomizedDefaultGurl";
  
@@ -156,7 +156,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
-@@ -1248,6 +1248,9 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1254,6 +1254,9 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
          Last hour
        </message>
@@ -195,7 +195,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 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
-@@ -380,6 +380,7 @@ extern const char kRestrictedManagedGuestSessionExtensionCleanupExemptList[];
+@@ -384,6 +384,7 @@ extern const char kRestrictedManagedGuestSessionExtensionCleanupExemptList[];
  extern const char kUsedPolicyCertificates[];
  #endif  // BUILDFLAG(IS_CHROMEOS)
  extern const char kShowHomeButton[];

+ 4 - 4
build/patches/Add-site-engagement-flag.patch

@@ -21,7 +21,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
-@@ -138,6 +138,7 @@
+@@ -141,6 +141,7 @@
  #include "components/segmentation_platform/public/features.h"
  #include "components/send_tab_to_self/features.h"
  #include "components/services/heap_profiling/public/cpp/switches.h"
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "components/shared_highlighting/core/common/shared_highlighting_features.h"
  #include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
  #include "components/signin/public/base/signin_buildflags.h"
-@@ -8768,6 +8769,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8966,6 +8967,11 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kSearchReadyOmniboxDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(chrome::android::kSearchReadyOmniboxFeature)},
  
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3283,6 +3283,11 @@ const char kSkipServiceWorkerFetchHandlerDescription[] =
+@@ -3320,6 +3320,11 @@ const char kSkipServiceWorkerFetchHandlerDescription[] =
      "Skips starting the service worker and run the fetch handler if the fetch "
      "handler is recognized as skippable.";
  
@@ -59,7 +59,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1862,6 +1862,9 @@ extern const char kReduceUserAgentPlatformOsCpuDescription[];
+@@ -1888,6 +1888,9 @@ extern const char kReduceUserAgentPlatformOsCpuDescription[];
  extern const char kSkipServiceWorkerFetchHandlerName[];
  extern const char kSkipServiceWorkerFetchHandlerDescription[];
  

+ 2 - 2
build/patches/Add-support-for-ISupportHelpAndFeedback.patch

@@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
-@@ -67,6 +67,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFacto
+@@ -66,6 +66,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFacto
  import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
  import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher;
  import org.chromium.components.browser_ui.settings.SettingsLauncher;
@@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
  import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
  import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
  import org.chromium.components.browser_ui.widget.displaystyle.ViewResizer;
-@@ -333,9 +334,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -329,9 +330,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
              finish();
              return true;
          } else if (item.getItemId() == R.id.menu_id_general_help) {

+ 12 - 12
build/patches/Add-webGL-site-setting.patch

@@ -38,7 +38,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -82,6 +82,9 @@ android_library("java") {
+@@ -89,6 +89,9 @@ android_library("java") {
      "java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java",
      "java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java",
    ]
@@ -183,7 +183,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp
        <part file="site_settings.grdp" />
 +      <part file="webgl.grdp" />
  
-       <message name="IDS_GOT_IT" desc="Button for the user to accept a disclosure/message">
+       <message name="IDS_GOT_IT" desc="Button for the user to accept a disclosure/message" formatter_data="android_java">
          Got it
 diff --git a/components/browser_ui/strings/android/webgl.grdp b/components/browser_ui/strings/android/webgl.grdp
 new file mode 100644
@@ -214,11 +214,11 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
 @@ -338,6 +338,7 @@
        <part file="version_ui_strings.grdp" />
        <part file="webapps_strings.grdp" />
-       <part file="user_scripts/strings/userscripts_strings.grdp" />
-+      <part file="browser_ui/strings/android/webgl.grdp" />
  
++      <part file="browser_ui/strings/android/webgl.grdp" />
        <if expr="not is_ios">
          <part file="history_clusters_strings.grdp" />
+       </if>
 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
@@ -246,7 +246,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
 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
-@@ -155,6 +155,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map,
+@@ -156,6 +156,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map,
    std::string timezone;
    map->GetTimezoneOverrideValue(timezone);
    rules->timezone_override_value = timezone;
@@ -258,7 +258,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 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
-@@ -206,7 +206,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -205,7 +205,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
           content_type == ContentSettingsType::AUTOPLAY ||
           content_type == ContentSettingsType::MIXEDSCRIPT ||
           content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT ||
@@ -268,7 +268,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
  }
  
  void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
-@@ -218,6 +219,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
+@@ -217,6 +218,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
    FilterRulesForType(auto_dark_content_rules, outermost_main_frame_url);
    FilterRulesForType(timezone_override_rules, outermost_main_frame_url);
    FilterRulesForType(autoplay_rules, outermost_main_frame_url);
@@ -279,7 +279,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
-@@ -97,6 +97,7 @@ struct RendererContentSettingRules {
+@@ -96,6 +96,7 @@ struct RendererContentSettingRules {
    ContentSettingsForOneType auto_dark_content_rules;
    ContentSettingsForOneType timezone_override_rules;
    std::string timezone_override_value;
@@ -299,7 +299,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
-@@ -104,7 +104,8 @@ bool StructTraits<content_settings::mojom::RendererContentSettingRulesDataView,
+@@ -105,7 +105,8 @@ bool StructTraits<content_settings::mojom::RendererContentSettingRulesDataView,
           data.ReadMixedContentRules(&out->mixed_content_rules) &&
           data.ReadAutoDarkContentRules(&out->auto_dark_content_rules) &&
           data.ReadTimezoneOverrideRules(&out->timezone_override_rules) &&
@@ -327,7 +327,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai
 diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h
 --- a/components/content_settings/core/common/content_settings_types.h
 +++ b/components/content_settings/core/common/content_settings_types.h
-@@ -280,6 +280,8 @@ enum class ContentSettingsType : int32_t {
+@@ -276,6 +276,8 @@ enum class ContentSettingsType : int32_t {
    // site instead of the mobile one.
    REQUEST_DESKTOP_SITE,
  
@@ -414,7 +414,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
-@@ -97,6 +97,7 @@ class SecurityOrigin;
+@@ -96,6 +96,7 @@ class SecurityOrigin;
  class ScriptState;
  class ScriptWrappable;
  class TrustedTypePolicyFactory;
@@ -422,7 +422,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
  
  enum ReasonForCallingCanExecuteScripts {
    kAboutToExecuteScript,
-@@ -105,6 +106,10 @@ enum ReasonForCallingCanExecuteScripts {
+@@ -104,6 +105,10 @@ enum ReasonForCallingCanExecuteScripts {
  
  enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag };
  

+ 11 - 11
build/patches/Add-webRTC-site-settings.patch

@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -85,6 +85,9 @@ android_library("java") {
+@@ -92,6 +92,9 @@ android_library("java") {
    sources += [
      "java/src/org/chromium/components/browser_ui/site_settings/BromiteWebGLContentSetting.java",
    ]
@@ -179,7 +179,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp
        <part file="webgl.grdp" />
 +      <part file="webrtc.grdp" />
  
-       <message name="IDS_GOT_IT" desc="Button for the user to accept a disclosure/message">
+       <message name="IDS_GOT_IT" desc="Button for the user to accept a disclosure/message" formatter_data="android_java">
          Got it
 diff --git a/components/browser_ui/strings/android/webrtc.grdp b/components/browser_ui/strings/android/webrtc.grdp
 new file mode 100644
@@ -209,12 +209,12 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
 +++ b/components/components_strings.grd
 @@ -339,6 +339,7 @@
        <part file="webapps_strings.grdp" />
-       <part file="user_scripts/strings/userscripts_strings.grdp" />
+ 
        <part file="browser_ui/strings/android/webgl.grdp" />
 +      <part file="browser_ui/strings/android/webrtc.grdp" />
- 
        <if expr="not is_ios">
          <part file="history_clusters_strings.grdp" />
+       </if>
 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
@@ -242,7 +242,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
 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,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map,
+@@ -158,6 +158,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map,
    rules->timezone_override_value = timezone;
    map->GetSettingsForOneType(ContentSettingsType::WEBGL,
                               &(rules->webgl_rules));
@@ -254,7 +254,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 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
-@@ -207,7 +207,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -206,7 +206,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
           content_type == ContentSettingsType::MIXEDSCRIPT ||
           content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT ||
           content_type == ContentSettingsType::TIMEZONE_OVERRIDE ||
@@ -264,7 +264,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
  }
  
  void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
-@@ -220,6 +221,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
+@@ -219,6 +220,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
    FilterRulesForType(timezone_override_rules, outermost_main_frame_url);
    FilterRulesForType(autoplay_rules, outermost_main_frame_url);
    FilterRulesForType(webgl_rules, outermost_main_frame_url);
@@ -275,7 +275,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
-@@ -98,6 +98,7 @@ struct RendererContentSettingRules {
+@@ -97,6 +97,7 @@ struct RendererContentSettingRules {
    ContentSettingsForOneType timezone_override_rules;
    std::string timezone_override_value;
    ContentSettingsForOneType webgl_rules;
@@ -295,7 +295,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
-@@ -105,7 +105,8 @@ bool StructTraits<content_settings::mojom::RendererContentSettingRulesDataView,
+@@ -106,7 +106,8 @@ bool StructTraits<content_settings::mojom::RendererContentSettingRulesDataView,
           data.ReadAutoDarkContentRules(&out->auto_dark_content_rules) &&
           data.ReadTimezoneOverrideRules(&out->timezone_override_rules) &&
           data.ReadTimezoneOverrideValue(&out->timezone_override_value) &&
@@ -323,7 +323,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai
 diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h
 --- a/components/content_settings/core/common/content_settings_types.h
 +++ b/components/content_settings/core/common/content_settings_types.h
-@@ -282,6 +282,8 @@ enum class ContentSettingsType : int32_t {
+@@ -278,6 +278,8 @@ enum class ContentSettingsType : int32_t {
  
    WEBGL,
  
@@ -385,7 +385,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"
-@@ -767,6 +768,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -765,6 +766,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
        // origin.
        WebRTCIPHandlingPolicy policy =
            GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy);

+ 22 - 22
build/patches/Allow-building-without-enable_reporting.patch

@@ -61,7 +61,7 @@ diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.cc b/cont
        body_to_pass.Set(pair.first, pair.second);
 @@ -123,7 +125,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
            kType, *endpoint, context_url_, reporting_source_,
-           network_isolation_key_,
+           network_anonymization_key_,
            /*user_agent=*/absl::nullopt, std::move(body_to_pass));
 -    }
 +#endif
@@ -124,8 +124,8 @@ diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/conten
    if (!coop_.report_only_reporting_endpoint)
 @@ -279,12 +274,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
    storage_partition_->GetNetworkContext()->QueueReport(
-       "coop", endpoint, context_url_, reporting_source_, network_isolation_key_,
-       absl::nullopt, std::move(body));
+       "coop", endpoint, context_url_, reporting_source_,
+       network_anonymization_key_, absl::nullopt, std::move(body));
 +#endif
  }
  
@@ -137,9 +137,9 @@ diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/conten
    body.Set(kDisposition,
             is_report_only ? kDispositionReporting : kDispositionEnforce);
    body.Set(kEffectivePolicy,
-@@ -292,6 +289,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
-   storage_partition_->GetNetworkContext()->QueueReport(
-       "coop", endpoint, context_url_, reporting_source_, network_isolation_key_,
+@@ -293,6 +290,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
+       "coop", endpoint, context_url_, reporting_source_,
+       network_anonymization_key_,
        /*user_agent=*/absl::nullopt, std::move(body));
 +#endif
  }
@@ -165,7 +165,7 @@ diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/ne
      if (!rph)
        return;
      rph->GetStoragePartition()->GetNetworkContext()->QueueReport(
-         type, group, url, reporting_source_, network_isolation_key_,
+         type, group, url, reporting_source_, network_anonymization_key_,
          /*user_agent=*/absl::nullopt, std::move(body));
 +#endif
    }
@@ -174,7 +174,7 @@ diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/ne
 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
-@@ -12143,12 +12143,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
+@@ -12209,12 +12209,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
    base::Value::Dict body;
    if (!reason.empty())
      body.Set("reason", reason);
@@ -182,7 +182,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b
 -  // Send the crash report to the Reporting API.
 -  GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
 -      /*type=*/"crash", /*group=*/"default", last_committed_url_,
--      GetReportingSource(), isolation_info_.network_isolation_key(),
+-      GetReportingSource(), isolation_info_.network_anonymization_key(),
 -      absl::nullopt /* user_agent */, std::move(body));
  }
  
@@ -193,7 +193,7 @@ diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/b
 @@ -127,6 +127,7 @@ bool ShouldDowngradeReport(const char* result_string,
  void ReportResult(int frame_tree_node_id,
                    network::mojom::SignedExchangeReportPtr report,
-                   const net::NetworkIsolationKey& network_isolation_key) {
+                   const net::NetworkAnonymizationKey& network_isolation_key) {
 +#if BUILDFLAG(ENABLE_REPORTING)
    FrameTreeNode* frame_tree_node =
        FrameTreeNode::GloballyFindByID(frame_tree_node_id);
@@ -220,7 +220,7 @@ diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc
 diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
 --- a/net/reporting/reporting_service.cc
 +++ b/net/reporting/reporting_service.cc
-@@ -208,6 +208,12 @@ class ReportingServiceImpl : public ReportingService {
+@@ -211,6 +211,12 @@ class ReportingServiceImpl : public ReportingService {
        base::Value::Dict body,
        int depth,
        base::TimeTicks queued_ticks) {
@@ -232,27 +232,27 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic
 +#endif
      DCHECK(initialized_);
      context_->cache()->AddReport(
-         reporting_source, network_isolation_key, sanitized_url, user_agent,
+         reporting_source, network_anonymization_key, sanitized_url, user_agent,
 diff --git a/services/network/network_context.h b/services/network/network_context.h
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -459,10 +459,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -462,10 +462,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
        const absl::optional<base::UnguessableToken>& reporting_source,
-       const net::NetworkIsolationKey& network_isolation_key,
+       const net::NetworkAnonymizationKey& network_anonymization_key,
        const absl::optional<std::string>& user_agent,
 -      base::Value::Dict body) override;
 +      base::Value::Dict body);
    void QueueSignedExchangeReport(
        mojom::SignedExchangeReportPtr report,
--      const net::NetworkIsolationKey& network_isolation_key) override;
-+      const net::NetworkIsolationKey& network_isolation_key);
+-      const net::NetworkAnonymizationKey& network_anonymization_key) override;
++      const net::NetworkAnonymizationKey& network_anonymization_key);
    void AddDomainReliabilityContextForTesting(
        const url::Origin& origin,
        const GURL& upload_url,
 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
-@@ -1011,7 +1011,6 @@ mojom("mojom") {
+@@ -1096,7 +1096,6 @@ mojom("mojom") {
      export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
      export_header_blink = "third_party/blink/public/platform/web_common.h"
      if (enable_reporting) {
@@ -263,7 +263,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
-@@ -1062,6 +1062,7 @@ interface NetworkContext {
+@@ -1065,6 +1065,7 @@ interface NetworkContext {
    // provided |network_isolation_key|.
    //
    // Spec: https://w3c.github.io/reporting/#concept-reports
@@ -271,13 +271,13 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
    QueueReport(string type,
                string group,
                url.mojom.Url url,
-@@ -1075,6 +1076,7 @@ interface NetworkContext {
+@@ -1078,6 +1079,7 @@ interface NetworkContext {
    // Note that this queued report will never be delivered if no reporting
    // endpoint matching is registered for with the provided
    // |network_isolation_key|.
 +  [EnableIf=enable_reporting]
    QueueSignedExchangeReport(SignedExchangeReport report,
-                             NetworkIsolationKey network_isolation_key);
+                             NetworkAnonymizationKey network_anonymization_key);
  
 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
@@ -290,7 +290,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
  #include "services/data_decoder/public/mojom/resource_snapshot_for_web_bundle.mojom-blink.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/mojom/content_security_policy.mojom-blink.h"
-@@ -2359,9 +2360,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
+@@ -2357,9 +2358,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
    return base::UnguessableToken::Null();
  }
  
@@ -316,7 +316,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b
  #include "services/device/public/mojom/device_posture_provider.mojom-blink-forward.h"
  #include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
  #include "third_party/blink/public/common/frame/frame_ad_evidence.h"
-@@ -585,9 +585,9 @@ class CORE_EXPORT LocalFrame final
+@@ -590,9 +590,9 @@ class CORE_EXPORT LocalFrame final
    }
  
    SmoothScrollSequencer& GetSmoothScrollSequencer();

+ 3 - 3
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
-@@ -1218,6 +1218,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -1215,6 +1215,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(
      const WebVector<WebMediaPlayer::TrackId>& enabledTrackIds) {
    DCHECK(main_task_runner_->BelongsToCurrentThread());
-@@ -3612,7 +3618,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3609,7 +3615,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
    // Audio only stream is allowed to play when in background.
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // to move the logic of checking video frames out of that function.
@@ -40,7 +40,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
-@@ -192,6 +192,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
+@@ -193,6 +193,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
    bool HasVideo() const override;
    bool HasAudio() const override;
  

+ 1 - 1
build/patches/Ask-user-before-closing-all-tabs.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -502,8 +502,8 @@ const base::Feature kCastDeviceFilter{"CastDeviceFilter",
+@@ -514,8 +514,8 @@ const base::Feature kCastDeviceFilter{"CastDeviceFilter",
  const base::Feature kClearOmniboxFocusAfterNavigation{
      "ClearOmniboxFocusAfterNavigation", base::FEATURE_DISABLED_BY_DEFAULT};
  

+ 1 - 1
build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch

@@ -48,7 +48,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/thir
 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
-@@ -497,7 +497,9 @@ double AudioContext::baseLatency() const {
+@@ -507,7 +507,9 @@ double AudioContext::baseLatency() const {
    DCHECK(IsMainThread());
    DCHECK(destination());
  

Разница между файлами не показана из-за своего большого размера
+ 44 - 478
build/patches/Automated-domain-substitution.patch


+ 3 - 3
build/patches/Block-gateway-attacks-via-websockets.patch

@@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/third_party/blink/renderer/core/execution_context/execution_context.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
-@@ -674,4 +674,20 @@ bool ExecutionContext::RequireTrustedTypes() const {
+@@ -697,4 +697,20 @@ bool ExecutionContext::RequireTrustedTypes() const {
    return require_safe_types_;
  }
  
@@ -47,7 +47,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
-@@ -392,6 +392,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
+@@ -397,6 +397,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
    void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space);
  
    HeapObserverSet<ContextLifecycleObserver>& ContextLifecycleObserverSet();
@@ -207,7 +207,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
-@@ -274,6 +274,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
+@@ -275,6 +275,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
      return false;
    }
  

+ 6 - 6
build/patches/Block-qjz9zk-or-trk-requests.patch

@@ -94,7 +94,7 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib
 diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
 --- a/components/url_formatter/url_fixer.cc
 +++ b/components/url_formatter/url_fixer.cc
-@@ -562,6 +562,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
+@@ -563,6 +563,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
      }
    }
  
@@ -212,7 +212,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
  
  using base::Time;
  using std::string;
-@@ -587,6 +589,12 @@ URLRequest::URLRequest(const GURL& url,
+@@ -597,6 +599,12 @@ URLRequest::URLRequest(const GURL& url,
    // Sanity check out environment.
    DCHECK(base::ThreadTaskRunnerHandle::IsSet());
  
@@ -228,15 +228,15 @@ 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
-@@ -47,6 +47,7 @@
+@@ -48,6 +48,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"
 +#include "net/url_request/trk_protocol_handler.h"
  #include "net/url_request/url_request_context.h"
- #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_job_factory.h"
-@@ -631,6 +632,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+ #include "net/url_request/url_request_throttler_manager.h"
+@@ -571,6 +572,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }
@@ -244,7 +244,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
 +                                  std::make_unique<TrkProtocolHandler>());
    protocol_handlers_.clear();
  
-   storage->set_job_factory(std::move(job_factory));
+   context->set_job_factory(std::move(job_factory));
 diff --git a/url/url_constants.cc b/url/url_constants.cc
 --- a/url/url_constants.cc
 +++ b/url/url_constants.cc

+ 1 - 1
build/patches/Bookmarks-select-all-menu-entry.patch

@@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
 --- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
 +++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
-@@ -21,6 +21,13 @@
+@@ -23,6 +23,13 @@ found in the LICENSE file.
              android:visible="false"
              app:showAsAction="ifRoom"
              app:iconTint="@color/default_icon_color_secondary_tint_list" />

+ 20 - 20
build/patches/Bromite-AdBlockUpdaterService.patch

@@ -62,7 +62,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
-@@ -371,6 +371,7 @@ android_library("chrome_java") {
+@@ -372,6 +372,7 @@ android_library("chrome_java") {
      "//chrome/browser/download/android:java",
      "//chrome/browser/download/android:java_resources",
      "//chrome/browser/enterprise/util:java",
@@ -73,7 +73,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
-@@ -452,6 +452,7 @@ chrome_java_resources = [
+@@ -447,6 +447,7 @@ chrome_java_resources = [
    "java/res/layout/account_chooser_dialog_title.xml",
    "java/res/layout/account_divider_preference.xml",
    "java/res/layout/account_management_account_row.xml",
@@ -81,7 +81,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_unmask_prompt.xml",
-@@ -647,6 +648,7 @@ chrome_java_resources = [
+@@ -643,6 +644,7 @@ chrome_java_resources = [
    "java/res/values/values.xml",
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -92,15 +92,15 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -903,6 +903,8 @@ chrome_java_sources = [
+@@ -905,6 +905,8 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java",
    "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
 +  "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
 +  "java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
    "java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java",
+   "java/src/org/chromium/chrome/browser/policy/PolicyAuditorBridge.java",
    "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderServiceImpl.java",
-   "java/src/org/chromium/chrome/browser/printing/TabPrinter.java",
 diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
 new file mode 100644
 --- /dev/null
@@ -176,7 +176,7 @@ new file mode 100644
 diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml
 --- a/chrome/android/java/res/values/styles.xml
 +++ b/chrome/android/java/res/values/styles.xml
-@@ -178,6 +178,24 @@
+@@ -180,6 +180,24 @@ found in the LICENSE file.
          </item>
      </style>
  
@@ -204,7 +204,7 @@ diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -25,6 +25,8 @@
+@@ -27,6 +27,8 @@ found in the LICENSE file.
      <!-- Compositor Tab Title Text -->
      <bool name="compositor_tab_title_fake_bold_text">true</bool>
  
@@ -246,7 +246,7 @@ new file mode 100644
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -42,6 +42,11 @@
+@@ -44,6 +44,11 @@ found in the LICENSE file.
          android:key="privacy"
          android:order="10"
          android:title="@string/prefs_privacy_security"/>
@@ -435,7 +435,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -12179,6 +12179,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -12253,6 +12253,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -506,7 +506,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
-@@ -1078,6 +1078,26 @@ BrowserProcessImpl::component_updater() {
+@@ -1071,6 +1071,26 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -555,7 +555,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
-@@ -1728,6 +1728,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1736,6 +1736,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    // will be initialized when the app enters foreground mode.
    variations_service->set_policy_pref_service(profile->GetPrefs());
  
@@ -593,7 +593,7 @@ diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/brows
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -271,6 +271,14 @@ public class CachedFeatureFlags {
+@@ -273,6 +273,14 @@ public class CachedFeatureFlags {
                  ChromeFeatureList.isEnabled(ChromeFeatureList.BACKGROUND_THREAD_POOL));
      }
  
@@ -608,7 +608,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      /**
       * Caches flags that must take effect on startup but are set via native code.
       */
-@@ -517,5 +525,7 @@ public class CachedFeatureFlags {
+@@ -519,5 +527,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -619,7 +619,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 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
-@@ -454,6 +454,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -421,6 +421,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
        ssl_config_service_manager_(local_state_),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -628,7 +628,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #if !BUILDFLAG(IS_ANDROID)
    // QuicAllowed was not part of Android policy.
    const base::Value* value =
-@@ -532,6 +534,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -499,6 +501,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -678,7 +678,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -2338,6 +2338,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2350,6 +2350,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -702,7 +702,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
-@@ -271,8 +271,8 @@
+@@ -295,8 +295,8 @@
    <message name="IDS_INTRUSIVE_ADS_INFORMATION" desc="The extra information at the top of the Site Details page when the site tends to show intrusive ads">
      This site shows intrusive or misleading ads
    </message>
@@ -1680,7 +1680,7 @@ diff --git a/components/subresource_filter/content/browser/verified_ruleset_deal
 diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
 --- a/components/subresource_filter/core/browser/subresource_filter_features.cc
 +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
-@@ -55,72 +55,7 @@ class CommaSeparatedStrings {
+@@ -54,72 +54,7 @@ class CommaSeparatedStrings {
    const std::vector<base::StringPiece> pieces_;
  };
  
@@ -1754,7 +1754,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
    // If ad tagging is enabled, turn on the dryrun automatically.
    bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging);
    const struct {
-@@ -128,23 +63,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
+@@ -127,23 +62,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
      bool enabled_by_default;
      Configuration (*factory_method)();
    } kAvailablePresetConfigurations[] = {
@@ -1780,7 +1780,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
        enabled_configurations.push_back(available_preset.factory_method());
      }
    }
-@@ -152,46 +80,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
+@@ -151,46 +79,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
    return enabled_configurations;
  }
  

+ 9 - 9
build/patches/Bromite-auto-updater.patch

@@ -49,7 +49,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
-@@ -2182,6 +2182,9 @@ if (enable_java_templates) {
+@@ -2183,6 +2183,9 @@ if (enable_java_templates) {
        if (defined(testonly) && testonly) {
          defines += [ "_IS_FOR_TEST" ]
        }
@@ -62,7 +62,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
-@@ -809,6 +809,9 @@ chrome_java_sources = [
+@@ -811,6 +811,9 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java",
    "java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java",
    "java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java",
@@ -75,7 +75,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/res/xml/about_chrome_preferences.xml b/chrome/android/java/res/xml/about_chrome_preferences.xml
 --- a/chrome/android/java/res/xml/about_chrome_preferences.xml
 +++ b/chrome/android/java/res/xml/about_chrome_preferences.xml
-@@ -7,6 +7,11 @@
+@@ -9,6 +9,11 @@ found in the LICENSE file.
      <Preference
          android:key="application_version"
          android:title="@string/application_version_title" />
@@ -1250,7 +1250,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
-@@ -254,6 +254,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -255,6 +255,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kNewWindowAppMenu,
      &kNotificationPermissionVariant,
      &kPageAnnotationsService,
@@ -1258,7 +1258,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kBookmarksImprovedSaveFlow,
      &kBookmarksRefresh,
      &kBackGestureRefactorAndroid,
-@@ -680,6 +681,9 @@ const base::Feature kIncognitoReauthenticationForAndroid{
+@@ -692,6 +693,9 @@ const base::Feature kIncognitoReauthenticationForAndroid{
  const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -1282,7 +1282,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -380,6 +380,7 @@ public abstract class ChromeFeatureList {
+@@ -383,6 +383,7 @@ public abstract class ChromeFeatureList {
              "IncognitoReauthenticationForAndroid";
      public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot";
      public static final String INFOBAR_SCROLL_OPTIMIZATION = "InfobarScrollOptimization";
@@ -1293,7 +1293,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
-@@ -1887,6 +1887,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1893,6 +1893,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_DEPRECATION_WARNING" desc="Warning about Chrome updates no longer being supported">
          Chrome updates are no longer supported for this version of Android
        </message>
@@ -1306,7 +1306,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
  
        <!-- Account management UI strings. -->
        <message name="IDS_ACCOUNT_MANAGEMENT_TITLE" desc="Header title for the account management screen. [CHAR_LIMIT=32]">
-@@ -3519,7 +3525,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3528,7 +3534,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
  
        <!-- Main menu items -->
        <message name="IDS_MENU_UPDATE" desc="Menu item for updating chrome. [CHAR_LIMIT=24]">
@@ -1318,7 +1318,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        </message>
        <message name="IDS_MENU_UPDATE_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that a newer version of Chrome is available. [CHAR_LIMIT=30]">
          Newer version is available
-@@ -3530,6 +3539,18 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3539,6 +3548,18 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_UPDATE_UNSUPPORTED_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that the Android version on the device is unsupported. [CHAR_LIMIT=30]">
          Android version is unsupported
        </message>

+ 1 - 1
build/patches/Bromite-package-name.patch

@@ -10,7 +10,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
-@@ -46,7 +46,7 @@ if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
+@@ -42,7 +42,7 @@ if (android_64bit_target_cpu && skip_secondary_abi_for_cq) {
    assert(current_toolchain != android_secondary_abi_toolchain)
  }
  

+ 10 - 30
build/patches/Client-hints-overrides.patch

@@ -12,13 +12,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  content/browser/client_hints/client_hints.cc             | 3 ++-
  content/browser/loader/navigation_url_loader_impl.cc     | 5 +++++
  content/common/user_agent.cc                             | 9 +--------
- content/public/common/content_features.cc                | 2 +-
+ content/public/common/content_features.cc                | 4 ++--
  services/network/public/cpp/client_hints.cc              | 1 +
  services/network/public/cpp/features.cc                  | 4 ++--
  third_party/blink/common/client_hints/client_hints.cc    | 1 +
  .../blink/common/client_hints/enabled_client_hints.cc    | 4 +++-
- third_party/blink/common/features.cc                     | 4 ++--
- 10 files changed, 19 insertions(+), 18 deletions(-)
+ 9 files changed, 18 insertions(+), 17 deletions(-)
 
 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
@@ -37,7 +36,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
 diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
 --- a/content/browser/client_hints/client_hints.cc
 +++ b/content/browser/client_hints/client_hints.cc
-@@ -435,7 +435,8 @@ void AddPrefersColorSchemeHeader(net::HttpRequestHeaders* headers,
+@@ -462,7 +462,8 @@ void AddPrefersColorSchemeHeader(net::HttpRequestHeaders* headers,
                      is_dark_mode ? "dark" : "light");
  }
  
@@ -50,7 +49,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
-@@ -1030,6 +1030,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
+@@ -1025,6 +1025,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
      return;
    }
  
@@ -84,12 +83,14 @@ diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -233,7 +233,7 @@ const base::Feature kCrashReporting{"CrashReporting",
+@@ -229,8 +229,8 @@ const base::Feature kCrashReporting{"CrashReporting",
+ 
  // Enables support for the `Critical-CH` response header.
  // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch
- const base::Feature kCriticalClientHint{"CriticalClientHint",
+-const base::Feature kCriticalClientHint{"CriticalClientHint",
 -                                        base::FEATURE_ENABLED_BY_DEFAULT};
-+                                        base::FEATURE_DISABLED_BY_DEFAULT};
++const base::Feature kCriticalClientHint{"CriticalClientHint",                 // disabled by default
++                                        base::FEATURE_DISABLED_BY_DEFAULT};   // on Bromite
  
  // Enable debugging the issue crbug.com/1201355
  const base::Feature kDebugHistoryInterventionNoUserActivation{
@@ -113,7 +114,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
  // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3
 -const base::Feature kAcceptCHFrame{"AcceptCHFrame",
 -                                   base::FEATURE_ENABLED_BY_DEFAULT};
-+const base::Feature kAcceptCHFrame{"AcceptCHFrame",                    // disabled by default
++const base::Feature kAcceptCHFrame{"AcceptCHFrame",                     // disabled by default
 +                                   base::FEATURE_DISABLED_BY_DEFAULT};  // in Bromite
  
  const base::Feature kSCTAuditingRetryReports{"SCTAuditingRetryReports",
@@ -157,26 +158,5 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
    for (const auto& elem : network::GetClientHintToNameMap()) {
      const auto& type = elem.first;
      if (IsEnabled(type))
-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
-@@ -222,7 +222,7 @@ const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent",
- 
- // Enables User-Agent Client Hints
- const base::Feature kUserAgentClientHint{"UserAgentClientHint",
--                                         base::FEATURE_ENABLED_BY_DEFAULT};
-+                                         base::FEATURE_DISABLED_BY_DEFAULT};
- 
- // Handle prefers-color-scheme user preference media feature via client hints.
- const base::Feature kPrefersColorSchemeClientHintHeader{
-@@ -606,7 +606,7 @@ const base::Feature kAudioWorkletThreadRealtimePriority{
- const base::Feature kLightweightNoStatePrefetch {
-   "LightweightNoStatePrefetch",
- #if BUILDFLAG(IS_ANDROID)
--      base::FEATURE_ENABLED_BY_DEFAULT
-+      base::FEATURE_DISABLED_BY_DEFAULT
- #else
-       base::FEATURE_DISABLED_BY_DEFAULT
- #endif
 --
 2.25.1

+ 29 - 29
build/patches/Content-settings-infrastructure.patch

@@ -41,7 +41,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -78,6 +78,10 @@ android_library("java") {
+@@ -85,6 +85,10 @@ android_library("java") {
      "java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java",
      "java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java"
    ]
@@ -655,7 +655,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      }
  
      /**
-@@ -564,6 +567,8 @@ public class ContentSettingsResources {
+@@ -570,6 +573,8 @@ public class ContentSettingsResources {
       *         Blocked states, in that order.
       */
      public static int[] getTriStateSettingDescriptionIDs(int contentType) {
@@ -667,7 +667,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
-@@ -236,6 +236,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -247,6 +247,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          @ContentSettingValues
          Integer contentSetting = website.site().getContentSetting(
                  browserContextHandle, mCategory.getContentSettingsType());
@@ -678,15 +678,15 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          if (contentSetting != null) {
              if (mCategory.getContentSettingsType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) {
                  return ContentSettingValues.ALLOW != contentSetting;
-@@ -391,6 +395,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -402,6 +406,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                  ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS))
                  : null;
  
 +        BromiteCustomContentSettingImpl.onActivityCreated(this);
          configureGlobalToggles();
- 
-         setHasOptionsMenu(true);
-@@ -490,6 +495,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+         if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) {
+             RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered");
+@@ -508,6 +513,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          BrowserContextHandle browserContextHandle =
                  getSiteSettingsDelegate().getBrowserContextHandle();
          PrefService prefService = UserPrefs.get(browserContextHandle);
@@ -698,7 +698,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          if (BINARY_TOGGLE_KEY.equals(preference.getKey())) {
              assert !mCategory.isManaged();
  
-@@ -645,6 +655,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -672,6 +682,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) {
              resource = R.string.website_settings_category_timezone_override_allowed;
          }
@@ -707,7 +707,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          assert resource > 0;
          return getString(resource);
      }
-@@ -757,6 +769,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -790,6 +802,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              allowSpecifyingExceptions = true;
          } else if (mCategory.getType() == SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) {
              allowSpecifyingExceptions = true;
@@ -717,7 +717,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          }
          if (allowSpecifyingExceptions) {
              getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(),
-@@ -928,6 +943,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -961,6 +976,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              TriStateSiteSettingsPreference triStateToggle =
                      (TriStateSiteSettingsPreference) getPreferenceScreen().findPreference(
                              TRI_STATE_TOGGLE_KEY);
@@ -728,7 +728,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              if (triStateToggle != null)
                return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK);
  
-@@ -1006,6 +1025,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1039,6 +1058,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          if (mCategory.getType() != SiteSettingsCategory.Type.TIMEZONE_OVERRIDE) {
              screen.removePreference(screen.findPreference(TIMEOVERRIDE_INFO_TEXT));
          }
@@ -736,7 +736,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
  
          if (permissionBlockedByOs) {
              maybeShowOsWarning(screen);
-@@ -1132,7 +1152,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1170,7 +1190,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                  getSiteSettingsDelegate().getBrowserContextHandle(), contentType);
          int[] descriptionIds =
                  ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType);
@@ -745,7 +745,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      }
  
      private void configureTimeOverrideStateToggle(
-@@ -1243,6 +1263,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1281,6 +1301,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          @ContentSettingValues
          Integer value = site.getContentSetting(browserContextHandle, contentSettingsType);
  
@@ -758,12 +758,12 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +        }
 +
          CharSequence[] descriptions = new String[2];
-         descriptions[0] =
-                 getString(ContentSettingsResources.getSiteSummary(contentSettingsType,
+         descriptions[0] = getString(ContentSettingsResources.getSiteSummary(
+                 ContentSettingValues.ALLOW, contentSettingsType));
 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
-@@ -41,6 +41,7 @@ import org.chromium.content_public.browser.BrowserContextHandle;
+@@ -41,6 +41,7 @@ import org.chromium.content_public.browser.ContentFeatureList;
  import java.util.Collection;
  import java.util.HashMap;
  import java.util.Map;
@@ -790,7 +790,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              Preference preference = new ChromeSwitchPreference(getStyledContext());
              preference.setKey(getPreferenceKey(type));
  
-@@ -905,16 +907,22 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -908,16 +910,22 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
  
      private void setupContentSettingsPreference(Preference preference,
              @ContentSettingValues @Nullable Integer value, boolean isEmbargoed) {
@@ -818,7 +818,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          switchPreference.setOnPreferenceChangeListener(this);
          @ContentSettingsType
          int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey());
-@@ -1163,7 +1171,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1169,7 +1177,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          }
  
          mSite.setContentSetting(browserContextHandle, type, permission);
@@ -929,7 +929,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
-@@ -265,6 +265,10 @@ public final class Website implements Serializable {
+@@ -260,6 +260,10 @@ public final class Website implements Serializable {
                          /*isEmbargoed=*/false);
                  setContentSettingException(type, exception);
              }
@@ -955,7 +955,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
-@@ -227,7 +227,7 @@ public class WebsitePreferenceBridge {
+@@ -225,7 +225,7 @@ public class WebsitePreferenceBridge {
              case ContentSettingsType.TIMEZONE_OVERRIDE:
                  return true;
              default:
@@ -1120,7 +1120,7 @@ diff --git a/components/content_settings/core/browser/website_settings_registry.
 diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
 --- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
 +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java
-@@ -109,6 +109,7 @@ public class PermissionParamsListBuilder {
+@@ -104,6 +104,7 @@ public class PermissionParamsListBuilder {
                  permissionParams.allowed = true;
                  break;
              case ContentSettingValues.BLOCK:
@@ -1153,8 +1153,8 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
 +
    std::map<ContentSettingsType, ContentSetting>
        user_specified_settings_to_display;
-   std::map<ContentSettingsType, bool>
-@@ -242,6 +251,15 @@ absl::optional<ContentSetting> PageInfoControllerAndroid::GetSettingToDisplay(
+ 
+@@ -236,6 +245,15 @@ absl::optional<ContentSetting> PageInfoControllerAndroid::GetSettingToDisplay(
      // The images content setting should show up if it is blocked globally
      // to give users an easy way to create exceptions.
      return permission.default_setting;
@@ -1178,10 +1178,10 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
  #include "components/browsing_data/content/local_storage_helper.h"
  #include "components/content_settings/browser/page_specific_content_settings.h"
 +#include "components/content_settings/core/browser/website_settings_registry.h"
+ #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_utils.h"
- #include "components/content_settings/core/browser/host_content_settings_map.h"
-@@ -163,6 +164,15 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -164,6 +165,15 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
      return true;
    }
  
@@ -1197,7 +1197,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
    const bool is_incognito = web_contents->GetBrowserContext()->IsOffTheRecord();
  #if BUILDFLAG(IS_ANDROID)
    // Special geolocation DSE settings apply only on Android, so make sure it
-@@ -1066,7 +1076,18 @@ void PageInfo::PresentSitePermissions() {
+@@ -1112,7 +1122,18 @@ void PageInfo::PresentSitePermissions() {
    PermissionInfo permission_info;
    HostContentSettingsMap* content_settings = GetContentSettings();
    DCHECK(web_contents_);
@@ -1228,7 +1228,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
  #include "components/omnibox/common/omnibox_features.h"
  #include "components/page_info/core/features.h"
  #include "components/page_info/page_info_ui_delegate.h"
-@@ -569,6 +570,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) {
+@@ -572,6 +573,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) {
      if (info.type == type)
        return l10n_util::GetStringUTF16(info.string_id);
    }
@@ -1241,7 +1241,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
    NOTREACHED();
    return std::u16string();
  }
-@@ -580,6 +587,12 @@ std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence(
+@@ -583,6 +590,12 @@ std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence(
      if (info.type == type)
        return l10n_util::GetStringUTF16(info.string_id_mid_sentence);
    }
@@ -1254,7 +1254,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
    NOTREACHED();
    return std::u16string();
  }
-@@ -967,6 +980,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) {
+@@ -970,6 +983,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) {
      if (info.type == type)
        return true;
    }

+ 5 - 5
build/patches/Dictionary-suggestions-for-the-Omnibox.patch

@@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml
 --- a/chrome/android/java/res/layout/url_bar.xml
 +++ b/chrome/android/java/res/layout/url_bar.xml
-@@ -13,5 +13,6 @@
+@@ -15,5 +15,6 @@ found in the LICENSE file.
      android:singleLine="true"
      android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen"
      android:textSize="@dimen/location_bar_url_text_size"
@@ -964,10 +964,10 @@ new file mode 100644
 diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
 +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
-@@ -215,8 +215,7 @@ public abstract class UrlBar extends AutocompleteEditText {
-         // the first draw.
-         setFocusable(false);
-         setFocusableInTouchMode(false);
+@@ -222,8 +222,7 @@ public abstract class UrlBar extends AutocompleteEditText {
+             setFocusableInTouchMode(mAllowFocus);
+         });
+ 
 -        setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI
 -                | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
 +        setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);

+ 16 - 16
build/patches/Disable-AGSA-by-default.patch

@@ -22,7 +22,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
-@@ -379,7 +379,6 @@ android_library("chrome_java") {
+@@ -380,7 +380,6 @@ android_library("chrome_java") {
      "//chrome/browser/first_run/android:java",
      "//chrome/browser/flags:java",
      "//chrome/browser/fullscreen/android:java",
@@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/browser/history_clusters:java",
      "//chrome/browser/history_clusters:java_resources",
      "//chrome/browser/image_descriptions:java",
-@@ -1010,7 +1009,6 @@ robolectric_binary("chrome_junit_tests") {
+@@ -1017,7 +1016,6 @@ robolectric_binary("chrome_junit_tests") {
      "//chrome/browser/flags:flags_junit_tests",
      "//chrome/browser/flags:java",
      "//chrome/browser/fullscreen/android:java",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/browser/history_clusters:java",
      "//chrome/browser/image_descriptions:java",
      "//chrome/browser/image_editor/public:java",
-@@ -1529,7 +1527,6 @@ android_library("chrome_test_java") {
+@@ -1542,7 +1540,6 @@ android_library("chrome_test_java") {
      "//chrome/browser/first_run/android:java",
      "//chrome/browser/flags:java",
      "//chrome/browser/fullscreen/android:java",
@@ -68,7 +68,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
  import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
  import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator;
  import org.chromium.chrome.browser.profiles.Profile;
-@@ -255,8 +254,6 @@ public class IntentHandler {
+@@ -261,8 +260,6 @@ public class IntentHandler {
      private static int sReferrerId;
      private static String sPendingIncognitoUrl;
  
@@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
      private static final String PACKAGE_GMAIL = "com.google.android.gm";
      private static final String PACKAGE_PLUS = "com.google.android.apps.plus";
      private static final String PACKAGE_HANGOUTS = "com.google.android.talk";
-@@ -486,8 +483,6 @@ public class IntentHandler {
+@@ -492,8 +489,6 @@ public class IntentHandler {
              return ExternalAppId.LINE;
          } else if (packageName.equals(PACKAGE_WHATSAPP)) {
              return ExternalAppId.WHATSAPP;
@@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
-@@ -111,10 +111,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
+@@ -112,10 +112,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
  import org.chromium.chrome.browser.fullscreen.BrowserControlsManagerSupplier;
  import org.chromium.chrome.browser.fullscreen.FullscreenBackPressHandler;
  import org.chromium.chrome.browser.fullscreen.FullscreenManager;
@@ -100,7 +100,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import org.chromium.chrome.browser.history.HistoryManagerUtils;
  import org.chromium.chrome.browser.init.AsyncInitializationActivity;
  import org.chromium.chrome.browser.init.ProcessInitializationHandler;
-@@ -371,8 +367,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -373,8 +369,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
      private LaunchCauseMetrics mLaunchCauseMetrics;
  
@@ -109,7 +109,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
      // TODO(972867): Pull MenuOrKeyboardActionController out of ChromeActivity.
      private List<MenuOrKeyboardActionController.MenuOrKeyboardActionHandler> mMenuActionHandlers =
              new ArrayList<>();
-@@ -1166,10 +1160,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1176,10 +1170,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
      @Override
      public void onStopWithNative() {
@@ -120,11 +120,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
          super.onStopWithNative();
      }
  
-@@ -1260,23 +1250,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             FontSizePrefs.getInstance(Profile.getLastUsedRegularProfile())
+@@ -1271,23 +1261,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
                      .recordUserFontPrefOnStartup();
          });
--
+ 
 -        // GSA connection is not needed on low-end devices because Icing is disabled.
 -        if (!SysUtils.isLowEndDevice()) {
 -            if (isActivityFinishingOrDestroyed()) return;
@@ -141,9 +140,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 -                mGSAAccountChangeListener.connect();
 -            });
 -        }
+-
+         DeferredStartupHandler.getInstance().addDeferredTask(
+                 () -> { MemoryPurgeManager.getInstance().start(); });
      }
- 
-     /**
 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
@@ -262,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
 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
-@@ -659,7 +659,7 @@ const base::Feature kDuetTabStripIntegrationAndroid{
+@@ -671,7 +671,7 @@ const base::Feature kDuetTabStripIntegrationAndroid{
      "DuetTabStripIntegrationAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kExperimentsForAgsa{"ExperimentsForAgsa",
@@ -274,7 +274,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/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -71,7 +71,7 @@ public class CachedFeatureFlags {
+@@ -72,7 +72,7 @@ public class CachedFeatureFlags {
                      .put(ChromeFeatureList.EARLY_LIBRARY_LOAD, true)
                      .put(ChromeFeatureList.ELASTIC_OVERSCROLL, true)
                      .put(ChromeFeatureList.ELIDE_PRIORITIZATION_OF_PRE_NATIVE_BOOTSTRAP_TASKS, true)
@@ -294,7 +294,7 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr
      "//chrome/browser/history_clusters:java",
      "//chrome/browser/language/android:java",
      "//chrome/browser/lens:java",
-@@ -428,7 +427,6 @@ robolectric_library("junit") {
+@@ -430,7 +429,6 @@ robolectric_library("junit") {
      "//chrome/browser/commerce/merchant_viewer/android:java",
      "//chrome/browser/device:java",
      "//chrome/browser/flags:java",

+ 2 - 2
build/patches/Disable-Accessibility-service-by-default.patch

@@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.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
-@@ -1494,6 +1494,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1500,6 +1500,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_SAFETY_CHECK_BUTTON" desc="Text for the button to start Safety check.">
          Check now
        </message>
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
 --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
 +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
-@@ -5,6 +5,11 @@
+@@ -7,6 +7,11 @@ found in the LICENSE file.
  
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  

+ 1 - 1
build/patches/Disable-AsyncDNS-by-default.patch

@@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -81,12 +81,8 @@ const base::Feature kAppShimNewCloseBehavior{"AppShimNewCloseBehavior",
+@@ -86,12 +86,8 @@ const base::Feature kAppShimNewCloseBehavior{"AppShimNewCloseBehavior",
  
  // Enables the built-in DNS resolver.
  const base::Feature kAsyncDns {

+ 1 - 1
build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -746,7 +746,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -742,7 +742,7 @@ const base::Feature kMediaDrmPersistentLicense{
  // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs
  // which will trigger provisioning process after MediaDrmBridge is created.
  const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",

+ 9 - 9
build/patches/Disable-FLoC-and-privacy-sandbox.patch

@@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -66,10 +66,6 @@
+@@ -68,10 +68,6 @@ found in the LICENSE file.
          android:title="@string/open_external_links_incognito_title"
          android:summary="@string/open_external_links_incognito_summary"
          android:defaultValue="false" />
@@ -82,9 +82,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 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
-@@ -2982,6 +2982,9 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
-     const url::Origin* impression_origin,
-     const url::Origin* conversion_origin,
+@@ -3060,6 +3060,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed(
+     const url::Origin* source_origin,
+     const url::Origin* destination_origin,
      const url::Origin* reporting_origin) {
 +  // make sure that this is always disabled in Bromite even if privacy sandbox is already disabled in the prefs
 +  if ((true))
@@ -118,7 +118,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his
 diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/privacy_sandbox/privacy_sandbox_prefs.cc
 --- a/components/privacy_sandbox/privacy_sandbox_prefs.cc
 +++ b/components/privacy_sandbox/privacy_sandbox_prefs.cc
-@@ -66,7 +66,7 @@ namespace privacy_sandbox {
+@@ -63,7 +63,7 @@ namespace privacy_sandbox {
  
  void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
@@ -157,12 +157,12 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings.cc b/components
 -bool PrivacySandboxSettings::IsTopicAllowed(const CanonicalTopic& topic) {
 +bool PrivacySandboxSettings::IsTopicAllowed(const CanonicalTopic& topic) { // disabled in Bromite
 +  if ((true)) return false;
-   auto* blocked_topics =
+   const auto& blocked_topics =
        pref_service_->GetList(prefs::kPrivacySandboxBlockedTopics);
  
 @@ -181,9 +182,8 @@ base::Time PrivacySandboxSettings::TopicsDataAccessibleSince() const {
  
- bool PrivacySandboxSettings::IsConversionMeasurementAllowed(
+ bool PrivacySandboxSettings::IsAttributionReportingAllowed(
      const url::Origin& top_frame_origin,
 -    const url::Origin& reporting_origin) const {
 -  return IsPrivacySandboxEnabledForContext(reporting_origin.GetURL(),
@@ -171,7 +171,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings.cc b/components
 +  return false;
  }
  
- bool PrivacySandboxSettings::ShouldSendConversionReport(
+ bool PrivacySandboxSettings::MaySendAttributionReport(
 @@ -277,7 +277,8 @@ void PrivacySandboxSettings::ClearFledgeJoiningAllowedSettings(
  }
  
@@ -238,7 +238,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings.cc b/components
 diff --git a/components/privacy_sandbox/privacy_sandbox_settings.h b/components/privacy_sandbox/privacy_sandbox_settings.h
 --- a/components/privacy_sandbox/privacy_sandbox_settings.h
 +++ b/components/privacy_sandbox/privacy_sandbox_settings.h
-@@ -221,7 +221,6 @@ class PrivacySandboxSettings : public KeyedService {
+@@ -220,7 +220,6 @@ class PrivacySandboxSettings : public KeyedService {
    scoped_refptr<content_settings::CookieSettings> cookie_settings_;
    raw_ptr<PrefService> pref_service_;
    PrefChangeRegistrar pref_change_registrar_;

+ 2 - 2
build/patches/Disable-PrivacyGuide.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -439,8 +439,8 @@ const base::Feature kHaTSDesktopDevToolsIssuesCSP{
+@@ -444,8 +444,8 @@ const base::Feature kHaTSDesktopDevToolsIssuesCSP{
  
  // Enables or disables the Happiness Tracking System for Desktop Privacy Guide.
  const base::Feature kHappinessTrackingSurveysForDesktopPrivacyGuide{
@@ -21,7 +21,7 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
  const base::FeatureParam<base::TimeDelta>
      kHappinessTrackingSurveysForDesktopPrivacyGuideTime{
          &kHappinessTrackingSurveysForDesktopPrivacyGuide, "settings-time",
-@@ -761,11 +761,11 @@ const base::Feature kPrefixWebAppWindowsWithAppName{
+@@ -777,11 +777,11 @@ const base::Feature kPredictivePrefetchingAllowedOnAllConnectionTypes{
  const base::Feature kPrerenderFallbackToPreconnect{
      "PrerenderFallbackToPreconnect", base::FEATURE_ENABLED_BY_DEFAULT};
  

+ 27 - 0
build/patches/Disable-StartSurface-feature.patch

@@ -0,0 +1,27 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Wed, 16 Nov 2022 11:18:07 +0100
+Subject: Disable StartSurface feature
+
+This feature would normally show a search box but leads to crashes.
+
+License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
+---
+ chrome/browser/flags/android/chrome_feature_list.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+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
+@@ -936,8 +936,8 @@ const base::Feature kTrustedWebActivityQualityEnforcementWarning{
+ const base::Feature kShowExtendedPreloadingSetting{
+     "ShowExtendedPreloadingSetting", base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+-const base::Feature kStartSurfaceAndroid{"StartSurfaceAndroid",
+-                                         base::FEATURE_ENABLED_BY_DEFAULT};
++const base::Feature kStartSurfaceAndroid{"StartSurfaceAndroid",                // must be disabled
++                                         base::FEATURE_DISABLED_BY_DEFAULT};   // in Bromite
+ 
+ const base::Feature kFeedPositionAndroid{"FeedPositionAndroid",
+                                          base::FEATURE_DISABLED_BY_DEFAULT};
+--
+2.25.1

+ 13 - 13
build/patches/Disable-TLS-resumption.patch

@@ -39,7 +39,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
-@@ -4806,6 +4806,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4896,6 +4896,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName,
       flag_descriptions::kEnableTLS13EarlyDataDescription, kOsAll,
       FEATURE_VALUE_TYPE(net::features::kEnableTLS13EarlyData)},
@@ -55,7 +55,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1035,6 +1035,14 @@ const char kEnableTLS13EarlyDataDescription[] =
+@@ -1015,6 +1015,14 @@ const char kEnableTLS13EarlyDataDescription[] =
      "during the handshake when resuming a connection to a compatible TLS 1.3 "
      "server.";
  
@@ -73,7 +73,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -596,6 +596,12 @@ extern const char kEnablePreinstalledWebAppDuplicationFixerDescription[];
+@@ -580,6 +580,12 @@ extern const char kEnablePreinstalledWebAppDuplicationFixerDescription[];
  extern const char kEnableTLS13EarlyDataName[];
  extern const char kEnableTLS13EarlyDataDescription[];
  
@@ -89,7 +89,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -108,6 +108,12 @@ const base::Feature kUseDnsHttpsSvcbAlpn{"UseDnsHttpsSvcbAlpn",
+@@ -110,6 +110,12 @@ const base::Feature kUseDnsHttpsSvcbAlpn{"UseDnsHttpsSvcbAlpn",
  const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -132,7 +132,7 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc
 diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
 --- a/net/quic/quic_stream_factory.cc
 +++ b/net/quic/quic_stream_factory.cc
-@@ -74,6 +74,7 @@
+@@ -73,6 +73,7 @@
  #include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
  #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h"
  #include "third_party/boringssl/src/include/openssl/aead.h"
@@ -140,7 +140,7 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
  #include "url/gurl.h"
  #include "url/scheme_host_port.h"
  #include "url/url_constants.h"
-@@ -247,6 +248,38 @@ quic::ParsedQuicVersion SelectQuicVersion(
+@@ -246,6 +247,38 @@ quic::ParsedQuicVersion SelectQuicVersion(
  
  }  // namespace
  
@@ -179,10 +179,10 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
  // Refcounted class that owns quic::QuicCryptoClientConfig and tracks how many
  // consumers are using it currently. When the last reference is freed, the
  // QuicCryptoClientConfigHandle informs the owning QuicStreamFactory, moves it
-@@ -2242,7 +2275,7 @@ QuicStreamFactory::CreateCryptoConfigHandle(
+@@ -2254,7 +2287,7 @@ QuicStreamFactory::CreateCryptoConfigHandle(
                sct_auditing_delegate_,
                HostsFromOrigins(params_.origins_to_force_quic_on),
-               actual_network_isolation_key),
+               actual_network_anonymization_key),
 -          std::make_unique<quic::QuicClientSessionCache>(), this);
 +          std::make_unique<BromiteSessionCache>(), this);
  
@@ -200,7 +200,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
 +    LOG(INFO) << "SSL Log: "
 +              << tag
 +              << " host: " << host_and_port_.ToString()
-+              << " NIK: " << ssl_config_.network_isolation_key.ToDebugString();
++              << " NIK: " << ssl_config_.network_anonymization_key.ToDebugString();
 +    return;
 +  }
 +
@@ -214,7 +214,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
 +  LOG(INFO) << "SSL Log: "
 +            << tag
 +            << " host: " << host_and_port_.ToString()
-+            << " NIK: " << ssl_config_.network_isolation_key.ToDebugString()
++            << " NIK: " << ssl_config_.network_anonymization_key.ToDebugString()
 +            << " sessionid: " << base::HexEncode(session_id, len)
 +            << (ticklen > 0 ? " ticket:" + base::HexEncode(ticket, ticklen) : "");
 +}
@@ -225,7 +225,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
    Disconnect();
  }
  
-@@ -787,6 +813,8 @@ int SSLClientSocketImpl::Init() {
+@@ -786,6 +812,8 @@ int SSLClientSocketImpl::Init() {
      }
      if (session)
        SSL_set_session(ssl_.get(), session.get());
@@ -234,7 +234,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
    }
  
    transport_adapter_ = std::make_unique<SocketBIOAdapter>(
-@@ -1075,6 +1103,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) {
+@@ -1074,6 +1102,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) {
                      : SSLHandshakeDetails::kTLS13Full;
      }
    }
@@ -270,7 +270,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 extension.
-@@ -1748,6 +1805,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const {
+@@ -1746,6 +1803,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const {
  }
  
  bool SSLClientSocketImpl::IsCachingEnabled() const {

+ 10 - 10
build/patches/Disable-all-predictors-code.patch

@@ -33,7 +33,7 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/
 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
-@@ -361,7 +361,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel(
+@@ -324,7 +324,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel(
  void OptimizationGuideKeyedService::RegisterOptimizationTypes(
      const std::vector<optimization_guide::proto::OptimizationType>&
          optimization_types) {
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.
 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
-@@ -728,8 +728,8 @@ const base::Feature kPermissionAuditing{"PermissionAuditing",
+@@ -747,8 +747,8 @@ const base::Feature kPermissionAuditing{"PermissionAuditing",
  
  // Enables using the prediction service for permission prompts. We will keep
  // this feature in order to allow us to update the holdback chance via finch.
@@ -55,7 +55,7 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
  
  // The holdback chance is 30% but it can also be configured/updated
  // through finch if needed.
-@@ -740,7 +740,7 @@ const base::FeatureParam<double> kPermissionPredictionsHoldbackChance(
+@@ -759,7 +759,7 @@ const base::FeatureParam<double> kPermissionPredictionsHoldbackChance(
  
  // Enables using the prediction service for geolocation permission prompts.
  const base::Feature kPermissionGeolocationPredictions{
@@ -78,7 +78,7 @@ diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/op
 diff --git a/components/optimization_guide/core/hints_manager.cc b/components/optimization_guide/core/hints_manager.cc
 --- a/components/optimization_guide/core/hints_manager.cc
 +++ b/components/optimization_guide/core/hints_manager.cc
-@@ -361,6 +361,7 @@ void HintsManager::Shutdown() {
+@@ -360,6 +360,7 @@ void HintsManager::Shutdown() {
  OptimizationGuideDecision
  HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision(
      OptimizationTypeDecision optimization_type_decision) {
@@ -86,7 +86,7 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op
    switch (optimization_type_decision) {
      case OptimizationTypeDecision::kAllowedByOptimizationFilter:
      case OptimizationTypeDecision::kAllowedByHint:
-@@ -1272,6 +1273,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
+@@ -1271,6 +1272,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
      proto::OptimizationType optimization_type,
      OptimizationMetadata* optimization_metadata) {
    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -238,7 +238,7 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio
 diff --git a/components/permissions/features.cc b/components/permissions/features.cc
 --- a/components/permissions/features.cc
 +++ b/components/permissions/features.cc
-@@ -60,12 +60,12 @@ const base::Feature kPermissionChipRequestTypeSensitive{
+@@ -66,12 +66,12 @@ const base::Feature kPermissionChipRequestTypeSensitive{
  // When enabled, use the value of the `service_url` FeatureParam as the url
  // for the Web Permission Predictions Service.
  const base::Feature kPermissionPredictionServiceUseUrlOverride{
@@ -253,12 +253,12 @@ diff --git a/components/permissions/features.cc b/components/permissions/feature
 +    "PermissionOnDeviceNotificationPredictions",            // disabled by default
 +    base::FEATURE_DISABLED_BY_DEFAULT};                     // in Bromite
  
- #if BUILDFLAG(IS_ANDROID)
- 
+ const base::Feature kPermissionOnDeviceGeolocationPredictions{
+     "PermissionOnDeviceGeolocationPredictions",
 diff --git a/components/segmentation_platform/public/features.cc b/components/segmentation_platform/public/features.cc
 --- a/components/segmentation_platform/public/features.cc
 +++ b/components/segmentation_platform/public/features.cc
-@@ -27,7 +27,7 @@ const base::Feature kSegmentationPlatformLowEngagementFeature{
+@@ -30,7 +30,7 @@ const base::Feature kShoppingUserSegmentFeature{
  const base::Feature kSegmentationPlatformFeedSegmentFeature{
    "SegmentationPlatformFeedSegmentFeature",
  #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
@@ -270,7 +270,7 @@ diff --git a/components/segmentation_platform/public/features.cc b/components/se
 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
-@@ -245,7 +245,7 @@ const base::Feature kViewportHeightClientHintHeader{
+@@ -206,7 +206,7 @@ const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent",
  const base::Feature kNavigationPredictor {
    "NavigationPredictor",
  #if BUILDFLAG(IS_ANDROID)

+ 3 - 3
build/patches/Disable-all-promo-dialogs.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/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
-@@ -873,7 +873,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -850,7 +850,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
       * displayed.
       */
      private boolean triggerPromo(boolean intentWithEffect) {
@@ -19,7 +19,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
              if (CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_STARTUP_PROMOS)) {
                  return false;
              }
-@@ -908,8 +908,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -885,8 +885,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }
@@ -29,6 +29,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
 +            return false;
      }
  
-     private boolean maybeShowPromo() {
+     @VisibleForTesting
 --
 2.25.1

+ 10 - 10
build/patches/Disable-conversion-measurement-api.patch

@@ -27,7 +27,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -490,7 +490,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
+@@ -502,7 +502,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
                                               base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kAppToWebAttribution{"AppToWebAttribution",
@@ -139,19 +139,19 @@ diff --git a/content/browser/attribution_reporting/attribution_report_network_se
 diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/content/browser/attribution_reporting/attribution_storage_sql.cc
 --- a/content/browser/attribution_reporting/attribution_storage_sql.cc
 +++ b/content/browser/attribution_reporting/attribution_storage_sql.cc
-@@ -425,7 +425,7 @@ void AttributionStorageSql::RunInMemoryForTesting() {
+@@ -416,7 +416,7 @@ DestinationLimitResult GetDestinationLimitResult(
+   }
  }
  
- // static
--bool AttributionStorageSql::g_run_in_memory_ = false;
-+bool AttributionStorageSql::g_run_in_memory_ = true;
+-bool g_run_in_memory = false;
++bool g_run_in_memory = true;
+ 
+ }  // namespace
  
- // static
- bool AttributionStorageSql::DeleteStorageForTesting(
 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
-@@ -1317,12 +1317,7 @@ void StoragePartitionImpl::Initialize(
+@@ -1315,12 +1315,7 @@ void StoragePartitionImpl::Initialize(
  
    bucket_manager_ = std::make_unique<BucketManager>(this);
  
@@ -179,7 +179,7 @@ diff --git a/content/public/browser/navigation_controller.cc b/content/public/br
 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
-@@ -109,7 +109,7 @@ const base::Feature kCSSContainerQueries{"CSSContainerQueries",
+@@ -107,7 +107,7 @@ const base::Feature kBlockingDownloadsInAdFrameWithoutUserActivation{
  
  // Controls whether the Conversion Measurement API infrastructure is enabled.
  const base::Feature kConversionMeasurement{"ConversionMeasurement",
@@ -191,7 +191,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
 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
-@@ -106,6 +106,13 @@
+@@ -176,6 +176,13 @@
    },
  
    data: [

+ 1 - 1
build/patches/Disable-crash-reporting.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -227,8 +227,8 @@ const base::Feature kCooperativeScheduling{"CooperativeScheduling",
+@@ -224,8 +224,8 @@ const base::Feature kCooperativeScheduling{"CooperativeScheduling",
  
  // Enables crash reporting via Reporting API.
  // https://www.w3.org/TR/reporting/#crash-report

+ 1 - 1
build/patches/Disable-feeds-support-by-default.patch

@@ -30,7 +30,7 @@ diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/fe
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -77,7 +77,7 @@ public class CachedFeatureFlags {
+@@ -78,7 +78,7 @@ public class CachedFeatureFlags {
                      .put(ChromeFeatureList.INCOGNITO_REAUTHENTICATION_FOR_ANDROID, false)
                      .put(ChromeFeatureList.INSTANCE_SWITCHER, true)
                      .put(ChromeFeatureList.INSTANT_START, false)

+ 5 - 5
build/patches/Disable-fetching-of-all-field-trials.patch

@@ -53,7 +53,7 @@ diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/s
 diff --git a/chrome/browser/metrics/chrome_browser_sampling_trials.cc b/chrome/browser/metrics/chrome_browser_sampling_trials.cc
 --- a/chrome/browser/metrics/chrome_browser_sampling_trials.cc
 +++ b/chrome/browser/metrics/chrome_browser_sampling_trials.cc
-@@ -51,6 +51,8 @@ void CreateFallbackSamplingTrial(const std::string& trial_name,
+@@ -52,6 +52,8 @@ void CreateFallbackSamplingTrial(const std::string& trial_name,
                                   const std::string& feature_name,
                                   const int sampled_in_rate_per_mille,
                                   base::FeatureList* feature_list) {
@@ -183,7 +183,7 @@ diff --git a/components/variations/service/variations_field_trial_creator.cc b/c
 diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 --- a/components/variations/service/variations_service.cc
 +++ b/components/variations/service/variations_service.cc
-@@ -235,17 +235,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -220,17 +220,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
  // Variations seed fetching is only enabled in official Chrome builds, if a URL
  // is specified on the command line, and for testing.
  bool IsFetchingEnabled() {
@@ -202,8 +202,8 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
 +  return false;
  }
  
- std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
-@@ -599,7 +590,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
+ // Returns the already downloaded first run seed, and clear the seed from the
+@@ -589,7 +580,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
    // debugger or if the machine was suspended) and OnURLFetchComplete() hasn't
    // had a chance to run yet from the previous request. In this case, don't
    // start a new request and just let the previous one finish.
@@ -215,7 +215,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
 diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
 --- a/third_party/blink/renderer/core/loader/document_loader.cc
 +++ b/third_party/blink/renderer/core/loader/document_loader.cc
-@@ -175,13 +175,6 @@ Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
+@@ -176,13 +176,6 @@ Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
  WebVector<int> CopyInitiatorOriginTrials(
      const Vector<OriginTrialFeature>& initiator_origin_trial_features) {
    WebVector<int> result;

+ 1 - 1
build/patches/Disable-idle-detection.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -438,7 +438,7 @@ const base::Feature kIdentityInCanMakePaymentEventFeature{
+@@ -444,7 +444,7 @@ const base::Feature kIdentityInCanMakePaymentEventFeature{
  // this feature, the experimental web platform features flag should be set,
  // or the site should obtain an Origin Trial token.
  const base::Feature kIdleDetection{"IdleDetection",

+ 1 - 1
build/patches/Disable-lock-icon-in-address-bar-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/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
 --- a/components/omnibox/common/omnibox_features.cc
 +++ b/components/omnibox/common/omnibox_features.cc
-@@ -353,7 +353,7 @@ const base::Feature kSiteSearchStarterPack{"OmniboxSiteSearchStarterPack",
+@@ -367,7 +367,7 @@ const base::Feature kSiteSearchStarterPack{"OmniboxSiteSearchStarterPack",
  // Experiment to introduce new security indicators for HTTPS.
  const base::Feature kUpdatedConnectionSecurityIndicators{
      "OmniboxUpdatedConnectionSecurityIndicators",

+ 1 - 1
build/patches/Disable-media-router-and-remoting-by-default.patch

@@ -66,7 +66,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.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
-@@ -414,7 +414,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -419,7 +419,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

Разница между файлами не показана из-за своего большого размера
+ 181 - 117
build/patches/Disable-safe-browsing.patch


+ 6 - 6
build/patches/Disable-safety-check.patch

@@ -13,7 +13,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
-@@ -415,7 +415,6 @@ android_library("chrome_java") {
+@@ -416,7 +416,6 @@ android_library("chrome_java") {
      "//chrome/browser/privacy_sandbox/android:java",
      "//chrome/browser/profiles/android:java",
      "//chrome/browser/safe_browsing/android:java",
@@ -21,16 +21,16 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/browser/search_engines/android:java",
      "//chrome/browser/search_resumption:java",
      "//chrome/browser/segmentation_platform:factory_java",
-@@ -1041,8 +1040,6 @@ robolectric_binary("chrome_junit_tests") {
-     "//chrome/browser/preferences:preferences_junit_tests",
+@@ -1049,8 +1048,6 @@ robolectric_binary("chrome_junit_tests") {
      "//chrome/browser/privacy_guide/android:java",
+     "//chrome/browser/privacy_guide/android:junit",
      "//chrome/browser/profiles/android:java",
 -    "//chrome/browser/safety_check/android:java",
 -    "//chrome/browser/safety_check/android:junit",
      "//chrome/browser/search_engines/android:java",
      "//chrome/browser/search_resumption:junit",
      "//chrome/browser/segmentation_platform:factory_java",
-@@ -1570,8 +1567,6 @@ android_library("chrome_test_java") {
+@@ -1583,8 +1580,6 @@ android_library("chrome_test_java") {
      "//chrome/browser/profiles/android:java",
      "//chrome/browser/safe_browsing/android:java",
      "//chrome/browser/safe_browsing/android:javatests",
@@ -42,7 +42,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
-@@ -941,7 +941,6 @@ chrome_java_sources = [
+@@ -944,7 +944,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/SafeBrowsingSettingsLauncher.java",
@@ -85,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/Omn
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -3306,7 +3306,6 @@ static_library("browser") {
+@@ -3333,7 +3333,6 @@ static_library("browser") {
        "//chrome/browser/privacy_sandbox/android:jni_headers",
        "//chrome/browser/reading_list/android",
        "//chrome/browser/safe_browsing/android:safe_browsing_enums",

+ 5 - 5
build/patches/Disable-smart-selection-by-default.patch

@@ -42,7 +42,7 @@ 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
-@@ -189,6 +189,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -190,6 +190,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kCCTBrandTransparency,
      &kCCTClientDataHeader,
      &kCCTIncognito,
@@ -50,7 +50,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCCTIncognitoAvailableToThirdParty,
      &kCCTNewDownloadTab,
      &kCCTPackageNameRecording,
-@@ -590,6 +591,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
+@@ -605,6 +606,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
  const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -61,6 +61,7 @@ extern const base::Feature kCacheDeprecatedSystemLocationSetting;
+@@ -62,6 +62,7 @@ extern const base::Feature kCacheDeprecatedSystemLocationSetting;
  extern const base::Feature kChromeNewDownloadTab;
  extern const base::Feature kChromeShareLongScreenshot;
  extern const base::Feature kChromeShareScreenshot;
@@ -97,7 +97,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
 diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
 --- a/testing/variations/fieldtrial_testing_config.json
 +++ b/testing/variations/fieldtrial_testing_config.json
-@@ -2705,6 +2705,21 @@
+@@ -2834,6 +2834,21 @@
              ]
          }
      ],
@@ -116,7 +116,7 @@ diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variati
 +            ]
 +        }
 +    ],
-     "ChromeStart": [
+     "CommerceHintAndroid": [
          {
              "platforms": [
 --

+ 3 - 6
build/patches/Disable-some-signed-exchange-features.patch

@@ -10,23 +10,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -883,7 +883,7 @@ const base::Feature kSharedArrayBufferOnDesktop{
+@@ -896,12 +896,12 @@ const base::Feature kSharedArrayBufferOnDesktop{
  // Signed Exchange Reporting for distributors
  // https://www.chromestatus.com/feature/5687904902840320
  const base::Feature kSignedExchangeReportingForDistributors{
 -    "SignedExchangeReportingForDistributors", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "SignedExchangeReportingForDistributors", base::FEATURE_DISABLED_BY_DEFAULT};
  
- // Subresource prefetching+loading via Signed HTTP Exchange
- // https://www.chromestatus.com/feature/5126805474246656
-@@ -893,7 +893,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/feature/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",
 -                                        base::FEATURE_ENABLED_BY_DEFAULT};
 +                                        base::FEATURE_DISABLED_BY_DEFAULT};
  
- // Whether to send a ping to the inner URL upon navigation or not.
- const base::Feature kSignedHTTPExchangePingValidity{
+ // Delays RenderProcessHost shutdown by a few seconds to allow the subframe's
+ // process to be potentially reused. This aims to reduce process churn in
 --
 2.25.1

+ 40 - 24
build/patches/Disable-text-fragments-by-default.patch

@@ -12,16 +12,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  chrome/browser/flag_descriptions.cc                          | 4 ++++
  chrome/browser/flag_descriptions.h                           | 3 +++
  chrome/browser/ui/prefs/prefs_tab_helper.cc                  | 2 +-
- content/child/runtime_features.cc                            | 2 +-
- third_party/blink/common/features.cc                         | 2 +-
+ content/child/runtime_features.cc                            | 1 +
+ third_party/blink/common/features.cc                         | 4 ++++
+ third_party/blink/public/common/features.h                   | 1 +
  third_party/blink/renderer/core/dom/document.cc              | 5 +++++
- .../blink/renderer/platform/runtime_enabled_features.json5   | 3 +--
- 9 files changed, 26 insertions(+), 5 deletions(-)
+ .../blink/renderer/platform/runtime_enabled_features.json5   | 5 ++---
+ 10 files changed, 31 insertions(+), 4 deletions(-)
 
 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
-@@ -5959,6 +5959,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6080,6 +6080,11 @@ const FeatureEntry kFeatureEntries[] = {
           "")},
  #endif
  
@@ -36,7 +37,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 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
-@@ -2646,6 +2646,11 @@
+@@ -2699,6 +2699,11 @@
      "owners": [ "alionadangla", "bwwilliams", "bling-flags@google.com"],
      "expiry_milestone": 105
    },
@@ -51,7 +52,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1373,6 +1373,10 @@ const char kEnableRestrictedWebApisDescription[] =
+@@ -1387,6 +1387,10 @@ const char kEnableRestrictedWebApisDescription[] =
      "Enable the restricted web APIs for dev trial. This will be replaced with "
      "permission policies to control the capabilities afterwards.";
  
@@ -65,7 +66,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -764,6 +764,9 @@ extern const char
+@@ -767,6 +767,9 @@ extern const char
  extern const char kEnableRestrictedWebApisName[];
  extern const char kEnableRestrictedWebApisDescription[];
  
@@ -90,31 +91,43 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre
 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
-@@ -283,7 +283,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
-     {wf::EnableSpeculationRulesPrefetchProxy,
-      blink::features::kSpeculationRulesPrefetchProxy, kSetOnlyIfOverridden},
+@@ -270,6 +270,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
+      features::kSharedArrayBufferOnDesktop},
+     {wf::EnableSharedAutofill, autofill::features::kAutofillSharedAutofill},
      {wf::EnableSubresourceWebBundles, features::kSubresourceWebBundles},
--    {wf::EnableTextFragmentAnchor, blink::features::kTextFragmentAnchor},
-+    {wf::EnableTextFragmentAnchor, blink::features::kTextFragmentAnchor}, // will set the TextFragmentIdentifiers runtime feature
++    {wf::EnableTextFragmentIdentifiers, blink::features::kTextFragmentAnchor},
      {wf::EnableTouchDragAndContextMenu, features::kTouchDragAndContextMenu},
-     {wf::EnableCSSSelectorFragmentAnchor,
-      blink::features::kCssSelectorFragmentAnchor},
+     {wf::EnableUserActivationSameOriginVisibility,
+      features::kUserActivationSameOriginVisibility},
 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
-@@ -521,7 +521,7 @@ const base::Feature kStopInBackground {
+@@ -449,6 +449,10 @@ const base::Feature kStopInBackground {
+ const base::Feature kDropInputEventsBeforeFirstPaint{
+     "DropInputEventsBeforeFirstPaint", base::FEATURE_DISABLED_BY_DEFAULT};
  
- // Enable text snippets in URL fragments. https://crbug.com/919204.
- const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
--                                        base::FEATURE_ENABLED_BY_DEFAULT};
++// Enable text snippets in URL fragments. https://crbug.com/919204.
++const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
 +                                        base::FEATURE_DISABLED_BY_DEFAULT};
- 
- // Enables CSS selector fragment anchors. https://crbug.com/1252460
- const base::Feature kCssSelectorFragmentAnchor{
++
+ // File handling icons. https://crbug.com/1218213
+ const base::Feature kFileHandlingIcons{"FileHandlingIcons",
+                                        base::FEATURE_DISABLED_BY_DEFAULT};
+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
+@@ -224,6 +224,7 @@ BLINK_COMMON_EXPORT extern const base::Feature kResourceLoadViaDataPipe;
+ BLINK_COMMON_EXPORT extern const base::Feature kServiceWorkerUpdateDelay;
+ BLINK_COMMON_EXPORT extern const base::Feature kStopInBackground;
+ BLINK_COMMON_EXPORT extern const base::Feature kDropInputEventsBeforeFirstPaint;
++BLINK_COMMON_EXPORT extern const base::Feature kTextFragmentAnchor;
+ BLINK_COMMON_EXPORT extern const base::Feature kFileHandlingIcons;
+ BLINK_COMMON_EXPORT extern const base::Feature kAllowSyncXHRInPageDismissal;
+ BLINK_COMMON_EXPORT extern const base::Feature kPrefetchPrivacyChanges;
 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
-@@ -4241,9 +4241,14 @@ void Document::SetURL(const KURL& url) {
+@@ -4257,9 +4257,14 @@ void Document::SetURL(const KURL& url) {
    TRACE_EVENT1("navigation", "Document::SetURL", "url",
                 new_url.GetString().Utf8());
  
@@ -132,12 +145,15 @@ 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
-@@ -2243,8 +2243,7 @@
+@@ -2545,10 +2545,9 @@
      },
      {
        name: "TextFragmentIdentifiers",
 -      origin_trial_feature_name: "TextFragmentIdentifiers",
+       public: true,
 -      status: "stable",
+-      base_feature: "TextFragmentAnchor",
++      status: "test",
 +      origin_trial_feature_name: "TextFragmentIdentifiers"
      },
      {

+ 8 - 8
build/patches/Disable-third-party-origin-trials.patch

@@ -60,7 +60,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
-@@ -7289,7 +7289,6 @@ void NavigationRequest::RestartBackForwardCachedNavigationImpl() {
+@@ -7323,7 +7323,6 @@ void NavigationRequest::RestartBackForwardCachedNavigationImpl() {
  void NavigationRequest::ForceEnableOriginTrials(
      const std::vector<std::string>& trials) {
    DCHECK(!HasCommitted());
@@ -71,7 +71,7 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows
 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
-@@ -476,10 +476,6 @@ void FillNavigationParamsRequest(
+@@ -474,10 +474,6 @@ void FillNavigationParamsRequest(
          common_params.initiator_origin.value();
    }
  
@@ -82,7 +82,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;
-@@ -512,12 +508,6 @@ void FillNavigationParamsRequest(
+@@ -510,12 +506,6 @@ void FillNavigationParamsRequest(
    navigation_params->web_bundle_claimed_url =
        commit_params.web_bundle_claimed_url;
  
@@ -95,7 +95,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra
    if (!commit_params.early_hints_preloaded_resources.empty()) {
      navigation_params->early_hints_preloaded_resources = WebVector<WebURL>();
      for (const auto& resource : commit_params.early_hints_preloaded_resources) {
-@@ -564,11 +554,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
+@@ -562,11 +552,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
            info->url_request.GetURLRequestExtraData().get());
    DCHECK(url_request_extra_data);
  
@@ -107,7 +107,7 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra
    blink::NavigationDownloadPolicy download_policy;
    download_policy.ApplyDownloadFramePolicy(
        info->is_opener_navigation, info->url_request.HasUserGesture(),
-@@ -586,7 +571,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
+@@ -584,7 +569,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
        info->url_request.HasUserGesture(),
        info->url_request.HasTextFragmentToken(),
        info->should_check_main_world_content_security_policy,
@@ -159,7 +159,7 @@ diff --git a/third_party/blink/common/origin_trials/trial_token_validator.cc b/t
 diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
 --- a/third_party/blink/renderer/core/loader/document_loader.cc
 +++ b/third_party/blink/renderer/core/loader/document_loader.cc
-@@ -162,13 +162,6 @@ constexpr base::FeatureParam<bool> kCacheInlineScriptCodeFixConfiguring{
+@@ -163,13 +163,6 @@ constexpr base::FeatureParam<bool> kCacheInlineScriptCodeFixConfiguring{
  Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
      const WebVector<int>& initiator_origin_trial_features) {
    Vector<OriginTrialFeature> result;
@@ -173,7 +173,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
    return result;
  }
  
-@@ -181,18 +174,12 @@ WebVector<int> CopyInitiatorOriginTrials(
+@@ -182,18 +175,12 @@ WebVector<int> CopyInitiatorOriginTrials(
  Vector<String> CopyForceEnabledOriginTrials(
      const WebVector<WebString>& force_enabled_origin_trials) {
    Vector<String> result;
@@ -192,7 +192,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
    return result;
  }
  
-@@ -2577,10 +2564,6 @@ void DocumentLoader::CreateParserPostCommit() {
+@@ -2580,10 +2567,6 @@ void DocumentLoader::CreateParserPostCommit() {
            OriginTrialFeature::kTouchEventFeatureDetection);
      }
  

+ 1 - 1
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/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
 --- a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
 +++ b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
-@@ -34,9 +34,7 @@ public class UpdateScheduler {
+@@ -33,9 +33,7 @@ public class UpdateScheduler {
  
      @CalledByNative
      /* package */ static boolean isAvailable() {

+ 4 - 4
build/patches/Disable-various-metrics.patch

@@ -89,7 +89,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
-@@ -998,7 +998,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -991,7 +991,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
@@ -101,7 +101,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
-@@ -63,7 +63,6 @@
+@@ -64,7 +64,6 @@
  #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/interstitials/enterprise_util.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
@@ -109,7 +109,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/media/audio_service_util.h"
  #include "chrome/browser/media/router/media_router_feature.h"
  #include "chrome/browser/media/webrtc/audio_debug_recordings_handler.h"
-@@ -4394,16 +4393,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4479,16 +4478,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -126,7 +126,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
    MaybeAddThrottle(
        SupervisedUserNavigationThrottle::MaybeCreateThrottleFor(handle),
-@@ -4488,10 +4477,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4573,10 +4562,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      throttle_manager->MaybeAppendNavigationThrottles(handle, &throttles);
    }
  

+ 1 - 1
build/patches/Do-not-build-API-keys-infobar.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -1286,8 +1286,6 @@ static_library("ui") {
+@@ -1295,8 +1295,6 @@ static_library("ui") {
        "singleton_tabs.h",
        "startup/automation_infobar_delegate.cc",
        "startup/automation_infobar_delegate.h",

+ 2 - 2
build/patches/Do-not-compile-QR-code-sharing.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/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
-@@ -96,7 +96,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
+@@ -97,7 +97,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
  import org.chromium.chrome.browser.share.ShareDelegate;
  import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin;
  import org.chromium.chrome.browser.share.ShareUtils;
@@ -22,7 +22,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;
-@@ -493,10 +492,6 @@ public class RootUiCoordinator
+@@ -496,10 +495,6 @@ public class RootUiCoordinator
      }
  
      public void onAttachFragment(Fragment fragment) {

+ 1 - 1
build/patches/Do-not-hide-component-extensions.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
-@@ -459,9 +459,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
+@@ -465,9 +465,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
  }
  
  bool Extension::ShouldExposeViaManagementAPI() const {

+ 1 - 1
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
-@@ -1543,7 +1543,7 @@ mixed_component("base") {
+@@ -1559,7 +1559,7 @@ mixed_component("base") {
    # more robust check for this.
    if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos)) &&
        host_toolchain != "//build/toolchain/cros:host") {

+ 1 - 1
build/patches/DoH-improvements.patch

@@ -82,7 +82,7 @@ diff --git a/net/dns/dns_client.cc b/net/dns/dns_client.cc
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
-@@ -3283,6 +3283,7 @@ void HostResolverManager::SetDnsConfigOverrides(DnsConfigOverrides overrides) {
+@@ -3293,6 +3293,7 @@ void HostResolverManager::SetDnsConfigOverrides(DnsConfigOverrides overrides) {
    bool changed = dns_client_->SetConfigOverrides(std::move(overrides));
  
    if (changed) {

+ 23 - 18
build/patches/Enable-Certificate-Transparency.patch

@@ -3,6 +3,8 @@ Date: Fri, 10 Jun 2022 14:20:02 +0200
 Subject: Enable Certificate Transparency
 
 Reporting/auditing functionalities are disabled; a flag is exposed.
+Add guard to make sure that certificate transparency stays enabled
+by default.
 
 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 ---
@@ -13,16 +15,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  chrome/browser/net/system_network_context_manager.cc  | 4 ----
  chrome/browser/ssl/sct_reporting_service.cc           | 5 +++++
  chrome/common/chrome_features.cc                      | 6 +++---
- net/http/transport_security_state.cc                  | 5 +++--
+ net/http/transport_security_state.cc                  | 9 +++++----
  net/url_request/report_sender.cc                      | 3 ++-
  services/network/network_context.cc                   | 2 +-
  services/network/sct_auditing/sct_auditing_handler.cc | 2 ++
- 11 files changed, 29 insertions(+), 12 deletions(-)
+ 11 files changed, 31 insertions(+), 14 deletions(-)
 
 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
-@@ -8658,6 +8658,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8848,6 +8848,11 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebMidiDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kWebMidi)},
  #if BUILDFLAG(IS_ANDROID)
@@ -49,7 +51,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -6504,6 +6504,10 @@ const char kAutofillCreditCardUploadDescription[] =
+@@ -6652,6 +6652,10 @@ const char kAutofillCreditCardUploadDescription[] =
  #endif  // defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
  
  #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
@@ -63,7 +65,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -3767,6 +3767,9 @@ extern const char kAutofillCreditCardUploadDescription[];
+@@ -3848,6 +3848,9 @@ extern const char kAutofillCreditCardUploadDescription[];
  #endif  // defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
  
  #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
@@ -76,7 +78,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -914,7 +914,6 @@ void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
+@@ -851,7 +851,6 @@ void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
  bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
    if (certificate_transparency_enabled_for_testing_.has_value())
      return certificate_transparency_enabled_for_testing_.value();
@@ -84,7 +86,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  // TODO(carlosil): Figure out if we can/should remove the OFFICIAL_BUILD and
  // GOOGLE_CHROME_BRANDING checks now that enforcement does not rely on build
  // dates, and allow embedders to enforce.
-@@ -928,9 +927,6 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
+@@ -865,9 +864,6 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
  #else
    return true;
  #endif  // BUILDFLAG(IS_ANDROID)
@@ -112,7 +114,7 @@ diff --git a/chrome/browser/ssl/sct_reporting_service.cc b/chrome/browser/ssl/sc
 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
-@@ -822,9 +822,9 @@ const base::Feature kSchedulerConfiguration{"SchedulerConfiguration",
+@@ -838,9 +838,9 @@ const base::Feature kSchedulerConfiguration{"SchedulerConfiguration",
  
  // Controls whether SCT audit reports are queued and the rate at which they
  // should be sampled. Default sampling rate is 1/10,000 certificates.
@@ -136,24 +138,27 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_
    if (g_hsts_source == nullptr)
      return false;
  #endif
-@@ -383,11 +384,11 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) {
+@@ -382,12 +383,12 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) {
+ }  // namespace
  
  // static
- const base::Feature TransportSecurityState::kDynamicExpectCTFeature{
--    "DynamicExpectCT", base::FEATURE_ENABLED_BY_DEFAULT};
-+    "DynamicExpectCT", base::FEATURE_DISABLED_BY_DEFAULT};                         // disabled in Bromite
+-const base::Feature TransportSecurityState::kDynamicExpectCTFeature{
+-    "DynamicExpectCT", base::FEATURE_DISABLED_BY_DEFAULT};
++const base::Feature TransportSecurityState::kDynamicExpectCTFeature{   // must stay disabled
++    "DynamicExpectCT", base::FEATURE_DISABLED_BY_DEFAULT};             // in Bromite
  
  // static
- const base::Feature TransportSecurityState::kCertificateTransparencyEnforcement{
+-const base::Feature TransportSecurityState::kCertificateTransparencyEnforcement{
 -    "CertificateTransparencyEnforcement", base::FEATURE_ENABLED_BY_DEFAULT};
-+    "CertificateTransparencyEnforcement", base::FEATURE_ENABLED_BY_DEFAULT};       // always enabled in Bromite
++const base::Feature TransportSecurityState::kCertificateTransparencyEnforcement{   // must stay enabled
++    "CertificateTransparencyEnforcement", base::FEATURE_ENABLED_BY_DEFAULT};       // in Bromite
  
  void SetTransportSecurityStateSourceForTesting(
      const TransportSecurityStateSource* source) {
 diff --git a/net/url_request/report_sender.cc b/net/url_request/report_sender.cc
 --- a/net/url_request/report_sender.cc
 +++ b/net/url_request/report_sender.cc
-@@ -86,7 +86,8 @@ void ReportSender::Send(const GURL& report_uri,
+@@ -87,7 +87,8 @@ void ReportSender::Send(
  
    URLRequest* raw_url_request = url_request.get();
    inflight_requests_[raw_url_request] = std::move(url_request);
@@ -166,7 +171,7 @@ diff --git a/net/url_request/report_sender.cc b/net/url_request/report_sender.cc
 diff --git a/services/network/network_context.cc b/services/network/network_context.cc
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
-@@ -2658,7 +2658,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -2662,7 +2662,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
    // TransportSecurityState.  Since no requests have been made yet, safe to do
    // this even after the call to Build().
  
@@ -178,7 +183,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
 diff --git a/services/network/sct_auditing/sct_auditing_handler.cc b/services/network/sct_auditing/sct_auditing_handler.cc
 --- a/services/network/sct_auditing/sct_auditing_handler.cc
 +++ b/services/network/sct_auditing/sct_auditing_handler.cc
-@@ -115,6 +115,7 @@ void SCTAuditingHandler::MaybeEnqueueReport(
+@@ -114,6 +114,7 @@ void SCTAuditingHandler::MaybeEnqueueReport(
    if (mode_ == mojom::SCTAuditingMode::kDisabled) {
      return;
    }
@@ -186,7 +191,7 @@ diff --git a/services/network/sct_auditing/sct_auditing_handler.cc b/services/ne
  
    // Only audit valid SCTs. This ensures that they come from a known log, have
    // a valid signature, and thus are expected to be public certificates. If
-@@ -330,6 +331,7 @@ void SCTAuditingHandler::AddReporter(
+@@ -329,6 +330,7 @@ void SCTAuditingHandler::AddReporter(
    if (mode_ == mojom::SCTAuditingMode::kDisabled) {
      return;
    }

+ 1 - 1
build/patches/Enable-ECH-by-default.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -114,8 +114,8 @@ const base::Feature kDisableTLSResumption{"DisableTLSResumption",
+@@ -116,8 +116,8 @@ const base::Feature kDisableTLSResumption{"DisableTLSResumption",
  const base::Feature kLogTLSResumption{"LogTLSResumption",
                                        base::FEATURE_DISABLED_BY_DEFAULT};
  

+ 10 - 6
build/patches/Enable-HEVC-by-default.patch

@@ -2,20 +2,24 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Tue, 27 Sep 2022 23:39:54 +0200
 Subject: Enable HEVC by default
 
+Add a guard to avoid setting to be disabled upstream.
+
 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 ---
- media/base/media_switches.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ media/base/media_switches.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 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
-@@ -275,7 +275,7 @@ const base::Feature kPictureInPicture{"PictureInPicture",
+@@ -270,8 +270,8 @@ const base::Feature kPictureInPicture{"PictureInPicture",
+ 
  #if BUILDFLAG(ENABLE_PLATFORM_HEVC)
  // Enables HEVC hardware accelerated decoding.
- const base::Feature kPlatformHEVCDecoderSupport{
--    "PlatformHEVCDecoderSupport", base::FEATURE_DISABLED_BY_DEFAULT};
-+    "PlatformHEVCDecoderSupport", base::FEATURE_ENABLED_BY_DEFAULT};
+-const base::Feature kPlatformHEVCDecoderSupport{
+-    "PlatformHEVCDecoderSupport", base::FEATURE_ENABLED_BY_DEFAULT};
++const base::Feature kPlatformHEVCDecoderSupport{                       // must be enabled
++    "PlatformHEVCDecoderSupport", base::FEATURE_ENABLED_BY_DEFAULT};   // in Bromite
  #endif  // BUILDFLAG(ENABLE_PLATFORM_HEVC)
  
  // Only decode preload=metadata elements upon visibility.

+ 1 - 1
build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -34,7 +34,7 @@ const base::Feature kAutofillAssistantGoogleInitiatorOriginCheck{
+@@ -36,7 +36,7 @@ const base::Feature kExternalNavigationDebugLogs{
  
  const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
      "IntentBlockExternalFormRedirectsNoGesture",

+ 1 - 1
build/patches/Enable-SPPI-for-devices-with-enough-memory.patch

@@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -873,11 +873,7 @@ const base::Feature kSecurityKeyAttestationPrompt{
+@@ -889,11 +889,7 @@ const base::Feature kSecurityKeyAttestationPrompt{
  // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
    "SitePerProcess",

+ 4 - 4
build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch

@@ -18,7 +18,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
-@@ -4348,9 +4348,6 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4445,9 +4445,6 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kSiteIsolationForPasswordSitesDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(
           site_isolation::features::kSiteIsolationForPasswordSites)},
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1364,7 +1364,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1415,7 +1415,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
    registry->RegisterFilePathPref(prefs::kDiskCacheDir, base::FilePath());
    registry->RegisterIntegerPref(prefs::kDiskCacheSize, 0);
    registry->RegisterStringPref(prefs::kIsolateOrigins, std::string());
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    registry->RegisterBooleanPref(prefs::kTabFreezingEnabled, true);
    registry->RegisterIntegerPref(prefs::kSCTAuditingHashdanceReportCount, 0);
  }
-@@ -1378,7 +1378,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
+@@ -1429,7 +1429,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
    // user policy in addition to the same named ones in Local State (which are
    // used for mapping the command-line flags).
    registry->RegisterStringPref(prefs::kIsolateOrigins, std::string());
@@ -71,7 +71,7 @@ diff --git a/components/site_isolation/site_isolation_policy.cc b/components/sit
 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
-@@ -988,7 +988,7 @@ const base::Feature kStopVideoCaptureOnScreenLock{
+@@ -1000,7 +1000,7 @@ const base::Feature kStopVideoCaptureOnScreenLock{
  // Controls whether site isolation should use origins instead of scheme and
  // eTLD+1.
  const base::Feature kStrictOriginIsolation{"StrictOriginIsolation",

+ 1 - 1
build/patches/Enable-darken-websites-checkbox-in-themes.patch

@@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1175,9 +1175,9 @@
+@@ -1225,9 +1225,9 @@
      "expiry_milestone": 110
    },
    {

+ 124 - 111
build/patches/Enable-native-Android-autofill.patch

@@ -55,7 +55,7 @@ diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -477,6 +477,7 @@ android_library("chrome_java") {
+@@ -461,6 +461,7 @@ android_library("chrome_java") {
      "//components/autofill_assistant/android:public_dependencies_java",
      "//components/autofill_assistant/android:public_java",
      "//components/autofill_assistant/browser:proto_java",
@@ -99,24 +99,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
      private static final String PREF_KEY_CATEGORY_SAVED_PASSWORDS = "saved_passwords";
      private static final String PREF_KEY_CATEGORY_EXCEPTIONS = "exceptions";
      private static final String PREF_KEY_SAVED_PASSWORDS_NO_TEXT = "saved_passwords_no_text";
-@@ -119,6 +130,8 @@ public class PasswordSettings extends PreferenceFragmentCompat
-     private String mSearchQuery;
+@@ -120,6 +131,8 @@ public class PasswordSettings extends PreferenceFragmentCompat
      private Preference mLinkPref;
      private Menu mMenu;
+ 
 +    private ChromeSwitchPreference mEnableAndroidAutofillSwitch;
 +    private ChromeSwitchPreference mEnableAndroidAutofillIncognitoSwitch;
- 
-     private @Nullable PasswordCheck mPasswordCheck;
      private @ManagePasswordsReferrer int mManagePasswordsReferrer;
-@@ -286,6 +299,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
+ 
+     /**
+@@ -284,6 +297,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
          }
  
          createSavePasswordsSwitch();
 +        createEnableAndroidAutofillSwitch();
          createAutoSignInCheckbox();
-         if (mPasswordCheck != null) {
-             createCheckPasswords();
-@@ -525,6 +539,71 @@ public class PasswordSettings extends PreferenceFragmentCompat
+ 
+         if (mTrustedVaultBannerState == TrustedVaultBannerState.OPTED_IN) {
+@@ -518,6 +532,71 @@ public class PasswordSettings extends PreferenceFragmentCompat
                  getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE));
      }
  
@@ -191,7 +191,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
 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
-@@ -75,6 +75,17 @@ import org.chromium.ui.base.WindowAndroid;
+@@ -74,6 +74,17 @@ import org.chromium.ui.base.WindowAndroid;
  import org.chromium.ui.util.ColorUtils;
  import org.chromium.url.GURL;
  
@@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
  /**
   * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}.
   * This class is not intended to be extended.
-@@ -212,6 +223,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -211,6 +222,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
      private int mThemeColor;
      private boolean mUsedCriticalPersistedTabData;
  
@@ -218,7 +218,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
      /**
       * Creates an instance of a {@link TabImpl}.
       *
-@@ -759,6 +772,11 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -775,6 +788,11 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
          for (TabObserver observer : mObservers) observer.onDestroyed(this);
          mObservers.clear();
  
@@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
          mUserDataHost.destroy();
          mTabViewManager.destroy();
          hideNativePage(false, null);
-@@ -1340,6 +1358,16 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1356,6 +1374,16 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
          return tabsPtrArray;
      }
  
@@ -247,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
      /**
       * Initializes the {@link WebContents}. Completes the browser content components initialization
       * around a native WebContents pointer.
-@@ -1389,6 +1417,27 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1405,6 +1433,27 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
                              mDelegateFactory.createContextMenuPopulatorFactory(this), this));
  
              mWebContents.notifyRendererPreferenceUpdate();
@@ -275,11 +275,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
              TabHelpers.initWebContentsHelpers(this);
              notifyContentChanged();
          } finally {
-@@ -1721,5 +1770,6 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1742,6 +1791,7 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
          void setActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, String title);
          void loadOriginalImage(long nativeTabAndroid);
          boolean handleNonNavigationAboutURL(GURL url);
 +        void initializeAutofillIfNecessary(long nativeTabAndroid);
+         void onShow(long nativeTabAndroid);
      }
  }
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java
@@ -314,7 +315,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndr
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2456,6 +2456,13 @@ static_library("browser") {
+@@ -2478,6 +2478,13 @@ static_library("browser") {
      deps += [ "//chrome/browser/error_reporting" ]
    }
  
@@ -331,7 +332,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
 --- a/chrome/browser/android/tab_android.cc
 +++ b/chrome/browser/android/tab_android.cc
-@@ -69,6 +69,13 @@
+@@ -70,6 +70,13 @@
  #include "url/android/gurl_android.h"
  #include "url/gurl.h"
  
@@ -345,7 +346,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
  using base::android::AttachCurrentThread;
  using base::android::ConvertUTF8ToJavaString;
  using base::android::JavaParamRef;
-@@ -470,3 +477,19 @@ static void JNI_TabImpl_Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
+@@ -505,3 +512,19 @@ static void JNI_TabImpl_Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
    // This will automatically bind to the Java object and pass ownership there.
    new TabAndroid(env, obj);
  }
@@ -368,7 +369,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_
 diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
 --- a/chrome/browser/android/tab_android.h
 +++ b/chrome/browser/android/tab_android.h
-@@ -160,6 +160,8 @@ class TabAndroid : public base::SupportsUserData {
+@@ -162,6 +162,8 @@ class TabAndroid : public base::SupportsUserData {
  
    void SetDevToolsAgentHost(scoped_refptr<content::DevToolsAgentHost> host);
  
@@ -380,7 +381,7 @@ diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_a
 diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrome/browser/android/tab_web_contents_delegate_android.cc
 --- a/chrome/browser/android/tab_web_contents_delegate_android.cc
 +++ b/chrome/browser/android/tab_web_contents_delegate_android.cc
-@@ -180,7 +180,8 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
+@@ -168,7 +168,8 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
        base::BindRepeating(
            &autofill::BrowserDriverInitHook,
            autofill::ChromeAutofillClient::FromWebContents(portal_contents),
@@ -409,7 +410,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 --- a/chrome/browser/ui/tab_helpers.cc
 +++ b/chrome/browser/ui/tab_helpers.cc
-@@ -164,6 +164,9 @@
+@@ -172,6 +172,9 @@
  #include "chrome/browser/ui/javascript_dialogs/javascript_tab_modal_dialog_manager_delegate_android.h"
  #include "chrome/browser/video_tutorials/video_tutorial_tab_helper.h"
  #include "content/public/common/content_features.h"
@@ -419,7 +420,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
  #else
  #include "chrome/browser/accuracy_tips/accuracy_service_factory.h"
  #include "chrome/browser/banners/app_banner_manager_desktop.h"
-@@ -321,7 +324,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -334,7 +337,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
        base::BindRepeating(
            &autofill::BrowserDriverInitHook,
            autofill::ChromeAutofillClient::FromWebContents(web_contents),
@@ -470,112 +471,125 @@ diff --git a/components/android_autofill/browser/android_autofill_manager.h b/co
 diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
 --- a/components/autofill/content/browser/content_autofill_driver.cc
 +++ b/components/autofill/content/browser/content_autofill_driver.cc
-@@ -272,6 +272,8 @@ void ContentAutofillDriver::FormsSeenImpl(
-     const std::vector<FormData>& updated_forms,
-     const std::vector<FormGlobalId>& removed_forms) {
-   autofill_manager_->OnFormsSeen(updated_forms, removed_forms);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnFormsSeen(updated_forms, removed_forms);
+@@ -317,6 +317,8 @@ void ContentAutofillDriver::FormsSeen(
+          const std::vector<FormData>& updated_forms,
+          const std::vector<FormGlobalId>& removed_forms) {
+         target->autofill_manager_->OnFormsSeen(updated_forms, removed_forms);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnFormsSeen(updated_forms, removed_forms);
+       });
  }
  
- void ContentAutofillDriver::SetFormToBeProbablySubmittedImpl(
-@@ -294,6 +296,8 @@ void ContentAutofillDriver::FormSubmittedImpl(const FormData& form,
-   }
- 
-   autofill_manager_->OnFormSubmitted(form, known_success, source);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnFormSubmitted(form, known_success, source);
+@@ -343,6 +345,8 @@ void ContentAutofillDriver::FormSubmitted(
+         }
+         target->autofill_manager_->OnFormSubmitted(form, known_success,
+                                                    submission_source);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnFormSubmitted(form, known_success, submission_source);
+       });
  }
  
- void ContentAutofillDriver::TextFieldDidChangeImpl(
-@@ -302,6 +306,8 @@ void ContentAutofillDriver::TextFieldDidChangeImpl(
-     const gfx::RectF& bounding_box,
-     base::TimeTicks timestamp) {
-   autofill_manager_->OnTextFieldDidChange(form, field, bounding_box, timestamp);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnTextFieldDidChange(form, field, bounding_box, timestamp);
+@@ -363,6 +367,8 @@ void ContentAutofillDriver::TextFieldDidChange(const FormData& raw_form,
+          base::TimeTicks timestamp) {
+         target->autofill_manager_->OnTextFieldDidChange(
+             form, field, bounding_box, timestamp);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnTextFieldDidChange(form, field, bounding_box, timestamp);
+       });
  }
  
- void ContentAutofillDriver::TextFieldDidScrollImpl(
-@@ -309,6 +315,8 @@ void ContentAutofillDriver::TextFieldDidScrollImpl(
-     const FormFieldData& field,
-     const gfx::RectF& bounding_box) {
-   autofill_manager_->OnTextFieldDidScroll(form, field, bounding_box);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnTextFieldDidScroll(form, field, bounding_box);
+@@ -381,6 +387,8 @@ void ContentAutofillDriver::TextFieldDidScroll(const FormData& raw_form,
+          const FormFieldData& field, const gfx::RectF& bounding_box) {
+         target->autofill_manager_->OnTextFieldDidScroll(form, field,
+                                                         bounding_box);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnTextFieldDidScroll(form, field, bounding_box);
+       });
  }
  
- void ContentAutofillDriver::SelectControlDidChangeImpl(
-@@ -316,6 +324,8 @@ void ContentAutofillDriver::SelectControlDidChangeImpl(
-     const FormFieldData& field,
-     const gfx::RectF& bounding_box) {
-   autofill_manager_->OnSelectControlDidChange(form, field, bounding_box);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnSelectControlDidChange(form, field, bounding_box);
+@@ -400,6 +408,8 @@ void ContentAutofillDriver::SelectControlDidChange(
+          const FormFieldData& field, const gfx::RectF& bounding_box) {
+         target->autofill_manager_->OnSelectControlDidChange(form, field,
+                                                             bounding_box);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnSelectControlDidChange(form, field, bounding_box);
+       });
  }
  
- void ContentAutofillDriver::AskForValuesToFillImpl(
-@@ -328,15 +338,23 @@ void ContentAutofillDriver::AskForValuesToFillImpl(
-   autofill_manager_->OnAskForValuesToFill(form, field, bounding_box, query_id,
-                                           autoselect_first_suggestion,
-                                           touch_to_fill_eligible);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnAskForValuesToFill(form, field, bounding_box, query_id,
-+                                          autoselect_first_suggestion,
-+                                          touch_to_fill_eligible);
+@@ -426,6 +436,10 @@ void ContentAutofillDriver::AskForValuesToFill(
+         target->autofill_manager_->OnAskForValuesToFill(
+             form, field, bounding_box, query_id, autoselect_first_suggestion,
+             form_element_was_clicked);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnAskForValuesToFill(form, field, bounding_box, query_id,
++                                                autoselect_first_suggestion,
++                                                form_element_was_clicked);
+       });
  }
  
- void ContentAutofillDriver::HidePopupImpl() {
-   DCHECK(!IsPrerendering()) << "We should never affect UI while prerendering";
-   autofill_manager_->OnHidePopup();
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnHidePopup();
+@@ -436,12 +450,16 @@ void ContentAutofillDriver::HidePopup() {
+     DCHECK(!target->IsPrerendering())
+         << "We should never affect UI while prerendering";
+     target->autofill_manager_->OnHidePopup();
++    if (target->secondary_autofill_manager_)
++      target->secondary_autofill_manager_->OnHidePopup();
+   });
  }
  
- void ContentAutofillDriver::FocusNoLongerOnFormImpl(bool had_interacted_form) {
+ void ContentAutofillDriver::FocusNoLongerOnFormCallback(
+     bool had_interacted_form) {
    autofill_manager_->OnFocusNoLongerOnForm(had_interacted_form);
 +  if (secondary_autofill_manager_)
 +    secondary_autofill_manager_->OnFocusNoLongerOnForm(had_interacted_form);
  }
  
- void ContentAutofillDriver::FocusOnFormFieldImpl(
-@@ -344,25 +362,35 @@ void ContentAutofillDriver::FocusOnFormFieldImpl(
-     const FormFieldData& field,
-     const gfx::RectF& bounding_box) {
-   autofill_manager_->OnFocusOnFormField(form, field, bounding_box);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnFocusOnFormField(form, field, bounding_box);
+ void ContentAutofillDriver::FocusNoLongerOnForm(bool had_interacted_form) {
+@@ -469,6 +487,8 @@ void ContentAutofillDriver::FocusOnFormField(const FormData& raw_form,
+          const FormFieldData& field, const gfx::RectF& bounding_box) {
+         target->autofill_manager_->OnFocusOnFormField(form, field,
+                                                       bounding_box);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnFocusOnFormField(form, field, bounding_box);
+       });
  }
  
- void ContentAutofillDriver::DidFillAutofillFormDataImpl(
-     const FormData& form,
-     base::TimeTicks timestamp) {
-   autofill_manager_->OnDidFillAutofillFormData(form, timestamp);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnDidFillAutofillFormData(form, timestamp);
+@@ -481,6 +501,8 @@ void ContentAutofillDriver::DidFillAutofillFormData(const FormData& raw_form,
+       [](ContentAutofillDriver* target, const FormData& form,
+          base::TimeTicks timestamp) {
+         target->autofill_manager_->OnDidFillAutofillFormData(form, timestamp);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnDidFillAutofillFormData(form, timestamp);
+       });
  }
  
- void ContentAutofillDriver::DidPreviewAutofillFormDataImpl() {
-   autofill_manager_->OnDidPreviewAutofillFormData();
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnDidPreviewAutofillFormData();
+@@ -490,6 +512,8 @@ void ContentAutofillDriver::DidPreviewAutofillFormData() {
+   autofill_router().DidPreviewAutofillFormData(
+       this, [](ContentAutofillDriver* target) {
+         target->autofill_manager_->OnDidPreviewAutofillFormData();
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnDidPreviewAutofillFormData();
+       });
  }
  
- void ContentAutofillDriver::DidEndTextFieldEditingImpl() {
-   autofill_manager_->OnDidEndTextFieldEditing();
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnDidEndTextFieldEditing();
+@@ -499,6 +523,8 @@ void ContentAutofillDriver::DidEndTextFieldEditing() {
+   autofill_router().DidEndTextFieldEditing(
+       this, [](ContentAutofillDriver* target) {
+         target->autofill_manager_->OnDidEndTextFieldEditing();
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnDidEndTextFieldEditing();
+       });
  }
  
- void ContentAutofillDriver::SelectFieldOptionsDidChangeImpl(
-     const FormData& form) {
-   autofill_manager_->OnSelectFieldOptionsDidChange(form);
-+  if (secondary_autofill_manager_)
-+    secondary_autofill_manager_->OnSelectFieldOptionsDidChange(form);
+@@ -510,6 +536,8 @@ void ContentAutofillDriver::SelectFieldOptionsDidChange(
+       this, GetFormWithFrameAndFormMetaData(raw_form),
+       [](ContentAutofillDriver* target, const FormData& form) {
+         target->autofill_manager_->OnSelectFieldOptionsDidChange(form);
++        if (target->secondary_autofill_manager_)
++          target->secondary_autofill_manager_->OnSelectFieldOptionsDidChange(form);
+       });
  }
  
- void ContentAutofillDriver::JavaScriptChangedAutofilledValueImpl(
-@@ -608,6 +636,8 @@ void ContentAutofillDriver::DidNavigateFrame(
+@@ -597,6 +625,8 @@ void ContentAutofillDriver::DidNavigateFrame(
    if (autofill_router_)  // Can be nullptr only in tests.
      autofill_router_->UnregisterDriver(this);
    autofill_manager_->Reset();
@@ -587,7 +601,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
 diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h
 --- a/components/autofill/content/browser/content_autofill_driver.h
 +++ b/components/autofill/content/browser/content_autofill_driver.h
-@@ -122,11 +122,14 @@ class ContentAutofillDriver : public AutofillDriver,
+@@ -132,10 +132,13 @@ class ContentAutofillDriver : public AutofillDriver,
    ContentAutofillDriver& operator=(const ContentAutofillDriver&) = delete;
    ~ContentAutofillDriver() override;
  
@@ -597,23 +611,22 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com
      autofill_manager_ = std::move(autofill_manager);
 +    secondary_autofill_manager_ = std::move(secondary_autofill_manager);
    }
- 
    AutofillManager* autofill_manager() { return autofill_manager_.get(); }
 +  AutofillManager* secondary_autofill_manager() { return secondary_autofill_manager_.get(); }
  
-   void BindPendingReceiver(
-       mojo::PendingAssociatedReceiver<mojom::AutofillDriver> pending_receiver);
-@@ -387,6 +390,10 @@ class ContentAutofillDriver : public AutofillDriver,
+   content::RenderFrameHost* render_frame_host() { return render_frame_host_; }
  
-   content::RenderWidgetHost::KeyPressEventCallback key_press_handler_;
+@@ -364,6 +367,10 @@ class ContentAutofillDriver : public AutofillDriver,
+   // code.
+   std::unique_ptr<AutofillManager> autofill_manager_ = nullptr;
  
 +  // adds a reference for AndroidAutofillManager, since native autofill works in
 +  // conjunction with browser autofill in Bromite
 +  std::unique_ptr<AutofillManager> secondary_autofill_manager_ = nullptr;
 +
-   mojo::AssociatedReceiver<mojom::AutofillDriver> receiver_{this};
+   content::RenderWidgetHost::KeyPressEventCallback key_press_handler_;
  
-   mojo::AssociatedRemote<mojom::AutofillAgent> autofill_agent_;
+   mojo::AssociatedReceiver<mojom::AutofillDriver> receiver_{this};
 diff --git a/components/autofill/content/browser/content_autofill_driver_factory.cc b/components/autofill/content/browser/content_autofill_driver_factory.cc
 --- a/components/autofill/content/browser/content_autofill_driver_factory.cc
 +++ b/components/autofill/content/browser/content_autofill_driver_factory.cc
@@ -655,7 +668,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory
 diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
 --- a/components/autofill/content/renderer/password_autofill_agent.cc
 +++ b/components/autofill/content/renderer/password_autofill_agent.cc
-@@ -783,7 +783,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
+@@ -793,7 +793,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
  
  void PasswordAutofillAgent::TrackAutofilledElement(
      const blink::WebFormControlElement& element) {
@@ -670,7 +683,7 @@ diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/c
 diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
 --- a/components/autofill/core/common/autofill_prefs.cc
 +++ b/components/autofill/core/common/autofill_prefs.cc
-@@ -114,6 +114,10 @@ const char kAutofillWalletImportStorageCheckboxState[] =
+@@ -109,6 +109,10 @@ const char kAutofillWalletImportStorageCheckboxState[] =
  const char kAutocompleteLastVersionRetentionPolicy[] =
      "autocomplete.retention_policy_last_version";
  
@@ -681,7 +694,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    // Synced prefs. Used for cross-device choices, e.g., credit card Autofill.
    registry->RegisterBooleanPref(
-@@ -143,6 +147,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -135,6 +139,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kAutofillCreditCardFidoAuthOfferCheckboxState, true);
  #endif
@@ -695,7 +708,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
 diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h
 --- a/components/autofill/core/common/autofill_prefs.h
 +++ b/components/autofill/core/common/autofill_prefs.h
-@@ -47,6 +47,8 @@ extern const char kAutofillUploadEventsLastResetTimestamp[];
+@@ -46,6 +46,8 @@ extern const char kAutofillUploadEventsLastResetTimestamp[];
  extern const char kAutofillWalletImportEnabled[];
  extern const char kAutofillWalletImportStorageCheckboxState[];
  extern const char kAutocompleteLastVersionRetentionPolicy[];

+ 2 - 2
build/patches/Enable-network-isolation-features.patch

@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -118,14 +118,14 @@ const base::Feature kSplitCacheByIncludeCredentials{
+@@ -120,14 +120,14 @@ const base::Feature kSplitCacheByIncludeCredentials{
      "SplitCacheByIncludeCredentials", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kSplitCacheByNetworkIsolationKey{
@@ -33,7 +33,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc
  
  const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
      "ForceIsolationInfoFrameOriginToTopLevelFrame",
-@@ -133,19 +133,19 @@ const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
+@@ -135,19 +135,19 @@ const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
  
  const base::Feature kPartitionHttpServerPropertiesByNetworkIsolationKey{
      "PartitionHttpServerPropertiesByNetworkIsolationKey",

+ 1 - 1
build/patches/Enable-prefetch-privacy-changes-by-default.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -566,7 +566,7 @@ const base::Feature kComputePressure{"ComputePressure",
+@@ -460,7 +460,7 @@ const base::Feature kAllowSyncXHRInPageDismissal{
  // Prefetch request properties are updated to be privacy-preserving. See
  // crbug.com/988956.
  const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges",

+ 13 - 13
build/patches/Enable-share-intent.patch

@@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
 --- a/chrome/android/chrome_java_resources.gni
 +++ b/chrome/android/chrome_java_resources.gni
-@@ -596,6 +596,7 @@ chrome_java_resources = [
+@@ -592,6 +592,7 @@ chrome_java_resources = [
    "java/res/layout/signin_activity.xml",
    "java/res/layout/status_indicator_container.xml",
    "java/res/layout/suggestions_tile_view_condensed.xml",
@@ -41,7 +41,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
-@@ -963,6 +963,7 @@ chrome_java_sources = [
+@@ -966,6 +966,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallUma.java",
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java",
    "java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java",
@@ -52,7 +52,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -739,6 +739,24 @@ by a child template that "extends" this file.
+@@ -741,6 +741,24 @@ by a child template that "extends" this file.
              android:process=":browser_restart_process">
          </activity>
  
@@ -311,8 +311,8 @@ new file mode 100644
 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
-@@ -6438,6 +6438,10 @@ const FeatureEntry kFeatureEntries[] = {
- #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -6572,6 +6572,10 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif  // BUILDFLAG(IS_CHROMEOS)
  
  #if BUILDFLAG(IS_ANDROID)
 +    {"shared-intent-ui", flag_descriptions::kSharedIntentUIName,
@@ -325,7 +325,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2626,6 +2626,11 @@ const char kIsolateOriginsDescription[] =
+@@ -2661,6 +2661,11 @@ const char kIsolateOriginsDescription[] =
      "Requires dedicated processes for an additional set of origins, "
      "specified as a comma-separated list.";
  
@@ -340,7 +340,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1487,6 +1487,9 @@ extern const char kIsolateOriginsDescription[];
+@@ -1504,6 +1504,9 @@ extern const char kIsolateOriginsDescription[];
  
  extern const char kIsolationByDefaultName[];
  extern const char kIsolationByDefaultDescription[];
@@ -353,15 +353,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -272,6 +272,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -273,6 +273,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kRelatedSearchesAlternateUx,
      &kRelatedSearchesInBar,
      &kRelatedSearchesSimplifiedUx,
 +    &kSharedIntentUI,
      &kRelatedSearchesUi,
      &kRequestDesktopSiteDefaults,
-     &kSafeModeForCachedFlags,
-@@ -712,6 +713,9 @@ const base::Feature kNewInstanceFromDraggedLink{
+     &kRequestDesktopSiteDefaultsControl,
+@@ -724,6 +725,9 @@ const base::Feature kNewInstanceFromDraggedLink{
  const base::Feature kNewTabPageTilesTitleWrapAround{
      "NewTabPageTilesTitleWrapAround", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -374,7 +374,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -133,6 +133,7 @@ extern const base::Feature kRequestDesktopSiteDefaults;
+@@ -139,6 +139,7 @@ extern const base::Feature kRequestDesktopSiteDefaultsDowngrade;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoExistingDeviceV2;
  extern const base::Feature kSearchEnginePromoNewDevice;
@@ -385,7 +385,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -502,6 +502,7 @@ public abstract class ChromeFeatureList {
+@@ -506,6 +506,7 @@ public abstract class ChromeFeatureList {
      public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts";
      public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler";
      public static final String READ_LATER = "ReadLater";
@@ -396,7 +396,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
-@@ -4846,6 +4846,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4864,6 +4864,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Copied to your clipboard
        </message>
  

+ 0 - 23
build/patches/Enable-user-agent-freeze-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Mon, 10 Feb 2020 23:13:13 +0100
-Subject: Enable user-agent freeze by default
-
-License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
----
- third_party/blink/common/features.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-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
-@@ -167,7 +167,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
- 
- // Freezes the user-agent as part of https://github.com/WICG/ua-client-hints.
- const base::Feature kReduceUserAgent{"ReduceUserAgent",
--                                     base::FEATURE_DISABLED_BY_DEFAULT};
-+                                     base::FEATURE_ENABLED_BY_DEFAULT};
- 
- // Enables the `sec-ch-ua-full` client hint to be sent along with the full user
- // agent string in the HTTP request headers, as well as surfacing the full user
---
-2.25.1

+ 75 - 119
build/patches/Experimental-user-scripts-support.patch

@@ -81,7 +81,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  .../user_scripts/browser/user_script_loader.h | 169 ++++
  .../browser/user_script_pref_info.cc          |  34 +
  .../browser/user_script_pref_info.h           |  72 ++
- .../user_scripts/browser/user_script_prefs.cc | 278 ++++++
+ .../user_scripts/browser/user_script_prefs.cc | 270 ++++++
  .../user_scripts/browser/user_script_prefs.h  |  62 ++
  .../browser/userscripts_browser_client.cc     |  78 ++
  .../browser/userscripts_browser_client.h      |  62 ++
@@ -113,10 +113,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  .../user_scripts/renderer/injection_host.h    |  41 +
  .../renderer/resources/greasemonkey_api.js    |  82 ++
  .../user_scripts_renderer_resources.grd       |  14 +
- .../user_scripts/renderer/script_context.cc   | 215 +++++
+ .../user_scripts/renderer/script_context.cc   | 191 +++++
  .../user_scripts/renderer/script_context.h    |  68 ++
- .../user_scripts/renderer/script_injection.cc | 309 +++++++
- .../user_scripts/renderer/script_injection.h  | 155 ++++
+ .../user_scripts/renderer/script_injection.cc | 294 +++++++
+ .../user_scripts/renderer/script_injection.h  | 156 ++++
  .../renderer/script_injection_manager.cc      | 417 +++++++++
  .../renderer/script_injection_manager.h       | 101 +++
  .../user_scripts/renderer/script_injector.h   |  96 +++
@@ -124,19 +124,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
  .../user_scripts/renderer/scripts_run_info.h  |  69 ++
  .../renderer/user_script_injector.cc          | 227 +++++
  .../renderer/user_script_injector.h           |  86 ++
- .../user_scripts/renderer/user_script_set.cc  | 262 ++++++
+ .../user_scripts/renderer/user_script_set.cc  | 266 ++++++
  .../user_scripts/renderer/user_script_set.h   | 101 +++
  .../renderer/user_script_set_manager.cc       |  77 ++
  .../renderer/user_script_set_manager.h        |  61 ++
  .../renderer/user_scripts_dispatcher.cc       |  36 +
  .../renderer/user_scripts_dispatcher.h        |  49 ++
  .../renderer/user_scripts_renderer_client.cc  | 105 +++
- .../renderer/user_scripts_renderer_client.h   |  37 +
+ .../renderer/user_scripts_renderer_client.h   |  36 +
  .../renderer/web_ui_injection_host.cc         |  40 +
  .../renderer/web_ui_injection_host.h          |  27 +
  .../strings/userscripts_strings.grdp          |  54 ++
  tools/gritsettings/resource_ids.spec          |   6 +
- 109 files changed, 9493 insertions(+), 2 deletions(-)
+ 109 files changed, 9450 insertions(+), 2 deletions(-)
  create mode 100644 components/user_scripts/README.md
  create mode 100755 components/user_scripts/android/BUILD.gn
  create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml
@@ -237,7 +237,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
  }
  
  if (enable_vr) {
-@@ -578,6 +582,7 @@ android_library("chrome_java") {
+@@ -581,6 +585,7 @@ android_library("chrome_java") {
      "//components/ukm/android:java",
      "//components/url_formatter/android:url_formatter_java",
      "//components/user_prefs/android:java",
@@ -248,7 +248,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -86,6 +86,11 @@
+@@ -88,6 +88,11 @@ found in the LICENSE file.
          android:key="useragent_settings"
          android:order="20"
          android:title="@string/prefs_useragent_settings"/>
@@ -263,15 +263,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/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
-@@ -71,6 +71,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
- import org.chromium.content_public.browser.WebContents;
+@@ -72,6 +72,7 @@ import org.chromium.content_public.browser.WebContents;
  import org.chromium.ui.base.DeviceFormFactor;
  import org.chromium.ui.widget.Toast;
+ import org.chromium.url.GURL;
 +import org.chromium.chrome.browser.user_scripts.UserScriptsUtils;
  
  import java.io.File;
  
-@@ -422,6 +423,11 @@ public class DownloadUtils {
+@@ -423,6 +424,11 @@ public class DownloadUtils {
      public static boolean openFile(String filePath, String mimeType, String downloadGuid,
              OTRProfileID otrProfileID, String originalUrl, String referrer,
              @DownloadOpenSource int source, Context context) {
@@ -323,7 +323,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -3461,6 +3461,11 @@ static_library("browser") {
+@@ -3490,6 +3490,11 @@ static_library("browser") {
        ]
        deps += [ "//chrome/android/modules/dev_ui/provider:native" ]
      }
@@ -338,7 +338,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
-@@ -153,6 +153,7 @@
+@@ -155,6 +155,7 @@
  #include "components/translate/core/browser/translate_ranker_impl.h"
  #include "components/translate/core/common/translate_util.h"
  #include "components/ui_devtools/switches.h"
@@ -346,7 +346,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "components/version_info/version_info.h"
  #include "components/viz/common/features.h"
  #include "components/viz/common/switches.h"
-@@ -7379,6 +7380,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7534,6 +7535,10 @@ const FeatureEntry kFeatureEntries[] = {
           chromeos::features::kClipboardHistoryNudgeSessionReset)},
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -360,7 +360,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -4949,7 +4949,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
+@@ -5049,7 +5049,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
    chrome::mojom::DynamicParams dynamic_params = {
        profile->GetPrefs()->GetBoolean(prefs::kForceGoogleSafeSearch),
        profile->GetPrefs()->GetInteger(prefs::kForceYouTubeRestrict),
@@ -373,7 +373,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -6318,6 +6318,11 @@ const char kFollowingFeedSidepanelDescription[] =
+@@ -6475,6 +6475,11 @@ const char kFollowingFeedSidepanelDescription[] =
  #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
          // BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS)
  
@@ -388,7 +388,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -3630,6 +3630,9 @@ extern const char kQuickCommandsDescription[];
+@@ -3717,6 +3717,9 @@ extern const char kQuickCommandsDescription[];
  #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
          // defined (OS_FUCHSIA)
  
@@ -407,9 +407,9 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #include "components/query_tiles/tile_service_prefs.h"
 +#include "components/user_scripts/browser/user_script_prefs.h"
  #else  // BUILDFLAG(IS_ANDROID)
- #include "chrome/browser/autofill_assistant/password_change/apc_client.h"
  #include "chrome/browser/cart/cart_service.h"
-@@ -1323,6 +1324,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+ #include "chrome/browser/device_api/device_service_impl.h"
+@@ -1350,6 +1351,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    translate::TranslatePrefs::RegisterProfilePrefs(registry);
    omnibox::RegisterProfilePrefs(registry);
    ZeroSuggestProvider::RegisterProfilePrefs(registry);
@@ -420,7 +420,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
 diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn
 --- a/chrome/browser/profiles/BUILD.gn
 +++ b/chrome/browser/profiles/BUILD.gn
-@@ -44,6 +44,7 @@ source_set("profile") {
+@@ -50,6 +50,7 @@ source_set("profile") {
      "//components/profile_metrics",
      "//components/sync/driver",
      "//components/variations",
@@ -431,7 +431,7 @@ diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn
 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
-@@ -258,6 +258,8 @@
+@@ -260,6 +260,8 @@
  #include "chrome/browser/enterprise/idle/idle_service_factory.h"
  #endif
  
@@ -440,7 +440,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
  namespace chrome {
  
  void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
-@@ -612,6 +614,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -618,6 +620,7 @@ void ChromeBrowserMainExtraPartsProfiles::
  #endif
    WebDataServiceFactory::GetInstance();
    webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance();
@@ -460,7 +460,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
  #if BUILDFLAG(ENABLE_SESSION_SERVICE)
  #include "chrome/browser/sessions/app_session_service_factory.h"
  #include "chrome/browser/sessions/session_service_factory.h"
-@@ -1712,6 +1714,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
+@@ -1696,6 +1698,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
  #endif
  
  #endif
@@ -535,7 +535,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "content/public/browser/web_contents.h"
  #include "content/public/browser/web_ui.h"
  #include "content/public/common/content_client.h"
-@@ -817,6 +818,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -821,6 +822,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<UserActionsUI>;
    if (url.host_piece() == chrome::kChromeUIVersionHost)
      return &NewWebUI<VersionUI>;
@@ -547,7 +547,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
 diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
 --- a/chrome/chrome_paks.gni
 +++ b/chrome/chrome_paks.gni
-@@ -106,6 +106,7 @@ template("chrome_extra_paks") {
+@@ -107,6 +107,7 @@ template("chrome_extra_paks") {
        "$root_gen_dir/skia/skia_resources.pak",
        "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
        "$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak",
@@ -555,7 +555,7 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
        "$root_gen_dir/ui/resources/webui_generated_resources.pak",
      ]
      deps = [
-@@ -126,6 +127,7 @@ template("chrome_extra_paks") {
+@@ -128,6 +129,7 @@ template("chrome_extra_paks") {
        "//third_party/blink/public:devtools_inspector_resources",
        "//third_party/blink/public:resources",
        "//ui/resources",
@@ -611,7 +611,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_SPELLCHECK)
    if (!spellcheck_)
      InitSpellCheck();
-@@ -575,6 +584,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
+@@ -576,6 +585,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
        render_frame, registry);
  #endif
  
@@ -625,7 +625,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_PPAPI)
    new PepperHelper(render_frame);
  #endif
-@@ -1576,7 +1592,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
+@@ -1545,7 +1561,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentStart(
        render_frame);
    // |render_frame| might be dead by now.
@@ -640,7 +640,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
-@@ -1585,7 +1608,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
+@@ -1554,7 +1577,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentEnd(
        render_frame);
    // |render_frame| might be dead by now.
@@ -655,7 +655,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
-@@ -1594,7 +1624,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
+@@ -1563,7 +1593,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentIdle(
        render_frame);
    // |render_frame| might be dead by now.
@@ -699,8 +699,8 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
        <part file="webapps_strings.grdp" />
 +      <part file="user_scripts/strings/userscripts_strings.grdp" />
  
-       <if expr="not is_ios">
-         <part file="history_clusters_strings.grdp" />
+       <part file="browser_ui/strings/android/webgl.grdp" />
+       <part file="browser_ui/strings/android/webrtc.grdp" />
 diff --git a/components/user_scripts/README.md b/components/user_scripts/README.md
 new file mode 100644
 --- /dev/null
@@ -2948,7 +2948,7 @@ new file mode 100755
 +  std::string temp(line.data() + index + prefix.length(),
 +                   line.length() - index - prefix.length());
 +
-+  if (temp.empty() || !base::IsUnicodeWhitespace(temp[0]))
++  if (temp.empty() || !base::IsAsciiWhitespace(temp[0]))
 +    return false;
 +
 +  base::TrimWhitespaceASCII(temp, base::TRIM_ALL, value);
@@ -3856,7 +3856,7 @@ diff --git a/components/user_scripts/browser/user_script_prefs.cc b/components/u
 new file mode 100644
 --- /dev/null
 +++ b/components/user_scripts/browser/user_script_prefs.cc
-@@ -0,0 +1,278 @@
+@@ -0,0 +1,270 @@
 +/*
 +    This file is part of Bromite.
 +
@@ -3938,7 +3938,7 @@ new file mode 100644
 +  const std::string id_;
 +};
 +
-+bool GetInt64FromPref(const base::DictionaryValue* dict,
++bool GetInt64FromPref(const base::Value* dict,
 +                      const std::string& key,
 +                      int64_t* value) {
 +  DCHECK(dict);
@@ -4044,12 +4044,9 @@ new file mode 100644
 +
 +  // remove script from prefs if no more present
 +  std::vector<std::string> all_scripts_to_remove;
-+  const base::DictionaryValue* dict =
-+      &base::Value::AsDictionaryValue(*prefs_->GetDictionary(
-+          kUserScriptsList));
-+  for (base::DictionaryValue::Iterator script_it(*dict); !script_it.IsAtEnd();
-+       script_it.Advance()) {
-+    const std::string& key = script_it.key();
++  const base::Value::Dict& dict = prefs_->GetDict(kUserScriptsList).Clone();
++  for (const auto script_it : dict) {
++    const std::string& key = script_it.first;
 +
 +    if (std::find(all_scripts.begin(), all_scripts.end(), key) == all_scripts.end()) {
 +      all_scripts_to_remove.push_back(key);
@@ -4068,14 +4065,11 @@ new file mode 100644
 +std::string UserScriptsPrefs::GetScriptsInfo() {
 +  std::string json_string;
 +
-+  const base::Value* dict =
-+    prefs_->GetDictionary(kUserScriptsList);
++  const base::Value::Dict& dict = prefs_->GetDict(kUserScriptsList);
 +
-+  if (dict) {
-+    base::JSONWriter::WriteWithOptions(
-+        *dict, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json_string);
-+    base::TrimWhitespaceASCII(json_string, base::TRIM_ALL, &json_string);
-+  }
++  base::JSONWriter::WriteWithOptions(
++      dict, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json_string);
++  base::TrimWhitespaceASCII(json_string, base::TRIM_ALL, &json_string);
 +
 +  return json_string;
 +}
@@ -4086,13 +4080,11 @@ new file mode 100644
 +  auto scriptInfo = std::make_unique<UserScriptsListPrefs::ScriptInfo>(
 +      script_id, "", base::Time::Now(), false);
 +
-+  const base::Value* scripts =
-+      prefs_->GetDictionary(kUserScriptsList);
-+  if (!scripts)
++  const base::Value::Dict& scripts = prefs_->GetDict(kUserScriptsList);
++  if (scripts.empty())
 +    return scriptInfo;
 +
-+  const base::DictionaryValue* script = static_cast<const base::DictionaryValue*>(
-+    scripts->FindDictKey(script_id));
++  const base::Value* script = scripts.Find(script_id);
 +  if (!script)
 +    return scriptInfo;
 +
@@ -7780,7 +7772,7 @@ diff --git a/components/user_scripts/renderer/script_context.cc b/components/use
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/renderer/script_context.cc
-@@ -0,0 +1,215 @@
+@@ -0,0 +1,191 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -7950,36 +7942,12 @@ new file mode 100755
 +  return parent_url;
 +}
 +
-+using FrameToDocumentLoader =
-+    base::flat_map<blink::WebLocalFrame*, blink::WebDocumentLoader*>;
-+
-+FrameToDocumentLoader& FrameDocumentLoaderMap() {
-+  static base::NoDestructor<FrameToDocumentLoader> map;
-+  return *map;
-+}
-+
-+blink::WebDocumentLoader* CurrentDocumentLoader(
-+    const blink::WebLocalFrame* frame) {
-+  auto& map = FrameDocumentLoaderMap();
-+  auto it = map.find(frame);
-+  return it == map.end() ? frame->GetDocumentLoader() : it->second;
-+}
-+
 +}  // namespace
 +
 +// static
 +GURL ScriptContext::GetDocumentLoaderURLForFrame(
 +    const blink::WebLocalFrame* frame) {
-+  // Normally we would use frame->document().url() to determine the document's
-+  // URL, but to decide whether to inject a content script, we use the URL from
-+  // the data source. This "quirk" helps prevents content scripts from
-+  // inadvertently adding DOM elements to the compose iframe in Gmail because
-+  // the compose iframe's dataSource URL is about:blank, but the document URL
-+  // changes to match the parent document after Gmail document.writes into
-+  // it to create the editor.
-+  // http://code.google.com/p/chromium/issues/detail?id=86742
-+  blink::WebDocumentLoader* document_loader = CurrentDocumentLoader(frame);
-+  return document_loader ? GURL(document_loader->GetUrl()) : GURL();
++  return GURL(frame->GetDocument().Url());
 +}
 +
 +// static
@@ -8073,7 +8041,7 @@ diff --git a/components/user_scripts/renderer/script_injection.cc b/components/u
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/renderer/script_injection.cc
-@@ -0,0 +1,309 @@
+@@ -0,0 +1,294 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -8325,30 +8293,15 @@ new file mode 100755
 +      base::BindOnce(&ScriptInjection::OnJsInjectionCompleted,
 +                     weak_ptr_factory_.GetWeakPtr()),
 +      blink::BackForwardCacheAware::kPossiblyDisallow,
-+      blink::mojom::PromiseResultOption::kDoNotWait);
++      blink::mojom::WantResultOption::kNoResult, blink::mojom::PromiseResultOption::kDoNotWait);
 +  }
 +
 +void ScriptInjection::OnJsInjectionCompleted(
-+    const blink::WebVector<v8::Local<v8::Value>>& results,
++    absl::optional<base::Value> results,
 +    base::TimeTicks start_time) {
 +  DCHECK(!did_inject_js_);
 +
-+  bool expects_results = injector_->ExpectsResults();
-+  if (expects_results) {
-+    if (!results.empty() && !results[0].IsEmpty()) {
-+      // Right now, we only support returning single results (per frame).
-+      // It's safe to always use the main world context when converting
-+      // here. V8ValueConverterImpl shouldn't actually care about the
-+      // context scope, and it switches to v8::Object's creation context
-+      // when encountered.
-+      v8::Local<v8::Context> context =
-+          render_frame_->GetWebFrame()->MainWorldScriptContext();
-+      execution_result_ =
-+          content::V8ValueConverter::Create()->FromV8Value(results[0], context);
-+    }
-+    if (!execution_result_.get())
-+      execution_result_ = std::make_unique<base::Value>();
-+  }
++  execution_result_ = std::move(results);
 +  did_inject_js_ = true;
 +
 +  // If |async_completion_callback_| is set, it means the script finished
@@ -8387,7 +8340,7 @@ diff --git a/components/user_scripts/renderer/script_injection.h b/components/us
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/renderer/script_injection.h
-@@ -0,0 +1,155 @@
+@@ -0,0 +1,156 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -8402,6 +8355,7 @@ new file mode 100755
 +
 +#include "base/callback.h"
 +#include "base/memory/weak_ptr.h"
++#include "base/values.h"
 +#include "../common/user_script.h"
 +#include "injection_host.h"
 +#include "script_injector.h"
@@ -8478,7 +8432,7 @@ new file mode 100755
 +
 +  // Called when JS injection for the given frame has been completed or
 +  // cancelled.
-+  void OnJsInjectionCompleted(const blink::WebVector<v8::Local<v8::Value>>& results,
++  void OnJsInjectionCompleted(absl::optional<base::Value> results,
 +                              base::TimeTicks start_time);
 +
 + private:
@@ -8529,7 +8483,7 @@ new file mode 100755
 +  bool log_activity_;
 +
 +  // Results storage.
-+  std::unique_ptr<base::Value> execution_result_;
++  absl::optional<base::Value> execution_result_;
 +
 +  // The callback to run upon completing asynchronously.
 +  CompletionCallback async_completion_callback_;
@@ -9158,7 +9112,7 @@ new file mode 100755
 +  // |render_frame| contains the render frame, or null if the frame was
 +  // invalidated.
 +  virtual void OnInjectionComplete(
-+      std::unique_ptr<base::Value> execution_result,
++      absl::optional<base::Value> execution_result,
 +      UserScript::RunLocation run_location,
 +      content::RenderFrame* render_frame) = 0;
 +
@@ -9505,7 +9459,7 @@ new file mode 100755
 +}
 +
 +void UserScriptInjector::OnInjectionComplete(
-+    std::unique_ptr<base::Value> execution_result,
++    absl::optional<base::Value> execution_result,
 +    UserScript::RunLocation run_location,
 +    content::RenderFrame* render_frame) {}
 +
@@ -9578,7 +9532,7 @@ new file mode 100755
 +      UserScript::RunLocation run_location,
 +      std::set<std::string>* injected_stylesheets,
 +      size_t* num_injected_stylesheets) const override;
-+  void OnInjectionComplete(std::unique_ptr<base::Value> execution_result,
++  void OnInjectionComplete(absl::optional<base::Value> execution_result,
 +                           UserScript::RunLocation run_location,
 +                           content::RenderFrame* render_frame) override;
 +  void OnWillNotInject(InjectFailureReason reason,
@@ -9609,7 +9563,7 @@ diff --git a/components/user_scripts/renderer/user_script_set.cc b/components/us
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/renderer/user_script_set.cc
-@@ -0,0 +1,262 @@
+@@ -0,0 +1,266 @@
 +// Copyright 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
@@ -9830,6 +9784,14 @@ new file mode 100755
 +
 +blink::WebString UserScriptSet::GetJsSource(const UserScript::File& file,
 +                                            bool emulate_greasemonkey) {
++  if (base::FeatureList::IsEnabled(features::kEnableLoggingUserScripts)) {
++    if (emulate_greasemonkey) {
++      LOG(INFO) << "UserScripts: Injecting w/greasemonkey " << file.url();
++    } else {
++      LOG(INFO) << "UserScripts: Injecting " << file.url();
++    }
++  }
++
 +  const GURL& url = file.url();
 +  auto iter = script_sources_.find(url);
 +  if (iter != script_sources_.end()) {
@@ -9845,13 +9807,9 @@ new file mode 100755
 +    std::string content =
 +        base::StrCat({kUserScriptHead, script_content, kUserScriptTail});
 +    source = blink::WebString::FromUTF8(content);
-+    if (base::FeatureList::IsEnabled(features::kEnableLoggingUserScripts))
-+      LOG(INFO) << "UserScripts: Injecting w/greasemonkey " << file.url();
 +  } else {
 +    source = blink::WebString::FromUTF8(script_content.data(),
 +                                        script_content.length());
-+    if (base::FeatureList::IsEnabled(features::kEnableLoggingUserScripts))
-+      LOG(INFO) << "UserScripts: Injecting " << file.url();
 +  }
 +  script_sources_[url] = source;
 +  return source;
@@ -10292,15 +10250,15 @@ new file mode 100755
 +  enabled_ = params.allow_userscript;
 +  if (!enabled_) return;
 +
-+  if (loaded_ == false) {
-+    loaded_ = true;
++  ExtensionFrameHelper* frame_helper = ExtensionFrameHelper::Get(render_frame);
++  if (!frame_helper) {
 +    new user_scripts::ExtensionFrameHelper(render_frame);
 +    dispatcher_->OnRenderFrameCreated(render_frame);
 +  }
 +}
 +
 +void UserScriptsRendererClient::RunScriptsAtDocumentStart(content::RenderFrame* render_frame) {
-+  if (!enabled_ || !loaded_) return;
++  if (!enabled_) return;
 +
 +  ExtensionFrameHelper* frame_helper = ExtensionFrameHelper::Get(render_frame);
 +  if (!frame_helper)
@@ -10311,7 +10269,7 @@ new file mode 100755
 +}
 +
 +void UserScriptsRendererClient::RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) {
-+  if (!enabled_ || !loaded_) return;
++  if (!enabled_) return;
 +
 +  ExtensionFrameHelper* frame_helper = ExtensionFrameHelper::Get(render_frame);
 +  if (!frame_helper)
@@ -10322,7 +10280,7 @@ new file mode 100755
 +}
 +
 +void UserScriptsRendererClient::RunScriptsAtDocumentIdle(content::RenderFrame* render_frame) {
-+  if (!enabled_ || !loaded_) return;
++  if (!enabled_) return;
 +
 +  ExtensionFrameHelper* frame_helper = ExtensionFrameHelper::Get(render_frame);
 +  if (!frame_helper)
@@ -10333,12 +10291,11 @@ new file mode 100755
 +}
 +
 +}
-\ No newline at end of file
 diff --git a/components/user_scripts/renderer/user_scripts_renderer_client.h b/components/user_scripts/renderer/user_scripts_renderer_client.h
 new file mode 100755
 --- /dev/null
 +++ b/components/user_scripts/renderer/user_scripts_renderer_client.h
-@@ -0,0 +1,37 @@
+@@ -0,0 +1,36 @@
 +#ifndef USERSCRIPTS_RENDER_CLIENT_H_
 +#define USERSCRIPTS_RENDER_CLIENT_H_
 +
@@ -10370,7 +10327,6 @@ new file mode 100755
 + private:
 +  std::unique_ptr<UserScriptsDispatcher> dispatcher_;
 +  bool enabled_ = false;
-+  bool loaded_ = false;
 +};
 +
 +}
@@ -10515,7 +10471,7 @@ new file mode 100755
 diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec
 --- a/tools/gritsettings/resource_ids.spec
 +++ b/tools/gritsettings/resource_ids.spec
-@@ -693,6 +693,12 @@
+@@ -732,6 +732,12 @@
    "components/autofill/core/browser/autofill_address_rewriter_resources.grd":{
      "includes": [3720]
    },

+ 0 - 22
build/patches/Fix-segmentation-platform-build-error.patch

@@ -1,22 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Sun, 16 Oct 2022 08:42:55 +0200
-Subject: Fix segmentation platform build error
-
-License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
----
- components/segmentation_platform/embedder/BUILD.gn | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/components/segmentation_platform/embedder/BUILD.gn b/components/segmentation_platform/embedder/BUILD.gn
---- a/components/segmentation_platform/embedder/BUILD.gn
-+++ b/components/segmentation_platform/embedder/BUILD.gn
-@@ -21,7 +21,6 @@ source_set("embedder") {
-     "//components/optimization_guide/core",
-     "//components/optimization_guide/core:features",
-     "//components/segmentation_platform/internal",
--    "//components/segmentation_platform/internal:optimization_guide_segmentation_handler",
-     "//components/segmentation_platform/internal/proto",
-     "//components/segmentation_platform/public",
-     "//url",
---
-2.25.1

+ 25 - 0
build/patches/Guard-for-user-agent-reduction.patch

@@ -0,0 +1,25 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Mon, 10 Feb 2020 23:13:13 +0100
+Subject: Guard for user-agent reduction
+
+License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
+---
+ third_party/blink/common/features.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+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
+@@ -1205,8 +1205,8 @@ const base::Feature kWindowPlacementFullscreenCompanionWindow{
+ const base::FeatureParam<std::string> kUserAgentFrozenBuildVersion{
+     &kReduceUserAgentMinorVersion, "build_version", "0"};
+ 
+-const base::FeatureParam<bool> kAllExceptLegacyWindowsPlatform = {
+-    &kReduceUserAgentPlatformOsCpu, "all_except_legacy_windows_platform", true};
++const base::FeatureParam<bool> kAllExceptLegacyWindowsPlatform = {                 // must be enabled
++    &kReduceUserAgentPlatformOsCpu, "all_except_legacy_windows_platform", true};   // in Bromite
+ const base::FeatureParam<bool> kLegacyWindowsPlatform = {
+     &kReduceUserAgentPlatformOsCpu, "legacy_windows_platform", true};
+ 
+--
+2.25.1

+ 13 - 13
build/patches/History-number-of-days-privacy-setting.patch

@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -29,6 +29,12 @@
+@@ -31,6 +31,12 @@ found in the LICENSE file.
          android:title="@string/settings_incognito_tab_lock_title"
          android:summary="@string/settings_incognito_tab_lock_summary_android_setting_off"
          android:persistent="false"/>
@@ -162,7 +162,7 @@ diff --git a/chrome/browser/history/history_service_factory.cc b/chrome/browser/
 diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn
 --- a/chrome/browser/preferences/BUILD.gn
 +++ b/chrome/browser/preferences/BUILD.gn
-@@ -44,6 +44,7 @@ java_cpp_strings("java_pref_names_srcjar") {
+@@ -45,6 +45,7 @@ java_cpp_strings("java_pref_names_srcjar") {
      "//components/safe_browsing/core/common/safe_browsing_prefs.cc",
      "//components/signin/public/base/signin_pref_names.cc",
      "//components/translate/core/browser/translate_pref_names.cc",
@@ -173,7 +173,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU
 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
-@@ -368,6 +368,7 @@ std::unique_ptr<Profile> Profile::CreateProfile(const base::FilePath& path,
+@@ -373,6 +373,7 @@ std::unique_ptr<Profile> Profile::CreateProfile(const base::FilePath& path,
  void ProfileImpl::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false);
@@ -184,7 +184,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
 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
-@@ -1130,6 +1130,18 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1136,6 +1136,18 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_CLEAR_HISTORY_TITLE" desc="Title for Clear History in Clear Browsing Data dialog">
          Browsing history
        </message>
@@ -206,7 +206,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml b/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
 --- a/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
 +++ b/components/browser_ui/settings/android/java/res/layout-sw360dp/preference_spinner_single_line.xml
-@@ -11,19 +11,33 @@
+@@ -13,19 +13,33 @@ found in the LICENSE file.
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:paddingEnd="@dimen/pref_spinner_padding_end"
@@ -249,7 +249,7 @@ diff --git a/components/browser_ui/settings/android/java/res/layout-sw360dp/pref
 diff --git a/components/browser_ui/settings/android/java/res/layout/preference_spinner.xml b/components/browser_ui/settings/android/java/res/layout/preference_spinner.xml
 --- a/components/browser_ui/settings/android/java/res/layout/preference_spinner.xml
 +++ b/components/browser_ui/settings/android/java/res/layout/preference_spinner.xml
-@@ -18,6 +18,13 @@
+@@ -20,6 +20,13 @@ found in the LICENSE file.
          android:layout_width="match_parent"
          style="@style/PreferenceTitle" />
  
@@ -266,7 +266,7 @@ diff --git a/components/browser_ui/settings/android/java/res/layout/preference_s
 diff --git a/components/browser_ui/settings/android/java/res/layout/preference_spinner_single_line.xml b/components/browser_ui/settings/android/java/res/layout/preference_spinner_single_line.xml
 --- a/components/browser_ui/settings/android/java/res/layout/preference_spinner_single_line.xml
 +++ b/components/browser_ui/settings/android/java/res/layout/preference_spinner_single_line.xml
-@@ -20,6 +20,13 @@
+@@ -22,6 +22,13 @@ found in the LICENSE file.
          android:layout_height="wrap_content"
          android:layout_width="match_parent" />
  
@@ -365,7 +365,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his
  
  // The maximum number of days for which domain visit metrics are computed
  // each time HistoryBackend::GetDomainDiversity() is called.
-@@ -1015,6 +1015,19 @@ void HistoryBackend::InitImpl(
+@@ -1088,6 +1088,19 @@ void HistoryBackend::InitImpl(
    LOCAL_HISTOGRAM_TIMES("History.InitTime", TimeTicks::Now() - beginning_time);
  }
  
@@ -410,7 +410,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his
  #include "components/history/core/browser/download_row.h"
  #include "components/history/core/browser/history_backend.h"
  #include "components/history/core/browser/history_backend_client.h"
-@@ -1078,6 +1081,9 @@ void HistoryService::Cleanup() {
+@@ -1105,6 +1108,9 @@ void HistoryService::Cleanup() {
      return;
    }
  
@@ -420,7 +420,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his
    NotifyHistoryServiceBeingDeleted();
  
    weak_ptr_factory_.InvalidateWeakPtrs();
-@@ -1142,6 +1148,33 @@ bool HistoryService::Init(
+@@ -1169,6 +1175,33 @@ bool HistoryService::Init(
    return true;
  }
  
@@ -465,8 +465,8 @@ diff --git a/components/history/core/browser/history_service.h b/components/hist
 +#include "components/prefs/pref_change_registrar.h"
  #include "components/history/core/browser/history_types.h"
  #include "components/history/core/browser/keyword_id.h"
- #include "components/keyed_service/core/keyed_service.h"
-@@ -105,6 +107,8 @@ class HistoryService : public KeyedService {
+ #include "components/history/core/browser/url_row.h"
+@@ -106,6 +108,8 @@ class HistoryService : public KeyedService {
      return Init(false, history_database_params);
    }
  
@@ -475,7 +475,7 @@ diff --git a/components/history/core/browser/history_service.h b/components/hist
    // Triggers the backend to load if it hasn't already, and then returns whether
    // it's finished loading.
    // Note: Virtual needed for mocking.
-@@ -993,6 +997,10 @@ class HistoryService : public KeyedService {
+@@ -1013,6 +1017,10 @@ class HistoryService : public KeyedService {
  
    base::OnceClosure origin_queried_closure_for_testing_;
  

+ 4 - 4
build/patches/Improve-plain-text-rendering-on-mobile.patch

@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/third_party/blink/renderer/core/html/parser/text_document_parser.cc b/third_party/blink/renderer/core/html/parser/text_document_parser.cc
 --- a/third_party/blink/renderer/core/html/parser/text_document_parser.cc
 +++ b/third_party/blink/renderer/core/html/parser/text_document_parser.cc
-@@ -63,9 +63,18 @@ void TextDocumentParser::InsertFakePreElement() {
+@@ -66,9 +66,18 @@ void TextDocumentParser::InsertFakePreElement() {
    TreeBuilder()->ConstructTree(&fake_meta);
    attributes.clear();
  
@@ -19,7 +19,7 @@ diff --git a/third_party/blink/renderer/core/html/parser/text_document_parser.cc
 +  attributes.push_back(Attribute(html_names::kContentAttr,
 +    "width=device-width, initial-scale=1.0, maximum-scale=1.0"));
 +  AtomicHTMLToken viewport_meta(HTMLToken::kStartTag,
-+                            html_names::kMetaTag.LocalName(), attributes);
++                            html_names::HTMLTag::kMeta, attributes);
 +  TreeBuilder()->ConstructTree(&viewport_meta);
 +  attributes.clear();
 +
@@ -27,8 +27,8 @@ diff --git a/third_party/blink/renderer/core/html/parser/text_document_parser.cc
    attributes.push_back(Attribute(
 -      html_names::kStyleAttr, "word-wrap: break-word; white-space: pre-wrap;"));
 +      html_names::kStyleAttr, "word-wrap: break-word; white-space: pre-wrap; font-family: system-ui;"));
-   AtomicHTMLToken fake_pre(HTMLToken::kStartTag,
-                            html_names::kPreTag.LocalName(), attributes);
+   AtomicHTMLToken fake_pre(HTMLToken::kStartTag, html_names::HTMLTag::kPre,
+                            attributes);
    TreeBuilder()->ConstructTree(&fake_pre);
 --
 2.25.1

+ 10 - 12
build/patches/Increase-number-of-autocomplete-matches-to-10.patch

@@ -6,23 +6,21 @@ Patch adapted from https://github.com/Eloston/ungoogled-chromium/issues/814#issu
 
 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 ---
- components/omnibox/browser/autocomplete_result.cc | 3 ++-
+ components/omnibox/browser/autocomplete_result.cc | 1 +
  components/omnibox/browser/omnibox_field_trial.cc | 6 +++---
- 2 files changed, 5 insertions(+), 4 deletions(-)
+ 2 files changed, 4 insertions(+), 3 deletions(-)
 
 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
-@@ -100,7 +100,8 @@ size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
-   // and 10 on iPad.
-   constexpr size_t kMaxZeroSuggestMatchesOnIPad = 10;
- #else
--  constexpr size_t kDefaultMaxAutocompleteMatches = 8;
-+  // changed from 8, this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
-+  constexpr size_t kDefaultMaxAutocompleteMatches = 10;
-   constexpr size_t kDefaultMaxZeroSuggestMatches = 8;
- #endif
-   static_assert(kMaxAutocompletePositionValue > kDefaultMaxAutocompleteMatches,
+@@ -85,6 +85,7 @@ struct MatchGURLHash {
+ // static
+ size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
+ #if BUILDFLAG(IS_ANDROID)
++  // this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
+   constexpr size_t kDefaultMaxAutocompleteMatches = 10;
+   constexpr size_t kDefaultMaxZeroSuggestMatches = 15;
+ #elif BUILDFLAG(IS_IOS)
 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

+ 11 - 11
build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch

@@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/renderer/core/dom/build.gni
 --- a/third_party/blink/renderer/core/dom/build.gni
 +++ b/third_party/blink/renderer/core/dom/build.gni
-@@ -157,6 +157,8 @@ blink_core_sources_dom = [
+@@ -159,6 +159,8 @@ blink_core_sources_dom = [
    "has_invalidation_flags.h",
    "icon_url.cc",
    "icon_url.h",
@@ -35,7 +35,7 @@ diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/r
 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
-@@ -282,6 +282,7 @@
+@@ -283,6 +283,7 @@
  #include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h"
  #include "third_party/blink/renderer/core/page/scrolling/scroll_state_callback.h"
  #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
@@ -43,7 +43,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
  #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
  #include "third_party/blink/renderer/core/page/spatial_navigation_controller.h"
-@@ -352,6 +353,8 @@
+@@ -355,6 +356,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h"
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  
@@ -52,8 +52,8 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  static WeakDocumentSet& LiveDocumentSet();
-@@ -6790,6 +6793,64 @@ void Document::MarkFirstPaint() {
-   MaybeExecuteDelayedAsyncScripts(MilestoneForDelayedAsyncScript::kFirstPaint);
+@@ -7065,6 +7068,64 @@ void Document::OnPrepareToStopParsing() {
+       MilestoneForDelayedAsyncScript::kFinishedParsing);
  }
  
 +void Document::injectScripts() {
@@ -117,9 +117,9 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  void Document::FinishedParsing() {
    DCHECK(!GetScriptableDocumentParser() || !parser_->IsParsing());
    DCHECK(!GetScriptableDocumentParser() || ready_state_ != kLoading);
-@@ -6855,6 +6916,10 @@ void Document::FinishedParsing() {
-     if (frame->GetFrameScheduler())
-       frame->GetFrameScheduler()->OnDomContentLoaded();
+@@ -7124,6 +7185,10 @@ void Document::FinishedParsing() {
+       }
+     }
  
 +    if (!IsPrefetchOnly()) {
 +       injectScripts();
@@ -131,9 +131,9 @@ 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
-@@ -1953,6 +1953,9 @@ class CORE_EXPORT Document : public ContainerNode,
-   void AddAXContext(AXContext*);
-   void RemoveAXContext(AXContext*);
+@@ -1975,6 +1975,9 @@ class CORE_EXPORT Document : public ContainerNode,
+   // Called when the AXMode of an existing AXContext changes.
+   void AXContextModeChanged();
  
 +  void injectScripts();
 +  const AtomicString& findFirstScriptNonce();

+ 21 - 21
build/patches/JIT-site-settings.patch

@@ -42,7 +42,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 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
-@@ -136,6 +136,7 @@ android_resources("java_resources") {
+@@ -161,6 +161,7 @@ android_resources("java_resources") {
      "java/res/drawable-hdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-hdpi/permission_background_sync.png",
      "java/res/drawable-hdpi/permission_javascript.png",
@@ -50,15 +50,15 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-hdpi/permission_popups.png",
      "java/res/drawable-hdpi/permission_protected_media.png",
      "java/res/drawable-hdpi/settings_sensors.png",
-@@ -143,6 +144,7 @@ android_resources("java_resources") {
+@@ -168,6 +169,7 @@ android_resources("java_resources") {
      "java/res/drawable-mdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-mdpi/permission_background_sync.png",
      "java/res/drawable-mdpi/permission_javascript.png",
 +    "java/res/drawable-mdpi/permission_javascript_jit.png",
-     "java/res/drawable-mdpi/permission_popups.png",
-     "java/res/drawable-mdpi/permission_protected_media.png",
-     "java/res/drawable-mdpi/settings_sensors.png",
-@@ -150,6 +152,7 @@ android_resources("java_resources") {
+     "java/res/drawable-hdpi/settings_autoplay.png",
+     "java/res/drawable-xhdpi/settings_autoplay.png",
+     "java/res/drawable-xxhdpi/settings_autoplay.png",
+@@ -180,6 +182,7 @@ android_resources("java_resources") {
      "java/res/drawable-xhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xhdpi/permission_background_sync.png",
      "java/res/drawable-xhdpi/permission_javascript.png",
@@ -66,7 +66,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-xhdpi/permission_popups.png",
      "java/res/drawable-xhdpi/permission_protected_media.png",
      "java/res/drawable-xhdpi/settings_sensors.png",
-@@ -157,6 +160,7 @@ android_resources("java_resources") {
+@@ -187,6 +190,7 @@ android_resources("java_resources") {
      "java/res/drawable-xxhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xxhdpi/permission_background_sync.png",
      "java/res/drawable-xxhdpi/permission_javascript.png",
@@ -74,7 +74,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-xxhdpi/permission_popups.png",
      "java/res/drawable-xxhdpi/permission_protected_media.png",
      "java/res/drawable-xxhdpi/settings_sensors.png",
-@@ -164,6 +168,7 @@ android_resources("java_resources") {
+@@ -194,6 +198,7 @@ android_resources("java_resources") {
      "java/res/drawable-xxxhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xxxhdpi/permission_background_sync.png",
      "java/res/drawable-xxxhdpi/permission_javascript.png",
@@ -183,7 +183,7 @@ HcmV?d00001
 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
-@@ -37,6 +37,10 @@
+@@ -39,6 +39,10 @@ found in the LICENSE file.
      <org.chromium.components.browser_ui.settings.ChromeBasePreference
          android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
          android:key="notifications" />
@@ -214,7 +214,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
-@@ -610,6 +610,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -632,6 +632,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                                 browserContextHandle, ContentSettingsType.JAVASCRIPT)
                      ? R.string.website_settings_add_site_description_javascript_block
                      : R.string.website_settings_add_site_description_javascript_allow;
@@ -226,7 +226,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else if (mCategory.getType() == SiteSettingsCategory.Type.SOUND) {
              resource = WebsitePreferenceBridge.isCategoryEnabled(
                                 browserContextHandle, ContentSettingsType.SOUND)
-@@ -732,6 +737,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -761,6 +766,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              allowSpecifyingExceptions = true;
          } else if (mCategory.getType() == SiteSettingsCategory.Type.JAVASCRIPT) {
              allowSpecifyingExceptions = true;
@@ -238,7 +238,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
-@@ -132,6 +132,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -133,6 +133,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "idle_detection_permission_list";
              case ContentSettingsType.JAVASCRIPT:
                  return "javascript_permission_list";
@@ -247,18 +247,18 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.POPUPS:
                  return "popup_permission_list";
              case ContentSettingsType.SOUND:
-@@ -504,6 +506,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-                 setUpCookiesPreference(preference);
+@@ -503,6 +505,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+                 setUpJavascriptPreference(preference);
              } else if (type == ContentSettingsType.GEOLOCATION) {
                  setUpLocationPreference(preference);
 +            } else if (type == ContentSettingsType.JAVASCRIPT_JIT) {
 +                setUpJavascriptJitPreference(preference);
              } else if (type == ContentSettingsType.NOTIFICATIONS) {
                  setUpNotificationsPreference(preference, mSite.isEmbargoed(type));
-             } else {
-@@ -1032,6 +1036,23 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+             } else if (type == ContentSettingsType.REQUEST_DESKTOP_SITE) {
+@@ -1023,6 +1027,23 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */);
-      }
+     }
  
 +    private void setUpJavascriptJitPreference(Preference preference) {
 +        BrowserContextHandle browserContextHandle =
@@ -337,7 +337,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
-@@ -218,6 +218,13 @@ public final class Website implements Serializable {
+@@ -213,6 +213,13 @@ public final class Website implements Serializable {
              } else {
                  RecordUserAction.record("JavascriptContentSetting.DisableBy.SiteSettings");
              }
@@ -375,7 +375,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
    <message name="IDS_WEBSITE_SETTINGS_DEVICE_LOCATION" desc="Title for Location settings, which control which websites can access your location." meaning="Geolocation">
      Location
    </message>
-@@ -437,6 +440,20 @@
+@@ -473,6 +476,20 @@
      Block JavaScript for a specific site.
    </message>
  
@@ -431,7 +431,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
-@@ -121,6 +121,7 @@ ContentSettingsType kPermissionType[] = {
+@@ -122,6 +122,7 @@ ContentSettingsType kPermissionType[] = {
      ContentSettingsType::AR,
      ContentSettingsType::IDLE_DETECTION,
      ContentSettingsType::FEDERATED_IDENTITY_API,
@@ -439,7 +439,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
  };
  
  // Determines whether to show permission |type| in the Page Info UI. Only
-@@ -154,6 +155,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -155,6 +156,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
        return true;
    }
  

+ 1 - 1
build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch

@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -3877,9 +3877,9 @@
+@@ -3986,9 +3986,9 @@
      "expiry_milestone": 110
    },
    {

+ 1 - 1
build/patches/Logcat-crash-reports-UI.patch

@@ -157,7 +157,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
-@@ -632,6 +632,7 @@ static_library("ui") {
+@@ -633,6 +633,7 @@ static_library("ui") {
      "//third_party/re2",
      "//third_party/webrtc_overrides:webrtc_component",
      "//third_party/zlib",

+ 12 - 12
build/patches/Modify-default-preferences.patch

@@ -30,7 +30,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
-@@ -77,6 +77,7 @@
+@@ -78,6 +78,7 @@
  #include "components/autofill/core/common/autofill_switches.h"
  #include "components/autofill/core/common/autofill_util.h"
  #include "components/autofill_assistant/browser/features.h"
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "components/browser_sync/browser_sync_switches.h"
  #include "components/browser_ui/site_settings/android/features.h"
  #include "components/browsing_data/core/features.h"
-@@ -5668,6 +5669,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5756,6 +5757,11 @@ const FeatureEntry kFeatureEntries[] = {
           reading_list::switches::kReadLaterReminderNotification)},
  #endif
  
@@ -65,7 +65,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1384,7 +1384,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1425,7 +1425,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -77,7 +77,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2753,6 +2753,10 @@ const char kTabToGTSAnimationAndroidDescription[] =
+@@ -2793,6 +2793,10 @@ const char kTabToGTSAnimationAndroidDescription[] =
      "Allows users to see an animation when entering or leaving the "
      "Grid Tab Switcher on phones.";
  
@@ -91,7 +91,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1549,6 +1549,9 @@ extern const char kTabGroupsUiImprovementsAndroidDescription[];
+@@ -1569,6 +1569,9 @@ extern const char kTabGroupsUiImprovementsAndroidDescription[];
  extern const char kTabToGTSAnimationAndroidName[];
  extern const char kTabToGTSAnimationAndroidDescription[];
  
@@ -116,7 +116,7 @@ diff --git a/chrome/browser/prefetch/prefetch_prefs.h b/chrome/browser/prefetch/
 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
-@@ -278,7 +278,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -282,7 +282,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -177,15 +177,15 @@ diff --git a/components/bookmarks/browser/BUILD.gn b/components/bookmarks/browse
 diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
 --- a/components/bookmarks/browser/bookmark_utils.cc
 +++ b/components/bookmarks/browser/bookmark_utils.cc
-@@ -24,6 +24,7 @@
+@@ -25,6 +25,7 @@
  #include "build/build_config.h"
  #include "components/bookmarks/browser/bookmark_client.h"
  #include "components/bookmarks/browser/bookmark_model.h"
 +#include "components/bookmarks/browser/features.h"
  #include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
+ #include "components/bookmarks/common/bookmark_metrics.h"
  #include "components/bookmarks/common/bookmark_pref_names.h"
- #include "components/pref_registry/pref_registry_syncable.h"
-@@ -436,11 +437,14 @@ bool DoesBookmarkContainWords(const std::u16string& title,
+@@ -440,11 +441,14 @@ bool DoesBookmarkContainWords(const std::u16string& title,
  
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
@@ -249,7 +249,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
-@@ -321,7 +321,7 @@ void ContentSettingsRegistry::Init() {
+@@ -324,7 +324,7 @@ void ContentSettingsRegistry::Init() {
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
  
    Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync",
@@ -258,7 +258,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
             AllowlistedSchemes(),
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
             WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
-@@ -421,7 +421,7 @@ void ContentSettingsRegistry::Init() {
+@@ -424,7 +424,7 @@ void ContentSettingsRegistry::Init() {
    // TODO(crbug.com/904439): Update this to "SECURE_ONLY" once
    // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure
    // contexts.
@@ -324,7 +324,7 @@ diff --git a/components/signin/internal/identity_manager/primary_account_manager
 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
-@@ -486,7 +486,7 @@ const char kIsolateOriginsFieldTrialParamName[] = "OriginsList";
+@@ -499,7 +499,7 @@ const char kIsolateOriginsFieldTrialParamName[] = "OriginsList";
  // the attribute. Note: At present, only iframes with origin-restricted
  // sandboxes are isolated.
  const base::Feature kIsolateSandboxedIframes{"IsolateSandboxedIframes",

Некоторые файлы не были показаны из-за большого количества измененных файлов