Explorar el Código

Patches for v102

csagan5 hace 3 años
padre
commit
6c2d2ee368
Se han modificado 100 ficheros con 1513 adiciones y 1286 borrados
  1. 1 1
      build/LASTCHANGE
  2. 1 1
      build/RELEASE
  3. 1 1
      build/RELEASE_COMMIT
  4. 8 9
      build/bromite_patches_list.txt
  5. 6 6
      build/patches/AImageReader-CFI-crash-mitigations.patch
  6. 13 13
      build/patches/AV1-codec-support.patch
  7. 7 7
      build/patches/Add-AllowUserCertificates-flag.patch
  8. 4 4
      build/patches/Add-IsCleartextPermitted-flag.patch
  9. 14 14
      build/patches/Add-a-proxy-configuration-page.patch
  10. 144 98
      build/patches/Add-an-always-incognito-mode.patch
  11. 26 26
      build/patches/Add-bookmark-import-export-actions.patch
  12. 6 6
      build/patches/Add-custom-tab-intents-privacy-option.patch
  13. 5 5
      build/patches/Add-exit-menu-item.patch
  14. 2 2
      build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch
  15. 34 22
      build/patches/Add-flag-for-save-data-header.patch
  16. 8 8
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  17. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  18. 6 6
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  19. 8 8
      build/patches/Add-flag-to-disable-external-intent-requests.patch
  20. 6 6
      build/patches/Add-flag-to-disable-vibration.patch
  21. 29 29
      build/patches/Add-lifetime-options-for-permissions.patch
  22. 18 18
      build/patches/Add-menu-item-to-bookmark-all-tabs.patch
  23. 4 4
      build/patches/Add-menu-item-to-view-source.patch
  24. 7 7
      build/patches/Add-option-to-force-tablet-UI.patch
  25. 2 2
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  26. 4 4
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  27. 4 4
      build/patches/Add-site-engagement-flag.patch
  28. 1 1
      build/patches/Add-support-for-ISupportHelpAndFeedback.patch
  29. 17 17
      build/patches/Add-webGL-site-setting.patch
  30. 11 11
      build/patches/Add-webRTC-site-settings.patch
  31. 12 12
      build/patches/Allow-building-without-enable_reporting.patch
  32. 1 1
      build/patches/Allow-building-without-supervised-users.patch
  33. 9 9
      build/patches/Ask-user-before-closing-all-tabs.patch
  34. 2 2
      build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch
  35. 241 117
      build/patches/Automated-domain-substitution.patch
  36. 3 3
      build/patches/Block-gateway-attacks-via-websockets.patch
  37. 4 4
      build/patches/Block-qjz9zk-or-trk-requests.patch
  38. 1 1
      build/patches/Bookmarks-select-all-menu-entry.patch
  39. 28 28
      build/patches/Bromite-AdBlockUpdaterService.patch
  40. 10 10
      build/patches/Bromite-auto-updater.patch
  41. 85 23
      build/patches/Client-hints-overrides.patch
  42. 5 5
      build/patches/Content-settings-infrastructure.patch
  43. 4 2
      build/patches/Dictionary-suggestions-for-the-Omnibox.patch
  44. 4 4
      build/patches/Disable-AGSA-by-default.patch
  45. 1 1
      build/patches/Disable-Accessibility-service-by-default.patch
  46. 1 1
      build/patches/Disable-AsyncDNS-by-default.patch
  47. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  48. 3 3
      build/patches/Disable-FLoC-and-privacy-sandbox.patch
  49. 11 11
      build/patches/Disable-TLS-resumption.patch
  50. 3 3
      build/patches/Disable-UA-full-version.patch
  51. 20 19
      build/patches/Disable-all-predictors-code.patch
  52. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  53. 8 175
      build/patches/Disable-conversion-measurement-api.patch
  54. 1 1
      build/patches/Disable-feeds-support-by-default.patch
  55. 6 6
      build/patches/Disable-fetching-of-all-field-trials.patch
  56. 1 1
      build/patches/Disable-idle-detection.patch
  57. 9 13
      build/patches/Disable-media-router-and-remoting-by-default.patch
  58. 1 1
      build/patches/Disable-plugins-enumeration.patch
  59. 144 116
      build/patches/Disable-safe-browsing.patch
  60. 15 13
      build/patches/Disable-safety-check.patch
  61. 4 4
      build/patches/Disable-smart-selection-by-default.patch
  62. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  63. 1 1
      build/patches/Disable-support-for-RAR-files-inspection.patch
  64. 12 12
      build/patches/Disable-text-fragments-by-default.patch
  65. 1 1
      build/patches/Disable-third-party-cookies-by-default.patch
  66. 8 8
      build/patches/Disable-third-party-origin-trials.patch
  67. 8 8
      build/patches/Disable-various-metrics.patch
  68. 1 1
      build/patches/Do-not-build-API-keys-infobar.patch
  69. 1 1
      build/patches/Do-not-hide-component-extensions.patch
  70. 1 1
      build/patches/Do-not-link-with-libatomic.patch
  71. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  72. 1 1
      build/patches/DoH-improvements.patch
  73. 14 14
      build/patches/Enable-Certificate-Transparency.patch
  74. 1 1
      build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch
  75. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  76. 4 4
      build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch
  77. 1 1
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  78. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  79. 41 41
      build/patches/Enable-native-Android-autofill.patch
  80. 2 2
      build/patches/Enable-network-isolation-features.patch
  81. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  82. 12 12
      build/patches/Enable-share-intent.patch
  83. 1 1
      build/patches/Enable-user-agent-freeze-by-default.patch
  84. 42 42
      build/patches/Experimental-user-scripts-support.patch
  85. 1 1
      build/patches/Hardening-against-incognito-mode-detection.patch
  86. 3 3
      build/patches/Hide-passwords-manager-link.patch
  87. 9 9
      build/patches/History-number-of-days-privacy-setting.patch
  88. 7 7
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  89. 3 3
      build/patches/JIT-site-settings.patch
  90. 2 2
      build/patches/Keep-empty-tabs-between-sessions.patch
  91. 1 1
      build/patches/Keep-flag-to-allow-screenshots-in-Incognito-mode.patch
  92. 2 2
      build/patches/Logcat-crash-reports-UI.patch
  93. 148 24
      build/patches/Modify-default-preferences.patch
  94. 67 67
      build/patches/Move-navigation-bar-to-bottom.patch
  95. 1 1
      build/patches/Move-some-account-settings-back-to-privacy-settings.patch
  96. 25 25
      build/patches/Multiple-fingerprinting-mitigations.patch
  97. 1 1
      build/patches/Open-YouTube-links-in-Bromite.patch
  98. 4 4
      build/patches/OpenSearch-miscellaneous.patch
  99. 36 38
      build/patches/Partition-DNS-requests-by-top-frame-NIK.patch
  100. 4 4
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch

+ 1 - 1
build/LASTCHANGE

@@ -1 +1 @@
-f441c1f02214920ad09ab14ca8be3eaa4b5a942a-
+e2f81b1dde1b1797abac2016085412a9f5cd16b0-

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-101.0.4951.69
+102.0.5005.67

+ 1 - 1
build/RELEASE_COMMIT

@@ -1 +1 @@
-3b19d1cba55608c5382ebd24ffdfa28d937c9e37
+56d61c35a8cc36f6c7e4a47b81ffbcad0b7bc405

+ 8 - 9
build/bromite_patches_list.txt

@@ -9,7 +9,7 @@ Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
 Bromite-package-name.patch
 Restore-classic-new-tab-page.patch
 Always-use-new-tab-page-for-default-home-page.patch
-battery_status_service-disable-more-privacy-nightmares.patch
+disable-battery-status-updater.patch
 Battery-API-return-nothing.patch
 updater-disable-updater-pings.patch
 Remove-EV-certificates.patch
@@ -26,7 +26,7 @@ ungoogled-chromium-Disable-webRTC-log-uploader.patch
 ungoogled-chromium-Disable-untraceable-URLs.patch
 ungoogled-chromium-Disable-translate-integration.patch
 ungoogled-chromium-Disable-profile-avatar.patch
-ungoogled-chromium-Disable-intranet-redirect-detector.patch
+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
@@ -63,10 +63,10 @@ Disable-FLoC-and-privacy-sandbox.patch
 History-number-of-days-privacy-setting.patch
 Disable-fetching-of-all-field-trials.patch
 Disable-plugins-enumeration.patch
-net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch
+net-cert-increase-default-key-length.patch
 dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
 Add-flag-to-disable-IPv6-probes.patch
-profile-resetter-do-not-tick-send-settings-by-default.patch
+profile-resetter-disable-send-settings.patch
 Do-not-build-API-keys-infobar.patch
 autofill-miscellaneous.patch
 Enable-native-Android-autofill.patch
@@ -86,7 +86,7 @@ Enable-SPPI-for-devices-with-enough-memory.patch
 Enable-StrictOriginIsolation-and-SitePerProcess.patch
 Use-64-bit-WebView-processes.patch
 prefs-disable-signinallowed-by-default.patch
-prefs-always-prompt-for-download-directory-by-default.patch
+prefs-always-prompt-for-download-directory.patch
 Disable-offline-pages-in-CCT.patch
 disable-payment-support-by-default.patch
 disable-background-sync-by-default.patch
@@ -142,7 +142,7 @@ Add-AllowUserCertificates-flag.patch
 Add-IsCleartextPermitted-flag.patch
 Unexpire-tab-groups-flags.patch
 Add-flag-for-omnibox-autocomplete-filtering.patch
-Enable-IntentBlockExternalFormRedirectsNoGesture-by-default.patch
+Enable-IntentBlockExternalFormRedirectsNoGesture.patch
 Add-flag-to-disable-external-intent-requests.patch
 Logcat-crash-reports-UI.patch
 Add-support-for-ISupportHelpAndFeedback.patch
@@ -168,11 +168,10 @@ Reintroduce-override_build_timestamp.patch
 enable-ftrivial-auto-var-init-zero.patch
 disable-appending-variations-header.patch
 Make-HTTPS-only-mode-the-default.patch
-disable-mobile-identity-consistency-by-default.patch
 Disable-idle-detection.patch
 Allow-building-without-supervised-users.patch
 Disable-minidump-upload-scheduling.patch
-Revert-Permit-blocking-of-view-source-with-URLBlocklist.patch
+Revert-Permit-blocking-of-view-source.patch
 Disable-safety-check.patch
 Disable-all-predictors-code.patch
 OpenSearch-miscellaneous.patch
@@ -180,7 +179,7 @@ Enable-Certificate-Transparency.patch
 Update-i18n-zh_CN-support.patch
 Add-flag-for-save-data-header.patch
 Disable-UA-full-version.patch
-Revert-Disable-Dictionary-suggestions-for-the-Omnibox.patch
+Dictionary-suggestions-for-the-Omnibox.patch
 Disable-AsyncDNS-by-default.patch
 Add-lifetime-options-for-permissions.patch
 Disable-crash-reporting.patch

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

@@ -82,7 +82,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2287,9 +2287,9 @@
+@@ -2243,9 +2243,9 @@
      "expiry_milestone": 106
    },
    {
@@ -98,7 +98,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
 --- a/gpu/config/gpu_driver_bug_list.json
 +++ b/gpu/config/gpu_driver_bug_list.json
-@@ -3198,6 +3198,22 @@
+@@ -3199,6 +3199,22 @@
          "dont_delete_source_texture_for_egl_image"
        ]
      },
@@ -150,7 +150,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
-@@ -117,6 +117,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
+@@ -120,6 +120,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
  #if !BUILDFLAG(IS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
@@ -160,7 +160,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -330,6 +333,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -343,6 +346,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] =
          kGpuFeatureStatusBlocklisted;
    }
@@ -229,7 +229,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
-@@ -687,6 +687,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -711,6 +711,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};
@@ -243,7 +243,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
-@@ -215,6 +215,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders;
+@@ -223,6 +223,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;

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

@@ -54,7 +54,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
-@@ -655,6 +655,11 @@ aom_rc_interface_sources = [
+@@ -652,6 +652,11 @@ aom_rc_interface_sources = [
    "//third_party/libaom/source/libaom/test/yuv_video_source.h",
  ]
  
@@ -75,9 +75,9 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
  CONFIG_PARTITION_SEARCH_ORDER equ 0
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
+ CONFIG_RATECTRL_LOG equ 0
  CONFIG_RD_COMMAND equ 0
  CONFIG_RD_DEBUG equ 0
- CONFIG_REALTIME_ONLY equ 1
 diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
@@ -87,9 +87,9 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
@@ -99,9 +99,9 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.a
  CONFIG_PARTITION_SEARCH_ORDER equ 0
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
+ CONFIG_RATECTRL_LOG equ 0
  CONFIG_RD_COMMAND equ 0
  CONFIG_RD_DEBUG equ 0
- CONFIG_REALTIME_ONLY equ 1
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
@@ -111,9 +111,9 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
@@ -123,9 +123,9 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/
  CONFIG_PARTITION_SEARCH_ORDER equ 0
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
+ CONFIG_RATECTRL_LOG equ 0
  CONFIG_RD_COMMAND equ 0
  CONFIG_RD_DEBUG equ 0
- CONFIG_REALTIME_ONLY equ 1
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/third_party/libaom/source/config/linux/arm/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.h
@@ -135,9 +135,9 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/th
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
@@ -147,9 +147,9 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
  CONFIG_PARTITION_SEARCH_ORDER equ 0
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
+ CONFIG_RATECTRL_LOG equ 0
  CONFIG_RD_COMMAND equ 0
  CONFIG_RD_DEBUG equ 0
- CONFIG_REALTIME_ONLY equ 1
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
@@ -159,9 +159,9 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.asm b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
@@ -171,9 +171,9 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.as
  CONFIG_PARTITION_SEARCH_ORDER equ 0
 -CONFIG_PIC equ 0
 +CONFIG_PIC equ 1
+ CONFIG_RATECTRL_LOG equ 0
  CONFIG_RD_COMMAND equ 0
  CONFIG_RD_DEBUG equ 0
- CONFIG_REALTIME_ONLY equ 1
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h b/third_party/libaom/source/config/linux/generic/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.h
@@ -183,9 +183,9 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
@@ -195,9 +195,9 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/
  %define CONFIG_PARTITION_SEARCH_ORDER 0
 -%define CONFIG_PIC 0
 +%define CONFIG_PIC 1
+ %define CONFIG_RATECTRL_LOG 0
  %define CONFIG_RD_COMMAND 0
  %define CONFIG_RD_DEBUG 0
- %define CONFIG_REALTIME_ONLY 1
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/third_party/libaom/source/config/linux/x64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.h
@@ -207,8 +207,8 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/th
  #define CONFIG_PARTITION_SEARCH_ORDER 0
 -#define CONFIG_PIC 0
 +#define CONFIG_PIC 1
+ #define CONFIG_RATECTRL_LOG 0
  #define CONFIG_RD_COMMAND 0
  #define CONFIG_RD_DEBUG 0
- #define CONFIG_REALTIME_ONLY 1
 --
 2.25.1

+ 7 - 7
build/patches/Add-AllowUserCertificates-flag.patch

@@ -18,7 +18,7 @@ Subject: Add AllowUserCertificates flag
 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
-@@ -232,6 +232,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
+@@ -231,6 +231,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;
@@ -26,7 +26,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;
-@@ -995,6 +996,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -994,6 +995,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          UpdateMenuItemHelper.getInstance().onStart();
          ChromeActivitySessionTracker.getInstance().onStartWithNative();
          ChromeCachedFlags.getInstance().cacheNativeFlags();
@@ -38,7 +38,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/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
-@@ -95,6 +95,7 @@ public class ChromeCachedFlags {
+@@ -94,6 +94,7 @@ public class ChromeCachedFlags {
                                  .GIVE_JAVA_UI_THREAD_DEFAULT_TASK_TRAITS_USER_BLOCKING_PRIORITY);
                  add(ChromeFeatureList.GRID_TAB_SWITCHER_FOR_TABLETS);
                  add(ChromeFeatureList.IMMERSIVE_UI_MODE);
@@ -49,7 +49,7 @@ 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
-@@ -3076,7 +3076,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3220,7 +3220,11 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-container-queries", flag_descriptions::kCSSContainerQueriesName,
       flag_descriptions::kCSSContainerQueriesDescription, kOsAll,
       FEATURE_VALUE_TYPE(blink::features::kCSSContainerQueries)},
@@ -93,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
-@@ -147,6 +147,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -144,6 +144,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &feed::kFeedLoadingPlaceholder,
      &feed::kInterestFeedContentSuggestions,
      &feed::kInterestFeedSpinnerAlwaysAnimate,
@@ -101,7 +101,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &feed::kInterestFeedV1ClicksAndViewsConditionalUpload,
      &feed::kInterestFeedV2,
      &feed::kInterestFeedV2Autoplay,
-@@ -406,6 +407,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
+@@ -399,6 +400,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
      "AdaptiveButtonInTopToolbarCustomizationV2",
      base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -141,9 +141,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
  
      /* Alphabetical: */
 +    public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
+     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 =
-             "AdaptiveButtonInTopToolbarCustomizationV2";
 diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/java/src/org/chromium/net/X509Util.java
 --- a/net/android/java/src/org/chromium/net/X509Util.java
 +++ b/net/android/java/src/org/chromium/net/X509Util.java

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

@@ -14,7 +14,7 @@ Subject: Add IsCleartextPermitted flag
 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
-@@ -8171,6 +8171,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8201,6 +8201,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kRequestDesktopSiteExceptionsName,
       flag_descriptions::kRequestDesktopSiteExceptionsDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)},
@@ -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
-@@ -1538,6 +1538,10 @@ const char kHttpsOnlyModeDescription[] =
+@@ -1477,6 +1477,10 @@ const char kHttpsOnlyModeDescription[] =
      "Adds a setting under chrome://settings/security to opt-in to HTTPS-First "
      "Mode.";
  
@@ -42,7 +42,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
-@@ -873,6 +873,9 @@ extern const char kHideShelfControlsInTabletModeDescription[];
+@@ -834,6 +834,9 @@ extern const char kHideShelfControlsInTabletModeDescription[];
  extern const char kHttpsOnlyModeName[];
  extern const char kHttpsOnlyModeDescription[];
  
@@ -55,7 +55,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
-@@ -95,6 +95,9 @@ const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
+@@ -115,6 +115,9 @@ const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
  const base::Feature kEncryptedClientHello{"EncryptedClientHello",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
  

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

@@ -114,10 +114,10 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
  #include <utility>
  
 +#include "base/logging.h"
- #include "base/task/post_task.h"
  #include "base/threading/thread_task_runner_handle.h"
  #include "build/build_config.h"
-@@ -15,6 +16,9 @@
+ #include "build/chromeos_buildflags.h"
+@@ -14,6 +15,9 @@
  #include "content/public/browser/browser_thread.h"
  #include "net/proxy_resolution/configured_proxy_resolution_service.h"
  #include "net/proxy_resolution/proxy_config_service.h"
@@ -127,7 +127,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
  
  #if BUILDFLAG(IS_CHROMEOS_ASH)
  #include "chromeos/network/proxy/proxy_config_service_impl.h"
-@@ -73,7 +77,20 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfProfile(
+@@ -72,7 +76,20 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfProfile(
    return std::make_unique<chromeos::ProxyConfigServiceImpl>(
        profile_prefs, local_state_prefs, nullptr);
  #else
@@ -149,7 +149,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  }
  
-@@ -89,3 +106,8 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState(
+@@ -88,3 +105,8 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState(
                                                        nullptr);
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  }
@@ -181,7 +181,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -158,6 +158,8 @@
+@@ -161,6 +161,8 @@
  #include "printing/buildflags/buildflags.h"
  #include "rlz/buildflags/buildflags.h"
  
@@ -190,7 +190,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
-@@ -967,6 +969,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
+@@ -994,6 +996,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
    chrome::enterprise_util::RegisterLocalStatePrefs(registry);
    component_updater::RegisterPrefs(registry);
    embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
@@ -635,7 +635,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
-@@ -274,6 +274,8 @@ static_library("ui") {
+@@ -281,6 +281,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -647,15 +647,15 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -55,6 +55,7 @@
+@@ -56,6 +56,7 @@
  #include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h"
  #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
  #include "chrome/browser/ui/webui/policy/policy_ui.h"
 +#include "chrome/browser/ui/webui/proxy_config_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
+ #include "chrome/browser/ui/webui/profiles/profile_internals_ui.h"
  #include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h"
- #include "chrome/browser/ui/webui/signin_internals_ui.h"
-@@ -763,6 +764,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -778,6 +779,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -1126,7 +1126,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
-@@ -39,6 +39,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
+@@ -48,6 +48,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
  const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
  const char kChromeUIChromeSigninHost[] = "chrome-signin";
  const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
@@ -1135,7 +1135,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";
-@@ -409,6 +411,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -421,6 +423,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
      kChromeUIMobileSetupHost,
      kChromeUIMultiDeviceSetupHost,
      kChromeUINetworkHost,
@@ -1143,7 +1143,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIOobeHost,
      kChromeUIOSCreditsHost,
      kChromeUIOSSettingsHost,
-@@ -651,6 +654,7 @@ const char* const kChromeHostURLs[] = {
+@@ -672,6 +675,7 @@ const char* const kChromeHostURLs[] = {
  #if !BUILDFLAG(IS_ANDROID)
  #if !BUILDFLAG(IS_CHROMEOS_ASH)
      kChromeUIAppLauncherPageHost,
@@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
 diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
 --- a/chrome/common/webui_url_constants.h
 +++ b/chrome/common/webui_url_constants.h
-@@ -129,6 +129,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -132,6 +132,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -33,14 +33,16 @@ See also: https://github.com/bromite/bromite/pull/1427
  .../chrome/browser/history/HistoryPage.java   |  16 ++
  .../browser/init/StartupTabPreloader.java     |  14 +-
  .../native_page/NativePageFactory.java        |   4 +-
- .../chrome/browser/ntp/RecentTabsManager.java |   8 +-
+ .../chrome/browser/ntp/RecentTabsManager.java |   3 +-
  .../privacy/settings/IncognitoSettings.java   | 160 ++++++++++++++++++
  .../browser/settings/SettingsActivity.java    |   4 +
- .../browser/tab/HistoricalTabSaver.java       |   6 +-
+ .../HistoricalTabModelObserver.java           |   8 +-
+ .../tab/tab_restore/HistoricalTabSaver.java   |   2 +-
+ .../tab_restore/HistoricalTabSaverImpl.java   |  12 +-
  .../tabbed_mode/TabbedRootUiCoordinator.java  |   5 +-
  .../browser/tabmodel/ChromeTabCreator.java    |   5 +-
  .../tabmodel/TabModelSelectorImpl.java        |   3 +
- .../browser/tabmodel/TabPersistentStore.java  |  15 +-
+ .../browser/tabmodel/TabPersistentStore.java  |  10 ++
  .../webapps/WebappIntentDataProvider.java     |  14 ++
  chrome/browser/about_flags.cc                 |   4 +
  .../browser/android/historical_tab_saver.cc   |  21 ++-
@@ -78,7 +80,7 @@ See also: https://github.com/bromite/bromite/pull/1427
  .../omnibox/browser/base_search_provider.cc   |   2 +-
  components/omnibox/browser/search_provider.cc |   4 +-
  .../host_content_settings_map_factory.cc      |   1 +
- 62 files changed, 682 insertions(+), 72 deletions(-)
+ 64 files changed, 686 insertions(+), 74 deletions(-)
  create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java
@@ -87,7 +89,7 @@ See also: https://github.com/bromite/bromite/pull/1427
 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
-@@ -708,6 +708,7 @@ chrome_java_resources = [
+@@ -695,6 +695,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",
@@ -106,7 +108,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",
-@@ -967,6 +968,7 @@ chrome_java_sources = [
+@@ -973,6 +974,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",
@@ -240,7 +242,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
-@@ -1826,8 +1827,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1853,8 +1854,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -255,7 +257,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
-@@ -104,6 +104,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
+@@ -103,6 +103,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
  import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
  import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
@@ -263,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
  import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides;
  import org.chromium.chrome.browser.device.DeviceClassManager;
-@@ -1963,6 +1964,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1959,6 +1960,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -348,7 +350,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
  import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ListItemType;
-@@ -409,6 +410,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -418,6 +419,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
          boolean hasSaveImage = false;
          mShowEphemeralTabNewLabel = null;
  
@@ -358,7 +360,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
          List<Pair<Integer, ModelList>> groupedItems = new ArrayList<>();
  
          if (mParams.isAnchor()) {
-@@ -427,6 +431,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -436,6 +440,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
                              linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP));
                          }
                      }
@@ -366,7 +368,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
                      if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) {
                          linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB));
                      }
-@@ -451,7 +456,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -460,7 +465,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
                  }
              }
              if (FirstRunStatus.getFirstRunFlowComplete()) {
@@ -639,27 +641,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
-@@ -73,16 +73,16 @@ public class RecentTabsManager implements AccountsChangeObserver {
+@@ -73,7 +73,8 @@ public class RecentTabsManager implements AccountsChangeObserver {
       */
      public RecentTabsManager(Tab tab, TabModelSelector tabModelSelector, Profile profile,
              Context context, Runnable showHistoryManager) {
 -        mProfile = profile;
 +        mProfile = profile.getOriginalProfile();
++        profile = mProfile;
          mActiveTab = tab;
          mTabModelSelector = tabModelSelector;
          mShowHistoryManager = showHistoryManager;
--        mForeignSessionHelper = new ForeignSessionHelper(profile);
--        mPrefs = new RecentTabsPagePrefs(profile);
-+        mForeignSessionHelper = new ForeignSessionHelper(mProfile);
-+        mPrefs = new RecentTabsPagePrefs(mProfile);
-         mFaviconHelper = new FaviconHelper();
-         mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null
-                 ? sRecentlyClosedTabManagerForTests
--                : new RecentlyClosedBridge(profile);
-+                : new RecentlyClosedBridge(mProfile);
- 
-         mRecentlyClosedTabManager.setTabsUpdatedRunnable(this::updateRecentlyClosedTabs);
-         updateRecentlyClosedTabs();
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java
 new file mode 100644
 --- /dev/null
@@ -836,7 +827,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;
-@@ -254,6 +255,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -252,6 +253,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
          if (fragment instanceof AdPersonalizationRemovedFragment) {
              ((AdPersonalizationRemovedFragment) fragment).setSnackbarManager(getSnackbarManager());
          }
@@ -846,30 +837,96 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
      }
  
      @Override
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/HistoricalTabSaver.java
-@@ -29,10 +29,10 @@ public class HistoricalTabSaver {
-     /**
-      * Creates a historical tab from a tab being closed.
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver.java
+@@ -15,6 +15,8 @@ import java.util.ArrayList;
+ import java.util.HashMap;
+ import java.util.List;
+ 
++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
++
+ /**
+  * A tab model observer for managing bulk closures.
+  */
+@@ -47,7 +49,8 @@ public class HistoricalTabModelObserver implements TabModelObserver {
+         if (tabs.isEmpty()) return;
+ 
+         if (tabs.size() == 1) {
+-            mHistoricalTabSaver.createHistoricalTab(tabs.get(0));
++            boolean is_always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito();
++            mHistoricalTabSaver.createHistoricalTab(tabs.get(0), is_always_incognito);
+             return;
+         }
+ 
+@@ -59,8 +62,9 @@ public class HistoricalTabModelObserver implements TabModelObserver {
+      * identical to what occurred prior to {@link ChromeFeatureList.BULK_TAB_RESTORE}.
       */
--    public static void createHistoricalTab(Tab tab) {
-+    public static void createHistoricalTab(Tab tab, boolean is_always_incognito) {
+     private void legacyCreateHistoricalTabs(List<Tab> tabs) {
++        boolean is_always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito();
+         for (Tab tab : tabs) {
+-            mHistoricalTabSaver.createHistoricalTab(tab);
++            mHistoricalTabSaver.createHistoricalTab(tab, is_always_incognito);
+         }
+     }
+ 
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver.java
+@@ -16,7 +16,7 @@ public interface HistoricalTabSaver {
+      * Creates a Tab entry in TabRestoreService.
+      * @param tab The {@link Tab} to create an entry for.
+      */
+-    void createHistoricalTab(Tab tab);
++    void createHistoricalTab(Tab tab, boolean is_always_incognito);
+ 
+     /**
+      * Creates a Group or Tab entry in TabRestoreService.
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java
+@@ -46,10 +46,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
+ 
+     // HistoricalTabSaver implementation.
+     @Override
+-    public void createHistoricalTab(Tab tab) {
++    public void createHistoricalTab(Tab tab, boolean is_always_incognito) {
          if (!shouldSave(tab)) return;
  
--        HistoricalTabSaverJni.get().createHistoricalTab(tab);
-+        HistoricalTabSaverJni.get().createHistoricalTab(tab, is_always_incognito);
+-        createHistoricalTabInternal(tab);
++        createHistoricalTabInternal(tab, is_always_incognito);
+     }
+ 
+     @Override
+@@ -90,7 +90,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
+ 
+         // If there is only a single valid tab remaining save it individually.
+         if (validEntries.size() == 1 && validEntries.get(0).isSingleTab()) {
+-            createHistoricalTabInternal(allTabs.get(0));
++            createHistoricalTabInternal(allTabs.get(0), false);
+             return;
+         }
+ 
+@@ -107,8 +107,8 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
+                 CollectionUtil.integerListToIntArray(perTabGroupId), allTabs.toArray(new Tab[0]));
+     }
+ 
+-    private void createHistoricalTabInternal(Tab tab) {
+-        HistoricalTabSaverImplJni.get().createHistoricalTab(tab);
++    private void createHistoricalTabInternal(Tab tab, boolean is_always_incognito) {
++        HistoricalTabSaverImplJni.get().createHistoricalTab(tab, is_always_incognito);
      }
  
      /**
-@@ -72,6 +72,6 @@ public class HistoricalTabSaver {
+@@ -194,7 +194,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver {
  
      @NativeMethods
      interface Natives {
 -        void createHistoricalTab(Tab tab);
 +        void createHistoricalTab(Tab tab, boolean is_always_incognito);
-     }
- }
+         void createHistoricalGroup(TabModel model, String title, Tab[] tabs);
+         void createHistoricalBulkClosure(
+                 TabModel model, int[] groupIds, String[] titles, int[] perTabGroupId, Tab[] tabs);
 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
@@ -882,7 +939,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
  
  /**
   * A {@link RootUiCoordinator} variant that controls tabbed-mode specific UI.
-@@ -495,11 +497,12 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -493,11 +495,12 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
  
          // TODO(twellington): Supply TabModelSelector as well and move initialization earlier.
          if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
@@ -928,8 +985,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
  import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
  import org.chromium.chrome.browser.flags.ActivityType;
- import org.chromium.chrome.browser.profiles.Profile;
-@@ -107,6 +108,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
+ import org.chromium.chrome.browser.ntp.RecentlyClosedBridge;
+@@ -108,6 +109,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
      public void onNativeLibraryReady(TabContentManager tabContentProvider) {
          assert mTabContentManager == null : "onNativeLibraryReady called twice!";
  
@@ -949,7 +1006,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
  import org.chromium.base.FeatureList;
  import org.chromium.base.Log;
  import org.chromium.base.ObserverList;
-@@ -59,6 +60,8 @@ import org.chromium.content_public.browser.LoadUrlParams;
+@@ -58,6 +59,8 @@ import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  import org.chromium.url.GURL;
  
@@ -958,19 +1015,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
  import java.io.BufferedInputStream;
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
-@@ -190,7 +193,10 @@ public class TabPersistentStore {
-             @Override
-             public void didCloseTab(Tab tab) {
-                 PersistedTabData.onTabClose(tab);
--                if (!tab.isIncognito()) HistoricalTabSaver.createHistoricalTab(tab);
-+                boolean is_always_incognito =
-+                    AlwaysIncognitoLinkInterceptor.isAlwaysIncognito();
-+                if (!tab.isIncognito() || is_always_incognito)
-+                        HistoricalTabSaver.createHistoricalTab(tab, is_always_incognito);
-                 removeTabFromQueues(tab);
-             }
- 
-@@ -741,6 +747,13 @@ public class TabPersistentStore {
+@@ -739,6 +742,13 @@ public class TabPersistentStore {
                  }
              }
          }
@@ -1032,7 +1077,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
-@@ -4232,6 +4232,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4373,6 +4373,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kOfflinePagesLivePageSharingName,
       flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)},
@@ -1040,13 +1085,13 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +     flag_descriptions::kOfflinePagesAutoSaveFeatureName,
 +     flag_descriptions::kOfflinePagesAutoSaveFeatureDescription, kOsAndroid,
 +     FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesAutoSaveFeature)},
-     {"offline-indicator-v2", flag_descriptions::kOfflineIndicatorV2Name,
-      flag_descriptions::kOfflineIndicatorV2Description, kOsAndroid,
-      FEATURE_VALUE_TYPE(chrome::android::kOfflineIndicatorV2)},
+     {"query-tiles", flag_descriptions::kQueryTilesName,
+      flag_descriptions::kQueryTilesDescription, kOsAndroid,
+      FEATURE_WITH_PARAMS_VALUE_TYPE(query_tiles::features::kQueryTiles,
 diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/android/historical_tab_saver.cc
 --- a/chrome/browser/android/historical_tab_saver.cc
 +++ b/chrome/browser/android/historical_tab_saver.cc
-@@ -14,13 +14,18 @@
+@@ -24,6 +24,11 @@
  #include "components/sessions/core/tab_restore_service.h"
  #include "content/public/browser/web_contents.h"
  
@@ -1056,17 +1101,18 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
 +#include "historical_tab_saver.h"
 +
  using base::android::JavaParamRef;
+ using base::android::ScopedJavaLocalRef;
  
- namespace historical_tab_saver {
- 
- namespace {
+@@ -34,7 +39,7 @@ namespace {
+ // Defined in TabGroupModelFilter.java
+ constexpr int kInvalidGroupId = -1;
  
 -void CreateHistoricalTab(TabAndroid* tab_android) {
 +void CreateHistoricalTab(TabAndroid* tab_android, bool is_always_incognito) {
    if (!tab_android) {
      return;
    }
-@@ -30,9 +35,14 @@ void CreateHistoricalTab(TabAndroid* tab_android) {
+@@ -44,9 +49,14 @@ void CreateHistoricalTab(TabAndroid* tab_android) {
      return;
    }
  
@@ -1083,9 +1129,9 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
    if (!service) {
      return;
    }
-@@ -77,8 +87,9 @@ std::unique_ptr<ScopedWebContents> ScopedWebContents::CreateForTab(
+@@ -176,8 +186,9 @@ std::unique_ptr<ScopedWebContents> ScopedWebContents::CreateForTab(
  // static
- static void JNI_HistoricalTabSaver_CreateHistoricalTab(
+ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab(
      JNIEnv* env,
 -    const JavaParamRef<jobject>& jtab_android) {
 -  CreateHistoricalTab(TabAndroid::GetNativeTab(env, jtab_android));
@@ -1094,7 +1140,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
 +  CreateHistoricalTab(TabAndroid::GetNativeTab(env, jtab_android), is_always_incognito);
  }
  
- }  // namespace historical_tab_saver
+ // static
 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
@@ -1172,7 +1218,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
-@@ -3421,6 +3421,12 @@ const char kOfflinePagesLivePageSharingDescription[] =
+@@ -3338,6 +3338,12 @@ const char kOfflinePagesLivePageSharingDescription[] =
      "Enables to share current loaded page as offline page by saving as MHTML "
      "first.";
  
@@ -1188,7 +1234,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
-@@ -1956,6 +1956,9 @@ extern const char kOfflineIndicatorV2Description[];
+@@ -1896,6 +1896,9 @@ extern const char kNotificationPermissionRationaleDescription[];
  extern const char kOfflinePagesLivePageSharingName[];
  extern const char kOfflinePagesLivePageSharingDescription[];
  
@@ -1201,7 +1247,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
-@@ -482,8 +482,8 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
+@@ -475,8 +475,8 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
  const base::Feature kCCTIncognito{"CCTIncognito",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -1291,7 +1337,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
 diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc
 --- a/chrome/browser/offline_pages/android/offline_page_bridge.cc
 +++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc
-@@ -48,6 +48,9 @@
+@@ -47,6 +47,9 @@
  #include "content/public/browser/web_contents.h"
  #include "net/base/filename_util.h"
  #include "url/android/gurl_android.h"
@@ -1301,7 +1347,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom
  
  using base::android::ConvertJavaStringToUTF8;
  using base::android::ConvertUTF16ToJavaString;
-@@ -157,7 +160,13 @@ void ValidateFileCallback(
+@@ -156,7 +159,13 @@ void ValidateFileCallback(
      int64_t offline_id,
      const GURL& url,
      const base::FilePath& file_path,
@@ -1315,7 +1361,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom
    // If trusted, the launch url will be the http/https url of the offline
    // page. If the file path is content URI, directly open it. Otherwise, the
    // launch url will be the file URL pointing to the archive file of the offline
-@@ -788,7 +797,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
+@@ -787,7 +796,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
    if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) {
      ValidateFileCallback(launch_location, j_callback_obj,
                           offline_page->offline_id, offline_page->url,
@@ -1324,7 +1370,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom
      return;
    }
  
-@@ -798,7 +807,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
+@@ -797,7 +806,7 @@ void OfflinePageBridge::GetPageByOfflineIdDone(
                       offline_page->file_size, offline_page->digest),
        base::BindOnce(&ValidateFileCallback, launch_location, j_callback_obj,
                       offline_page->offline_id, offline_page->url,
@@ -1336,7 +1382,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom
 diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc b/chrome/browser/offline_pages/android/offline_page_model_factory.cc
 --- a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
 +++ b/chrome/browser/offline_pages/android/offline_page_model_factory.cc
-@@ -26,6 +26,9 @@
+@@ -25,6 +25,9 @@
  #include "components/keyed_service/core/simple_dependency_manager.h"
  #include "components/offline_pages/core/model/offline_page_model_taskified.h"
  #include "components/offline_pages/core/offline_page_metadata_store.h"
@@ -1346,7 +1392,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
  
  namespace offline_pages {
  
-@@ -48,6 +51,7 @@ OfflinePageModel* OfflinePageModelFactory::GetForKey(SimpleFactoryKey* key) {
+@@ -47,6 +50,7 @@ OfflinePageModel* OfflinePageModelFactory::GetForKey(SimpleFactoryKey* key) {
  OfflinePageModel* OfflinePageModelFactory::GetForBrowserContext(
      content::BrowserContext* browser_context) {
    Profile* profile = Profile::FromBrowserContext(browser_context);
@@ -1354,7 +1400,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
    return GetForKey(profile->GetProfileKey());
  }
  
-@@ -56,13 +60,15 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
+@@ -55,13 +59,15 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
    scoped_refptr<base::SequencedTaskRunner> background_task_runner =
        base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()});
  
@@ -1372,7 +1418,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
    // If base::PathService::Get returns false, the temporary_archives_dir will be
    // empty, and no temporary pages will be saved during this chrome lifecycle.
    base::FilePath temporary_archives_dir;
-@@ -71,7 +77,6 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
+@@ -70,7 +76,6 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
          temporary_archives_dir.Append(chrome::kOfflinePageArchivesDirname);
    }
  
@@ -1380,7 +1426,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
    auto archive_manager = std::make_unique<DownloadArchiveManager>(
        temporary_archives_dir, persistent_archives_dir,
        DownloadPrefs::GetDefaultDownloadDirectory(), background_task_runner,
-@@ -91,4 +96,14 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
+@@ -90,4 +95,14 @@ std::unique_ptr<KeyedService> OfflinePageModelFactory::BuildServiceInstanceFor(
    return model;
  }
  
@@ -1398,7 +1444,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc
 diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc b/chrome/browser/offline_pages/android/request_coordinator_factory.cc
 --- a/chrome/browser/offline_pages/android/request_coordinator_factory.cc
 +++ b/chrome/browser/offline_pages/android/request_coordinator_factory.cc
-@@ -30,6 +30,11 @@
+@@ -29,6 +29,11 @@
  #include "components/offline_pages/core/offline_page_feature.h"
  #include "content/public/browser/web_contents.h"
  
@@ -1410,7 +1456,7 @@ diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc
  namespace network {
  class NetworkQualityTracker;
  }
-@@ -115,4 +120,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor(
+@@ -114,4 +119,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor(
    return request_coordinator;
  }
  
@@ -1441,7 +1487,7 @@ diff --git a/chrome/browser/offline_pages/offline_page_model_factory.h b/chrome/
 diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/offline_pages/recent_tab_helper.cc
 --- a/chrome/browser/offline_pages/recent_tab_helper.cc
 +++ b/chrome/browser/offline_pages/recent_tab_helper.cc
-@@ -29,6 +29,11 @@
+@@ -28,6 +28,11 @@
  #include "content/public/browser/navigation_entry.h"
  #include "content/public/browser/navigation_handle.h"
  
@@ -1453,7 +1499,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
  namespace {
  class DefaultRecentTabHelperDelegate
      : public offline_pages::RecentTabHelper::Delegate {
-@@ -181,6 +186,14 @@ bool RecentTabHelper::EnsureInitialized() {
+@@ -180,6 +185,14 @@ bool RecentTabHelper::EnsureInitialized() {
    // WebContents with its origin as well.
    snapshots_enabled_ = !tab_id_.empty() &&
                         !web_contents()->GetBrowserContext()->IsOffTheRecord();
@@ -1468,7 +1514,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
  
    if (snapshots_enabled_) {
      page_model_ = OfflinePageModelFactory::GetForBrowserContext(
-@@ -457,7 +470,11 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge(
+@@ -456,7 +469,11 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge(
  void RecentTabHelper::ContinueSnapshotAfterPurge(
      SnapshotProgressInfo* snapshot_info,
      OfflinePageModel::DeletePageResult result) {
@@ -1484,7 +1530,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
 diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/offline_pages/recent_tab_helper.h
 --- a/chrome/browser/offline_pages/recent_tab_helper.h
 +++ b/chrome/browser/offline_pages/recent_tab_helper.h
-@@ -142,6 +142,9 @@ class RecentTabHelper
+@@ -145,6 +145,9 @@ class RecentTabHelper
    // Not page-specific.
    bool snapshots_enabled_ = false;
  
@@ -1509,7 +1555,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -218,6 +218,7 @@
+@@ -221,6 +221,7 @@
  #include "components/feed/core/shared_prefs/pref_names.h"
  
  #if BUILDFLAG(IS_ANDROID)
@@ -1517,7 +1563,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"
-@@ -1333,6 +1334,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1368,6 +1369,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
    variations::VariationsService::RegisterProfilePrefs(registry);
    video_tutorials::RegisterPrefs(registry);
@@ -1592,7 +1638,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
-@@ -1109,6 +1109,37 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1113,6 +1113,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>
@@ -1676,7 +1722,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
-@@ -3281,6 +3281,12 @@ const char kShowCaretBrowsingDialog[] =
+@@ -3323,6 +3323,12 @@ const char kShowCaretBrowsingDialog[] =
  const char kLacrosLaunchSwitch[] = "lacros_launch_switch";
  #endif
  
@@ -1692,7 +1738,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
-@@ -1167,6 +1167,8 @@ extern const char kDiscountConsentShowInterestIn[];
+@@ -1178,6 +1178,8 @@ extern const char kDiscountConsentShowInterestIn[];
  
  #if BUILDFLAG(IS_ANDROID)
  extern const char kWebXRImmersiveArEnabled[];
@@ -1701,7 +1747,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
  #endif
  
  #if !BUILDFLAG(IS_ANDROID)
-@@ -1203,6 +1205,10 @@ extern const char kPrivacyGuideViewed[];
+@@ -1214,6 +1216,10 @@ extern const char kPrivacyGuideViewed[];
  
  extern const char kCorsNonWildcardRequestHeadersSupport[];
  
@@ -1715,7 +1761,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
 --- a/components/content_settings/core/browser/content_settings_pref_provider.cc
 +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
-@@ -107,10 +107,12 @@ void PrefProvider::RegisterProfilePrefs(
+@@ -110,10 +110,12 @@ void PrefProvider::RegisterProfilePrefs(
  
  PrefProvider::PrefProvider(PrefService* prefs,
                             bool off_the_record,
@@ -1728,7 +1774,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
        store_last_modified_(store_last_modified),
        clock_(base::DefaultClock::GetInstance()) {
    TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider");
-@@ -144,7 +146,9 @@ PrefProvider::PrefProvider(PrefService* prefs,
+@@ -147,7 +149,9 @@ PrefProvider::PrefProvider(PrefService* prefs,
        content_settings_prefs_.insert(std::make_pair(
            info->type(), std::make_unique<ContentSettingsPref>(
                              info->type(), prefs_, &pref_change_registrar_,
@@ -1761,7 +1807,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
-@@ -238,6 +238,7 @@ const char* ContentSettingToString(ContentSetting setting) {
+@@ -239,6 +239,7 @@ const char* ContentSettingToString(ContentSetting setting) {
  HostContentSettingsMap::HostContentSettingsMap(
      PrefService* prefs,
      bool is_off_the_record,
@@ -1769,7 +1815,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
      bool store_last_modified,
      bool restore_session)
      : RefcountedKeyedService(base::ThreadTaskRunnerHandle::Get()),
-@@ -246,6 +247,7 @@ HostContentSettingsMap::HostContentSettingsMap(
+@@ -247,6 +248,7 @@ HostContentSettingsMap::HostContentSettingsMap(
  #endif
        prefs_(prefs),
        is_off_the_record_(is_off_the_record),
@@ -1777,7 +1823,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");
-@@ -257,7 +259,7 @@ HostContentSettingsMap::HostContentSettingsMap(
+@@ -258,7 +260,7 @@ HostContentSettingsMap::HostContentSettingsMap(
    policy_provider->AddObserver(this);
  
    auto pref_provider_ptr = std::make_unique<content_settings::PrefProvider>(
@@ -1844,7 +1890,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon
 diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h
 --- a/components/omnibox/browser/autocomplete_provider_client.h
 +++ b/components/omnibox/browser/autocomplete_provider_client.h
-@@ -131,6 +131,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
+@@ -130,6 +130,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
    virtual signin::IdentityManager* GetIdentityManager() const = 0;
  
    virtual bool IsOffTheRecord() const = 0;

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

@@ -374,7 +374,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 +                    // check for permissions
 +                    if (uriExists) {
 +                        AlertDialog.Builder alert =
-+                                new AlertDialog.Builder(context, R.style.Theme_Chromium_AlertDialog);
++                                new AlertDialog.Builder(context, R.style.ThemeOverlay_BrowserUI_AlertDialog);
 +                        AlertDialog alertDialog =
 +                                alert.setTitle(R.string.export_bookmarks_alert_title)
 +                                        .setMessage(context.getString(R.string.export_bookmarks_alert_message, actualFilePath))
@@ -701,7 +701,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
-@@ -1835,6 +1835,13 @@ static_library("browser") {
+@@ -1845,6 +1845,13 @@ static_library("browser") {
      "webid/federated_identity_sharing_permission_context_factory.h",
    ]
  
@@ -715,7 +715,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
    configs += [
      "//build/config/compiler:wexit_time_destructors",
      "//build/config:precompiled_headers",
-@@ -2984,6 +2991,8 @@ static_library("browser") {
+@@ -3003,6 +3010,8 @@ static_library("browser") {
        "autofill/manual_filling_view_interface.h",
        "banners/android/chrome_app_banner_manager_android.cc",
        "banners/android/chrome_app_banner_manager_android.h",
@@ -724,7 +724,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "browser_process_platform_part_android.cc",
        "browser_process_platform_part_android.h",
        "chrome_browser_field_trials_mobile.cc",
-@@ -3595,8 +3604,6 @@ static_library("browser") {
+@@ -3621,8 +3630,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -736,7 +736,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
-@@ -8213,6 +8213,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8246,6 +8246,12 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)},
  #endif
  
@@ -1156,7 +1156,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
 diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc
 --- a/chrome/browser/bookmarks/bookmark_html_writer.cc
 +++ b/chrome/browser/bookmarks/bookmark_html_writer.cc
-@@ -27,6 +27,7 @@
+@@ -26,6 +26,7 @@
  #include "base/task/thread_pool.h"
  #include "base/time/time.h"
  #include "base/values.h"
@@ -1164,7 +1164,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
  #include "chrome/browser/bookmarks/bookmark_model_factory.h"
  #include "chrome/browser/favicon/favicon_service_factory.h"
  #include "chrome/browser/profiles/profile.h"
-@@ -235,7 +236,12 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
+@@ -234,7 +235,12 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
    // Opens the file, returning true on success.
    bool OpenFile() {
      int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE;
@@ -1248,8 +1248,8 @@ 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
-@@ -5897,6 +5897,11 @@ const char kWebKioskEnableLacrosDescription[] =
-     "Chrome OS. When disabled, the Ash-chrome will be used";
+@@ -5872,6 +5872,11 @@ const char kWebKioskEnableLacrosDescription[] =
+     "ChromeOS. When disabled, the Ash-chrome will be used";
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
 +const char kBookmarksExportUseSafName[] = "Use saf for bookmarks export";
@@ -1263,7 +1263,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
-@@ -3423,6 +3423,9 @@ extern const char kWebKioskEnableLacrosName[];
+@@ -3404,6 +3404,9 @@ extern const char kWebKioskEnableLacrosName[];
  extern const char kWebKioskEnableLacrosDescription[];
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -1277,14 +1277,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
 @@ -174,6 +174,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
-     &kAppToWebAttribution,
-     &kBackgroundThreadPool,
-     &kBookmarkBottomSheet,
-+    &kBookmarksExportUseSaf,
+     &kBulkTabRestore,
      &kCastDeviceFilter,
      &kCloseAllTabsModalDialog,
++    &kBookmarksExportUseSaf,
      &kCloseTabSuggestions,
-@@ -872,6 +873,10 @@ const base::Feature kWebApkInstallCompleteNotification{
+     &kCriticalPersistedTabData,
+     &kCCTBackgroundTab,
+@@ -854,6 +855,10 @@ const base::Feature kWebApkInstallService{"WebApkInstallService",
  const base::Feature kWebApkTrampolineOnInitialIntent{
      "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -1298,7 +1298,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
-@@ -160,6 +160,7 @@ extern const base::Feature kToolbarMicIphAndroid;
+@@ -154,6 +154,7 @@ extern const base::Feature kToolbarMicIphAndroid;
  extern const base::Feature kToolbarUseHardwareBitmapDraw;
  extern const base::Feature kTrustedWebActivityLocationDelegation;
  extern const base::Feature kTrustedWebActivityNewDisclosure;
@@ -1309,8 +1309,8 @@ 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
-@@ -563,6 +563,7 @@ public abstract class ChromeFeatureList {
-             "WebApkTrampolineOnInitialIntent";
+@@ -557,6 +557,7 @@ public abstract class ChromeFeatureList {
+     public static final String WEB_APK_INSTALL_SERVICE = "WebApkInstallService";
      public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting";
      public static final String WEB_OTP_CROSS_DEVICE_SIMPLE_STRING = "WebOtpCrossDeviceSimpleString";
 +    public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf";
@@ -1378,7 +1378,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
-@@ -103,6 +103,8 @@ public final class ChromePreferenceKeys {
+@@ -99,6 +99,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";
@@ -1387,8 +1387,8 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
  
      /**
       * Whether Chrome is set as the default browser.
-@@ -1020,6 +1022,7 @@ public final class ChromePreferenceKeys {
-                 ATTRIBUTION_PROVIDER_LAST_BROWSER_START,
+@@ -1017,6 +1019,7 @@ public final class ChromePreferenceKeys {
+                 ASSISTANT_VOICE_SEARCH_ENABLED,
                  APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
                  APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
 +                BOOKMARKS_LAST_EXPORT_URI,
@@ -1398,7 +1398,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
-@@ -242,6 +242,24 @@ CHAR_LIMIT guidelines:
+@@ -243,6 +243,24 @@ CHAR_LIMIT guidelines:
        <message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_LIMIT=32]">
          Sites
        </message>
@@ -1426,7 +1426,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
-@@ -382,6 +382,9 @@ static_library("common") {
+@@ -383,6 +383,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -1448,8 +1448,8 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/external_process_importer_bridge.cc",
-@@ -189,6 +187,11 @@ static_library("utility") {
-     }
+@@ -196,6 +194,11 @@ static_library("utility") {
+     ]
    }
  
 +  sources += [
@@ -1640,7 +1640,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
 diff --git a/ui/android/java/strings/android_ui_strings.grd b/ui/android/java/strings/android_ui_strings.grd
 --- a/ui/android/java/strings/android_ui_strings.grd
 +++ b/ui/android/java/strings/android_ui_strings.grd
-@@ -177,6 +177,9 @@
+@@ -178,6 +178,9 @@
        <message name="IDS_OPENING_FILE_ERROR" desc="Toast when the browser is unable to open a file for upload. [CHAR_LIMIT=32]">
          Failed to open selected file
        </message>

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

@@ -40,7 +40,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
-@@ -46,6 +46,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
+@@ -44,6 +44,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;
@@ -48,7 +48,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;
-@@ -59,6 +60,8 @@ import java.lang.annotation.Retention;
+@@ -57,6 +58,8 @@ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.Set;
  
@@ -57,7 +57,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.
-@@ -279,6 +282,9 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -273,6 +276,9 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
          if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
                  || !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
              return false;
-@@ -298,6 +304,10 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -292,6 +298,10 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
          newIntent.setData(uri);
          newIntent.setClassName(context, CustomTabActivity.class.getName());
  
@@ -78,7 +78,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());
-@@ -417,6 +427,18 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -411,6 +421,18 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
  
          if (Intent.ACTION_VIEW.equals(newIntent.getAction())
                  && !IntentHandler.wasIntentSenderChrome(newIntent)) {
@@ -194,7 +194,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
-@@ -4616,6 +4616,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4626,6 +4626,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>

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

@@ -57,7 +57,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
-@@ -214,6 +214,8 @@ import java.util.HashSet;
+@@ -215,6 +215,8 @@ import java.util.HashSet;
  import java.util.List;
  import java.util.Locale;
  
@@ -66,7 +66,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.
-@@ -2110,6 +2112,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2137,6 +2139,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          } else if (id == R.id.close_tab) {
              getCurrentTabModel().closeTab(currentTab, true, false, true);
              RecordUserAction.record("MobileTabClosed");
@@ -78,7 +78,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
-@@ -66,6 +66,7 @@ import org.chromium.chrome.R;
+@@ -65,6 +65,7 @@ import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ActivityTabProvider;
  import org.chromium.chrome.browser.ActivityUtils;
  import org.chromium.chrome.browser.AppHooks;
@@ -86,7 +86,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;
-@@ -2397,6 +2398,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2393,6 +2394,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -117,7 +117,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
-@@ -3331,6 +3331,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3341,6 +3341,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>

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

@@ -38,8 +38,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[] = {
-@@ -3714,7 +3730,11 @@ const FeatureEntry kFeatureEntries[] = {
-      kOsMac | kOsLinux | kOsWin,
+@@ -3868,7 +3884,11 @@ const FeatureEntry kFeatureEntries[] = {
+      kOsMac | kOsLinux | kOsLacros | kOsWin,
       FEATURE_VALUE_TYPE(features::kSystemNotifications)},
  #endif  // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH)
 -#if BUILDFLAG(IS_ANDROID)

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

@@ -3,18 +3,18 @@ Date: Mon, 1 Feb 2021 19:18:55 +0200
 Subject: Add flag for save-data-header
 
 ---
- chrome/browser/about_flags.cc                                | 5 ++++-
- chrome/browser/flag_descriptions.cc                          | 4 ++++
- chrome/browser/flag_descriptions.h                           | 3 +++
- content/browser/loader/browser_initiated_resource_request.cc | 5 +++--
- services/network/public/cpp/features.cc                      | 5 +++++
- services/network/public/cpp/features.h                       | 2 ++
- 6 files changed, 21 insertions(+), 3 deletions(-)
+ chrome/browser/about_flags.cc                             | 5 ++++-
+ chrome/browser/flag_descriptions.cc                       | 4 ++++
+ chrome/browser/flag_descriptions.h                        | 3 +++
+ .../browser/loader/browser_initiated_resource_request.cc  | 8 ++++++++
+ services/network/public/cpp/features.cc                   | 5 +++++
+ services/network/public/cpp/features.h                    | 3 ++-
+ 6 files changed, 26 insertions(+), 2 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
-@@ -4313,7 +4313,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4443,7 +4443,10 @@ const FeatureEntry kFeatureEntries[] = {
      {"force-text-direction", flag_descriptions::kForceTextDirectionName,
       flag_descriptions::kForceTextDirectionDescription, kOsAll,
       MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
@@ -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
-@@ -1140,6 +1140,10 @@ const char kDisableKeepaliveFetchDescription[] =
+@@ -1099,6 +1099,10 @@ const char kDisableKeepaliveFetchDescription[] =
      "Disable fetch with keepalive set "
      "(https://fetch.spec.whatwg.org/#request-keepalive-flag).";
  
@@ -43,7 +43,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
-@@ -609,6 +609,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
+@@ -583,6 +583,9 @@ extern const char kDeprecateAltBasedSixPackDescription[];
  extern const char kDisableKeepaliveFetchName[];
  extern const char kDisableKeepaliveFetchDescription[];
  
@@ -56,16 +56,27 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/content/browser/loader/browser_initiated_resource_request.cc
 --- a/content/browser/loader/browser_initiated_resource_request.cc
 +++ b/content/browser/loader/browser_initiated_resource_request.cc
-@@ -40,9 +40,10 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
+@@ -4,6 +4,9 @@
  
-   // Set the Save-Data header if appropriate.
-   // https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7
--  if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
-+  if ((GetContentClient()->browser()->IsDataSaverEnabled(browser_context) &&
-       !base::GetFieldTrialParamByFeatureAsBool(features::kDataSaverHoldback,
--                                               "holdback_web", false)) {
-+                                               "holdback_web", false)) ||
-+      base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader)) {
+ #include "content/browser/loader/browser_initiated_resource_request.h"
+ 
++#include "base/feature_list.h"
++#include "services/network/public/cpp/features.h"
++
+ #include "content/public/browser/browser_context.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "content/public/browser/content_browser_client.h"
+@@ -37,8 +40,13 @@ void UpdateAdditionalHeadersForBrowserInitiatedRequest(
+   // Save-Data was previously included in hints for workers, thus we cannot
+   // remove it for the time being. If you're reading this, consider building
+   // permissions policies for workers and/or deprecating this inclusion.
++  bool setHeader = false;
+   if (is_for_worker_script &&
+       GetContentClient()->browser()->IsDataSaverEnabled(browser_context)) {
++    setHeader = true;
++  }
++  setHeader |= base::FeatureList::IsEnabled(network::features::kEnableSaveDataHeader);
++  if (setHeader) {
      if (should_update_existing_headers) {
        headers->RemoveHeader("Save-Data");
      }
@@ -87,12 +98,13 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
 diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
 --- a/services/network/public/cpp/features.h
 +++ b/services/network/public/cpp/features.h
-@@ -47,6 +47,8 @@ extern const base::Feature kDisableKeepaliveFetch;
+@@ -47,7 +47,8 @@ COMPONENT_EXPORT(NETWORK_CPP)
+ extern const base::Feature kDisableKeepaliveFetch;
  COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kOpaqueResponseBlockingV01;
- 
-+extern const base::Feature kEnableSaveDataHeader;
+-
 +COMPONENT_EXPORT(NETWORK_CPP)
++extern const base::Feature kEnableSaveDataHeader;
  COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kTrustTokens;
  

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

@@ -19,8 +19,8 @@ with limited CPU/memory resources and it is disabled by default.
 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
-@@ -884,6 +884,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
-      net::kEffectiveConnectionType4G},
+@@ -882,6 +882,11 @@ const FeatureEntry::FeatureVariation
+          std::size(kIsolatedPrerenderPrefetchLimitFifteen), nullptr},
  };
  
 +const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
@@ -28,10 +28,10 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +    {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
 +};
 +
- // Ensure that all effective connection types returned by Network Quality
- // Estimator (NQE) are also exposed via flags.
- static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
-@@ -4290,6 +4295,9 @@ const FeatureEntry kFeatureEntries[] = {
+ const FeatureEntry::Choice kMemlogModeChoices[] = {
+     {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
+     {flag_descriptions::kMemlogModeMinimal, heap_profiling::kMemlogMode,
+@@ -4417,6 +4422,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidPictureInPictureAPIName,
       flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
@@ -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
-@@ -1661,6 +1661,10 @@ const char kUnthrottledNestedTimeoutDescription[] =
+@@ -1600,6 +1600,10 @@ const char kUnthrottledNestedTimeoutDescription[] =
      "websites abusing the API will still eventually have their setTimeouts "
      "clamped.";
  
@@ -58,7 +58,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
-@@ -942,6 +942,9 @@ extern const char kLogJsConsoleMessagesDescription[];
+@@ -903,6 +903,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

@@ -13,7 +13,7 @@ Disable it by default on Android as it is everywhere else
 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
-@@ -3024,6 +3024,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3168,6 +3168,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebRtcRemoteEventLogName,
       flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop,
       FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)},
@@ -27,7 +27,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
-@@ -1228,6 +1228,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
+@@ -1183,6 +1183,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
      "Enables image options to be surfaced in the context menu for nodes "
      "covered by transparent overlays.";
  
@@ -42,7 +42,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
-@@ -675,6 +675,9 @@ extern const char kEnablePortalsDescription[];
+@@ -646,6 +646,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsCrossOriginName[];
  extern const char kEnablePortalsCrossOriginDescription[];
  
@@ -55,7 +55,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
-@@ -284,11 +284,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -276,11 +276,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -16,7 +16,7 @@ Subject: Add flag to disable IPv6 probes
 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
-@@ -5251,6 +5251,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5333,6 +5333,10 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName,
       flag_descriptions::kReaderModeInCCTDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
@@ -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
-@@ -3086,6 +3086,10 @@ const char kCCTResizableForThirdPartiesName[] =
+@@ -3017,6 +3017,10 @@ const char kCCTResizableForThirdPartiesName[] =
  const char kCCTResizableForThirdPartiesDescription[] =
      "Enable bottom sheet Custom Tabs for third party apps.";
  
@@ -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
-@@ -744,6 +744,9 @@ extern const char kEnableWasmLazyCompilationName[];
+@@ -715,6 +715,9 @@ extern const char kEnableWasmLazyCompilationName[];
  extern const char kEnableWasmLazyCompilationDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -100,7 +100,7 @@ diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/compon
 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
-@@ -103,6 +103,7 @@
+@@ -104,6 +104,7 @@
  #include "net/log/net_log_event_type.h"
  #include "net/log/net_log_source.h"
  #include "net/log/net_log_source_type.h"
@@ -108,7 +108,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"
-@@ -3937,8 +3938,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -4129,8 +4130,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {
@@ -141,7 +141,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
 diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
 --- a/services/network/public/cpp/features.h
 +++ b/services/network/public/cpp/features.h
-@@ -17,6 +17,8 @@ extern const base::Feature kExpectCTReporting;
+@@ -18,6 +18,8 @@ extern const base::Feature kExpectCTReporting;
  COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kNetworkErrorLogging;
  COMPONENT_EXPORT(NETWORK_CPP)

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

@@ -11,10 +11,10 @@ Subject: Add flag to disable external intent requests
 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
-@@ -3009,6 +3009,9 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kWebrtcCaptureMultiChannelApmName,
-      flag_descriptions::kWebrtcCaptureMultiChannelApmDescription, kOsAll,
-      FEATURE_VALUE_TYPE(features::kWebRtcEnableCaptureMultiChannelApm)},
+@@ -3148,6 +3148,9 @@ const FeatureEntry kFeatureEntries[] = {
+     {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName,
+      flag_descriptions::kUiPartialSwapDescription, kOsAll,
+      SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},
 +    {"disable-external-intent-requests", flag_descriptions::kDisableExternalIntentRequestsName,
 +     flag_descriptions::kDisableExternalIntentRequestsDescription, kOsAll,
 +     SINGLE_DISABLE_VALUE_TYPE("disable-external-intent-requests")},
@@ -24,7 +24,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
-@@ -3481,6 +3481,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
+@@ -3391,6 +3391,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
  const char kPhotoPickerVideoSupportDescription[] =
      "Enables video files to be shown in the Photo Picker dialog";
  
@@ -40,9 +40,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
-@@ -2003,6 +2003,9 @@ extern const char kQueryTilesNTPDescription[];
- extern const char kQueryTilesOmniboxName[];
- extern const char kQueryTilesOmniboxDescription[];
+@@ -1938,6 +1938,9 @@ extern const char kQueryTilesDescription[];
+ extern const char kQueryTilesNTPName[];
+ extern const char kQueryTilesNTPDescription[];
  extern const char kQueryTilesSingleTierName[];
 +extern const char kDisableExternalIntentRequestsName[];
 +extern const char kDisableExternalIntentRequestsDescription[];

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

@@ -18,7 +18,7 @@ Subject: Add flag to disable vibration
 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
-@@ -6636,6 +6636,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6670,6 +6670,10 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
  #endif
  
@@ -32,7 +32,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
-@@ -5670,6 +5670,9 @@ const char kDefaultCalculatorWebAppDescription[] =
+@@ -5608,6 +5608,9 @@ const char kDefaultCalculatorWebAppDescription[] =
      "chrome app.";
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  
@@ -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
-@@ -3428,6 +3428,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
+@@ -3406,6 +3406,8 @@ extern const char kWebUITabStripTabDragIntegrationName[];
  extern const char kWebUITabStripTabDragIntegrationDescription[];
  #endif  // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 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
-@@ -99,6 +99,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -100,6 +100,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
  #if BUILDFLAG(IS_ANDROID)
    if (command_line.HasSwitch(switches::kDisableMediaSessionAPI))
      WebRuntimeFeatures::EnableMediaSession(false);
@@ -82,7 +82,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
-@@ -315,6 +315,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
+@@ -318,6 +318,8 @@ CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
      kCompositorLockTimeout;
  
  #endif  // BUILDFLAG(IS_ANDROID)
@@ -139,7 +139,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -1673,6 +1673,10 @@
+@@ -1668,6 +1668,10 @@
        name: "OrientationEvent",
        status: {"Android": "stable"},
      },

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

@@ -183,7 +183,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
-@@ -367,10 +367,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -372,10 +372,7 @@ void ChromeBrowserMainExtraPartsProfiles::
    InstantServiceFactory::GetInstance();
  #endif
    LanguageModelManagerFactory::GetInstance();
@@ -198,7 +198,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
-@@ -459,6 +459,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -481,6 +481,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
          web_contents);
    }
    video_tutorials::VideoTutorialTabHelper::CreateForWebContents(web_contents);
@@ -347,7 +347,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
-@@ -589,6 +589,11 @@
+@@ -590,6 +590,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>
@@ -426,7 +426,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b
 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
-@@ -823,7 +823,7 @@ void HostContentSettingsMap::AddSettingsForOneType(
+@@ -824,7 +824,7 @@ void HostContentSettingsMap::AddSettingsForOneType(
      settings->emplace_back(rule.primary_pattern, rule.secondary_pattern,
                             std::move(value),
                             kProviderNamesSourceMap[provider_type].provider_name,
@@ -438,7 +438,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
 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
-@@ -146,13 +146,15 @@ ContentSettingPatternSource::ContentSettingPatternSource(
+@@ -156,13 +156,15 @@ ContentSettingPatternSource::ContentSettingPatternSource(
      base::Value setting_value,
      const std::string& source,
      bool incognito,
@@ -456,7 +456,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
  
  ContentSettingPatternSource::ContentSettingPatternSource() : incognito(false) {}
  
-@@ -169,6 +171,7 @@ ContentSettingPatternSource& ContentSettingPatternSource::operator=(
+@@ -179,6 +181,7 @@ ContentSettingPatternSource& ContentSettingPatternSource::operator=(
    expiration = other.expiration;
    source = other.source;
    incognito = other.incognito;
@@ -615,7 +615,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
-@@ -980,6 +980,8 @@ void PageInfo::PresentSitePermissions() {
+@@ -982,6 +982,8 @@ void PageInfo::PresentSitePermissions() {
      permission_info.source = info.source;
      permission_info.is_one_time =
          (info.session_model == content_settings::SessionModel::OneTime);
@@ -627,7 +627,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
 diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h
 --- a/components/page_info/page_info.h
 +++ b/components/page_info/page_info.h
-@@ -173,6 +173,7 @@ class PageInfo {
+@@ -174,6 +174,7 @@ class PageInfo {
      content_settings::SettingSource source =
          content_settings::SETTING_SOURCE_NONE;
      bool is_one_time = false;
@@ -864,7 +864,7 @@ diff --git a/components/permissions/android/permission_prompt_android.h b/compon
 diff --git a/components/permissions/android/permissions_android_strings.grd b/components/permissions/android/permissions_android_strings.grd
 --- a/components/permissions/android/permissions_android_strings.grd
 +++ b/components/permissions/android/permissions_android_strings.grd
-@@ -263,6 +263,23 @@
+@@ -264,6 +264,23 @@
          Unknown or unsupported device (<ph name="DEVICE_ID">%1$s<ex>A1:B2:C3:D4:E5:F6</ex></ph>)
        </message>
  
@@ -891,7 +891,7 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co
 diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc
 --- a/components/permissions/contexts/geolocation_permission_context_android.cc
 +++ b/components/permissions/contexts/geolocation_permission_context_android.cc
-@@ -158,6 +158,19 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
+@@ -157,6 +157,19 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
      ContentSetting content_setting,
      bool is_one_time) {
    DCHECK(!is_one_time);
@@ -911,7 +911,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
    bool is_default_search = IsRequestingOriginDSE(requesting_origin);
    if (content_setting == CONTENT_SETTING_ALLOW &&
        !location_settings_->IsSystemLocationSettingEnabled()) {
-@@ -170,7 +183,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
+@@ -169,7 +182,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
      if (IsInLocationSettingsBackOff(is_default_search)) {
        FinishNotifyPermissionSet(id, requesting_origin, embedding_origin,
                                  std::move(callback), false /* persist */,
@@ -921,7 +921,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
        LogLocationSettingsMetric(
            kLocationSettingsSuppressMetricBase, is_default_search,
            LocationSettingsBackOffLevel(is_default_search));
-@@ -195,7 +209,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
+@@ -194,7 +208,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
          !location_settings_dialog_callback_.is_null()) {
        FinishNotifyPermissionSet(id, requesting_origin, embedding_origin,
                                  std::move(callback), false /* persist */,
@@ -931,7 +931,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
        // This case should be very rare, so just pretend it was a denied prompt
        // for metrics purposes.
        LogLocationSettingsMetric(
-@@ -212,12 +227,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
+@@ -211,12 +226,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
          base::BindOnce(
              &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown,
              weak_factory_.GetWeakPtr(), requesting_origin, embedding_origin,
@@ -947,7 +947,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
  }
  
  PermissionResult
-@@ -384,6 +400,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
+@@ -383,6 +399,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
      const GURL& embedding_origin,
      bool persist,
      ContentSetting content_setting,
@@ -955,7 +955,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
      LocationSettingsDialogOutcome prompt_outcome) {
    bool is_default_search = IsRequestingOriginDSE(requesting_origin);
    if (prompt_outcome == GRANTED) {
-@@ -411,7 +428,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
+@@ -410,7 +427,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
  
    FinishNotifyPermissionSet(
        location_settings_dialog_request_id_, requesting_origin, embedding_origin,
@@ -965,7 +965,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
  
    location_settings_dialog_request_id_ =
        PermissionRequestID(0, 0, PermissionRequestID::RequestLocalId());
-@@ -423,10 +441,11 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
+@@ -422,10 +440,11 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
      const GURL& embedding_origin,
      BrowserPermissionCallback callback,
      bool persist,
@@ -1020,7 +1020,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
-@@ -243,6 +243,20 @@ PermissionContextBase::CreatePermissionRequest(
+@@ -244,6 +244,20 @@ PermissionContextBase::CreatePermissionRequest(
        std::move(delete_callback));
  }
  
@@ -1041,7 +1041,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,
-@@ -435,7 +449,8 @@ void PermissionContextBase::PermissionDecided(
+@@ -436,7 +450,8 @@ void PermissionContextBase::PermissionDecided(
      const GURL& embedding_origin,
      BrowserPermissionCallback callback,
      ContentSetting content_setting,
@@ -1051,7 +1051,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);
-@@ -443,9 +458,9 @@ void PermissionContextBase::PermissionDecided(
+@@ -444,9 +459,9 @@ void PermissionContextBase::PermissionDecided(
                               content_setting);
  
    bool persist = content_setting != CONTENT_SETTING_DEFAULT;
@@ -1063,7 +1063,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
  }
  
  content::BrowserContext* PermissionContextBase::browser_context() const {
-@@ -495,11 +510,26 @@ void PermissionContextBase::NotifyPermissionSet(
+@@ -496,11 +511,26 @@ void PermissionContextBase::NotifyPermissionSet(
      bool persist,
      ContentSetting content_setting,
      bool is_one_time) {
@@ -1091,7 +1091,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
    }
  
    UpdateTabContext(id, requesting_origin,
-@@ -520,6 +550,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
+@@ -521,6 +551,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
                                                   const GURL& embedding_origin,
                                                   ContentSetting content_setting,
                                                   bool is_one_time) {
@@ -1107,7 +1107,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 ||
-@@ -531,8 +570,7 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
+@@ -532,8 +571,7 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
        ->SetContentSettingDefaultScope(
            requesting_origin, embedding_origin, content_settings_type_,
            content_setting,
@@ -1308,7 +1308,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
      request->RequestFinished();
      return;
    }
-@@ -234,7 +234,7 @@ void PermissionRequestManager::AddRequest(
+@@ -238,7 +238,7 @@ void PermissionRequestManager::AddRequest(
    if (auto_approval_origin) {
      if (url::Origin::Create(request->requesting_origin()) ==
          auto_approval_origin.value()) {
@@ -1317,7 +1317,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
      }
      request->RequestFinished();
      return;
-@@ -493,12 +493,13 @@ void PermissionRequestManager::Accept() {
+@@ -498,12 +498,13 @@ void PermissionRequestManager::Accept() {
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
      PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1333,7 +1333,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    if (ignore_callbacks_from_prompt_)
      return;
    DCHECK(view_);
-@@ -506,12 +507,22 @@ void PermissionRequestManager::AcceptThisTime() {
+@@ -511,12 +512,22 @@ void PermissionRequestManager::AcceptThisTime() {
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
      PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1357,7 +1357,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    if (ignore_callbacks_from_prompt_)
      return;
    DCHECK(view_);
-@@ -533,7 +544,7 @@ void PermissionRequestManager::Deny() {
+@@ -538,7 +549,7 @@ void PermissionRequestManager::Deny() {
    std::vector<PermissionRequest*>::iterator requests_iter;
    for (requests_iter = requests_.begin(); requests_iter != requests_.end();
         requests_iter++) {
@@ -1366,7 +1366,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
    }
    FinalizeCurrentRequests(PermissionAction::DENIED);
  }
-@@ -886,25 +897,26 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest(
+@@ -890,25 +901,26 @@ PermissionRequest* PermissionRequestManager::GetExistingRequest(
  
  void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
      PermissionRequest* request,
@@ -1399,7 +1399,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
  }
  
  void PermissionRequestManager::CancelledIncludingDuplicates(
-@@ -1075,7 +1087,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) {
+@@ -1084,7 +1096,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) {
  void PermissionRequestManager::DoAutoResponseForTesting() {
    switch (auto_response_for_test_) {
      case ACCEPT_ONCE:
@@ -1423,7 +1423,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe
    void Dismiss() override;
    void Ignore() override;
    bool WasCurrentRequestAlreadyDisplayed() override;
-@@ -268,9 +270,12 @@ class PermissionRequestManager
+@@ -272,9 +274,12 @@ class PermissionRequestManager
  
    // Calls PermissionGranted on a request and all its duplicates.
    void PermissionGrantedIncludingDuplicates(PermissionRequest* request,

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

@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
  import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
  import org.chromium.chrome.browser.compositor.CompositorViewHolder;
-@@ -2123,6 +2125,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2150,6 +2152,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              CloseAllTabsDialog.show(this, getModalDialogManagerSupplier(),
                      () -> getTabModelSelector().closeAllTabs(), /*isIncognito=*/false);
              RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -71,7 +71,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(),
-@@ -2175,6 +2179,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2202,6 +2206,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          mTabModalHandler.onOmniboxFocusChanged(hasFocus);
      }
  
@@ -284,7 +284,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
 diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc
 --- a/chrome/browser/bookmarks/bookmark_html_writer.cc
 +++ b/chrome/browser/bookmarks/bookmark_html_writer.cc
-@@ -191,6 +191,8 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
+@@ -190,6 +190,8 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
          roots->FindDictKey(BookmarkCodec::kOtherBookmarkFolderNameKey);
      base::Value* mobile_folder_value =
          roots->FindDictKey(BookmarkCodec::kMobileBookmarkFolderNameKey);
@@ -293,7 +293,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
      DCHECK(root_folder_value);
      DCHECK(other_folder_value);
      DCHECK(mobile_folder_value);
-@@ -202,7 +204,9 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
+@@ -201,7 +203,9 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
          !WriteNode(*static_cast<base::DictionaryValue*>(other_folder_value),
                     BookmarkNode::OTHER_NODE) ||
          !WriteNode(*static_cast<base::DictionaryValue*>(mobile_folder_value),
@@ -304,7 +304,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
        NotifyOnFinish(BookmarksExportObserver::Result::kCouldNotWriteNodes);
        return;
      }
-@@ -467,6 +471,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
+@@ -466,6 +470,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
        BookmarkModelFactory::GetForBrowserContext(profile_)->other_node());
    ExtractUrls(
        BookmarkModelFactory::GetForBrowserContext(profile_)->mobile_node());
@@ -349,7 +349,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
-@@ -3404,6 +3404,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3414,6 +3414,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>
@@ -385,7 +385,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
-@@ -33,6 +33,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar";
+@@ -34,6 +34,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";
@@ -393,7 +393,7 @@ 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";
-@@ -74,7 +75,8 @@ BookmarkCodec::~BookmarkCodec() = default;
+@@ -75,7 +76,8 @@ BookmarkCodec::~BookmarkCodec() = default;
  base::Value BookmarkCodec::Encode(BookmarkModel* model,
                                    std::string sync_metadata_str) {
    return Encode(model->bookmark_bar_node(), model->other_node(),
@@ -403,7 +403,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
                  std::move(sync_metadata_str));
  }
  
-@@ -82,6 +84,7 @@ base::Value BookmarkCodec::Encode(
+@@ -83,6 +85,7 @@ base::Value BookmarkCodec::Encode(
      const BookmarkNode* bookmark_bar_node,
      const BookmarkNode* other_folder_node,
      const BookmarkNode* mobile_folder_node,
@@ -411,7 +411,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
      const BookmarkNode::MetaInfoMap* model_meta_info_map,
      std::string sync_metadata_str) {
    ids_reassigned_ = false;
-@@ -103,6 +106,7 @@ base::Value BookmarkCodec::Encode(
+@@ -104,6 +107,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));
@@ -419,7 +419,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    if (model_meta_info_map)
      roots.SetKey(kMetaInfo, EncodeMetaInfo(*model_meta_info_map));
    FinalizeChecksum();
-@@ -119,6 +123,7 @@ bool BookmarkCodec::Decode(const base::Value& value,
+@@ -120,6 +124,7 @@ bool BookmarkCodec::Decode(const base::Value& value,
                             BookmarkNode* bb_node,
                             BookmarkNode* other_folder_node,
                             BookmarkNode* mobile_folder_node,
@@ -427,7 +427,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
                             int64_t* max_id,
                             std::string* sync_metadata_str) {
    ids_.clear();
-@@ -126,7 +131,8 @@ bool BookmarkCodec::Decode(const base::Value& value,
+@@ -127,7 +132,8 @@ bool BookmarkCodec::Decode(const base::Value& value,
              base::GUID::ParseLowercase(BookmarkNode::kBookmarkBarNodeGuid),
              base::GUID::ParseLowercase(BookmarkNode::kOtherBookmarksNodeGuid),
              base::GUID::ParseLowercase(BookmarkNode::kMobileBookmarksNodeGuid),
@@ -437,7 +437,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    ids_reassigned_ = false;
    guids_reassigned_ = false;
    ids_valid_ = true;
-@@ -134,12 +140,13 @@ bool BookmarkCodec::Decode(const base::Value& value,
+@@ -135,12 +141,13 @@ bool BookmarkCodec::Decode(const base::Value& value,
    stored_checksum_.clear();
    InitializeChecksum();
    bool success = DecodeHelper(bb_node, other_folder_node, mobile_folder_node,
@@ -452,7 +452,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    *max_id = maximum_id_ + 1;
    return success;
  }
-@@ -189,6 +196,7 @@ base::Value BookmarkCodec::EncodeMetaInfo(
+@@ -190,6 +197,7 @@ base::Value BookmarkCodec::EncodeMetaInfo(
  bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
                                   BookmarkNode* other_folder_node,
                                   BookmarkNode* mobile_folder_node,
@@ -460,7 +460,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())
-@@ -220,6 +228,12 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
+@@ -221,6 +229,12 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
      return false;
  
    DecodeNode(*bb_value, nullptr, bb_node);
@@ -473,7 +473,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);
  
-@@ -455,11 +469,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
+@@ -456,11 +470,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
  
  void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
                                  BookmarkNode* other_node,
@@ -674,7 +674,7 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks
 diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc
 --- a/components/bookmarks/browser/model_loader.cc
 +++ b/components/bookmarks/browser/model_loader.cc
-@@ -55,7 +55,8 @@ void LoadBookmarks(const base::FilePath& path,
+@@ -54,7 +54,8 @@ void LoadBookmarks(const base::FilePath& path,
        std::string sync_metadata_str;
        BookmarkCodec codec;
        codec.Decode(*root, details->bb_node(), details->other_folder_node(),
@@ -687,7 +687,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
-@@ -406,6 +406,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
+@@ -419,6 +419,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
      case bookmarks::BookmarkNode::BOOKMARK_BAR:
      case bookmarks::BookmarkNode::OTHER_NODE:
      case bookmarks::BookmarkNode::MOBILE:

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

@@ -41,7 +41,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
-@@ -2149,6 +2149,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2176,6 +2176,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -49,11 +49,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 +            currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
          } else if (id == R.id.open_recently_closed_tab) {
              TabModel currentModel = mTabModelSelector.getCurrentModel();
-             if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
+             if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedEntry();
 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
-@@ -2522,6 +2522,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2518,6 +2518,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 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
-@@ -305,6 +305,10 @@ CHAR_LIMIT guidelines:
+@@ -306,6 +306,10 @@ CHAR_LIMIT guidelines:
          Chrome tips
        </message>
  

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

@@ -18,7 +18,7 @@ Subject: Add option to force tablet UI
 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
-@@ -443,6 +443,7 @@ public final class ChromePreferenceKeys {
+@@ -441,6 +441,7 @@ public final class ChromePreferenceKeys {
              AccessibilityConstants.FONT_USER_SET_FORCE_ENABLE_ZOOM;
  
      public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
@@ -40,7 +40,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
-@@ -356,7 +356,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
+@@ -365,7 +365,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
      // OmniboxSuggestionsDropdownEmbedder implementation
      @Override
      public boolean isTablet() {
@@ -52,7 +52,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
-@@ -1355,6 +1355,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1359,6 +1359,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_PRIVACY_REVIEW_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>
@@ -94,7 +94,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
 diff --git a/components/BUILD.gn b/components/BUILD.gn
 --- a/components/BUILD.gn
 +++ b/components/BUILD.gn
-@@ -43,7 +43,7 @@ if (is_ios) {
+@@ -44,7 +44,7 @@ if (is_ios) {
  
  # Omit Lacros because it allows //components to depend on //chrome, which in
  # turn depends on //extensions.
@@ -103,7 +103,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
-@@ -618,7 +618,7 @@ test("components_unittests") {
+@@ -630,7 +630,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.
@@ -112,7 +112,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
      assert_no_deps = [ "//chrome/*" ]
      assert_no_deps += disallowed_extension_deps_
    }
-@@ -893,7 +893,7 @@ if (!is_ios) {
+@@ -910,7 +910,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.
@@ -173,7 +173,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
-@@ -360,6 +360,8 @@ android_library("ui_no_recycler_view_java") {
+@@ -362,6 +362,8 @@ android_library("ui_no_recycler_view_java") {
      ":ui_java_resources",
      ":ui_utils_java",
      "//base:base_java",

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

@@ -27,7 +27,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
-@@ -1236,8 +1236,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1263,8 +1263,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -96,7 +96,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
-@@ -4304,6 +4304,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4314,6 +4314,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

@@ -132,7 +132,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
-@@ -451,6 +451,7 @@ public final class ChromePreferenceKeys {
+@@ -449,6 +449,7 @@ public final class ChromePreferenceKeys {
      public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
      public static final String HOMEPAGE_PARTNER_CUSTOMIZED_DEFAULT_URI =
              "Chrome.Homepage.PartnerCustomizedDefaultUri";
@@ -154,7 +154,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
-@@ -1170,6 +1170,9 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1174,6 +1174,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>
@@ -179,7 +179,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 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
-@@ -56,6 +56,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
+@@ -60,6 +60,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
  // A boolean specifying whether the New Tab page is the home page or not.
  const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage";
  
@@ -193,7 +193,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
-@@ -363,6 +363,7 @@ extern const char kSettingsShowOSBanner[];
+@@ -368,6 +368,7 @@ extern const char kSettingsShowOSBanner[];
  extern const char kUsedPolicyCertificates[];
  #endif  // BUILDFLAG(IS_CHROMEOS)
  extern const char kShowHomeButton[];

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

@@ -18,7 +18,7 @@ Enabled by default.
 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
-@@ -134,6 +134,7 @@
+@@ -132,6 +132,7 @@
  #include "components/security_state/core/security_state.h"
  #include "components/send_tab_to_self/features.h"
  #include "components/services/heap_profiling/public/cpp/switches.h"
@@ -26,7 +26,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"
-@@ -8463,6 +8464,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -8500,6 +8501,11 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kReduceUserAgentMinorVersionDescription, kOsAll,
       FEATURE_VALUE_TYPE(blink::features::kReduceUserAgentMinorVersion)},
  
@@ -41,7 +41,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
-@@ -3015,6 +3015,11 @@ const char kReduceUserAgentMinorVersionDescription[] =
+@@ -2953,6 +2953,11 @@ const char kReduceUserAgentMinorVersionDescription[] =
      "The Chrome version in the User-Agent string will be reported as "
      "Chrome/<major_version>.0.0.0.";
  
@@ -56,7 +56,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
-@@ -1728,6 +1728,9 @@ extern const char kDurableClientHintsCacheDescription[];
+@@ -1680,6 +1680,9 @@ extern const char kDurableClientHintsCacheDescription[];
  extern const char kReduceUserAgentMinorVersionName[];
  extern const char kReduceUserAgentMinorVersionDescription[];
  

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

@@ -18,7 +18,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;
-@@ -335,9 +336,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -333,9 +334,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
              finish();
              return true;
          } else if (item.getItemId() == R.id.menu_id_general_help) {

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

@@ -172,7 +172,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 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
-@@ -173,6 +173,7 @@
+@@ -174,6 +174,7 @@
    <release seq="1">
      <messages fallback_to_english="true">
        <part file="site_settings.grdp" />
@@ -206,7 +206,7 @@ new file mode 100644
 diff --git a/components/components_strings.grd b/components/components_strings.grd
 --- a/components/components_strings.grd
 +++ b/components/components_strings.grd
-@@ -334,6 +334,7 @@
+@@ -336,6 +336,7 @@
        <part file="version_ui_strings.grdp" />
        <part file="webapps_strings.grdp" />
        <part file="user_scripts/strings/userscripts_strings.grdp" />
@@ -217,7 +217,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
 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
-@@ -667,6 +667,20 @@ void ContentSettingsRegistry::Init() {
+@@ -677,6 +677,20 @@ void ContentSettingsRegistry::Init() {
             ContentSettingsInfo::INHERIT_IN_INCOGNITO,
             ContentSettingsInfo::PERSISTENT,
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
@@ -253,8 +253,8 @@ 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
-@@ -195,7 +195,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
-          content_type == ContentSettingsType::POPUPS ||
+@@ -204,7 +204,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+          content_type == ContentSettingsType::AUTOPLAY ||
           content_type == ContentSettingsType::MIXEDSCRIPT ||
           content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT ||
 -         content_type == ContentSettingsType::TIMEZONE_OVERRIDE;
@@ -262,11 +262,11 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
 +         content_type == ContentSettingsType::WEBGL;
  }
  
- RendererContentSettingRules::RendererContentSettingRules() {}
+ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
 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
-@@ -85,6 +85,7 @@ struct RendererContentSettingRules {
+@@ -97,6 +97,7 @@ struct RendererContentSettingRules {
    ContentSettingsForOneType auto_dark_content_rules;
    ContentSettingsForOneType timezone_override_rules;
    std::string timezone_override_value;
@@ -314,7 +314,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
-@@ -284,6 +284,8 @@ enum class ContentSettingsType : int32_t {
+@@ -287,6 +287,8 @@ enum class ContentSettingsType : int32_t {
    // site instead of the mobile one.
    REQUEST_DESKTOP_SITE,
  
@@ -326,7 +326,7 @@ diff --git a/components/content_settings/core/common/content_settings_types.h b/
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
 --- a/components/content_settings/renderer/content_settings_agent_impl.cc
 +++ b/components/content_settings/renderer/content_settings_agent_impl.cc
-@@ -477,6 +477,15 @@ void ContentSettingsAgentImpl::ClearBlockedContentSettings() {
+@@ -455,6 +455,15 @@ void ContentSettingsAgentImpl::ClearBlockedContentSettings() {
    cached_script_permissions_.clear();
  }
  
@@ -335,7 +335,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
 +    return false;
 +  blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
 +  return CONTENT_SETTING_ALLOW == GetContentSettingFromRules(
-+             content_setting_rules_->webgl_rules, frame,
++             content_setting_rules_->webgl_rules,
 +             url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL());
 +}
 +
@@ -345,7 +345,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h
 --- a/components/content_settings/renderer/content_settings_agent_impl.h
 +++ b/components/content_settings/renderer/content_settings_agent_impl.h
-@@ -101,6 +101,7 @@ class ContentSettingsAgentImpl
+@@ -94,6 +94,7 @@ class ContentSettingsAgentImpl
    bool AllowAutoplay(bool default_value) override;
    bool AllowPopupsAndRedirects(bool default_value) override;
    bool ShouldAutoupgradeMixedContent() override;
@@ -401,7 +401,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
-@@ -96,6 +96,7 @@ class SecurityOrigin;
+@@ -97,6 +97,7 @@ class SecurityOrigin;
  class ScriptState;
  class ScriptWrappable;
  class TrustedTypePolicyFactory;
@@ -409,7 +409,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
  
  enum ReasonForCallingCanExecuteScripts {
    kAboutToExecuteScript,
-@@ -104,6 +105,10 @@ enum ReasonForCallingCanExecuteScripts {
+@@ -105,6 +106,10 @@ enum ReasonForCallingCanExecuteScripts {
  
  enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag };
  
@@ -423,7 +423,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
 diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
 +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
-@@ -216,6 +216,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
+@@ -242,6 +242,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
    }
  }
  
@@ -437,7 +437,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
  unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() {
    MutexLocker locker(WebGLContextLimitMutex());
    DCHECK(webgl_context_limits_initialized_);
-@@ -462,25 +469,6 @@ static String ExtractWebGLContextCreationError(
+@@ -488,25 +495,6 @@ static String ExtractWebGLContextCreationError(
      const Platform::GraphicsInfo& info) {
    StringBuilder builder;
    builder.Append("Could not create a WebGL context");
@@ -463,7 +463,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
    FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(),
                            builder);
    builder.Append('.');
-@@ -548,6 +536,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
+@@ -574,6 +562,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
      const CanvasContextCreationAttributesCore& attributes,
      Platform::ContextType context_type,
      Platform::GraphicsInfo* graphics_info) {
@@ -479,7 +479,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
 diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
 +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
-@@ -1826,6 +1826,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
+@@ -1771,6 +1771,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
                          DOMArrayBufferView* pixels,
                          int64_t offset);
  

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

@@ -170,7 +170,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 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
-@@ -174,6 +174,7 @@
+@@ -175,6 +175,7 @@
      <messages fallback_to_english="true">
        <part file="site_settings.grdp" />
        <part file="webgl.grdp" />
@@ -204,7 +204,7 @@ new file mode 100644
 diff --git a/components/components_strings.grd b/components/components_strings.grd
 --- a/components/components_strings.grd
 +++ b/components/components_strings.grd
-@@ -335,6 +335,7 @@
+@@ -337,6 +337,7 @@
        <part file="webapps_strings.grdp" />
        <part file="user_scripts/strings/userscripts_strings.grdp" />
        <part file="browser_ui/strings/android/webgl.grdp" />
@@ -215,7 +215,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
 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
-@@ -681,6 +681,20 @@ void ContentSettingsRegistry::Init() {
+@@ -691,6 +691,20 @@ void ContentSettingsRegistry::Init() {
             /*show_into_info_page*/ true,
             /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_WEBGL,
             /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_WEBGL_MID_SENTENCE);
@@ -251,7 +251,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
-@@ -196,7 +196,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -205,7 +205,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
           content_type == ContentSettingsType::MIXEDSCRIPT ||
           content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT ||
           content_type == ContentSettingsType::TIMEZONE_OVERRIDE ||
@@ -260,11 +260,11 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
 +         content_type == ContentSettingsType::WEBRTC;
  }
  
- RendererContentSettingRules::RendererContentSettingRules() {}
+ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL(
 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
-@@ -86,6 +86,7 @@ struct RendererContentSettingRules {
+@@ -98,6 +98,7 @@ struct RendererContentSettingRules {
    ContentSettingsForOneType timezone_override_rules;
    std::string timezone_override_value;
    ContentSettingsForOneType webgl_rules;
@@ -312,7 +312,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
-@@ -286,6 +286,8 @@ enum class ContentSettingsType : int32_t {
+@@ -289,6 +289,8 @@ enum class ContentSettingsType : int32_t {
  
    WEBGL,
  
@@ -324,7 +324,7 @@ diff --git a/components/content_settings/core/common/content_settings_types.h b/
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
 --- a/components/content_settings/renderer/content_settings_agent_impl.cc
 +++ b/components/content_settings/renderer/content_settings_agent_impl.cc
-@@ -486,6 +486,15 @@ bool ContentSettingsAgentImpl::AllowWebgl(bool enabled_per_settings) {
+@@ -464,6 +464,15 @@ bool ContentSettingsAgentImpl::AllowWebgl(bool enabled_per_settings) {
               url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL());
  }
  
@@ -333,7 +333,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
 +    return false;
 +  blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
 +  return CONTENT_SETTING_ALLOW == GetContentSettingFromRules(
-+             content_setting_rules_->webrtc_rules, frame,
++             content_setting_rules_->webrtc_rules,
 +             url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL());
 +}
 +
@@ -343,7 +343,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h
 --- a/components/content_settings/renderer/content_settings_agent_impl.h
 +++ b/components/content_settings/renderer/content_settings_agent_impl.h
-@@ -102,6 +102,7 @@ class ContentSettingsAgentImpl
+@@ -95,6 +95,7 @@ class ContentSettingsAgentImpl
    bool AllowPopupsAndRedirects(bool default_value) override;
    bool ShouldAutoupgradeMixedContent() override;
    bool AllowWebgl(bool enabled_per_settings) override;
@@ -366,7 +366,7 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t
 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
-@@ -756,6 +756,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -762,6 +762,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
        // origin.
        WebRTCIPHandlingPolicy policy =
            GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy);

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

@@ -23,7 +23,7 @@ Subject: Allow building without enable_reporting
 diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
 --- a/content/browser/devtools/protocol/network_handler.cc
 +++ b/content/browser/devtools/protocol/network_handler.cc
-@@ -1290,6 +1290,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
+@@ -1289,6 +1289,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
    }
  }
  
@@ -31,7 +31,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow
  std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
    std::vector<GURL> urls;
    base::queue<FrameTreeNode*> queue;
-@@ -1307,6 +1308,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
+@@ -1306,6 +1307,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
    }
    return urls;
  }
@@ -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
-@@ -11243,6 +11243,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed(
+@@ -11437,6 +11437,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed(
  void RenderFrameHostImpl::MaybeGenerateCrashReport(
      base::TerminationStatus status,
      int exit_code) {
@@ -182,7 +182,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b
    if (!last_committed_url_.SchemeIsHTTPOrHTTPS())
      return;
  
-@@ -11292,6 +11293,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
+@@ -11486,6 +11487,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
        /*type=*/"crash", /*group=*/"default", last_committed_url_,
        GetReportingSource(), isolation_info_.network_isolation_key(),
        absl::nullopt /* user_agent */, std::move(body));
@@ -223,7 +223,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
-@@ -211,6 +211,12 @@ class ReportingServiceImpl : public ReportingService {
+@@ -212,6 +212,12 @@ class ReportingServiceImpl : public ReportingService {
        std::unique_ptr<const base::Value> body,
        int depth,
        base::TimeTicks queued_ticks) {
@@ -239,7 +239,7 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic
 diff --git a/services/network/network_context.h b/services/network/network_context.h
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -440,10 +440,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -459,10 +459,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
        const absl::optional<base::UnguessableToken>& reporting_source,
        const net::NetworkIsolationKey& network_isolation_key,
        const absl::optional<std::string>& user_agent,
@@ -255,7 +255,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
 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
-@@ -961,7 +961,6 @@ mojom("mojom") {
+@@ -963,7 +963,6 @@ mojom("mojom") {
      export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
      export_header_blink = "third_party/blink/public/platform/web_common.h"
      if (enable_reporting) {
@@ -293,7 +293,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"
-@@ -2297,9 +2298,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
+@@ -2334,9 +2335,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
    return base::UnguessableToken::Null();
  }
  
@@ -308,9 +308,9 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
 diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
 --- a/third_party/blink/renderer/core/frame/local_frame.h
 +++ b/third_party/blink/renderer/core/frame/local_frame.h
-@@ -34,9 +34,9 @@
- #include "base/gtest_prod_util.h"
+@@ -35,9 +35,9 @@
  #include "base/time/default_tick_clock.h"
+ #include "base/time/time.h"
  #include "base/unguessable_token.h"
 -#include "build/build_config.h"
  #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
@@ -319,7 +319,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"
-@@ -550,9 +550,9 @@ class CORE_EXPORT LocalFrame final
+@@ -561,9 +561,9 @@ class CORE_EXPORT LocalFrame final
    }
  
    SmoothScrollSequencer& GetSmoothScrollSequencer();
@@ -386,7 +386,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
    const String& type = report->type();
    if (!(type == ReportType::kCSPViolation || type == ReportType::kDeprecation ||
          type == ReportType::kPermissionsPolicyViolation ||
-@@ -225,6 +233,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
+@@ -227,6 +235,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
          url, endpoint, body->featureId(), body->disposition(), body->message(),
          body->sourceFile(), line_number, column_number);
    }

+ 1 - 1
build/patches/Allow-building-without-supervised-users.patch

@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/childaccounts/C
 diff --git a/chrome/browser/startup_data.cc b/chrome/browser/startup_data.cc
 --- a/chrome/browser/startup_data.cc
 +++ b/chrome/browser/startup_data.cc
-@@ -33,9 +33,6 @@
+@@ -32,9 +32,6 @@
  #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h"
  #include "chrome/browser/profiles/pref_service_builder_utils.h"
  #include "chrome/browser/profiles/profile_key.h"

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

@@ -9,16 +9,16 @@ Subject: Ask user before closing all tabs
 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
-@@ -461,8 +461,8 @@ const base::Feature kConditionalTabStripAndroid{
- const base::Feature kCastDeviceFilter{"CastDeviceFilter",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -457,8 +457,8 @@ const base::Feature kCastDeviceFilter{"CastDeviceFilter",
+ const base::Feature kCloseAllTabsModalDialog{"CloseAllTabsModalDialog",
+                                              base::FEATURE_ENABLED_BY_DEFAULT};
  
--const base::Feature kCloseAllTabsModalDialog{"CloseAllTabsModalDialog",
--                                             base::FEATURE_DISABLED_BY_DEFAULT};
-+const base::Feature kCloseAllTabsModalDialog{"CloseAllTabsModalDialog", // Enabled by default in Bromite
-+                                             base::FEATURE_ENABLED_BY_DEFAULT};
+-const base::Feature kCloseTabSuggestions{"CloseTabSuggestions",
+-                                         base::FEATURE_DISABLED_BY_DEFAULT};
++const base::Feature kCloseTabSuggestions{"CloseTabSuggestions",              // Enabled by default in Bromite
++                                         base::FEATURE_ENABLED_BY_DEFAULT};
  
- const base::Feature kCloseTabSuggestions{"CloseTabSuggestions",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kCriticalPersistedTabData{
+     "CriticalPersistedTabData", base::FEATURE_DISABLED_BY_DEFAULT};
 --
 2.25.1

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

@@ -46,7 +46,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
-@@ -462,7 +462,9 @@ double AudioContext::baseLatency() const {
+@@ -492,7 +492,9 @@ double AudioContext::baseLatency() const {
    DCHECK(IsMainThread());
    DCHECK(destination());
  
@@ -56,6 +56,6 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir
 +  return double(l)/100;
  }
  
- MediaElementAudioSourceNode* AudioContext::createMediaElementSource(
+ double AudioContext::outputLatency() const {
 --
 2.25.1

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 241 - 117
build/patches/Automated-domain-substitution.patch


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

@@ -45,7 +45,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
-@@ -373,6 +373,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
+@@ -374,6 +374,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
        const String& message = g_empty_string,
        const String& source_file = g_empty_string) const {}
  
@@ -67,7 +67,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
-@@ -558,6 +558,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -546,6 +546,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -97,7 +97,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/third_party/blink/renderer/core/loader/frame_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h
-@@ -178,6 +178,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
+@@ -171,6 +171,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
    bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
    std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
        override;

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

@@ -26,7 +26,7 @@ This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
-@@ -57,6 +57,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
+@@ -58,6 +58,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
    if (base::IsStringASCII(scheme) &&
        (ProfileIOData::IsHandledProtocol(scheme) ||
         base::LowerCaseEqualsASCII(scheme, content::kViewSourceScheme) ||
@@ -117,7 +117,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1048,6 +1048,8 @@ component("net") {
+@@ -1033,6 +1033,8 @@ component("net") {
      "url_request/url_request_http_job.cc",
      "url_request/url_request_http_job.h",
      "url_request/url_request_interceptor.cc",
@@ -226,7 +226,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
 diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
 --- a/net/url_request/url_request_context_builder.cc
 +++ b/net/url_request/url_request_context_builder.cc
-@@ -48,6 +48,7 @@
+@@ -47,6 +47,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"
@@ -234,7 +234,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_job_factory.h"
-@@ -616,6 +617,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -626,6 +627,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }

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

@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 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
-@@ -242,6 +242,9 @@ CHAR_LIMIT guidelines:
+@@ -243,6 +243,9 @@ CHAR_LIMIT guidelines:
        <message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_LIMIT=32]">
          Sites
        </message>

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

@@ -58,7 +58,7 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681)
 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
-@@ -486,6 +486,7 @@ chrome_java_resources = [
+@@ -473,6 +473,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",
@@ -66,7 +66,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",
-@@ -680,6 +681,7 @@ chrome_java_resources = [
+@@ -667,6 +668,7 @@ chrome_java_resources = [
    "java/res/values/values.xml",
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -77,7 +77,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
-@@ -898,6 +898,8 @@ chrome_java_sources = [
+@@ -904,6 +904,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",
@@ -408,19 +408,19 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
-@@ -802,7 +802,7 @@ public class TabModelImpl extends TabModelJniBridge {
+@@ -670,7 +670,7 @@ public class TabModelImpl extends TabModelJniBridge {
+     protected boolean createTabWithWebContents(
              Tab parent, Profile profile, WebContents webContents) {
          return getTabCreator(profile.isOffTheRecord())
-                 .createTabWithWebContents(
--                        parent, webContents, TabLaunchType.FROM_LONGPRESS_BACKGROUND);
-+                        parent, webContents, TabLaunchType.FROM_LINK);
+-                .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_RECENT_TABS);
++                .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_LINK);
      }
  
      @Override
 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
-@@ -11534,6 +11534,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -11873,6 +11873,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -492,7 +492,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
-@@ -1065,6 +1065,26 @@ BrowserProcessImpl::component_updater() {
+@@ -1068,6 +1068,26 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -541,7 +541,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
-@@ -1727,6 +1727,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1730,6 +1730,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    // will be initialized when the app enters foreground mode.
    variations_service->set_policy_pref_service(profile->GetPrefs());
  
@@ -579,7 +579,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
-@@ -272,6 +272,14 @@ public class CachedFeatureFlags {
+@@ -270,6 +270,14 @@ public class CachedFeatureFlags {
                  ChromeFeatureList.isEnabled(ChromeFeatureList.BACKGROUND_THREAD_POOL));
      }
  
@@ -594,7 +594,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.
       */
-@@ -489,5 +497,7 @@ public class CachedFeatureFlags {
+@@ -487,5 +495,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -605,7 +605,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
-@@ -437,6 +437,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -436,6 +436,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
        ssl_config_service_manager_(local_state_),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -614,7 +614,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 =
-@@ -517,6 +519,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -516,6 +518,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -640,7 +640,7 @@ diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser
 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
-@@ -214,6 +214,20 @@ CHAR_LIMIT guidelines:
+@@ -215,6 +215,20 @@ CHAR_LIMIT guidelines:
          Enter VR
        </message>
  
@@ -664,7 +664,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
-@@ -2280,6 +2280,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2318,6 +2318,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -677,7 +677,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
-@@ -31,6 +31,7 @@ extern const char kDownloadRestrictions[];
+@@ -32,6 +32,7 @@ extern const char kDownloadBubbleEnabled[];
  extern const char kForceEphemeralProfiles[];
  extern const char kHomePageIsNewTabPage[];
  extern const char kHomePage[];
@@ -1457,7 +1457,7 @@ new file mode 100644
 diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
 +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
-@@ -652,6 +652,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -666,6 +666,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1478,7 +1478,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
 diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc
 --- a/components/subresource_filter/content/browser/ruleset_service.cc
 +++ b/components/subresource_filter/content/browser/ruleset_service.cc
-@@ -46,9 +46,7 @@ namespace {
+@@ -45,9 +45,7 @@ namespace {
  
  void RecordIndexAndWriteRulesetResult(
      RulesetService::IndexAndWriteRulesetResult result) {
@@ -1489,7 +1489,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
  }
  
  // Implements operations on a `sentinel file`, which is used as a safeguard to
-@@ -228,10 +226,13 @@ RulesetService::RulesetService(
+@@ -227,10 +225,13 @@ RulesetService::RulesetService(
  RulesetService::~RulesetService() {}
  
  void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
@@ -1505,7 +1505,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    // Trying to store a ruleset with the same version for a second time would
    // not only be futile, but would fail on Windows due to "File System
    // Tunneling" as long as the previously stored copy of the rules is still
-@@ -241,13 +242,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
+@@ -240,13 +241,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
    if (most_recently_indexed_version.IsCurrentFormatVersion() &&
        most_recently_indexed_version.content_version ==
            unindexed_ruleset_info.content_version) {
@@ -1522,7 +1522,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      return;
    }
  
-@@ -266,6 +270,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const {
+@@ -265,6 +269,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const {
  IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
      const base::FilePath& indexed_ruleset_base_dir,
      const UnindexedRulesetInfo& unindexed_ruleset_info) {
@@ -1541,7 +1541,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
                                                  base::BlockingType::MAY_BLOCK);
  
-@@ -273,6 +289,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -272,6 +288,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
        unindexed_ruleset_info);
  
    if (!unindexed_ruleset_stream_generator.ruleset_stream()) {
@@ -1549,7 +1549,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_OPENING_UNINDEXED_RULESET);
      return IndexedRulesetVersion();
-@@ -286,6 +303,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -285,6 +302,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
            indexed_ruleset_base_dir, indexed_version);
  
    if (!base::CreateDirectory(indexed_ruleset_version_dir)) {
@@ -1557,7 +1557,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_CREATING_VERSION_DIR);
      return IndexedRulesetVersion();
-@@ -311,6 +329,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -310,6 +328,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
  
    RulesetIndexer indexer;
    if (!(*g_index_ruleset_func)(&unindexed_ruleset_stream_generator, &indexer)) {
@@ -1565,7 +1565,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET);
      return IndexedRulesetVersion();
-@@ -331,6 +350,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -330,6 +349,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
    if (result != IndexAndWriteRulesetResult::SUCCESS)
      return IndexedRulesetVersion();
  
@@ -1574,7 +1574,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    DCHECK(indexed_version.IsValid());
    return indexed_version;
  }
-@@ -455,6 +476,7 @@ void RulesetService::IndexAndStoreRuleset(
+@@ -454,6 +475,7 @@ void RulesetService::IndexAndStoreRuleset(
  void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback,
                                        const IndexedRulesetVersion& version) {
    DCHECK(!result_callback.is_null());
@@ -1582,7 +1582,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    if (!version.IsValid())
      return;
    version.SaveToPrefs(local_state_);
-@@ -467,7 +489,6 @@ void RulesetService::OpenAndPublishRuleset(
+@@ -466,7 +488,6 @@ void RulesetService::OpenAndPublishRuleset(
        IndexedRulesetLocator::GetRulesetDataFilePath(
            IndexedRulesetLocator::GetSubdirectoryPathForVersion(
                indexed_ruleset_base_dir_, version));

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

@@ -45,7 +45,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
-@@ -1977,6 +1977,9 @@ if (enable_java_templates) {
+@@ -2018,6 +2018,9 @@ if (enable_java_templates) {
            ]
          }
        }
@@ -58,7 +58,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
-@@ -801,6 +801,9 @@ chrome_java_sources = [
+@@ -807,6 +807,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",
@@ -1512,15 +1512,15 @@ 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[] = {
+@@ -249,6 +249,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+     &kNewWindowAppMenu,
      &kNotificationPermissionVariant,
-     &kOfflineIndicatorV2,
      &kPageAnnotationsService,
 +    &kInlineUpdateFlow,
      &kBookmarksImprovedSaveFlow,
      &kBookmarksRefresh,
      &kProbabilisticCryptidRenderer,
-@@ -676,6 +677,9 @@ const base::Feature kIncognitoReauthenticationForAndroid{
+@@ -660,6 +661,9 @@ const base::Feature kIncognitoReauthenticationForAndroid{
  const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -1533,7 +1533,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
-@@ -106,6 +106,7 @@ extern const base::Feature kImmersiveUiMode;
+@@ -101,6 +101,7 @@ extern const base::Feature kImmersiveUiMode;
  extern const base::Feature kIncognitoReauthenticationForAndroid;
  extern const base::Feature kIncognitoScreenshot;
  extern const base::Feature kImprovedA2HS;
@@ -1544,7 +1544,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
-@@ -367,6 +367,7 @@ public abstract class ChromeFeatureList {
+@@ -363,6 +363,7 @@ public abstract class ChromeFeatureList {
      public static final String INCOGNITO_REAUTHENTICATION_FOR_ANDROID =
              "IncognitoReauthenticationForAndroid";
      public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot";
@@ -1555,7 +1555,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
-@@ -1836,6 +1836,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1840,6 +1840,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>
@@ -1568,7 +1568,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]">
-@@ -3323,7 +3329,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3333,7 +3339,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]">
@@ -1580,7 +1580,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
-@@ -3334,6 +3343,18 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3344,6 +3353,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>

+ 85 - 23
build/patches/Client-hints-overrides.patch

@@ -9,19 +9,23 @@ use Google Chrome branding for client hints
  chrome/browser/prefs/browser_prefs.cc                    | 2 +-
  components/embedder_support/user_agent_utils.cc          | 4 +---
  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 +-
  services/network/public/cpp/client_hints.cc              | 1 +
- services/network/public/cpp/features.cc                  | 2 +-
+ services/network/public/cpp/features.cc                  | 6 ++++++
+ services/network/public/cpp/features.h                   | 3 +++
+ services/network/url_loader.cc                           | 3 ++-
+ services/network/url_loader_unittest.cc                  | 3 ++-
  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, 14 insertions(+), 18 deletions(-)
+ 14 files changed, 31 insertions(+), 19 deletions(-)
 
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -747,7 +747,7 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
+@@ -765,7 +765,7 @@ void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) {
    registry->RegisterListPref(prefs::kUsedPolicyCertificates);
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -33,9 +37,9 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
 diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
 --- a/components/embedder_support/user_agent_utils.cc
 +++ b/components/embedder_support/user_agent_utils.cc
-@@ -225,9 +225,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
-   int major_version_number = 0;
-   DCHECK(base::StringToInt(major_version, &major_version_number));
+@@ -226,9 +226,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
+   bool parse_result = base::StringToInt(major_version, &major_version_number);
+   DCHECK(parse_result);
    absl::optional<std::string> brand;
 -#if !BUILDFLAG(CHROMIUM_BRANDING)
 -  brand = version_info::GetProductName();
@@ -47,7 +51,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
-@@ -424,7 +424,8 @@ void AddPrefersColorSchemeHeader(net::HttpRequestHeaders* headers,
+@@ -433,7 +433,8 @@ void AddPrefersColorSchemeHeader(net::HttpRequestHeaders* headers,
                      is_dark_mode ? "dark" : "light");
  }
  
@@ -57,10 +61,25 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie
    return network::IsOriginPotentiallyTrustworthy(origin);
  }
  
+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
+@@ -983,6 +983,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
+     const std::vector<network::mojom::WebClientHintsType>& accept_ch_frame,
+     OnAcceptCHFrameReceivedCallback callback) {
+   received_accept_ch_frame_ = true;
++  if (!base::FeatureList::IsEnabled(network::features::kAcceptCHFrame)) {
++    std::move(callback).Run(net::OK);
++    return;
++  }
++
+   LogAcceptCHFrameStatus(AcceptCHFrameRestart::kFramePresent);
+ 
+   // Given that this is happening in the middle of navigation, there should
 diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
 --- a/content/common/user_agent.cc
 +++ b/content/common/user_agent.cc
-@@ -283,14 +283,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) {
+@@ -300,14 +300,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) {
  }
  
  std::string BuildModelInfo() {
@@ -86,12 +105,12 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 -                                        base::FEATURE_ENABLED_BY_DEFAULT};
 +                                        base::FEATURE_DISABLED_BY_DEFAULT};
  
- // Puts save-data header in the holdback mode. This disables sending of
- // save-data header to origins, and to the renderer processes within Chrome.
+ // Enable debugging the issue crbug.com/1201355
+ const base::Feature kDebugHistoryInterventionNoUserActivation{
 diff --git a/services/network/public/cpp/client_hints.cc b/services/network/public/cpp/client_hints.cc
 --- a/services/network/public/cpp/client_hints.cc
 +++ b/services/network/public/cpp/client_hints.cc
-@@ -97,6 +97,7 @@ const DecodeMap& GetDecodeMap() {
+@@ -98,6 +98,7 @@ const DecodeMap& GetDecodeMap() {
  
  absl::optional<std::vector<network::mojom::WebClientHintsType>>
  ParseClientHintsHeader(const std::string& header) {
@@ -102,26 +121,69 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
-@@ -185,7 +185,7 @@ const base::Feature kWebSocketReassembleShortMessages{
- // See:
- // 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};
+@@ -181,6 +181,12 @@ const base::FeatureParam<bool> kPlatformProvidedTrustTokenIssuance{
+ const base::Feature kWebSocketReassembleShortMessages{
+     "WebSocketReassembleShortMessages", base::FEATURE_ENABLED_BY_DEFAULT};
+ 
++// Enable support for ACCEPT_CH H2/3 frame as part of Client Hint Reliability.
++// See:
++// https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3
++const base::Feature kAcceptCHFrame{"AcceptCHFrame",
 +                                   base::FEATURE_DISABLED_BY_DEFAULT};
- 
++
  const base::Feature kSCTAuditingRetryReports{"SCTAuditingRetryReports",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
+--- a/services/network/public/cpp/features.h
++++ b/services/network/public/cpp/features.h
+@@ -66,6 +66,9 @@ extern const base::FeatureParam<bool> kPlatformProvidedTrustTokenIssuance;
+ COMPONENT_EXPORT(NETWORK_CPP)
+ extern const base::Feature kWebSocketReassembleShortMessages;
+ 
++COMPONENT_EXPORT(NETWORK_CPP)
++extern const base::Feature kAcceptCHFrame;
++
+ COMPONENT_EXPORT(NETWORK_CPP)
+ extern const base::Feature kSCTAuditingRetryReports;
+ 
+diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
+--- a/services/network/url_loader.cc
++++ b/services/network/url_loader.cc
+@@ -1149,7 +1149,8 @@ int URLLoader::OnConnected(net::URLRequest* url_request,
+     return net::ERR_FAILED;
+   }
+ 
+-  if (!accept_ch_frame_observer_ || info.accept_ch_frame.empty()) {
++  if (!accept_ch_frame_observer_ || info.accept_ch_frame.empty() ||
++      !base::FeatureList::IsEnabled(features::kAcceptCHFrame)) {
+     return net::OK;
+   }
+ 
+diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc
+--- a/services/network/url_loader_unittest.cc
++++ b/services/network/url_loader_unittest.cc
+@@ -686,7 +686,8 @@ class URLLoaderTest : public testing::Test {
+     net::URLRequestFailedJob::AddUrlHandler();
+ 
+     scoped_feature_list_.InitWithFeatures(
+-        /*enabled_features=*/{net::features::kRecordRadioWakeupTrigger},
++        /*enabled_features=*/{features::kAcceptCHFrame,
++                              net::features::kRecordRadioWakeupTrigger},
+         /*disabled_features=*/{});
+   }
+   ~URLLoaderTest() override {
 diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party/blink/common/client_hints/client_hints.cc
 --- a/third_party/blink/common/client_hints/client_hints.cc
 +++ b/third_party/blink/common/client_hints/client_hints.cc
-@@ -116,6 +116,7 @@ const size_t kWebEffectiveConnectionTypeMappingCount =
+@@ -118,6 +118,7 @@ const size_t kWebEffectiveConnectionTypeMappingCount =
      std::size(kWebEffectiveConnectionTypeMapping);
  
  bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) {
 +  if ((true)) return false;
    switch (type) {
+     case network::mojom::WebClientHintsType::kSaveData:
      case network::mojom::WebClientHintsType::kUA:
-     case network::mojom::WebClientHintsType::kUAMobile:
 diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/third_party/blink/common/client_hints/enabled_client_hints.cc
 --- a/third_party/blink/common/client_hints/enabled_client_hints.cc
 +++ b/third_party/blink/common/client_hints/enabled_client_hints.cc
@@ -133,7 +195,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
    switch (type) {
      case WebClientHintsType::kUA:
      case WebClientHintsType::kUAArch:
-@@ -132,7 +133,7 @@ bool IsOriginTrialEnabled(const GURL& url,
+@@ -136,7 +137,7 @@ bool IsOriginTrialEnabled(const GURL& url,
  }  // namespace
  
  bool EnabledClientHints::IsEnabled(const WebClientHintsType type) const {
@@ -142,7 +204,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
  }
  
  void EnabledClientHints::SetIsEnabled(const WebClientHintsType type,
-@@ -165,6 +166,7 @@ void EnabledClientHints::SetIsEnabled(
+@@ -169,6 +170,7 @@ void EnabledClientHints::SetIsEnabled(
  
  std::vector<WebClientHintsType> EnabledClientHints::GetEnabledHints() const {
    std::vector<WebClientHintsType> hints;
@@ -153,7 +215,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
 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
-@@ -161,7 +161,7 @@ const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent",
+@@ -156,7 +156,7 @@ const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent",
  // An experimental replacement for the `User-Agent` header, defined in
  // https://tools.ietf.org/html/draft-west-ua-client-hints.
  const base::Feature kUserAgentClientHint{"UserAgentClientHint",
@@ -162,7 +224,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
  
  // Enable `sec-ch-ua-full-version-list` client hint.
  const base::Feature kUserAgentClientHintFullVersionList{
-@@ -773,7 +773,7 @@ const base::Feature kResamplingScrollEvents{"ResamplingScrollEvents",
+@@ -767,7 +767,7 @@ const base::Feature kResamplingScrollEvents{"ResamplingScrollEvents",
  const base::Feature kAllowClientHintsToThirdParty {
    "AllowClientHintsToThirdParty",
  #if BUILDFLAG(IS_ANDROID)

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

@@ -427,7 +427,7 @@ new file mode 100644
 +            @ContentSettingValues
 +            Integer value = site.getContentSetting(browserContextHandle, type);
 +
-+            return new AlertDialog.Builder(context, R.style.Theme_Chromium_AlertDialog)
++            return new AlertDialog.Builder(context, R.style.ThemeOverlay_BrowserUI_AlertDialog)
 +                    .setPositiveButton(R.string.cancel, null)
 +                    .setNegativeButton(R.string.remove,
 +                            (dialog, which) -> {
@@ -972,7 +972,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
  
  #if BUILDFLAG(IS_ANDROID)
  #include "media/base/android/media_drm_bridge.h"
-@@ -678,7 +680,10 @@ void ContentSettingsRegistry::Register(
+@@ -688,7 +690,10 @@ void ContentSettingsRegistry::Register(
      Platforms platforms,
      ContentSettingsInfo::IncognitoBehavior incognito_behavior,
      ContentSettingsInfo::StorageBehavior storage_behavior,
@@ -984,7 +984,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
    // Ensure that nothing has been registered yet for the given type.
    DCHECK(!website_settings_registry_->Get(type));
  
-@@ -687,7 +692,9 @@ void ContentSettingsRegistry::Register(
+@@ -697,7 +702,9 @@ void ContentSettingsRegistry::Register(
        website_settings_registry_->Register(
            type, name, std::move(default_value), sync_status,
            WebsiteSettingsInfo::NOT_LOSSY, scoping_type, platforms,
@@ -1177,7 +1177,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
  #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"
-@@ -162,6 +163,15 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -164,6 +165,15 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
      return true;
    }
  
@@ -1193,7 +1193,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
-@@ -962,7 +972,18 @@ void PageInfo::PresentSitePermissions() {
+@@ -964,7 +974,18 @@ void PageInfo::PresentSitePermissions() {
    PermissionInfo permission_info;
    HostContentSettingsMap* content_settings = GetContentSettings();
    DCHECK(web_contents_);

+ 4 - 2
build/patches/Revert-Disable-Dictionary-suggestions-for-the-Omnibox.patch → build/patches/Dictionary-suggestions-for-the-Omnibox.patch

@@ -1,6 +1,8 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Sat, 19 Mar 2022 10:53:24 +0100
-Subject: Revert "Disable Dictionary suggestions for the Omnibox"
+Subject: Dictionary suggestions for the Omnibox
+
+Revert "Disable Dictionary suggestions for the Omnibox"
 
 This reverts commit d3ec2b2d25066ec089f8351a44b919ded4270e83.
 ---
@@ -959,7 +961,7 @@ 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
-@@ -206,8 +206,7 @@ public abstract class UrlBar extends AutocompleteEditText {
+@@ -207,8 +207,7 @@ public abstract class UrlBar extends AutocompleteEditText {
          // the first draw.
          setFocusable(false);
          setFocusableInTouchMode(false);

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

@@ -10,8 +10,8 @@ Subject: Disable AGSA by default
 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
-@@ -649,7 +649,7 @@ const base::Feature kEnableMixedContentDownloadDialog{
-     "EnableMixedContentDownloadDialog", base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -636,7 +636,7 @@ const base::Feature kDynamicColorButtonsAndroid{
+     "DynamicColorButtonsAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kExperimentsForAgsa{"ExperimentsForAgsa",
 -                                        base::FEATURE_ENABLED_BY_DEFAULT};
@@ -22,7 +22,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
-@@ -91,7 +91,7 @@ public class CachedFeatureFlags {
+@@ -90,7 +90,7 @@ public class CachedFeatureFlags {
                      .put(ChromeFeatureList.READ_LATER, false)
                      .put(ChromeFeatureList.CCT_REMOVE_REMOTE_VIEW_IDS, true)
                      .put(ChromeFeatureList.CCT_INCOGNITO, true)
@@ -30,6 +30,6 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 +                    .put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, false)
                      .put(ChromeFeatureList.APP_MENU_MOBILE_SITE_OPTION, false)
                      .put(ChromeFeatureList.OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, false)
-                     .put(ChromeFeatureList.APP_TO_WEB_ATTRIBUTION, false)
+                     .put(ChromeFeatureList.NEW_WINDOW_APP_MENU, true)
 --
 2.25.1

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

@@ -12,7 +12,7 @@ Subject: Disable Accessibility service by default
 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
-@@ -1416,6 +1416,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1420,6 +1420,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>

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

@@ -11,7 +11,7 @@ This feature is detrimental to privacy, see also:
 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
-@@ -101,12 +101,8 @@ const base::Feature kArcPiGhostWindow{"ArcPiGhostWindow",
+@@ -95,12 +95,8 @@ const base::Feature kArcPiGhostWindow{"ArcPiGhostWindow",
  
  // Enables the built-in DNS resolver.
  const base::Feature kAsyncDns {

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

@@ -9,7 +9,7 @@ Subject: Disable DRM media origin IDs preprovisioning
 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
-@@ -679,7 +679,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -703,7 +703,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",

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

@@ -81,7 +81,7 @@ 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
-@@ -2829,6 +2829,9 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
+@@ -2824,6 +2824,9 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
      const url::Origin* impression_origin,
      const url::Origin* conversion_origin,
      const url::Origin* reporting_origin) {
@@ -106,7 +106,7 @@ diff --git a/chrome/browser/privacy_sandbox/generated_floc_pref.cc b/chrome/brow
 diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
 --- a/components/history/core/browser/history_backend.cc
 +++ b/components/history/core/browser/history_backend.cc
-@@ -496,18 +496,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id,
+@@ -497,18 +497,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id,
    if (!visit_id)
      return;
  
@@ -129,7 +129,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his
 diff --git a/components/history/core/browser/history_service.cc b/components/history/core/browser/history_service.cc
 --- a/components/history/core/browser/history_service.cc
 +++ b/components/history/core/browser/history_service.cc
-@@ -393,7 +393,7 @@ void HistoryService::AddPage(const GURL& url,
+@@ -394,7 +394,7 @@ void HistoryService::AddPage(const GURL& url,
    AddPage(HistoryAddPageArgs(
        url, time, context_id, nav_entry_id, referrer, redirects, transition,
        !ui::PageTransitionIsMainFrame(transition), visit_source,

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

@@ -36,7 +36,7 @@ See also:
 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
-@@ -4342,6 +4342,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4472,6 +4472,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName,
       flag_descriptions::kEnableTLS13EarlyDataDescription, kOsAll,
       FEATURE_VALUE_TYPE(net::features::kEnableTLS13EarlyData)},
@@ -52,7 +52,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
-@@ -950,6 +950,14 @@ const char kEnableTLS13EarlyDataDescription[] =
+@@ -922,6 +922,14 @@ const char kEnableTLS13EarlyDataDescription[] =
      "during the handshake when resuming a connection to a compatible TLS 1.3 "
      "server.";
  
@@ -70,7 +70,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
-@@ -549,6 +549,12 @@ extern const char kEnableSyncRequiresPoliciesLoadedDescription[];
+@@ -532,6 +532,12 @@ extern const char kEnablePreinstalledWebAppDuplicationFixerDescription[];
  extern const char kEnableTLS13EarlyDataName[];
  extern const char kEnableTLS13EarlyDataDescription[];
  
@@ -86,7 +86,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
-@@ -92,6 +92,12 @@ const base::FeatureParam<int> kUseDnsHttpsSvcbExtraTimePercent{
+@@ -112,6 +112,12 @@ const base::FeatureParam<int> kUseDnsHttpsSvcbExtraTimePercent{
  const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -102,7 +102,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc
 diff --git a/net/base/features.h b/net/base/features.h
 --- a/net/base/features.h
 +++ b/net/base/features.h
-@@ -153,6 +153,12 @@ NET_EXPORT extern const base::FeatureParam<int>
+@@ -175,6 +175,12 @@ NET_EXPORT extern const base::FeatureParam<int>
  // Enables TLS 1.3 early data.
  NET_EXPORT extern const base::Feature kEnableTLS13EarlyData;
  
@@ -114,11 +114,11 @@ diff --git a/net/base/features.h b/net/base/features.h
 +
  // Enables the TLS Encrypted ClientHello feature.
  // https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-13
- //
+ NET_EXPORT extern const base::Feature kEncryptedClientHello;
 diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc
 --- a/net/http/http_network_session.cc
 +++ b/net/http/http_network_session.cc
-@@ -233,6 +233,7 @@ HttpNetworkSession::HttpNetworkSession(const HttpNetworkSessionParams& params,
+@@ -232,6 +232,7 @@ HttpNetworkSession::HttpNetworkSession(const HttpNetworkSessionParams& params,
  
    next_protos_.push_back(kProtoHTTP11);
  
@@ -130,8 +130,8 @@ 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
 @@ -73,6 +73,7 @@
- #include "net/third_party/quiche/src/quic/core/quic_utils.h"
- #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
+ #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"
 +#include "third_party/boringssl/src/include/openssl/ssl.h"
  #include "url/gurl.h"
@@ -176,7 +176,7 @@ 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
-@@ -2213,7 +2246,7 @@ QuicStreamFactory::CreateCryptoConfigHandle(
+@@ -2209,7 +2242,7 @@ QuicStreamFactory::CreateCryptoConfigHandle(
                sct_auditing_delegate_,
                HostsFromOrigins(params_.origins_to_force_quic_on),
                actual_network_isolation_key),
@@ -279,7 +279,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
 diff --git a/net/socket/ssl_client_socket_impl.h b/net/socket/ssl_client_socket_impl.h
 --- a/net/socket/ssl_client_socket_impl.h
 +++ b/net/socket/ssl_client_socket_impl.h
-@@ -129,6 +129,8 @@ class SSLClientSocketImpl : public SSLClientSocket,
+@@ -130,6 +130,8 @@ class SSLClientSocketImpl : public SSLClientSocket,
    friend class SSLClientSocket;
    friend class SSLContext;
  

+ 3 - 3
build/patches/Disable-UA-full-version.patch

@@ -19,7 +19,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_
  #include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
  #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
  #include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
-@@ -37,6 +39,16 @@ void MaybeRecordMetric(bool record_identifiability,
+@@ -39,6 +41,16 @@ void MaybeRecordMetric(bool record_identifiability,
        .Record(execution_context->UkmRecorder());
  }
  
@@ -36,7 +36,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_
  }  // namespace
  
  NavigatorUAData::NavigatorUAData(ExecutionContext* context)
-@@ -75,7 +87,7 @@ void NavigatorUAData::SetFullVersionList(
+@@ -77,7 +89,7 @@ void NavigatorUAData::SetFullVersionList(
      const UserAgentBrandList& full_version_list) {
    for (const auto& brand_version : full_version_list) {
      AddBrandFullVersion(String::FromUTF8(brand_version.brand),
@@ -45,7 +45,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_
    }
  }
  
-@@ -97,7 +109,7 @@ void NavigatorUAData::SetModel(const String& model) {
+@@ -99,7 +111,7 @@ void NavigatorUAData::SetModel(const String& model) {
  }
  
  void NavigatorUAData::SetUAFullVersion(const String& ua_full_version) {

+ 20 - 19
build/patches/Disable-all-predictors-code.patch

@@ -11,11 +11,11 @@ Subject: Disable all predictors code
  .../core/optimization_guide_features.cc       | 20 +++++++++----------
  .../core/prediction_model_download_manager.cc |  4 +++-
  .../core/prediction_model_fetcher_impl.cc     |  1 +
- components/optimization_guide/features.gni    |  3 +--
+ components/optimization_guide/features.gni    |  4 +---
  components/permissions/features.cc            |  2 +-
  .../segmentation_platform/public/features.cc  |  2 +-
  third_party/blink/common/features.cc          |  2 +-
- 12 files changed, 25 insertions(+), 19 deletions(-)
+ 12 files changed, 25 insertions(+), 20 deletions(-)
 
 diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/browser/optimization_guide/chrome_hints_manager.cc
 --- a/chrome/browser/optimization_guide/chrome_hints_manager.cc
@@ -42,7 +42,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
-@@ -781,7 +781,7 @@ const base::Feature kPermissionAuditing{"PermissionAuditing",
+@@ -788,7 +788,7 @@ 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.
  const base::Feature kPermissionPredictions{"PermissionPredictions",
@@ -51,7 +51,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.
-@@ -792,7 +792,7 @@ const base::FeatureParam<double> kPermissionPredictionsHoldbackChance(
+@@ -799,7 +799,7 @@ const base::FeatureParam<double> kPermissionPredictionsHoldbackChance(
  
  // Enables using the prediction service for geolocation permission prompts.
  const base::Feature kPermissionGeolocationPredictions{
@@ -74,7 +74,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
-@@ -1183,6 +1183,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
+@@ -1211,6 +1211,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
      proto::OptimizationType optimization_type,
      OptimizationMetadata* optimization_metadata) {
    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -87,7 +87,7 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op
 diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc
 --- a/components/optimization_guide/core/optimization_guide_features.cc
 +++ b/components/optimization_guide/core/optimization_guide_features.cc
-@@ -64,7 +64,7 @@ bool IsSupportedLocaleForFeature(const std::string locale,
+@@ -79,7 +79,7 @@ bool IsSupportedLocaleForFeature(const std::string locale,
  // Enables the syncing of the Optimization Hints component, which provides
  // hints for what optimizations can be applied on a page load.
  const base::Feature kOptimizationHints{"OptimizationHints",
@@ -96,7 +96,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
  
  // Feature flag that contains a feature param that specifies the field trials
  // that are allowed to be sent up to the Optimization Guide Server.
-@@ -73,12 +73,12 @@ const base::Feature kOptimizationHintsFieldTrials{
+@@ -88,12 +88,12 @@ const base::Feature kOptimizationHintsFieldTrials{
  
  // Enables fetching from a remote Optimization Guide Service.
  const base::Feature kRemoteOptimizationGuideFetching{
@@ -111,7 +111,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
  #else   // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
        base::FEATURE_DISABLED_BY_DEFAULT
  #endif  // BUILDFLAG(IS_ANDROID)
-@@ -92,15 +92,15 @@ const base::Feature kContextMenuPerformanceInfoAndRemoteHintFetching{
+@@ -107,15 +107,15 @@ const base::Feature kContextMenuPerformanceInfoAndRemoteHintFetching{
  
  // Enables the prediction of optimization targets.
  const base::Feature kOptimizationTargetPrediction{
@@ -130,7 +130,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
  #endif  // !BUILD_WITH_TFLITE_LIB
  };
  
-@@ -126,7 +126,7 @@ const base::Feature kPageEntitiesModelResetOnShutdown{
+@@ -141,7 +141,7 @@ const base::Feature kPageEntitiesModelResetOnShutdown{
  
  // Enables push notification of hints.
  const base::Feature kPushNotifications{"OptimizationGuidePushNotifications",
@@ -139,7 +139,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
  
  // This feature flag does not turn off any behavior, it is only used for
  // experiment parameters.
-@@ -138,12 +138,12 @@ const base::Feature kOptimizationGuideMetadataValidation{
+@@ -153,12 +153,12 @@ const base::Feature kOptimizationGuideMetadataValidation{
      "OptimizationGuideMetadataValidation", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kPageTopicsBatchAnnotations{
@@ -154,7 +154,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
  
  const base::Feature kBatchAnnotationsValidation{
      "BatchAnnotationsValidation", base::FEATURE_DISABLED_BY_DEFAULT};
-@@ -370,7 +370,7 @@ size_t MaxURLKeyedHintCacheSize() {
+@@ -389,7 +389,7 @@ size_t MaxURLKeyedHintCacheSize() {
  
  bool ShouldPersistHintsToDisk() {
    return GetFieldTrialParamByFeatureAsBool(kOptimizationHints,
@@ -166,7 +166,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
 diff --git a/components/optimization_guide/core/prediction_model_download_manager.cc b/components/optimization_guide/core/prediction_model_download_manager.cc
 --- a/components/optimization_guide/core/prediction_model_download_manager.cc
 +++ b/components/optimization_guide/core/prediction_model_download_manager.cc
-@@ -47,7 +47,7 @@ constexpr char kGoogApiKey[] = "X-Goog-Api-Key";
+@@ -46,7 +46,7 @@ constexpr char kGoogApiKey[] = "X-Goog-Api-Key";
  // we require models to come from.
  constexpr uint8_t kPublisherKeyHash[] = {
      0x66, 0xa1, 0xd9, 0x3e, 0x4e, 0x5a, 0x66, 0x8a, 0x0f, 0xd3, 0xfa,
@@ -175,7 +175,7 @@ diff --git a/components/optimization_guide/core/prediction_model_download_manage
      0x5c, 0x7f, 0xd0, 0x0c, 0xa1, 0x6e, 0xef, 0xdd, 0x63, 0x7a};
  const net::NetworkTrafficAnnotationTag
      kOptimizationGuidePredictionModelsTrafficAnnotation =
-@@ -104,6 +104,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default;
+@@ -106,6 +106,7 @@ PredictionModelDownloadManager::~PredictionModelDownloadManager() = default;
  void PredictionModelDownloadManager::StartDownload(
      const GURL& download_url,
      proto::OptimizationTarget optimization_target) {
@@ -183,7 +183,7 @@ diff --git a/components/optimization_guide/core/prediction_model_download_manage
    download::DownloadParams download_params;
    download_params.client =
        download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS;
-@@ -229,6 +230,7 @@ void PredictionModelDownloadManager::OnDownloadFailed(const std::string& guid) {
+@@ -240,6 +241,7 @@ void PredictionModelDownloadManager::OnDownloadFailed(
  absl::optional<std::pair<base::FilePath, base::FilePath>>
  PredictionModelDownloadManager::ProcessDownload(
      const base::FilePath& file_path) {
@@ -194,7 +194,7 @@ diff --git a/components/optimization_guide/core/prediction_model_download_manage
 diff --git a/components/optimization_guide/core/prediction_model_fetcher_impl.cc b/components/optimization_guide/core/prediction_model_fetcher_impl.cc
 --- a/components/optimization_guide/core/prediction_model_fetcher_impl.cc
 +++ b/components/optimization_guide/core/prediction_model_fetcher_impl.cc
-@@ -50,6 +50,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels(
+@@ -51,6 +51,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels(
      proto::RequestContext request_context,
      const std::string& locale,
      ModelsFetchedCallback models_fetched_callback) {
@@ -205,12 +205,13 @@ diff --git a/components/optimization_guide/core/prediction_model_fetcher_impl.cc
 diff --git a/components/optimization_guide/features.gni b/components/optimization_guide/features.gni
 --- a/components/optimization_guide/features.gni
 +++ b/components/optimization_guide/features.gni
-@@ -7,8 +7,7 @@ import("//build/config/chrome_build.gni")
+@@ -10,9 +10,7 @@ if (is_android) {
  declare_args() {
    # This enables build with TFLite library.
    # Currently only available for Desktop and Android.
--  build_with_tflite_lib = is_android || (is_win && target_cpu != "arm64") ||
--                          is_linux || is_mac || is_chromeos || is_fuchsia
+-  build_with_tflite_lib =
+-      is_android || (is_win && target_cpu != "arm64") || is_linux || is_mac ||
+-      is_chromeos || is_fuchsia || is_ios
 +  build_with_tflite_lib = false
  
    # You can set the variable 'build_with_internal_optimization_guide' to true
@@ -242,7 +243,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
-@@ -185,7 +185,7 @@ const base::Feature kViewportHeightClientHintHeader{
+@@ -180,7 +180,7 @@ const base::Feature kViewportHeightClientHintHeader{
  const base::Feature kNavigationPredictor {
    "NavigationPredictor",
  #if BUILDFLAG(IS_ANDROID)

+ 2 - 2
build/patches/Disable-all-promo-dialogs.patch

@@ -9,7 +9,7 @@ Subject: Disable all promo dialogs
 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
-@@ -876,7 +876,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -863,7 +863,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
       * displayed.
       */
      private boolean triggerPromo(boolean intentWithEffect) {
@@ -18,7 +18,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;
              }
-@@ -911,8 +911,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -898,8 +898,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

+ 8 - 175
build/patches/Disable-conversion-measurement-api.patch

@@ -8,67 +8,22 @@ the handling of attributions via intents between apps.
 This patch enforces the deactivation by preventing the report from
 being sent and being saved to disk, although it is currently in uncalled code.
 ---
- chrome/android/java/AndroidManifest.xml         |  8 --------
- .../AttributionIntentHandlerFactory.java        |  9 +--------
  .../flags/android/chrome_feature_list.cc        |  2 +-
  .../embedder_support/origin_trials/features.cc  |  3 ++-
  .../render_view_context_menu_base.cc            |  3 ---
  .../aggregatable_report_sender.cc               | 17 ++++++++---------
- .../browser/android/navigation_handle_proxy.cc  | 10 ----------
- .../attribution_reporting/attribution_host.cc   |  9 ---------
- .../attribution_reporting/attribution_host.h    |  3 ---
- .../attribution_host_utils.cc                   |  6 ++++++
  .../attribution_report_network_sender.cc        | 15 ++++++++-------
  .../attribution_storage_sql.cc                  |  2 +-
- .../navigation_controller_android.cc            | 16 ----------------
  content/browser/storage_partition_impl.cc       |  7 +------
- .../browser/AttributionReporterImpl.java        |  4 ----
  content/public/browser/navigation_controller.cc |  1 -
  third_party/blink/common/features.cc            |  2 +-
  .../platform/runtime_enabled_features.json5     |  9 ++++++++-
- 18 files changed, 37 insertions(+), 89 deletions(-)
+ 10 files changed, 30 insertions(+), 31 deletions(-)
 
-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
-@@ -1300,14 +1300,6 @@ by a child template that "extends" this file.
-                   android:readPermission="android.permission.GLOBAL_SEARCH" />
-       </provider>
- 
--      <!-- Provider for App to Web impression attribution.
--           TODO(https://crbug.com/1210171): Gate this provider behind a custom permission? -->
--      <provider android:name="org.chromium.chrome.browser.attribution_reporting.AttributionReportingProvider"
--          android:authorities="{{ manifest_package }}.AttributionReporting"
--          android:exported="true"
--          tools:ignore="ExportedContentProvider">
--      </provider>
--
-       {% block base_application_definitions %}
-       {% endblock %}
-       {% block extra_application_definitions_for_test %}
-diff --git a/chrome/browser/attribution_reporting/android/internal/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionIntentHandlerFactory.java b/chrome/browser/attribution_reporting/android/internal/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionIntentHandlerFactory.java
---- a/chrome/browser/attribution_reporting/android/internal/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionIntentHandlerFactory.java
-+++ b/chrome/browser/attribution_reporting/android/internal/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionIntentHandlerFactory.java
-@@ -26,14 +26,7 @@ public class AttributionIntentHandlerFactory {
-      * @return an AttributionIntentHandler instance.
-      */
-     public static AttributionIntentHandler getInstance() {
--        if (CachedFeatureFlags.isEnabled(ChromeFeatureList.APP_TO_WEB_ATTRIBUTION)) {
--            if (sIntentHandler == null) {
--                sIntentHandler = new AttributionIntentHandlerImpl(sValidator);
--            }
--            return sIntentHandler;
--        } else {
--            return new NoopAttributionIntentHandler();
--        }
-+        return new NoopAttributionIntentHandler();
-     }
- 
-     public static void setInputEventValidatorForTesting(Predicate<InputEvent> validator) {
 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
-@@ -452,7 +452,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
+@@ -442,7 +442,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
                                               base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kAppToWebAttribution{"AppToWebAttribution",
@@ -141,81 +96,6 @@ diff --git a/content/browser/aggregation_service/aggregatable_report_sender.cc b
 -}  // namespace content
 \ No newline at end of file
 +}  // namespace content
-diff --git a/content/browser/android/navigation_handle_proxy.cc b/content/browser/android/navigation_handle_proxy.cc
---- a/content/browser/android/navigation_handle_proxy.cc
-+++ b/content/browser/android/navigation_handle_proxy.cc
-@@ -31,16 +31,6 @@ NavigationHandleProxy::NavigationHandleProxy(
-   base::android::ScopedJavaLocalRef<jobject> impression_byte_buffer = nullptr;
- 
-   // Scoped to out-live the java call as this uses a DirectByteBuffer.
--  std::vector<uint8_t> byte_vector;
--  if (cpp_navigation_handle_->GetImpression()) {
--    blink::mojom::ImpressionPtr impression =
--        AttributionHost::MojoImpressionFromImpression(
--            *cpp_navigation_handle_->GetImpression());
--    byte_vector = blink::mojom::Impression::Serialize(&impression);
--    impression_byte_buffer = base::android::ScopedJavaLocalRef<jobject>(
--        env, env->NewDirectByteBuffer(byte_vector.data(), byte_vector.size()));
--    base::android::CheckException(env);
--  }
-   java_navigation_handle_ = Java_NavigationHandle_Constructor(
-       env, reinterpret_cast<jlong>(this),
-       url::GURLAndroid::FromNativeGURL(env, cpp_navigation_handle_->GetURL()),
-diff --git a/content/browser/attribution_reporting/attribution_host.cc b/content/browser/attribution_reporting/attribution_host.cc
---- a/content/browser/attribution_reporting/attribution_host.cc
-+++ b/content/browser/attribution_reporting/attribution_host.cc
-@@ -444,15 +444,6 @@ void AttributionHost::BindReceiver(
-   conversion_host->receivers_.Bind(rfh, std::move(receiver));
- }
- 
--// static
--blink::mojom::ImpressionPtr AttributionHost::MojoImpressionFromImpression(
--    const blink::Impression& impression) {
--  return blink::mojom::Impression::New(
--      impression.conversion_destination, impression.reporting_origin,
--      impression.impression_data, impression.expiry, impression.priority,
--      impression.attribution_src_token);
--}
--
- WEB_CONTENTS_USER_DATA_KEY_IMPL(AttributionHost);
- 
- }  // namespace content
-diff --git a/content/browser/attribution_reporting/attribution_host.h b/content/browser/attribution_reporting/attribution_host.h
---- a/content/browser/attribution_reporting/attribution_host.h
-+++ b/content/browser/attribution_reporting/attribution_host.h
-@@ -57,9 +57,6 @@ class CONTENT_EXPORT AttributionHost
-       const url::Origin& impression_origin,
-       const blink::Impression& impression);
- 
--  static blink::mojom::ImpressionPtr MojoImpressionFromImpression(
--      const blink::Impression& impression);
--
-  private:
-   friend class AttributionHostTestPeer;
-   friend class WebContentsUserData<AttributionHost>;
-diff --git a/content/browser/attribution_reporting/attribution_host_utils.cc b/content/browser/attribution_reporting/attribution_host_utils.cc
---- a/content/browser/attribution_reporting/attribution_host_utils.cc
-+++ b/content/browser/attribution_reporting/attribution_host_utils.cc
-@@ -20,6 +20,8 @@
- #include "url/gurl.h"
- #include "url/origin.h"
- 
-+// will change in attribution_host_utils.cc
-+
- namespace content {
- 
- namespace attribution_host_utils {
-@@ -68,6 +70,10 @@ absl::optional<blink::Impression> ParseImpressionFromApp(
-   // Java API should have rejected these already.
-   DCHECK(!source_event_id.empty() && !destination.empty());
- 
-+  // no impression from app
-+  if ((true))
-+    return absl::nullopt;
-+
-   blink::Impression impression;
-   if (!base::StringToUint64(source_event_id, &impression.impression_data))
-     return absl::nullopt;
 diff --git a/content/browser/attribution_reporting/attribution_report_network_sender.cc b/content/browser/attribution_reporting/attribution_report_network_sender.cc
 --- a/content/browser/attribution_reporting/attribution_report_network_sender.cc
 +++ b/content/browser/attribution_reporting/attribution_report_network_sender.cc
@@ -251,7 +131,7 @@ 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
-@@ -372,7 +372,7 @@ void AttributionStorageSql::RunInMemoryForTesting() {
+@@ -358,7 +358,7 @@ void AttributionStorageSql::RunInMemoryForTesting() {
  }
  
  // static
@@ -260,38 +140,12 @@ diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/
  
  AttributionStorageSql::AttributionStorageSql(
      const base::FilePath& path_to_database,
-diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/content/browser/renderer_host/navigation_controller_android.cc
---- a/content/browser/renderer_host/navigation_controller_android.cc
-+++ b/content/browser/renderer_host/navigation_controller_android.cc
-@@ -319,22 +319,6 @@ void NavigationControllerAndroid::LoadUrl(
-   if (input_start != 0)
-     params.input_start = base::TimeTicks::FromUptimeMillis(input_start);
- 
--  if (source_package_name) {
--    DCHECK(!params.initiator_origin);
--    // At the moment, source package name is only used for attribution.
--    DCHECK(attribution_source_event_id);
--    params.initiator_origin = OriginFromAndroidPackageName(
--        ConvertJavaStringToUTF8(env, source_package_name));
--
--    params.impression = attribution_host_utils::ParseImpressionFromApp(
--        ConvertJavaStringToUTF8(env, attribution_source_event_id),
--        ConvertJavaStringToUTF8(env, attribution_destination),
--        attribution_report_to
--            ? ConvertJavaStringToUTF8(env, attribution_report_to)
--            : "",
--        attribution_expiry);
--  }
--
-   params.override_user_agent = static_cast<NavigationController::UserAgentOverrideOption>(
-     user_agent_override_option);
- 
 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
-@@ -1307,12 +1307,7 @@ void StoragePartitionImpl::Initialize(
-   bucket_context_ = base::MakeRefCounted<BucketContext>();
-   bucket_context_->Initialize(quota_manager_proxy);
+@@ -1304,12 +1304,7 @@ void StoragePartitionImpl::Initialize(
+ 
+   bucket_manager_ = std::make_unique<BucketManager>(quota_manager_proxy);
  
 -  // The Conversion Measurement API is not available in Incognito mode.
 -  if (!is_in_memory() &&
@@ -303,27 +157,6 @@ diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage
  
    if (base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) {
      interest_group_manager_ = std::make_unique<InterestGroupManagerImpl>(
-diff --git a/content/public/android/java/src/org/chromium/content/browser/AttributionReporterImpl.java b/content/public/android/java/src/org/chromium/content/browser/AttributionReporterImpl.java
---- a/content/public/android/java/src/org/chromium/content/browser/AttributionReporterImpl.java
-+++ b/content/public/android/java/src/org/chromium/content/browser/AttributionReporterImpl.java
-@@ -22,8 +22,6 @@ public class AttributionReporterImpl extends AttributionReporter {
-     public void reportAttributionForCurrentNavigation(WebContents webContents,
-             String sourcePackageName, String sourceEventId, String destination, String reportTo,
-             long expiry) {
--        AttributionReporterImplJni.get().reportAttributionForCurrentNavigation(
--                webContents, sourcePackageName, sourceEventId, destination, reportTo, expiry);
-     }
- 
-     /**
-@@ -33,8 +31,6 @@ public class AttributionReporterImpl extends AttributionReporter {
-     public void reportAppImpression(BrowserContextHandle browserContext, String sourcePackageName,
-             String sourceEventId, String destination, String reportTo, long expiry,
-             long eventTime) {
--        AttributionReporterImplJni.get().reportAppImpression(browserContext, sourcePackageName,
--                sourceEventId, destination, reportTo, expiry, eventTime);
-     }
- 
-     @NativeMethods
 diff --git a/content/public/browser/navigation_controller.cc b/content/public/browser/navigation_controller.cc
 --- a/content/public/browser/navigation_controller.cc
 +++ b/content/public/browser/navigation_controller.cc
@@ -338,7 +171,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
-@@ -42,7 +42,7 @@ const base::Feature kCSSContainerQueries{"CSSContainerQueries",
+@@ -49,7 +49,7 @@ const base::Feature kCSSContainerQueries{"CSSContainerQueries",
  
  // Controls whether the Conversion Measurement API infrastructure is enabled.
  const base::Feature kConversionMeasurement{"ConversionMeasurement",
@@ -364,7 +197,7 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5
      {
        name: "AbortSignalThrowIfAborted",
        status: "stable",
-@@ -496,7 +503,7 @@
+@@ -482,7 +489,7 @@
      },
      {
        name: "ConversionMeasurement",

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

@@ -29,7 +29,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
-@@ -83,7 +83,7 @@ public class CachedFeatureFlags {
+@@ -82,7 +82,7 @@ public class CachedFeatureFlags {
                      .put(ChromeFeatureList.TAB_TO_GTS_ANIMATION, true)
                      .put(ChromeFeatureList.TEST_DEFAULT_DISABLED, false)
                      .put(ChromeFeatureList.TEST_DEFAULT_ENABLED, true)

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

@@ -50,7 +50,7 @@ diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/s
 diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
 --- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
 +++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
-@@ -190,6 +190,8 @@ ChromeMetricsServicesManagerClient::GetMetricsStateManagerForTesting() {
+@@ -189,6 +189,8 @@ ChromeMetricsServicesManagerClient::GetMetricsStateManagerForTesting() {
  void ChromeMetricsServicesManagerClient::CreateFallbackSamplingTrial(
      version_info::Channel channel,
      base::FeatureList* feature_list) {
@@ -62,7 +62,7 @@ diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/
 diff --git a/components/ukm/ukm_recorder_impl.cc b/components/ukm/ukm_recorder_impl.cc
 --- a/components/ukm/ukm_recorder_impl.cc
 +++ b/components/ukm/ukm_recorder_impl.cc
-@@ -191,6 +191,9 @@ UkmRecorderImpl::~UkmRecorderImpl() = default;
+@@ -192,6 +192,9 @@ UkmRecorderImpl::~UkmRecorderImpl() = default;
  void UkmRecorderImpl::CreateFallbackSamplingTrial(
      bool is_stable_channel,
      base::FeatureList* feature_list) {
@@ -87,7 +87,7 @@ diff --git a/components/variations/android/java/src/org/chromium/components/vari
 diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
 --- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
 +++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedFetcher.java
-@@ -75,7 +75,7 @@ public class VariationsSeedFetcher {
+@@ -80,7 +80,7 @@ public class VariationsSeedFetcher {
      }
  
      private static final String VARIATIONS_SERVER_URL =
@@ -96,7 +96,7 @@ diff --git a/components/variations/android/java/src/org/chromium/components/vari
  
      private static final int READ_TIMEOUT = 3000; // time in ms
      private static final int REQUEST_TIMEOUT = 1000; // time in ms
-@@ -271,29 +271,13 @@ public class VariationsSeedFetcher {
+@@ -337,29 +337,13 @@ public class VariationsSeedFetcher {
       */
      public void fetchSeed(String restrictMode, String milestone, String channel) {
          assert !ThreadUtils.runningOnUiThread();
@@ -130,7 +130,7 @@ diff --git a/components/variations/android/java/src/org/chromium/components/vari
      }
  
      private void recordFetchResultOrCode(int resultOrCode) {
-@@ -320,7 +304,7 @@ public class VariationsSeedFetcher {
+@@ -402,7 +386,7 @@ public class VariationsSeedFetcher {
       * @param curSeedInfo optional currently saved seed info to set the `If-None-Match` header.
       * @return the object holds the request result and seed data with its related header fields.
       */
@@ -154,7 +154,7 @@ diff --git a/components/variations/net/omnibox_http_headers.cc b/components/vari
 diff --git a/components/variations/net/variations_http_headers.cc b/components/variations/net/variations_http_headers.cc
 --- a/components/variations/net/variations_http_headers.cc
 +++ b/components/variations/net/variations_http_headers.cc
-@@ -238,6 +238,9 @@ class VariationsHeaderHelper {
+@@ -257,6 +257,9 @@ class VariationsHeaderHelper {
    VariationsHeaderHelper& operator=(const VariationsHeaderHelper&) = delete;
  
    bool AppendHeaderIfNeeded(const GURL& url, InIncognito incognito) {

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

@@ -9,7 +9,7 @@ Subject: Disable idle detection
 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
-@@ -422,7 +422,7 @@ const base::Feature kGreaseUACH{"GreaseUACH", base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -426,7 +426,7 @@ const base::Feature kGreaseUACH{"GreaseUACH", base::FEATURE_ENABLED_BY_DEFAULT};
  // 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",

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

@@ -3,15 +3,14 @@ Date: Thu, 4 Jul 2019 19:08:52 -0400
 Subject: Disable media router and remoting by default
 
 ---
- .../media/router/media_router_feature.cc      | 25 ++++++-------------
- chrome/browser/profiles/profile.cc            |  2 +-
+ .../media/router/media_router_feature.cc      | 27 ++++++-------------
  chrome/browser/profiles/profile_impl.cc       |  2 +-
- 3 files changed, 9 insertions(+), 20 deletions(-)
+ 2 files changed, 9 insertions(+), 20 deletions(-)
 
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -49,26 +49,15 @@ const base::Feature kGlobalMediaControlsCastStartStop{
+@@ -50,26 +50,15 @@ const base::Feature kGlobalMediaControlsCastStartStop{
  
  #endif  // !BUILDFLAG(IS_ANDROID)
  
@@ -44,7 +43,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
  #if !BUILDFLAG(IS_ANDROID)
    if (!base::FeatureList::IsEnabled(kMediaRouter))
      return false;
-@@ -92,7 +81,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+@@ -93,7 +82,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
      return allowed;
    }
    return true;
@@ -53,22 +52,19 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
  
  #if !BUILDFLAG(IS_ANDROID)
  void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
-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
-@@ -350,7 +350,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -106,7 +95,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+                                PrefRegistry::PUBLIC);
  
- #if !BUILDFLAG(IS_ANDROID)
    registry->RegisterBooleanPref(
 -      media_router::prefs::kMediaRouterMediaRemotingEnabled, true);
-+      media_router::prefs::kMediaRouterMediaRemotingEnabled, false);
++      media_router::prefs::kMediaRouterMediaRemotingEnabled, false); // disabled in Bromite
    registry->RegisterListPref(
        media_router::prefs::kMediaRouterTabMirroringSources);
- #endif
+ 
 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
-@@ -419,7 +419,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -417,7 +417,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

+ 1 - 1
build/patches/Disable-plugins-enumeration.patch

@@ -9,7 +9,7 @@ Subject: Disable plugins enumeration
 diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -1883,9 +1883,7 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
+@@ -1913,9 +1913,7 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
  }
  
  PluginData* LocalFrame::GetPluginData() const {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 144 - 116
build/patches/Disable-safe-browsing.patch


+ 15 - 13
build/patches/Disable-safety-check.patch

@@ -3,17 +3,17 @@ Date: Sun, 6 Mar 2022 17:39:15 +0100
 Subject: Disable safety check
 
 ---
- chrome/android/BUILD.gn                                   | 3 ---
+ chrome/android/BUILD.gn                                   | 5 -----
  chrome/android/chrome_java_sources.gni                    | 1 -
  .../browser/app/omnibox/OmniboxPedalDelegateImpl.java     | 8 --------
  .../chrome/browser/settings/SettingsActivity.java         | 6 ------
  chrome/browser/BUILD.gn                                   | 1 -
- 5 files changed, 19 deletions(-)
+ 5 files changed, 21 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -406,7 +406,6 @@ android_library("chrome_java") {
+@@ -405,7 +405,6 @@ android_library("chrome_java") {
      "//chrome/browser/privacy_sandbox/android:java",
      "//chrome/browser/profiles/android:java",
      "//chrome/browser/safe_browsing/android:java",
@@ -21,26 +21,28 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/browser/search_engines/android:java",
      "//chrome/browser/segmentation_platform:factory_java",
      "//chrome/browser/settings:java",
-@@ -1011,7 +1010,6 @@ junit_binary("chrome_junit_tests") {
+@@ -999,8 +998,6 @@ junit_binary("chrome_junit_tests") {
      "//chrome/browser/preferences:java",
      "//chrome/browser/preferences:preferences_junit_tests",
      "//chrome/browser/profiles/android:java",
 -    "//chrome/browser/safety_check/android:java",
-     "//chrome/browser/safety_check/android:junit",
+-    "//chrome/browser/safety_check/android:junit",
      "//chrome/browser/search_engines/android:java",
      "//chrome/browser/share:java",
-@@ -1398,7 +1396,6 @@ android_library("chrome_test_java") {
+     "//chrome/browser/signin/services/android:java",
+@@ -1380,8 +1377,6 @@ android_library("chrome_test_java") {
      "//chrome/browser/profiles/android:java",
      "//chrome/browser/safe_browsing/android:java",
      "//chrome/browser/safe_browsing/android:javatests",
 -    "//chrome/browser/safety_check/android:java",
-     "//chrome/browser/safety_check/android:javatests",
+-    "//chrome/browser/safety_check/android:javatests",
      "//chrome/browser/search_engines/android:java",
      "//chrome/browser/settings:java",
+     "//chrome/browser/settings:javatests",
 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
-@@ -935,7 +935,6 @@ chrome_java_sources = [
+@@ -941,7 +941,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",
@@ -51,7 +53,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl.java
-@@ -26,7 +26,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate;
+@@ -27,7 +27,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate;
  import org.chromium.chrome.browser.omnibox.suggestions.pedal.PedalSuggestionViewProperties.PedalIcon;
  import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
  import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
@@ -59,7 +61,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/Omn
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
  import org.chromium.components.browser_ui.settings.SettingsLauncher;
-@@ -72,12 +71,6 @@ public class OmniboxPedalDelegateImpl implements OmniboxPedalDelegate {
+@@ -77,12 +76,6 @@ public class OmniboxPedalDelegateImpl implements OmniboxPedalDelegate {
                      startActivity(intent);
                  }
                  break;
@@ -72,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/Omn
              case OmniboxPedalType.MANAGE_SITE_SETTINGS:
                  settingsLauncher.launchSettingsActivity(mActivity, SiteSettings.class);
                  break;
-@@ -153,7 +146,6 @@ public class OmniboxPedalDelegateImpl implements OmniboxPedalDelegate {
+@@ -158,7 +151,6 @@ public class OmniboxPedalDelegateImpl implements OmniboxPedalDelegate {
              case OmniboxPedalType.MANAGE_PASSWORDS:
              case OmniboxPedalType.UPDATE_CREDIT_CARD:
              case OmniboxPedalType.LAUNCH_INCOGNITO:
@@ -93,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
  import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings;
  import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate;
  import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
-@@ -372,9 +369,6 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -370,9 +367,6 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
              fragmentHelpAndFeedbackLauncher.setHelpAndFeedbackLauncher(
                      HelpAndFeedbackLauncherImpl.getInstance());
          }
@@ -106,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -3347,7 +3347,6 @@ static_library("browser") {
+@@ -3370,7 +3370,6 @@ static_library("browser") {
        "//chrome/browser/privacy_sandbox/android:jni_headers",
        "//chrome/browser/reading_list/android",
        "//chrome/browser/safe_browsing/android:safe_browsing_enums",

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

@@ -40,7 +40,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
-@@ -183,6 +183,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -181,6 +181,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kCCTClientDataHeader,
      &kCCTExternalLinkHandling,
      &kCCTIncognito,
@@ -48,7 +48,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCCTIncognitoAvailableToThirdParty,
      &kCCTNewDownloadTab,
      &kCCTPostMessageAPI,
-@@ -531,6 +532,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
+@@ -524,6 +525,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
  const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -72,7 +72,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
-@@ -248,6 +248,7 @@ public abstract class ChromeFeatureList {
+@@ -246,6 +246,7 @@ public abstract class ChromeFeatureList {
      public static final String CCT_NEW_DOWNLOAD_TAB = "CCTNewDownloadTab";
      public static final String CCT_POST_MESSAGE_API = "CCTPostMessageAPI";
      public static final String CCT_REDIRECT_PRECONNECT = "CCTRedirectPreconnect";
@@ -95,7 +95,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
-@@ -1817,6 +1817,21 @@
+@@ -1962,6 +1962,21 @@
              ]
          }
      ],

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

@@ -9,7 +9,7 @@ Subject: Disable some signed exchange features
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -838,7 +838,7 @@ const base::Feature kSharedArrayBufferOnDesktop{
+@@ -846,7 +846,7 @@ const base::Feature kSharedArrayBufferOnDesktop{
  // Signed Exchange Reporting for distributors
  // https://www.chromestatus.com/feature/5687904902840320
  const base::Feature kSignedExchangeReportingForDistributors{
@@ -18,7 +18,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
  
  // Subresource prefetching+loading via Signed HTTP Exchange
  // https://www.chromestatus.com/feature/5126805474246656
-@@ -848,7 +848,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
+@@ -856,7 +856,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/feature/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",

+ 1 - 1
build/patches/Disable-support-for-RAR-files-inspection.patch

@@ -11,7 +11,7 @@ Subject: Disable support for RAR files inspection
 diff --git a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
 --- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
 +++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
-@@ -97,7 +97,7 @@ void FileAnalyzer::Start(const base::FilePath& target_path,
+@@ -96,7 +96,7 @@ void FileAnalyzer::Start(const base::FilePath& target_path,
    if (inspection_type == DownloadFileType::ZIP) {
      StartExtractZipFeatures();
    } else if (inspection_type == DownloadFileType::RAR) {

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

@@ -19,7 +19,7 @@ Revert "[Text Fragment] Unflag fragment directive removal."
 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
-@@ -5514,6 +5514,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5583,6 +5583,11 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kEnableWebAuthenticationPasskeysUIExperimentDescription,
       kOsDesktop, FEATURE_VALUE_TYPE(device::kWebAuthPasskeysUIExperiment)},
  
@@ -34,9 +34,9 @@ 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
-@@ -2490,6 +2490,11 @@
-     // deep into the future to allow for experiments.
-     "expiry_milestone": 90
+@@ -2492,6 +2492,11 @@
+     "owners": [ "alionadangla", "bwwilliams", "bling-flags@google.com"],
+     "expiry_milestone": 105
    },
 +  {
 +    "name": "enable-text-fragment-anchor",
@@ -44,12 +44,12 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +    "expiry_milestone": -1
 +  },
    {
-     "name": "enable-new-download-api",
-     "owners": [ "sdefresne", "bling-flags@google.com" ],
+     "name": "enable-payment-request-basic-card",
+     "owners": [ "web-payments-team@google.com" ],
 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
-@@ -1276,6 +1276,10 @@ const char kEnableRestrictedWebApisDescription[] =
+@@ -1231,6 +1231,10 @@ const char kEnableRestrictedWebApisDescription[] =
      "Enable the restricted web APIs for dev trial. This will be replaced with "
      "permission policies to control the capabilities afterwards.";
  
@@ -63,7 +63,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
-@@ -716,6 +716,9 @@ extern const char
+@@ -687,6 +687,9 @@ extern const char
  extern const char kEnableRestrictedWebApisName[];
  extern const char kEnableRestrictedWebApisDescription[];
  
@@ -88,7 +88,7 @@ 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
-@@ -279,7 +279,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
+@@ -282,7 +282,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
       features::kSignedExchangeSubresourcePrefetch},
      {wf::EnableSkipTouchEventFilter, blink::features::kSkipTouchEventFilter},
      {wf::EnableSubresourceWebBundles, features::kSubresourceWebBundles},
@@ -100,7 +100,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 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
-@@ -462,7 +462,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
+@@ -450,7 +450,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
  
  // Enable text snippets in URL fragments. https://crbug.com/919204.
  const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
@@ -112,7 +112,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
 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
-@@ -4113,9 +4113,14 @@ void Document::SetURL(const KURL& url) {
+@@ -4164,9 +4164,14 @@ void Document::SetURL(const KURL& url) {
    TRACE_EVENT1("navigation", "Document::SetURL", "url",
                 new_url.GetString().Utf8());
  
@@ -178,7 +178,7 @@ diff --git a/third_party/blink/renderer/core/fragment_directive/text_fragment_an
 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
-@@ -2297,8 +2297,7 @@
+@@ -2290,8 +2290,7 @@
      },
      {
        name: "TextFragmentIdentifiers",

+ 1 - 1
build/patches/Disable-third-party-cookies-by-default.patch

@@ -9,7 +9,7 @@ Subject: Disable third-party cookies by default
 diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
 --- a/components/content_settings/core/browser/cookie_settings.cc
 +++ b/components/content_settings/core/browser/cookie_settings.cc
-@@ -63,7 +63,7 @@ void CookieSettings::RegisterProfilePrefs(
+@@ -64,7 +64,7 @@ void CookieSettings::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterIntegerPref(
        prefs::kCookieControlsMode,

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

@@ -59,7 +59,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
-@@ -6846,7 +6846,6 @@ void NavigationRequest::RestartBackForwardCachedNavigationImpl() {
+@@ -6965,7 +6965,6 @@ void NavigationRequest::RestartBackForwardCachedNavigationImpl() {
  void NavigationRequest::ForceEnableOriginTrials(
      const std::vector<std::string>& trials) {
    DCHECK(!HasCommitted());
@@ -70,7 +70,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
-@@ -469,10 +469,6 @@ void FillNavigationParamsRequest(
+@@ -471,10 +471,6 @@ void FillNavigationParamsRequest(
          common_params.initiator_origin.value();
    }
  
@@ -81,7 +81,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;
-@@ -505,12 +501,6 @@ void FillNavigationParamsRequest(
+@@ -507,12 +503,6 @@ void FillNavigationParamsRequest(
    navigation_params->web_bundle_claimed_url =
        commit_params.web_bundle_claimed_url;
  
@@ -94,7 +94,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) {
-@@ -557,11 +547,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
+@@ -559,11 +549,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
            info->url_request.GetURLRequestExtraData().get());
    DCHECK(url_request_extra_data);
  
@@ -106,7 +106,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(),
-@@ -579,7 +564,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
+@@ -581,7 +566,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
        info->url_request.HasUserGesture(),
        info->url_request.HasTextFragmentToken(),
        info->should_check_main_world_content_security_policy,
@@ -147,7 +147,7 @@ diff --git a/content/shell/common/shell_origin_trial_policy.cc b/content/shell/c
 diff --git a/third_party/blink/common/origin_trials/trial_token_validator.cc b/third_party/blink/common/origin_trials/trial_token_validator.cc
 --- a/third_party/blink/common/origin_trials/trial_token_validator.cc
 +++ b/third_party/blink/common/origin_trials/trial_token_validator.cc
-@@ -210,6 +210,7 @@ TrialTokenValidator::GetValidTokens(const url::Origin& origin,
+@@ -242,6 +242,7 @@ TrialTokenValidator::GetValidTokens(const url::Origin& origin,
  
  // static
  bool TrialTokenValidator::IsTrialPossibleOnOrigin(const GURL& url) {
@@ -158,7 +158,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
-@@ -151,31 +151,18 @@ Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
+@@ -158,31 +158,18 @@ Vector<OriginTrialFeature> CopyInitiatorOriginTrials(
  WebVector<int> CopyInitiatorOriginTrials(
      const Vector<OriginTrialFeature>& initiator_origin_trial_features) {
    WebVector<int> result;
@@ -190,7 +190,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
    return result;
  }
  
-@@ -2526,10 +2513,6 @@ void DocumentLoader::CreateParserPostCommit() {
+@@ -2564,10 +2551,6 @@ void DocumentLoader::CreateParserPostCommit() {
            OriginTrialFeature::kTouchEventFeatureDetection);
      }
  

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

@@ -21,9 +21,9 @@ Fix startup crash for debug builds (uazo)
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
-@@ -45,7 +45,7 @@ public abstract class FirstRunActivityBase extends AsyncInitializationActivity {
- 
-     static final String OPEN_ADVANCED_SYNC_SETTINGS = "OpenAdvancedSyncSettings";
+@@ -43,7 +43,7 @@ public abstract class FirstRunActivityBase extends AsyncInitializationActivity {
+     static final String SHOW_SEARCH_ENGINE_PAGE = "ShowSearchEnginePage";
+     static final String SHOW_SYNC_CONSENT_PAGE = "ShowSyncConsent";
  
 -    public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = true;
 +    public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = false;
@@ -108,7 +108,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
-@@ -985,7 +985,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -988,7 +988,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
@@ -120,7 +120,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
-@@ -60,7 +60,6 @@
+@@ -62,7 +62,6 @@
  #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/interstitials/enterprise_util.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
@@ -128,7 +128,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"
-@@ -4167,16 +4166,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4165,16 +4164,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -145,7 +145,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(IS_CHROMEOS_ASH)
    MaybeAddThrottle(
        ash::WebTimeLimitNavigationThrottle::MaybeCreateThrottleFor(handle),
-@@ -4269,10 +4258,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4267,10 +4256,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      throttle_manager->MaybeAppendNavigationThrottles(handle, &throttles);
    }
  
@@ -159,7 +159,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
 --- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
 +++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
-@@ -75,7 +75,7 @@ namespace internal {
+@@ -74,7 +74,7 @@ namespace internal {
  // recording and reporting are enabled. If the feature is enabled, but no
  // consent is given, then there will be no recording or reporting.
  const base::Feature kMetricsReportingFeature{"MetricsReporting",

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

@@ -9,7 +9,7 @@ Subject: Do not build API keys infobar
 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
-@@ -1244,8 +1244,6 @@ static_library("ui") {
+@@ -1257,8 +1257,6 @@ static_library("ui") {
        "singleton_tabs.h",
        "startup/automation_infobar_delegate.cc",
        "startup/automation_infobar_delegate.h",

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

@@ -9,7 +9,7 @@ Subject: Do not hide component extensions
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
-@@ -469,9 +469,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
+@@ -457,9 +457,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
  }
  
  bool Extension::ShouldExposeViaManagementAPI() const {

+ 1 - 1
build/patches/Do-not-link-with-libatomic.patch

@@ -11,7 +11,7 @@ This patch allows building with use_sysroot=false
 diff --git a/base/BUILD.gn b/base/BUILD.gn
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
-@@ -1494,7 +1494,7 @@ mixed_component("base") {
+@@ -1488,7 +1488,7 @@ mixed_component("base") {
    if (!use_sysroot &&
        (is_android || ((is_linux || is_chromeos) && !is_chromecast)) &&
        host_toolchain != "//build/toolchain/cros:host") {

+ 1 - 1
build/patches/Do-not-store-passwords-by-default.patch

@@ -9,7 +9,7 @@ Subject: Do not store passwords by default
 diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
 --- a/components/password_manager/core/browser/password_manager.cc
 +++ b/components/password_manager/core/browser/password_manager.cc
-@@ -204,10 +204,10 @@ bool HasMutedCredentials(base::span<const InsecureCredential> credentials,
+@@ -210,10 +210,10 @@ bool HasMutedCredentials(const std::vector<const PasswordForm*>& credentials,
  void PasswordManager::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

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

@@ -80,7 +80,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
-@@ -3137,6 +3137,7 @@ void HostResolverManager::SetDnsConfigOverrides(DnsConfigOverrides overrides) {
+@@ -3317,6 +3317,7 @@ void HostResolverManager::SetDnsConfigOverrides(DnsConfigOverrides overrides) {
    bool changed = dns_client_->SetConfigOverrides(std::move(overrides));
  
    if (changed) {

+ 14 - 14
build/patches/Enable-Certificate-Transparency.patch

@@ -22,8 +22,8 @@ Disable CT reporting
 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
-@@ -8131,6 +8131,11 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kWebBluetoothBondOnDemandDescription, kOsWin | kOsLinux,
+@@ -8164,6 +8164,11 @@ const FeatureEntry kFeatureEntries[] = {
+      kOsWin | kOsLinux | kOsLacros,
       FEATURE_VALUE_TYPE(features::kWebBluetoothBondOnDemand)},
  
 +    {"certificate-transparency-enabled",
@@ -51,7 +51,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature
 diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.cc b/chrome/browser/component_updater/pki_metadata_component_installer.cc
 --- a/chrome/browser/component_updater/pki_metadata_component_installer.cc
 +++ b/chrome/browser/component_updater/pki_metadata_component_installer.cc
-@@ -59,7 +59,8 @@ const char kGoogleOperatorName[] = "Google";
+@@ -61,7 +61,8 @@ const char kGoogleOperatorName[] = "Google";
  // The extension id is: efniojlnjndmcbiieegkicadnoecjjef
  const uint8_t kPKIMetadataPublicKeySHA256[32] = {
      0x45, 0xd8, 0xe9, 0xbd, 0x9d, 0x3c, 0x21, 0x88, 0x44, 0x6a, 0x82,
@@ -64,7 +64,7 @@ diff --git a/chrome/browser/component_updater/pki_metadata_component_installer.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
-@@ -5944,6 +5944,10 @@ const char kUIDebugToolsDescription[] =
+@@ -5917,6 +5917,10 @@ const char kUIDebugToolsDescription[] =
      "Enables additional keyboard shortcuts to help debugging.";
  #endif
  
@@ -78,7 +78,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
-@@ -3455,6 +3455,9 @@ extern const char kUIDebugToolsName[];
+@@ -3436,6 +3436,9 @@ extern const char kUIDebugToolsName[];
  extern const char kUIDebugToolsDescription[];
  #endif
  
@@ -91,7 +91,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
-@@ -889,7 +889,6 @@ void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
+@@ -885,7 +885,6 @@ void SystemNetworkContextManager::SetEnableCertificateTransparencyForTesting(
  bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
    if (certificate_transparency_enabled_for_testing_.has_value())
      return certificate_transparency_enabled_for_testing_.value();
@@ -99,7 +99,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.
-@@ -903,9 +902,6 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
+@@ -899,9 +898,6 @@ bool SystemNetworkContextManager::IsCertificateTransparencyEnabled() {
  #else
    return true;
  #endif
@@ -125,7 +125,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
-@@ -881,7 +881,7 @@ const base::Feature kSchedulerConfiguration{"SchedulerConfiguration",
+@@ -887,7 +887,7 @@ const base::Feature kSchedulerConfiguration{"SchedulerConfiguration",
  // should be sampled. Default sampling rate is 1/10,000 certificates.
  #if BUILDFLAG(IS_ANDROID)
  const base::Feature kSCTAuditing{"SCTAuditing",
@@ -195,7 +195,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
-@@ -2558,7 +2558,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -2624,7 +2624,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
    // TransportSecurityState.  Since no requests have been made yet, safe to do
    // this even after the call to Build().
  
@@ -204,8 +204,8 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
      net::NetworkTrafficAnnotationTag traffic_annotation =
          net::DefineNetworkTrafficAnnotation("domain_security_policy", R"(
          semantics {
-@@ -2605,7 +2605,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
- #endif  // BUILDFLAG(IS_ANDROID)
+@@ -2666,7 +2666,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+   }
  
  #if BUILDFLAG(IS_CT_SUPPORTED)
 -  if (params_->enable_expect_ct_reporting) {
@@ -213,7 +213,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
      LazyCreateExpectCTReporter(result.url_request_context.get());
      result.url_request_context->transport_security_state()->SetExpectCTReporter(
          expect_ct_reporter_.get());
-@@ -2617,9 +2617,13 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
+@@ -2678,9 +2678,13 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
      result.url_request_context->transport_security_state()
          ->SetRequireCTDelegate(require_ct_delegate_.get());
    }
@@ -243,7 +243,7 @@ diff --git a/services/network/public/cpp/features.gni b/services/network/public/
 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
-@@ -106,6 +106,9 @@ void SCTAuditingHandler::MaybeEnqueueReport(
+@@ -105,6 +105,9 @@ void SCTAuditingHandler::MaybeEnqueueReport(
      const net::X509Certificate* validated_certificate_chain,
      const net::SignedCertificateTimestampAndStatusList&
          signed_certificate_timestamps) {
@@ -253,7 +253,7 @@ diff --git a/services/network/sct_auditing/sct_auditing_handler.cc b/services/ne
    if (mode_ == mojom::SCTAuditingMode::kDisabled) {
      return;
    }
-@@ -297,6 +300,9 @@ void SCTAuditingHandler::AddReporter(
+@@ -294,6 +297,9 @@ void SCTAuditingHandler::AddReporter(
      absl::optional<SCTAuditingReporter::SCTHashdanceMetadata> sct_metadata,
      std::unique_ptr<net::BackoffEntry> backoff_entry) {
    DCHECK(foreground_runner_->RunsTasksInCurrentSequence());

+ 1 - 1
build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture-by-default.patch → build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch

@@ -1,6 +1,6 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Tue, 25 May 2021 19:33:41 +0200
-Subject: Enable IntentBlockExternalFormRedirectsNoGesture by default
+Subject: Enable IntentBlockExternalFormRedirectsNoGesture
 
 ---
  .../external_intents/android/external_intents_features.cc       | 2 +-

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

@@ -10,7 +10,7 @@ Subject: Enable SPPI for devices with enough memory
 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
-@@ -938,11 +938,7 @@ const base::Feature kShow10_10ObsoleteInfobar{
+@@ -937,11 +937,7 @@ const base::Feature kSharesheetCopyToClipboard{
  // 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

@@ -15,7 +15,7 @@ SitePerProcess: always consider enterprise policies applicable.
 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
-@@ -3863,9 +3863,6 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4016,9 +4016,6 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kSiteIsolationForPasswordSitesDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(
           site_isolation::features::kSiteIsolationForPasswordSites)},
@@ -28,7 +28,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
-@@ -1295,7 +1295,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1301,7 +1301,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
    registry->RegisterFilePathPref(prefs::kDiskCacheDir, base::FilePath());
    registry->RegisterIntegerPref(prefs::kDiskCacheSize, 0);
    registry->RegisterStringPref(prefs::kIsolateOrigins, std::string());
@@ -37,7 +37,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);
  }
-@@ -1309,7 +1309,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
+@@ -1315,7 +1315,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());
@@ -68,7 +68,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
-@@ -949,7 +949,7 @@ const base::Feature kStorageServiceOutOfProcess{
+@@ -953,7 +953,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

@@ -11,7 +11,7 @@ Unexpire #darken-websites-checkbox-in-themes-setting
 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
-@@ -1080,9 +1080,9 @@
+@@ -1091,9 +1091,9 @@
      "expiry_milestone": 110
    },
    {

+ 1 - 1
build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch

@@ -42,7 +42,7 @@ Excerpt from https://github.com/bromite/bromite/issues/226
 diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -350,6 +350,10 @@ config("compiler") {
+@@ -345,6 +345,10 @@ config("compiler") {
        }
      }
  

+ 41 - 41
build/patches/Enable-native-Android-autofill.patch

@@ -38,7 +38,7 @@ See also: https://github.com/bromite/bromite/issues/547
 diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw_contents.cc
 --- a/android_webview/browser/aw_contents.cc
 +++ b/android_webview/browser/aw_contents.cc
-@@ -336,6 +336,7 @@ void AwContents::InitAutofillIfNecessary(bool autocomplete_enabled) {
+@@ -335,6 +335,7 @@ void AwContents::InitAutofillIfNecessary(bool autocomplete_enabled) {
        autofill::AutofillProvider::is_download_manager_disabled_for_testing()
            ? autofill::AutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER
            : autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER,
@@ -50,7 +50,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 @@ -459,6 +459,7 @@ android_library("chrome_java") {
-     "//components/autofill/android:prefeditor_autofill_java",
+     "//components/autofill_assistant/android:public_dependencies_java",
      "//components/autofill_assistant/android:public_java",
      "//components/autofill_assistant/browser:proto_java",
 +    "//components/android_autofill/browser:java",
@@ -60,7 +60,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
-@@ -54,13 +54,18 @@ import java.lang.annotation.Retention;
+@@ -55,13 +55,18 @@ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.Locale;
  
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
      @IntDef({TrustedVaultBannerState.NOT_SHOWN, TrustedVaultBannerState.OFFER_OPT_IN,
              TrustedVaultBannerState.OPTED_IN})
      @Retention(RetentionPolicy.SOURCE)
-@@ -87,6 +92,12 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -88,6 +93,12 @@ public class PasswordSettings extends PreferenceFragmentCompat
      public static final String PREF_TRUSTED_VAULT_BANNER = "trusted_vault_banner";
      public static final String PREF_KEY_MANAGE_ACCOUNT_LINK = "manage_account_link";
  
@@ -93,7 +93,7 @@ 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";
-@@ -116,6 +127,8 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -117,6 +128,8 @@ public class PasswordSettings extends PreferenceFragmentCompat
      private String mSearchQuery;
      private Preference mLinkPref;
      private ChromeSwitchPreference mSavePasswordsSwitch;
@@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
      private ChromeSwitchPreference mAutoSignInSwitch;
      private ChromeBasePreference mCheckPasswords;
      private ChromeBasePreference mTrustedVaultBanner;
-@@ -287,6 +300,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -288,6 +301,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
          }
  
          createSavePasswordsSwitch();
@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
          createAutoSignInCheckbox();
          if (mPasswordCheck != null) {
              createCheckPasswords();
-@@ -522,6 +536,71 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -525,6 +539,71 @@ public class PasswordSettings extends PreferenceFragmentCompat
                  getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE));
      }
  
@@ -279,9 +279,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndroidDelegate.java
-@@ -19,6 +19,10 @@ import org.chromium.ui.base.DropDataContentProvider;
- import org.chromium.ui.base.ViewAndroidDelegate;
- import org.chromium.ui.base.WindowAndroid;
+@@ -19,6 +19,10 @@ import org.chromium.ui.base.WindowAndroid;
+ import org.chromium.ui.dragdrop.DragStateTracker;
+ import org.chromium.ui.dragdrop.DropDataContentProvider;
  
 +import android.util.SparseArray;
 +import android.view.autofill.AutofillValue;
@@ -291,7 +291,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndr
   * Implementation of the abstract class {@link ViewAndroidDelegate} for Chrome.
   */
 @@ -149,4 +153,14 @@ public class TabViewAndroidDelegate extends ViewAndroidDelegate {
-             getContentView().removeOnDragListener(getDragStateTrackerInternal());
+             getContentView().removeOnDragListener(getDragStateTracker());
          }
      }
 +
@@ -308,9 +308,9 @@ 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
-@@ -2401,6 +2401,14 @@ static_library("browser") {
-     "//ui/webui/resources/cr_components/most_visited:mojom",
-     "//ui/webui/resources/js/browser_command:mojo_bindings",
+@@ -2410,6 +2410,14 @@ static_library("browser") {
+     "//ui/web_dialogs",
+     "//ui/webui",
    ]
 +
 +  if (is_android) {
@@ -326,7 +326,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
-@@ -66,6 +66,13 @@
+@@ -67,6 +67,13 @@
  #include "url/android/gurl_android.h"
  #include "url/gurl.h"
  
@@ -340,7 +340,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;
-@@ -444,3 +451,23 @@ static void JNI_TabImpl_Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
+@@ -447,3 +454,23 @@ 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);
  }
@@ -392,7 +392,7 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom
 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
-@@ -586,6 +586,12 @@ CHAR_LIMIT guidelines:
+@@ -590,6 +590,12 @@ CHAR_LIMIT guidelines:
        <message name="IDS_PASSWORD_SETTINGS_SAVE_PASSWORDS" desc="Title for the checkbox toggling whether passwords are saved or not. [CHAR_LIMIT=32]">
          Save passwords
        </message>
@@ -408,7 +408,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
-@@ -155,6 +155,9 @@
+@@ -164,6 +164,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"
@@ -418,7 +418,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"
-@@ -293,7 +296,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -314,7 +317,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
        web_contents,
        autofill::ChromeAutofillClient::FromWebContents(web_contents),
        g_browser_process->GetApplicationLocale(),
@@ -427,7 +427,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 +      /*enable_browser_autofill_manager*/ true,
 +      base::BindRepeating(&autofill::AndroidAutofillManager::Create));
 +
-   if (BreadcrumbsStatus::IsEnabled())
+   if (breadcrumbs::IsEnabled())
      BreadcrumbManagerTabHelper::CreateForWebContents(web_contents);
    chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents);
 diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
@@ -455,7 +455,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
    }
    if (client && ShouldEnableHeavyFormDataScraping(client->GetChannel())) {
      GetAutofillAgent()->EnableHeavyFormDataScraping();
-@@ -343,6 +346,8 @@ void ContentAutofillDriver::FormsSeenImpl(
+@@ -338,6 +341,8 @@ void ContentAutofillDriver::FormsSeenImpl(
      const std::vector<FormData>& updated_forms,
      const std::vector<FormGlobalId>& removed_forms) {
    autofill_manager_->OnFormsSeen(updated_forms, removed_forms);
@@ -464,7 +464,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::SetFormToBeProbablySubmittedImpl(
-@@ -365,6 +370,8 @@ void ContentAutofillDriver::FormSubmittedImpl(const FormData& form,
+@@ -360,6 +365,8 @@ void ContentAutofillDriver::FormSubmittedImpl(const FormData& form,
    }
  
    autofill_manager_->OnFormSubmitted(form, known_success, source);
@@ -473,7 +473,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::TextFieldDidChangeImpl(
-@@ -373,6 +380,8 @@ void ContentAutofillDriver::TextFieldDidChangeImpl(
+@@ -368,6 +375,8 @@ void ContentAutofillDriver::TextFieldDidChangeImpl(
      const gfx::RectF& bounding_box,
      base::TimeTicks timestamp) {
    autofill_manager_->OnTextFieldDidChange(form, field, bounding_box, timestamp);
@@ -482,7 +482,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::TextFieldDidScrollImpl(
-@@ -380,6 +389,8 @@ void ContentAutofillDriver::TextFieldDidScrollImpl(
+@@ -375,6 +384,8 @@ void ContentAutofillDriver::TextFieldDidScrollImpl(
      const FormFieldData& field,
      const gfx::RectF& bounding_box) {
    autofill_manager_->OnTextFieldDidScroll(form, field, bounding_box);
@@ -491,7 +491,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::SelectControlDidChangeImpl(
-@@ -387,6 +398,8 @@ void ContentAutofillDriver::SelectControlDidChangeImpl(
+@@ -382,6 +393,8 @@ void ContentAutofillDriver::SelectControlDidChangeImpl(
      const FormFieldData& field,
      const gfx::RectF& bounding_box) {
    autofill_manager_->OnSelectControlDidChange(form, field, bounding_box);
@@ -500,7 +500,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::AskForValuesToFillImpl(
-@@ -397,15 +410,22 @@ void ContentAutofillDriver::AskForValuesToFillImpl(
+@@ -392,15 +405,22 @@ void ContentAutofillDriver::AskForValuesToFillImpl(
      bool autoselect_first_suggestion) {
    autofill_manager_->OnAskForValuesToFill(id, form, field, bounding_box,
                                            autoselect_first_suggestion);
@@ -523,7 +523,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::FocusOnFormFieldImpl(
-@@ -413,25 +433,35 @@ void ContentAutofillDriver::FocusOnFormFieldImpl(
+@@ -408,25 +428,35 @@ void ContentAutofillDriver::FocusOnFormFieldImpl(
      const FormFieldData& field,
      const gfx::RectF& bounding_box) {
    autofill_manager_->OnFocusOnFormField(form, field, bounding_box);
@@ -559,7 +559,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co
  }
  
  void ContentAutofillDriver::FillFormForAssistantImpl(
-@@ -652,13 +682,21 @@ void ContentAutofillDriver::DidNavigateFrame(
+@@ -647,13 +677,21 @@ void ContentAutofillDriver::DidNavigateFrame(
    if (autofill_router_)  // Can be nullptr only in tests.
      autofill_router_->UnregisterDriver(this);
    autofill_manager_->Reset();
@@ -655,7 +655,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory
  
  ContentAutofillDriverFactory::~ContentAutofillDriverFactory() = default;
  
-@@ -111,7 +114,7 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame(
+@@ -118,7 +121,7 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame(
      if (render_frame_host->IsRenderFrameCreated()) {
        driver = std::make_unique<ContentAutofillDriver>(
            render_frame_host, client(), app_locale_, &router_,
@@ -695,7 +695,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
-@@ -784,7 +784,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
+@@ -795,7 +795,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
  
  void PasswordAutofillAgent::TrackAutofilledElement(
      const blink::WebFormControlElement& element) {
@@ -765,18 +765,18 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
              @Nullable EventOffsetHandler eventOffsetHandler, @Nullable WebContents webContents) {
 +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
 +            return new ContentViewWithAutofill(context, eventOffsetHandler, webContents);
-         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-             return new ContentViewApi23(context, eventOffsetHandler, webContents);
-         }
-@@ -585,4 +592,43 @@ public class ContentView extends FrameLayout
-             if (wcax != null) wcax.onProvideVirtualStructure(structure, false);
-         }
+         return new ContentView(context, eventOffsetHandler, webContents);
+     }
+ 
+@@ -573,4 +580,43 @@ public class ContentView extends FrameLayout
+     private boolean webContentsAttached() {
+         return hasValidWebContents() && mWebContents.getTopLevelNativeWindow() != null;
      }
 +
 +    /**
 +    * API level 26 implementation that includes autofill.
 +    */
-+    public static class ContentViewWithAutofill extends ContentViewApi23 {
++    public static class ContentViewWithAutofill extends ContentView {
 +        private ViewAndroidDelegate viewAndroidDelegate;
 +
 +        private ContentViewWithAutofill(Context context, EventOffsetHandler eventOffsetHandler, WebContents webContents) {
@@ -815,8 +815,8 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
 diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java b/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
 --- a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
 +++ b/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
-@@ -27,6 +27,10 @@ import org.chromium.base.annotations.JNINamespace;
- import org.chromium.base.compat.ApiHelperForN;
+@@ -31,6 +31,10 @@ import org.chromium.ui.dragdrop.DragStateTracker;
+ import org.chromium.ui.dragdrop.DropDataAndroid;
  import org.chromium.ui.mojom.CursorType;
  
 +import android.util.SparseArray;
@@ -826,7 +826,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java b
  /**
   * Class to acquire, position, and remove anchor views from the implementing View.
   */
-@@ -526,4 +530,8 @@ public class ViewAndroidDelegate {
+@@ -523,4 +527,8 @@ public class ViewAndroidDelegate {
      public static void setDragAndDropDelegateForTest(DragAndDropDelegate testDelegate) {
          sDragAndDropTestDelegate = testDelegate;
      }
@@ -838,7 +838,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java b
 diff --git a/weblayer/browser/tab_impl.cc b/weblayer/browser/tab_impl.cc
 --- a/weblayer/browser/tab_impl.cc
 +++ b/weblayer/browser/tab_impl.cc
-@@ -1400,7 +1400,8 @@ void TabImpl::InitializeAutofillDriver() {
+@@ -1401,7 +1401,8 @@ void TabImpl::InitializeAutofillDriver() {
    autofill::ContentAutofillDriverFactory::CreateForWebContentsAndDelegate(
        web_contents, AutofillClientImpl::FromWebContents(web_contents),
        i18n::GetApplicationLocale(), enable_autofill_download_manager,

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

@@ -13,7 +13,7 @@ PartitionNelAndReportingByNetworkIsolationKey
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -102,14 +102,14 @@ const base::Feature kSplitCacheByIncludeCredentials{
+@@ -122,14 +122,14 @@ const base::Feature kSplitCacheByIncludeCredentials{
      "SplitCacheByIncludeCredentials", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kSplitCacheByNetworkIsolationKey{
@@ -31,7 +31,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc
  
  const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
      "ForceIsolationInfoFrameOriginToTopLevelFrame",
-@@ -117,19 +117,19 @@ const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
+@@ -137,19 +137,19 @@ const base::Feature kForceIsolationInfoFrameOriginToTopLevelFrame{
  
  const base::Feature kPartitionHttpServerPropertiesByNetworkIsolationKey{
      "PartitionHttpServerPropertiesByNetworkIsolationKey",

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

@@ -9,7 +9,7 @@ Subject: Enable prefetch-privacy-changes by default
 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
-@@ -491,7 +491,7 @@ const base::Feature kComputePressure{"ComputePressure",
+@@ -485,7 +485,7 @@ const base::Feature kComputePressure{"ComputePressure",
  // Prefetch request properties are updated to be privacy-preserving. See
  // crbug.com/988956.
  const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges",

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

@@ -27,7 +27,7 @@ See also: https://github.com/bromite/bromite/issues/1062
 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
-@@ -622,6 +622,7 @@ chrome_java_resources = [
+@@ -609,6 +609,7 @@ chrome_java_resources = [
    "java/res/layout/share_sheet_content.xml",
    "java/res/layout/share_sheet_item.xml",
    "java/res/layout/sharing_device_picker.xml",
@@ -38,7 +38,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
-@@ -959,6 +959,7 @@ chrome_java_sources = [
+@@ -965,6 +965,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java",
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMetrics.java",
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java",
@@ -49,7 +49,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
-@@ -805,6 +805,24 @@ by a child template that "extends" this file.
+@@ -801,6 +801,24 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -308,8 +308,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
-@@ -5992,6 +5992,10 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(share::kSharingDesktopScreenshotsEdit)},
+@@ -6060,6 +6060,10 @@ const FeatureEntry kFeatureEntries[] = {
+                                     "DesktopSharePreview")},
  #endif
  
 +    {"shared-intent-ui", flag_descriptions::kSharedIntentUIName,
@@ -322,7 +322,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
-@@ -2435,6 +2435,11 @@ const char kIsolateOriginsDescription[] =
+@@ -2372,6 +2372,11 @@ const char kIsolateOriginsDescription[] =
      "Requires dedicated processes for an additional set of origins, "
      "specified as a comma-separated list.";
  
@@ -337,7 +337,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
-@@ -1395,6 +1395,9 @@ extern const char kIsolateOriginsDescription[];
+@@ -1350,6 +1350,9 @@ extern const char kIsolateOriginsDescription[];
  
  extern const char kIsolationByDefaultName[];
  extern const char kIsolationByDefaultDescription[];
@@ -350,7 +350,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
-@@ -267,6 +267,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -261,6 +261,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kRelatedSearchesAlternateUx,
      &kRelatedSearchesInBar,
      &kRelatedSearchesSimplifiedUx,
@@ -358,7 +358,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kRelatedSearchesUi,
      &kSearchEnginePromoExistingDevice,
      &kSearchEnginePromoExistingDeviceV2,
-@@ -696,6 +697,9 @@ const base::Feature kSearchEnginePromoNewDevice{
+@@ -680,6 +681,9 @@ const base::Feature kSearchEnginePromoNewDevice{
  const base::Feature kSearchEnginePromoNewDeviceV2{
      "SearchEnginePromo.NewDeviceVer2", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -371,7 +371,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
-@@ -135,6 +135,7 @@ extern const base::Feature kSearchEnginePromoExistingDeviceV2;
+@@ -129,6 +129,7 @@ extern const base::Feature kSearchEnginePromoExistingDeviceV2;
  extern const base::Feature kSearchEnginePromoNewDevice;
  extern const base::Feature kSearchEnginePromoNewDeviceV2;
  extern const base::Feature kServiceManagerForBackgroundPrefetch;
@@ -382,7 +382,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
-@@ -483,6 +483,7 @@ public abstract class ChromeFeatureList {
+@@ -481,6 +481,7 @@ public abstract class ChromeFeatureList {
      public static final String SERVICE_MANAGER_FOR_DOWNLOAD = "ServiceManagerForDownload";
      public static final String SHARE_BUTTON_IN_TOP_TOOLBAR = "ShareButtonInTopToolbar";
      public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI";
@@ -393,7 +393,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
-@@ -4662,6 +4662,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4672,6 +4672,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Send text to Your Devices
        </message>
  

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

@@ -9,7 +9,7 @@ Subject: Enable user-agent freeze by default
 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
-@@ -102,7 +102,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
+@@ -103,7 +103,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
  
  // Freezes the user-agent as part of https://github.com/WICG/ua-client-hints.
  const base::Feature kReduceUserAgent{"ReduceUserAgent",

+ 42 - 42
build/patches/Experimental-user-scripts-support.patch

@@ -228,8 +228,8 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 @@ -269,6 +269,10 @@ android_resources("chrome_app_java_resources") {
+     "//third_party/androidx:androidx_gridlayout_gridlayout_java",
      "//third_party/androidx:androidx_preference_preference_java",
-     "//third_party/androidx:androidx_recyclerview_recyclerview_java",
    ]
 +
 +  # this need to be into android_resources("chrome_app_java_resources") section because
@@ -272,7 +272,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
  
  import java.io.File;
  
-@@ -420,6 +421,11 @@ public class DownloadUtils {
+@@ -417,6 +418,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) {
@@ -324,7 +324,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
-@@ -3490,6 +3490,11 @@ static_library("browser") {
+@@ -3515,6 +3515,11 @@ static_library("browser") {
        ]
        deps += [ "//chrome/android/modules/dev_ui/provider:native" ]
      }
@@ -339,7 +339,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
-@@ -149,6 +149,7 @@
+@@ -147,6 +147,7 @@
  #include "components/translate/core/browser/translate_ranker_impl.h"
  #include "components/translate/core/common/translate_util.h"
  #include "components/ui_devtools/switches.h"
@@ -347,8 +347,8 @@ 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"
-@@ -6902,6 +6903,10 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(chromeos::features::kClipboardHistoryScreenshotNudge)},
+@@ -6932,6 +6933,10 @@ const FeatureEntry kFeatureEntries[] = {
+          chromeos::features::kClipboardHistoryNudgeSessionReset)},
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
 +    {"enable-userscripts-log", flag_descriptions::kEnableLoggingUserScriptsName,
@@ -374,7 +374,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
-@@ -5784,6 +5784,11 @@ const char kQuickCommandsDescription[] =
+@@ -5739,6 +5739,11 @@ const char kQuickCommandsDescription[] =
  #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
          // BUILDFLAG(IS_FUCHSIA)
  
@@ -389,7 +389,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
-@@ -3342,6 +3342,9 @@ extern const char kQuickCommandsDescription[];
+@@ -3310,6 +3310,9 @@ extern const char kQuickCommandsDescription[];
  #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
          // defined (OS_FUCHSIA)
  
@@ -402,7 +402,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -238,6 +238,7 @@
+@@ -241,6 +241,7 @@
  #include "components/ntp_tiles/popular_sites_impl.h"
  #include "components/permissions/contexts/geolocation_permission_context_android.h"
  #include "components/query_tiles/tile_service_prefs.h"
@@ -410,7 +410,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #else  // BUILDFLAG(IS_ANDROID)
  #include "chrome/browser/cart/cart_service.h"
  #include "chrome/browser/device_api/device_service_impl.h"
-@@ -1269,6 +1270,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1304,6 +1305,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    translate::TranslatePrefs::RegisterProfilePrefs(registry);
    omnibox::RegisterProfilePrefs(registry);
    ZeroSuggestProvider::RegisterProfilePrefs(registry);
@@ -432,7 +432,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
-@@ -236,6 +236,8 @@
+@@ -238,6 +238,8 @@
  #include "chrome/browser/ui/cocoa/screentime/screentime_features.h"
  #endif
  
@@ -441,7 +441,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
  namespace chrome {
  
  void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
-@@ -558,6 +560,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -567,6 +569,7 @@ void ChromeBrowserMainExtraPartsProfiles::
  #endif
    WebDataServiceFactory::GetInstance();
    webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance();
@@ -452,7 +452,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
 --- a/chrome/browser/profiles/profile_manager.cc
 +++ b/chrome/browser/profiles/profile_manager.cc
-@@ -113,6 +113,8 @@
+@@ -115,6 +115,8 @@
  #include "extensions/common/manifest.h"
  #endif
  
@@ -461,7 +461,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"
-@@ -1653,6 +1655,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
+@@ -1664,6 +1666,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
    }
  
  #endif
@@ -484,10 +484,10 @@ diff --git a/chrome/browser/profiles/renderer_updater.cc b/chrome/browser/profil
  
 +#include "components/user_scripts/browser/user_script_prefs.h"
 +
- namespace {
- 
- #if BUILDFLAG(ENABLE_EXTENSIONS)
-@@ -106,6 +108,7 @@ RendererUpdater::RendererUpdater(Profile* profile)
+ RendererUpdater::RendererUpdater(Profile* profile)
+     : profile_(profile),
+       is_off_the_record_(profile_->IsOffTheRecord()),
+@@ -51,6 +53,7 @@ RendererUpdater::RendererUpdater(Profile* profile)
    force_google_safesearch_.Init(prefs::kForceGoogleSafeSearch, pref_service);
    force_youtube_restrict_.Init(prefs::kForceYouTubeRestrict, pref_service);
    allowed_domains_for_apps_.Init(prefs::kAllowedDomainsForApps, pref_service);
@@ -495,18 +495,18 @@ diff --git a/chrome/browser/profiles/renderer_updater.cc b/chrome/browser/profil
  
    pref_change_registrar_.Init(pref_service);
    pref_change_registrar_.Add(
-@@ -120,6 +123,10 @@ RendererUpdater::RendererUpdater(Profile* profile)
+@@ -65,6 +68,10 @@ RendererUpdater::RendererUpdater(Profile* profile)
        prefs::kAllowedDomainsForApps,
        base::BindRepeating(&RendererUpdater::UpdateAllRenderers,
-                           base::Unretained(this), kUpdateDynamicParams));
+                           base::Unretained(this)));
 +  pref_change_registrar_.Add(
 +      user_scripts::prefs::kUserScriptsEnabled,
 +      base::BindRepeating(&RendererUpdater::UpdateAllRenderers,
-+                          base::Unretained(this), kUpdateDynamicParams));
++                          base::Unretained(this)));
  }
  
  RendererUpdater::~RendererUpdater() {
-@@ -301,5 +308,6 @@ chrome::mojom::DynamicParamsPtr RendererUpdater::CreateRendererDynamicParams()
+@@ -188,5 +195,6 @@ chrome::mojom::DynamicParamsPtr RendererUpdater::CreateRendererDynamicParams()
      const {
    return chrome::mojom::DynamicParams::New(
        force_google_safesearch_.GetValue(), force_youtube_restrict_.GetValue(),
@@ -517,7 +517,7 @@ diff --git a/chrome/browser/profiles/renderer_updater.cc b/chrome/browser/profil
 diff --git a/chrome/browser/profiles/renderer_updater.h b/chrome/browser/profiles/renderer_updater.h
 --- a/chrome/browser/profiles/renderer_updater.h
 +++ b/chrome/browser/profiles/renderer_updater.h
-@@ -108,6 +108,7 @@ class RendererUpdater : public KeyedService,
+@@ -93,6 +93,7 @@ class RendererUpdater : public KeyedService,
  
    // Prefs that we sync to the renderers.
    BooleanPrefMember force_google_safesearch_;
@@ -528,7 +528,7 @@ diff --git a/chrome/browser/profiles/renderer_updater.h b/chrome/browser/profile
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -91,6 +91,7 @@
+@@ -93,6 +93,7 @@
  #include "components/security_interstitials/content/urls.h"
  #include "components/signin/public/base/signin_buildflags.h"
  #include "components/site_engagement/content/site_engagement_service.h"
@@ -536,7 +536,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"
-@@ -799,6 +800,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -816,6 +817,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<UserActionsUI>;
    if (url.host_piece() == chrome::kChromeUIVersionHost)
      return &NewWebUI<VersionUI>;
@@ -549,14 +549,14 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
 --- a/chrome/chrome_paks.gni
 +++ b/chrome/chrome_paks.gni
 @@ -110,6 +110,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",
-       "$root_gen_dir/ui/resources/webui_generated_resources.pak",
-       "$root_gen_dir/ui/resources/webui_resources.pak",
 +      "$root_gen_dir/chrome/userscripts_browser_resources.pak",
+       "$root_gen_dir/ui/resources/webui_generated_resources.pak",
      ]
      deps = [
-       "//base/tracing/protos:chrome_track_event_resources",
-@@ -129,6 +130,7 @@ template("chrome_extra_paks") {
+@@ -130,6 +131,7 @@ template("chrome_extra_paks") {
        "//third_party/blink/public:devtools_inspector_resources",
        "//third_party/blink/public:resources",
        "//ui/resources",
@@ -578,7 +578,7 @@ diff --git a/chrome/common/renderer_configuration.mojom b/chrome/common/renderer
 diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn
 --- a/chrome/renderer/BUILD.gn
 +++ b/chrome/renderer/BUILD.gn
-@@ -140,6 +140,7 @@ static_library("renderer") {
+@@ -141,6 +141,7 @@ static_library("renderer") {
      "//components/feed:feature_list",
      "//components/feed/content/renderer:feed_renderer",
      "//components/history_clusters/core",
@@ -589,7 +589,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn
 diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
 --- a/chrome/renderer/chrome_content_renderer_client.cc
 +++ b/chrome/renderer/chrome_content_renderer_client.cc
-@@ -239,6 +239,9 @@
+@@ -242,6 +242,9 @@
  #include "chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.h"
  #endif
  
@@ -599,7 +599,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  using autofill::AutofillAgent;
  using autofill::PasswordAutofillAgent;
  using autofill::PasswordGenerationAgent;
-@@ -411,6 +414,12 @@ void ChromeContentRendererClient::RenderThreadStarted() {
+@@ -414,6 +417,12 @@ void ChromeContentRendererClient::RenderThreadStarted() {
        WebString::FromASCII(extensions::kExtensionScheme));
  #endif
  
@@ -612,7 +612,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_SPELLCHECK)
    if (!spellcheck_)
      InitSpellCheck();
-@@ -542,6 +551,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
+@@ -543,6 +552,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
        render_frame, registry);
  #endif
  
@@ -626,7 +626,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_PLUGINS)
    new PepperHelper(render_frame);
  #endif
-@@ -1522,7 +1538,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
+@@ -1531,7 +1547,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentStart(
        render_frame);
    // |render_frame| might be dead by now.
@@ -641,7 +641,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
-@@ -1531,7 +1554,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
+@@ -1540,7 +1563,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentEnd(
        render_frame);
    // |render_frame| might be dead by now.
@@ -656,7 +656,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
-@@ -1540,7 +1570,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
+@@ -1549,7 +1579,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentIdle(
        render_frame);
    // |render_frame| might be dead by now.
@@ -674,27 +674,27 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
 diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/chrome_render_thread_observer.cc
 --- a/chrome/renderer/chrome_render_thread_observer.cc
 +++ b/chrome/renderer/chrome_render_thread_observer.cc
-@@ -58,6 +58,8 @@
+@@ -57,6 +57,8 @@
  #include "third_party/blink/public/web/web_security_policy.h"
  #include "third_party/blink/public/web/web_view.h"
  
 +#include "components/user_scripts/renderer/user_scripts_renderer_client.h"
 +
  #if BUILDFLAG(ENABLE_EXTENSIONS)
- #include "chrome/renderer/extensions/extension_localization_peer.h"
+ #include "extensions/renderer/localization_peer.h"
  #endif
-@@ -255,6 +257,7 @@ void ChromeRenderThreadObserver::SetInitialConfiguration(
+@@ -254,6 +256,7 @@ void ChromeRenderThreadObserver::SetInitialConfiguration(
  void ChromeRenderThreadObserver::SetConfiguration(
      chrome::mojom::DynamicParamsPtr params) {
    *GetDynamicConfigParams() = std::move(*params);
 +  user_scripts::UserScriptsRendererClient::GetInstance()->ConfigurationUpdated();
  }
  
- void ChromeRenderThreadObserver::SetContentSettingRules(
+ void ChromeRenderThreadObserver::OnRendererConfigurationAssociatedRequest(
 diff --git a/components/components_strings.grd b/components/components_strings.grd
 --- a/components/components_strings.grd
 +++ b/components/components_strings.grd
-@@ -333,6 +333,7 @@
+@@ -335,6 +335,7 @@
        <part file="undo_strings.grdp" />
        <part file="version_ui_strings.grdp" />
        <part file="webapps_strings.grdp" />
@@ -10628,7 +10628,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
-@@ -645,6 +645,12 @@
+@@ -649,6 +649,12 @@
    "components/autofill/core/browser/autofill_address_rewriter_resources.grd":{
      "includes": [3720]
    },

+ 1 - 1
build/patches/Hardening-against-incognito-mode-detection.patch

@@ -9,7 +9,7 @@ Subject: Hardening against incognito mode detection
 diff --git a/storage/browser/quota/quota_settings.cc b/storage/browser/quota/quota_settings.cc
 --- a/storage/browser/quota/quota_settings.cc
 +++ b/storage/browser/quota/quota_settings.cc
-@@ -29,7 +29,7 @@ const int64_t kMBytes = 1024 * 1024;
+@@ -28,7 +28,7 @@ const int64_t kMBytes = 1024 * 1024;
  const int kRandomizedPercentage = 10;
  const double kDefaultPerHostRatio = 0.75;
  const double kIncognitoQuotaRatioLowerBound = 0.15;

+ 3 - 3
build/patches/Hide-passwords-manager-link.patch

@@ -10,7 +10,7 @@ Hide leak check menu entry (csagan5)
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
-@@ -186,7 +186,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -187,7 +187,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
@@ -19,7 +19,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
          computeTrustedVaultBannerState();
      }
  
-@@ -338,7 +338,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -339,7 +339,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
              return;
          }
  
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
  
          PreferenceGroup passwordParent;
          if (mSearchQuery == null) {
-@@ -418,7 +418,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
+@@ -419,7 +419,7 @@ public class PasswordSettings extends PreferenceFragmentCompat
              return;
          }
  

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

@@ -202,7 +202,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
-@@ -41,6 +41,7 @@ java_cpp_strings("java_pref_names_srcjar") {
+@@ -42,6 +42,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",
@@ -213,7 +213,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
-@@ -373,6 +373,7 @@ std::unique_ptr<Profile> Profile::CreateProfile(const base::FilePath& path,
+@@ -371,6 +371,7 @@ std::unique_ptr<Profile> Profile::CreateProfile(const base::FilePath& path,
  void ProfileImpl::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled, false);
@@ -224,7 +224,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
-@@ -1055,6 +1055,18 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1059,6 +1059,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>
@@ -354,7 +354,7 @@ diff --git a/components/history/core/browser/expire_history_backend.h b/componen
 diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
 --- a/components/history/core/browser/history_backend.cc
 +++ b/components/history/core/browser/history_backend.cc
-@@ -972,6 +972,20 @@ void HistoryBackend::InitImpl(
+@@ -973,6 +973,20 @@ void HistoryBackend::InitImpl(
    LOCAL_HISTOGRAM_TIMES("History.InitTime", TimeTicks::Now() - beginning_time);
  }
  
@@ -378,19 +378,19 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his
 diff --git a/components/history/core/browser/history_backend.h b/components/history/core/browser/history_backend.h
 --- a/components/history/core/browser/history_backend.h
 +++ b/components/history/core/browser/history_backend.h
-@@ -219,6 +219,8 @@ class HistoryBackend : public base::RefCountedThreadSafe<HistoryBackend>,
+@@ -220,6 +220,8 @@ class HistoryBackend : public base::RefCountedThreadSafe<HistoryBackend>,
    void Init(bool force_fail,
              const HistoryDatabaseParams& history_database_params);
  
 +  void SetExpireDaysThreshold(int days);
 +
    // Notification that the history system is shutting down. This will break
-   // the refs owned by the delegate and any pending transaction so it will
+   // the refs owned by the delegate and any pending transaction, so it will
    // actually be deleted.
 diff --git a/components/history/core/browser/history_service.cc b/components/history/core/browser/history_service.cc
 --- a/components/history/core/browser/history_service.cc
 +++ b/components/history/core/browser/history_service.cc
-@@ -36,6 +36,9 @@
+@@ -35,6 +35,9 @@
  #include "base/time/time.h"
  #include "base/trace_event/trace_event.h"
  #include "build/build_config.h"
@@ -400,7 +400,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"
-@@ -1064,6 +1067,9 @@ void HistoryService::Cleanup() {
+@@ -1065,6 +1068,9 @@ void HistoryService::Cleanup() {
      return;
    }
  
@@ -410,7 +410,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his
    NotifyHistoryServiceBeingDeleted();
  
    weak_ptr_factory_.InvalidateWeakPtrs();
-@@ -1128,6 +1134,33 @@ bool HistoryService::Init(
+@@ -1129,6 +1135,33 @@ bool HistoryService::Init(
    return true;
  }
  

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

@@ -21,7 +21,7 @@ Send a random key press to circumvent idle status detection
 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
-@@ -170,6 +170,8 @@ blink_core_sources_dom = [
+@@ -171,6 +171,8 @@ blink_core_sources_dom = [
    "has_invalidation_flags.h",
    "icon_url.cc",
    "icon_url.h",
@@ -33,7 +33,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
-@@ -276,6 +276,7 @@
+@@ -282,6 +282,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"
@@ -41,7 +41,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"
-@@ -344,6 +345,8 @@
+@@ -350,6 +351,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h"
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  
@@ -50,7 +50,7 @@ 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();
-@@ -6600,6 +6603,64 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
+@@ -6645,6 +6648,64 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
        val ? AllowState::kAllow : AllowState::kDeny;
  }
  
@@ -115,7 +115,7 @@ 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);
-@@ -6657,6 +6718,10 @@ void Document::FinishedParsing() {
+@@ -6701,6 +6762,10 @@ void Document::FinishedParsing() {
      if (frame->IsMainFrame() && ShouldMarkFontPerformance())
        FontPerformance::MarkDomContentLoaded();
  
@@ -129,7 +129,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -1888,6 +1888,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1915,6 +1915,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  
@@ -164,7 +164,7 @@ new file mode 100644
 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
 --- a/third_party/blink/renderer/core/html/html_script_element.cc
 +++ b/third_party/blink/renderer/core/html/html_script_element.cc
-@@ -183,6 +183,11 @@ void HTMLScriptElement::setTextContent(const String& string) {
+@@ -185,6 +185,11 @@ void HTMLScriptElement::setTextContent(const String& string) {
    script_text_internal_slot_ = ParkableString(string.Impl());
  }
  

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

@@ -396,7 +396,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
 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
-@@ -603,7 +603,7 @@ void ContentSettingsRegistry::Init() {
+@@ -613,7 +613,7 @@ void ContentSettingsRegistry::Init() {
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
  
    Register(ContentSettingsType::JAVASCRIPT_JIT, "javascript-jit",
@@ -428,7 +428,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
-@@ -120,6 +120,7 @@ ContentSettingsType kPermissionType[] = {
+@@ -122,6 +122,7 @@ ContentSettingsType kPermissionType[] = {
      ContentSettingsType::VR,
      ContentSettingsType::AR,
      ContentSettingsType::IDLE_DETECTION,
@@ -436,7 +436,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
-@@ -153,6 +154,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -155,6 +156,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
        return true;
    }
  

+ 2 - 2
build/patches/Keep-empty-tabs-between-sessions.patch

@@ -10,7 +10,7 @@ Subject: Keep empty tabs between sessions
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
-@@ -802,19 +802,6 @@ public class TabPersistentStore {
+@@ -797,19 +797,6 @@ public class TabPersistentStore {
                  mTabsToMigrate.add(tab);
              }
          } else {
@@ -33,7 +33,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
 diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
 --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
 +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
-@@ -551,9 +551,6 @@ public class CriticalPersistedTabData extends PersistedTabData {
+@@ -564,9 +564,6 @@ public class CriticalPersistedTabData extends PersistedTabData {
          if (getUrl() == null || getUrl().isEmpty()) {
              return false;
          }

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

@@ -13,7 +13,7 @@ See also:
 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
-@@ -3745,9 +3745,9 @@
+@@ -3603,9 +3603,9 @@
      "expiry_milestone": 105
    },
    {

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

@@ -155,7 +155,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
-@@ -622,6 +622,7 @@ static_library("ui") {
+@@ -632,6 +632,7 @@ static_library("ui") {
      "//third_party/re2",
      "//third_party/webrtc_overrides:webrtc_component",
      "//third_party/zlib",
@@ -791,7 +791,7 @@ diff --git a/components/minidump_uploader/android/java/src/org/chromium/componen
 diff --git a/components/upload_list/text_log_upload_list.cc b/components/upload_list/text_log_upload_list.cc
 --- a/components/upload_list/text_log_upload_list.cc
 +++ b/components/upload_list/text_log_upload_list.cc
-@@ -109,6 +109,7 @@ std::unique_ptr<TextLogUploadList::UploadInfo> TryParseCsvLogEntry(
+@@ -110,6 +110,7 @@ std::unique_ptr<TextLogUploadList::UploadInfo> TryParseCsvLogEntry(
    }
    auto info = std::make_unique<TextLogUploadList::UploadInfo>(components[1],
                                                                upload_time);

+ 148 - 24
build/patches/Modify-default-preferences.patch

@@ -3,17 +3,47 @@ Date: Sat, 2 May 2020 00:25:25 +0200
 Subject: Modify default preferences
 
 ---
- chrome/browser/background/background_mode_manager.cc        | 2 +-
- chrome/browser/chrome_content_browser_client.cc             | 2 +-
- chrome/browser/prefetch/prefetch_prefs.h                    | 2 +-
- chrome/browser/profiles/profile.cc                          | 2 +-
- .../resources/settings/reset_page/reset_profile_dialog.html | 2 +-
- chrome/browser/ui/browser_ui_prefs.cc                       | 6 +++---
- components/bookmarks/browser/bookmark_utils.cc              | 2 +-
- components/bookmarks/browser/features.cc                    | 2 +-
- components/safe_browsing/core/common/safe_browsing_prefs.cc | 4 ++--
- 9 files changed, 12 insertions(+), 12 deletions(-)
+ chrome/browser/about_flags.cc                  |  6 ++++++
+ .../background/background_mode_manager.cc      |  2 +-
+ .../browser/chrome_content_browser_client.cc   |  2 +-
+ chrome/browser/flag_descriptions.cc            |  4 ++++
+ chrome/browser/flag_descriptions.h             |  3 +++
+ chrome/browser/prefetch/prefetch_prefs.h       |  2 +-
+ chrome/browser/profiles/profile.cc             |  2 +-
+ .../reset_page/reset_profile_dialog.html       |  2 +-
+ chrome/browser/ui/browser_ui_prefs.cc          |  6 +++---
+ components/bookmarks/browser/BUILD.gn          |  2 ++
+ components/bookmarks/browser/bookmark_utils.cc |  8 ++++++--
+ components/bookmarks/browser/features.cc       | 16 ++++++++++++++++
+ components/bookmarks/browser/features.h        | 18 ++++++++++++++++++
+ .../core/common/safe_browsing_prefs.cc         |  4 ++--
+ 14 files changed, 65 insertions(+), 12 deletions(-)
+ create mode 100644 components/bookmarks/browser/features.cc
+ create mode 100644 components/bookmarks/browser/features.h
 
+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
+@@ -73,6 +73,7 @@
+ #include "components/autofill/core/common/autofill_switches.h"
+ #include "components/autofill/core/common/autofill_util.h"
+ #include "components/autofill_assistant/browser/features.h"
++#include "components/bookmarks/browser/features.h"
+ #include "components/browser_sync/browser_sync_switches.h"
+ #include "components/browsing_data/core/features.h"
+ #include "components/certificate_transparency/ct_features.h"
+@@ -5317,6 +5318,11 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(chrome::android::kBookmarkBottomSheet)},
+ #endif
+ 
++    {"apps-shortcut-default-off",
++     flag_descriptions::kAppsShortcutDefaultOffName,
++     flag_descriptions::kAppsShortcutDefaultOffDescription, kOsDesktop,
++     FEATURE_VALUE_TYPE(bookmarks::features::kAppsShortcutDefaultOff)},
++
+     {"tab-groups-new-badge-promo",
+      flag_descriptions::kTabGroupsNewBadgePromoName,
+      flag_descriptions::kTabGroupsNewBadgePromoDescription, kOsDesktop,
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
@@ -29,7 +59,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
-@@ -1315,7 +1315,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1321,7 +1321,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -38,6 +68,33 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    // Register user prefs for mapping SitePerProcess and IsolateOrigins in
    // user policy in addition to the same named ones in Local State (which are
    // used for mapping the command-line flags).
+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
+@@ -2480,6 +2480,10 @@ const char kTabToGTSAnimationAndroidDescription[] =
+     "Allows users to see an animation when entering or leaving the "
+     "Grid Tab Switcher on phones.";
+ 
++const char kAppsShortcutDefaultOffName[] = "Apps Shortcut Default Off";
++const char kAppsShortcutDefaultOffDescription[] =
++    "Changes the apps shortcut on the bookmarks bar to default to off.";
++
+ const char kTabGroupsNewBadgePromoName[] = "Tab Groups 'New' Badge Promo";
+ const char kTabGroupsNewBadgePromoDescription[] =
+     "Causes a 'New' badge to appear on the entry point for creating a tab "
+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
+@@ -1400,6 +1400,9 @@ extern const char kTabGroupsUiImprovementsAndroidDescription[];
+ extern const char kTabToGTSAnimationAndroidName[];
+ extern const char kTabToGTSAnimationAndroidDescription[];
+ 
++extern const char kAppsShortcutDefaultOffName[];
++extern const char kAppsShortcutDefaultOffDescription[];
++
+ extern const char kTabGroupsNewBadgePromoName[];
+ extern const char kTabGroupsNewBadgePromoDescription[];
+ 
 diff --git a/chrome/browser/prefetch/prefetch_prefs.h b/chrome/browser/prefetch/prefetch_prefs.h
 --- a/chrome/browser/prefetch/prefetch_prefs.h
 +++ b/chrome/browser/prefetch/prefetch_prefs.h
@@ -53,7 +110,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
-@@ -276,7 +276,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -278,7 +278,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -92,30 +149,97 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
    registry->RegisterDictionaryPref(prefs::kAppWindowPlacement);
+diff --git a/components/bookmarks/browser/BUILD.gn b/components/bookmarks/browser/BUILD.gn
+--- a/components/bookmarks/browser/BUILD.gn
++++ b/components/bookmarks/browser/BUILD.gn
+@@ -21,6 +21,7 @@ static_library("browser") {
+     "bookmark_undo_delegate.h",
+     "bookmark_undo_provider.h",
+     "bookmark_utils.h",
++    "features.h",
+     "history_bookmark_model.h",
+     "model_loader.h",
+     "scoped_group_bookmark_actions.h",
+@@ -43,6 +44,7 @@ static_library("browser") {
+     "bookmark_node_data.cc",
+     "bookmark_storage.cc",
+     "bookmark_utils.cc",
++    "features.cc",
+     "model_loader.cc",
+     "scoped_group_bookmark_actions.cc",
+     "titled_url_index.cc",
 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
-@@ -438,7 +438,7 @@ bool DoesBookmarkContainWords(const std::u16string& title,
+@@ -24,6 +24,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_pref_names.h"
+ #include "components/pref_registry/pref_registry_syncable.h"
+@@ -436,11 +437,14 @@ bool DoesBookmarkContainWords(const std::u16string& title,
+ 
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
-       prefs::kShowBookmarkBar,
--      false,
+-      prefs::kShowBookmarkBar, false,
++      prefs::kShowBookmarkBar,
 +      true,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(prefs::kEditBookmarksEnabled, true);
    registry->RegisterBooleanPref(
+-      prefs::kShowAppsShortcutInBookmarkBar, false,
++      prefs::kShowAppsShortcutInBookmarkBar,
++      base::FeatureList::IsEnabled(features::kAppsShortcutDefaultOff) ? false
++                                                                      : true,
+       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+   registry->RegisterBooleanPref(
+       prefs::kShowManagedBookmarksInBookmarkBar, true,
 diff --git a/components/bookmarks/browser/features.cc b/components/bookmarks/browser/features.cc
---- a/components/bookmarks/browser/features.cc
+new file mode 100644
+--- /dev/null
 +++ b/components/bookmarks/browser/features.cc
-@@ -10,7 +10,7 @@ namespace features {
- // Changes the apps shortcut on the bookmarks bar to default to off.
- // https://crbug.com/1236793
- const base::Feature kAppsShortcutDefaultOff{"AppsShortcutDefaultOff",
--                                            base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -0,0 +1,16 @@
++// Copyright 2021 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.
++
++#include "components/bookmarks/browser/features.h"
++
++namespace bookmarks {
++namespace features {
++
++// Changes the apps shortcut on the bookmarks bar to default to off.
++// https://crbug.com/1236793
++const base::Feature kAppsShortcutDefaultOff{"AppsShortcutDefaultOff",
 +                                            base::FEATURE_ENABLED_BY_DEFAULT};
- 
- }  // namespace features
- }  // namespace bookmarks
++
++}  // namespace features
++}  // namespace bookmarks
+diff --git a/components/bookmarks/browser/features.h b/components/bookmarks/browser/features.h
+new file mode 100644
+--- /dev/null
++++ b/components/bookmarks/browser/features.h
+@@ -0,0 +1,18 @@
++// Copyright 2021 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.
++
++#ifndef COMPONENTS_BOOKMARKS_BROWSER_FEATURES_H_
++#define COMPONENTS_BOOKMARKS_BROWSER_FEATURES_H_
++
++#include "base/feature_list.h"
++
++namespace bookmarks {
++namespace features {
++
++extern const base::Feature kAppsShortcutDefaultOff;
++
++}  // namespace features
++}  // namespace bookmarks
++
++#endif  // COMPONENTS_BOOKMARKS_BROWSER_FEATURES_H_
 diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc
 --- a/components/safe_browsing/core/common/safe_browsing_prefs.cc
 +++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc

+ 67 - 67
build/patches/Move-navigation-bar-to-bottom.patch

@@ -130,7 +130,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont
 diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
 --- a/cc/trees/layer_tree_host_impl.cc
 +++ b/cc/trees/layer_tree_host_impl.cc
-@@ -4258,6 +4258,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
+@@ -4246,6 +4246,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) {
    if (scroll_delta.IsZero())
      return false;
  
@@ -143,7 +143,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
 diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
 +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
-@@ -44,6 +44,7 @@ import org.chromium.components.feature_engagement.FeatureConstants;
+@@ -45,6 +45,7 @@ import org.chromium.components.feature_engagement.FeatureConstants;
  import org.chromium.ui.modelutil.PropertyModel;
  import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
  import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
@@ -151,7 +151,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
  
  import java.util.List;
  
-@@ -126,7 +127,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T
+@@ -127,7 +128,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T
       */
      @Override
      public void initializeWithNative(Activity activity,
@@ -161,7 +161,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
          if (UmaSessionStats.isMetricsServiceAvailable()) {
              UmaSessionStats.registerSyntheticFieldTrial(
                      ChromeFeatureList.TAB_GROUPS_ANDROID + SYNTHETIC_TRIAL_POSTFIX,
-@@ -162,7 +164,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T
+@@ -163,7 +165,8 @@ public class TabGroupUiCoordinator implements TabGroupUiMediator.ResetHandler, T
          mMediator = new TabGroupUiMediator(mActivity, visibilityController, this, mModel,
                  mTabModelSelector, mTabCreatorManager, mOverviewModeBehaviorSupplier,
                  mIncognitoStateProvider, dialogController, mActivityLifecycleDispatcher,
@@ -538,7 +538,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
-@@ -776,6 +776,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -775,6 +775,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          ImageView shadowImage = findViewById(R.id.toolbar_shadow);
          if (shadowImage == null) return;
  
@@ -556,7 +556,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/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
-@@ -99,6 +99,7 @@ public class ChromeCachedFlags {
+@@ -98,6 +98,7 @@ public class ChromeCachedFlags {
                  add(ChromeFeatureList.INSTANT_START);
                  add(ChromeFeatureList.INSTANCE_SWITCHER);
                  add(ChromeFeatureList.INTEREST_FEED_V2);
@@ -576,7 +576,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
  
  import java.util.ArrayList;
  import java.util.HashSet;
-@@ -295,6 +297,10 @@ public class CompositorViewHolder extends FrameLayout
+@@ -296,6 +298,10 @@ public class CompositorViewHolder extends FrameLayout
                          WebContents webContents = mTabVisible.getWebContents();
                          if (webContents == null) return;
                          EventForwarder forwarder = webContents.getEventForwarder();
@@ -590,7 +590,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java
-@@ -23,6 +23,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer;
+@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer;
  import org.chromium.chrome.features.start_surface.StartSurface;
  import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
  import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
@@ -598,12 +598,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
  
  /**
   * {@link LayoutManagerChromeTablet} is the specialization of {@link LayoutManagerChrome} for
-@@ -59,7 +60,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
+@@ -61,7 +62,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome {
                  jankTracker, startSurfaceScrimAnchor, scrimCoordinator);
  
-         mTabStripLayoutHelperManager = new StripLayoutHelperManager(
--                host.getContext(), this, mHost.getLayoutRenderHost(), () -> mLayerTitleCache);
-+                host.getContext(), this, mHost.getLayoutRenderHost(), () -> mLayerTitleCache,
+         mTabStripLayoutHelperManager = new StripLayoutHelperManager(host.getContext(), this,
+-                mHost.getLayoutRenderHost(), () -> mLayerTitleCache, lifecycleDispatcher);
++                mHost.getLayoutRenderHost(), () -> mLayerTitleCache, lifecycleDispatcher,
 +                /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager());
          addSceneOverlay(mTabStripLayoutHelperManager);
  
@@ -650,7 +650,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
-@@ -333,7 +333,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate
+@@ -340,7 +340,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate
          // position 0 is on the left. Account for that in the offset calculation.
          boolean isRtl = LocalizationUtils.isLayoutRtl();
          boolean useUnadjustedScrollOffset = isRtl != isLeft;
@@ -662,8 +662,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
-@@ -50,6 +50,9 @@ import org.chromium.components.browser_ui.widget.animation.Interpolators;
- import org.chromium.ui.base.LocalizationUtils;
+@@ -55,6 +55,9 @@ import org.chromium.ui.base.LocalizationUtils;
+ import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.resources.ResourceManager;
  import org.chromium.url.GURL;
 +import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
@@ -672,7 +672,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
  
  import java.util.List;
  
-@@ -110,9 +113,13 @@ public class StripLayoutHelperManager implements SceneOverlay {
+@@ -118,9 +121,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
      private final String mDefaultTitle;
      private final Supplier<LayerTitleCache> mLayerTitleCacheSupplier;
  
@@ -686,7 +686,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
              if (mModelSelectorButton.onDown(x, y)) return;
              if (mStripScrim.isVisible()) return;
              getActiveStripLayoutHelper().onDown(time(), x, y, fromMouse, buttons);
-@@ -132,6 +139,7 @@ public class StripLayoutHelperManager implements SceneOverlay {
+@@ -140,6 +147,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
  
          @Override
          public void drag(float x, float y, float dx, float dy, float tx, float ty) {
@@ -694,7 +694,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
              mModelSelectorButton.drag(x, y);
              if (mStripScrim.isVisible()) return;
              getActiveStripLayoutHelper().drag(time(), x, y, dx, dy, tx, ty);
-@@ -139,6 +147,7 @@ public class StripLayoutHelperManager implements SceneOverlay {
+@@ -147,6 +155,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
  
          @Override
          public void click(float x, float y, boolean fromMouse, int buttons) {
@@ -702,7 +702,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
              long time = time();
              if (mModelSelectorButton.click(x, y)) {
                  mModelSelectorButton.handleClick(time);
-@@ -150,13 +159,13 @@ public class StripLayoutHelperManager implements SceneOverlay {
+@@ -158,13 +167,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
  
          @Override
          public void fling(float x, float y, float velocityX, float velocityY) {
@@ -718,26 +718,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
              getActiveStripLayoutHelper().onLongPress(time(), x, y);
          }
  
-@@ -225,7 +234,8 @@ public class StripLayoutHelperManager implements SceneOverlay {
-      * @param layerTitleCacheSupplier A supplier of the cache that holds the title textures.
+@@ -243,7 +252,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
       */
      public StripLayoutHelperManager(Context context, LayoutUpdateHost updateHost,
--            LayoutRenderHost renderHost, Supplier<LayerTitleCache> layerTitleCacheSupplier) {
-+            LayoutRenderHost renderHost, Supplier<LayerTitleCache> layerTitleCacheSupplier,
+             LayoutRenderHost renderHost, Supplier<LayerTitleCache> layerTitleCacheSupplier,
+-            ActivityLifecycleDispatcher lifecycleDispatcher) {
++            ActivityLifecycleDispatcher lifecycleDispatcher,
 +            Supplier<BrowserControlsManager> browserControlsManagerSupplier) {
          mUpdateHost = updateHost;
          mLayerTitleCacheSupplier = layerTitleCacheSupplier;
          mTabStripTreeProvider = new TabStripSceneLayer(context);
-@@ -237,6 +247,8 @@ public class StripLayoutHelperManager implements SceneOverlay {
- 
-         mNormalHelper = new StripLayoutHelper(context, updateHost, renderHost, false);
-         mIncognitoHelper = new StripLayoutHelper(context, updateHost, renderHost, true);
+@@ -285,6 +295,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
+                 new StripLayoutHelper(context, updateHost, renderHost, false, mModelSelectorButton);
+         mIncognitoHelper =
+                 new StripLayoutHelper(context, updateHost, renderHost, true, mModelSelectorButton);
 +        mBrowserControlsManagerSupplier = browserControlsManagerSupplier;
 +        mDpToPx = context.getResources().getDisplayMetrics().density;
  
-         CompositorOnClickHandler selectorClickHandler = new CompositorOnClickHandler() {
-             @Override
-@@ -319,9 +331,13 @@ public class StripLayoutHelperManager implements SceneOverlay {
+         onContextChanged(context);
+     }
+@@ -354,9 +366,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
          Tab selectedTab = mTabModelSelector.getCurrentModel().getTabAt(
                  mTabModelSelector.getCurrentModel().index());
          int selectedTabId = selectedTab == null ? TabModel.INVALID_TAB_INDEX : selectedTab.getId();
@@ -752,7 +752,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
          return mTabStripTreeProvider;
      }
  
-@@ -354,7 +370,17 @@ public class StripLayoutHelperManager implements SceneOverlay {
+@@ -389,7 +405,17 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa
          mNormalHelper.onSizeChanged(mWidth, mHeight);
          mIncognitoHelper.onSizeChanged(mWidth, mHeight);
  
@@ -989,7 +989,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
-@@ -95,6 +95,8 @@ import org.chromium.content_public.browser.NavigationEntry;
+@@ -94,6 +94,8 @@ import org.chromium.content_public.browser.NavigationEntry;
  import org.chromium.ui.base.DeviceFormFactor;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.ui.mojom.WindowOpenDisposition;
@@ -998,7 +998,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
  
  import java.util.List;
  
-@@ -546,10 +548,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
+@@ -543,10 +545,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
          // + topControlsDistanceToRest| will give the margin for the current animation frame.
          final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset()
                  - mBrowserControlsStateProvider.getTopControlsHeight();
@@ -1016,7 +1016,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
  
          if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) {
              layoutParams.topMargin = topMargin;
-@@ -572,7 +579,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
+@@ -569,7 +576,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
       *         strip.
       */
      private int getToolbarExtraYOffset() {
@@ -1096,7 +1096,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
-@@ -67,6 +67,11 @@ import org.chromium.ui.base.WindowDelegate;
+@@ -68,6 +68,11 @@ import org.chromium.ui.base.WindowDelegate;
  import org.chromium.ui.modaldialog.ModalDialogManager;
  import org.chromium.url.GURL;
  
@@ -1108,7 +1108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
  import java.lang.ref.WeakReference;
  
  /** Queries the user's default search engine and shows autocomplete suggestions. */
-@@ -178,6 +183,11 @@ public class SearchActivity extends AsyncInitializationActivity
+@@ -179,6 +184,11 @@ public class SearchActivity extends AsyncInitializationActivity
          mSearchBox = (SearchActivityLocationBarLayout) mContentView.findViewById(
                  R.id.search_location_bar);
          View anchorView = mContentView.findViewById(R.id.toolbar);
@@ -1120,7 +1120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
          OverrideUrlLoadingDelegate overrideUrlLoadingDelegate =
                  (String url, @PageTransition int transition, String postDataType, byte[] postData,
                          boolean incognito) -> {
-@@ -185,7 +195,7 @@ public class SearchActivity extends AsyncInitializationActivity
+@@ -186,7 +196,7 @@ public class SearchActivity extends AsyncInitializationActivity
              return true;
          };
          // clang-format off
@@ -1132,7 +1132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/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
-@@ -256,6 +256,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -254,6 +254,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
          if (fragment instanceof INeedSnackbarManager) {
              ((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager);
          }
@@ -1198,7 +1198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
-@@ -172,6 +172,9 @@ import org.chromium.url.GURL;
+@@ -173,6 +173,9 @@ import org.chromium.url.GURL;
  
  import java.util.List;
  
@@ -1208,7 +1208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
  /**
   * Contains logic for managing the toolbar visual component.  This class manages the interactions
   * with the rest of the application to ensure the toolbar is always visually up to date.
-@@ -605,7 +608,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
+@@ -609,7 +612,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
              };
              // clang-format off
              LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator(
@@ -1217,7 +1217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
                      PrivacyPreferencesManagerImpl.getInstance(), mLocationBarModel,
                      mActionModeController.getActionModeCallback(),
                      new WindowDelegate(mActivity.getWindow()), windowAndroid, mActivityTabProvider,
-@@ -849,11 +852,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
+@@ -856,11 +859,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
                  // the height won't be measured by the background image.
                  if (mControlContainer.getBackground() == null) {
                      setControlContainerTopMargin(getToolbarExtraYOffset());
@@ -1231,7 +1231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
                              mControlContainer.removeOnLayoutChangeListener(mLayoutChangeListener);
                              mLayoutChangeListener = null;
                          }
-@@ -1245,13 +1250,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
+@@ -1256,13 +1261,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
          return mLocationBar.getOmniboxStub().isUrlBarFocused();
      }
  
@@ -1259,7 +1259,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
                  mScrimCoordinator, mOmniboxFocusStateSupplier, mBottomSheetController,
                  mActivityLifecycleDispatcher, mIsWarmOnResumeSupplier, mTabModelSelector,
                  mTabContentManager, mCompositorViewHolder,
-@@ -1260,8 +1277,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
+@@ -1271,8 +1288,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
          mBottomControlsCoordinatorSupplier.set(
                  new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager,
                          mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer,
@@ -1271,7 +1271,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
      }
  
      /**
-@@ -1985,6 +2003,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
+@@ -2007,6 +2025,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
      private void setControlContainerTopMargin(int margin) {
          final ViewGroup.MarginLayoutParams layoutParams =
                  ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams());
@@ -1330,7 +1330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContai
 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
-@@ -6588,6 +6588,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6625,6 +6625,11 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kImpulseScrollAnimationsDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kImpulseScrollAnimations)},
  
@@ -1431,7 +1431,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom
 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
-@@ -1577,6 +1577,10 @@ const char kImpulseScrollAnimationsDescription[] =
+@@ -1516,6 +1516,10 @@ const char kImpulseScrollAnimationsDescription[] =
      "Replaces the default scroll animation with Impulse-style scroll "
      "animations.";
  
@@ -1445,7 +1445,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
-@@ -900,6 +900,9 @@ extern const char kCompositorThreadedScrollbarScrollingDescription[];
+@@ -861,6 +861,9 @@ extern const char kCompositorThreadedScrollbarScrollingDescription[];
  extern const char kImpulseScrollAnimationsName[];
  extern const char kImpulseScrollAnimationsDescription[];
  
@@ -1498,9 +1498,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
  #include "base/metrics/field_trial_params.h"
  #include "chrome/browser/browser_features.h"
  #include "chrome/browser/feature_guide/notifications/feature_notification_guide_service.h"
-@@ -250,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
-     &kKitKatSupported,
+@@ -246,6 +247,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kLensCameraAssistedSearch,
+     &kLensOnQuickActionSearchWidget,
      &kLocationBarModelOptimizations,
 +    &features::kMoveTopToolbarToBottom,
      &kNewWindowAppMenu,
@@ -1509,7 +1509,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
-@@ -106,6 +106,7 @@ public class CachedFeatureFlags {
+@@ -104,6 +104,7 @@ public class CachedFeatureFlags {
                      .put(ChromeFeatureList.GRID_TAB_SWITCHER_FOR_TABLETS, false)
                      .put(ChromeFeatureList.TAB_GROUPS_FOR_TABLETS, false)
                      .put(ChromeFeatureList.TAB_STRIP_IMPROVEMENTS, false)
@@ -1517,7 +1517,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
                      .build();
  
      /**
-@@ -204,6 +205,23 @@ public class CachedFeatureFlags {
+@@ -202,6 +203,23 @@ public class CachedFeatureFlags {
          SharedPreferencesManager.getInstance().writeBoolean(preferenceName, isEnabledInNative);
      }
  
@@ -1541,7 +1541,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      /**
       * Forces a feature to be enabled or disabled for testing.
       *
-@@ -497,6 +515,7 @@ public class CachedFeatureFlags {
+@@ -495,6 +513,7 @@ public class CachedFeatureFlags {
  
      @NativeMethods
      interface Natives {
@@ -1552,9 +1552,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 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
-@@ -408,6 +408,8 @@ public abstract class ChromeFeatureList {
-     public static final String MOBILE_IDENTITY_CONSISTENCY_PROMOS =
-             "MobileIdentityConsistencyPromos";
+@@ -405,6 +405,8 @@ public abstract class ChromeFeatureList {
+     public static final String MESSAGES_FOR_ANDROID_SYNC_ERROR = "MessagesForAndroidSyncError";
+     public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox";
      public static final String MODAL_PERMISSION_DIALOG_VIEW = "ModalPermissionDialogView";
 +    public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
 +            "MoveTopToolbarToBottom";
@@ -1656,16 +1656,16 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
      private LocationBarMediator mLocationBarMediator;
      private View mUrlBar;
      private View mDeleteButton;
-@@ -140,7 +141,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
-      *         MerchantTrustSignalsCoordinator}. Can be null if a store icon shouldn't be shown,
+@@ -141,7 +142,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
       *         such as when called from a search activity.
+      * @param reportExceptionCallback A {@link Callback} to report exceptions.
       */
 -    public LocationBarCoordinator(View locationBarLayout, View autocompleteAnchorView,
 +    public LocationBarCoordinator(View locationBarLayout, View autocompleteAnchorView, View containerView,
              ObservableSupplier<Profile> profileObservableSupplier,
              PrivacyPreferencesManager privacyPreferencesManager,
              LocationBarDataProvider locationBarDataProvider, ActionMode.Callback actionModeCallback,
-@@ -170,6 +171,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
+@@ -172,6 +173,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
          mActivityLifecycleDispatcher = activityLifecycleDispatcher;
          mActivityLifecycleDispatcher.register(this);
          mAutocompleteAnchorView = autocompleteAnchorView;
@@ -1673,7 +1673,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
  
          mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar);
          // TODO(crbug.com/1151513): Inject LocaleManager instance to LocationBarCoordinator instead
-@@ -369,6 +371,11 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
+@@ -378,6 +380,11 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
          return mAutocompleteAnchorView;
      }
  
@@ -1698,7 +1698,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
  /**
   * Coordinates the interactions with the UrlBar text component.
   */
-@@ -210,7 +213,13 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc
+@@ -217,7 +220,13 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc
          // to show or hide keyboard anyway. This may happen when we schedule keyboard hide, and
          // receive a second request to hide the keyboard instantly.
          if (showKeyboard) {
@@ -1780,7 +1780,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.List;
-@@ -935,7 +938,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener,
+@@ -936,7 +939,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener,
      public void onSuggestionDropdownScroll() {
          if (mDropdownViewInfoListBuilder.hasFullyConcealedElements()) {
              mSuggestionsListScrolled = true;
@@ -1869,7 +1869,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
-@@ -1396,6 +1396,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1400,6 +1400,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
          Force Tablet Mode
        </message>
@@ -2317,13 +2317,13 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/
  #include "cc/layers/layer.h"
  #include "cc/layers/surface_layer.h"
 @@ -461,6 +462,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation(
-   // factor. Thus, |top_content_offset| in CSS pixels is also in DIPs.
-   float top_content_offset =
-       metadata.top_controls_height * metadata.top_controls_shown_ratio;
+     ime_adapter_android_->UpdateFrameInfo(metadata.selection.start, dip_scale,
+                                           top_shown_pix);
+   }
 +  if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom))
 +    top_content_offset = 0;
-   float top_shown_pix = top_content_offset * to_pix;
  
-   if (ime_adapter_android_) {
+   if (!gesture_listener_manager_)
+     return;
 --
 2.25.1

+ 1 - 1
build/patches/Move-some-account-settings-back-to-privacy-settings.patch

@@ -104,7 +104,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
-@@ -441,6 +441,10 @@ CHAR_LIMIT guidelines:
+@@ -442,6 +442,10 @@ CHAR_LIMIT guidelines:
          No statistics or crash reports are sent to Google
        </message>
  

+ 25 - 25
build/patches/Multiple-fingerprinting-mitigations.patch

@@ -55,7 +55,7 @@ Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2325,6 +2325,7 @@ static_library("browser") {
+@@ -2338,6 +2338,7 @@ static_library("browser") {
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/serial:switches",
      "//services/device/public/cpp/usb",
@@ -66,7 +66,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
-@@ -185,6 +185,7 @@
+@@ -183,6 +183,7 @@
  #include "services/media_session/public/cpp/features.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
@@ -74,7 +74,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "storage/browser/quota/quota_features.h"
  #include "third_party/blink/public/common/features.h"
  #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
-@@ -3047,6 +3048,20 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3191,6 +3192,20 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebrtcUseMinMaxVEADimensionsName,
       flag_descriptions::kWebrtcUseMinMaxVEADimensionsDescription, kOsAll,
       FEATURE_VALUE_TYPE(blink::features::kWebRtcUseMinMaxVEADimensions)},
@@ -98,7 +98,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -229,6 +229,7 @@ source_set("browser") {
+@@ -231,6 +231,7 @@ source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -109,7 +109,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -201,6 +201,7 @@
+@@ -202,6 +202,7 @@
  #include "url/gurl.h"
  #include "url/origin.h"
  
@@ -117,7 +117,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
  #if BUILDFLAG(IS_ANDROID)
  #include "content/browser/android/java_interfaces_impl.h"
  #include "content/browser/font_unique_name_lookup/font_unique_name_lookup_service.h"
-@@ -3242,6 +3243,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3238,6 +3239,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisableBreakpad,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -141,7 +141,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -39,6 +39,8 @@
+@@ -40,6 +40,8 @@
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  
@@ -150,7 +150,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #if BUILDFLAG(IS_ANDROID)
  #include "base/android/build_info.h"
  #endif
-@@ -528,6 +530,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -523,6 +525,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    if (!command_line.HasSwitch(switches::kDisableYUVImageDecoding) &&
        base::FeatureList::IsEnabled(
            blink::features::kDecodeLossyWebPImagesToYUV)) {
@@ -167,7 +167,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 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
-@@ -213,6 +213,9 @@ class WebRuntimeFeatures {
+@@ -214,6 +214,9 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableAutomationControlled(bool);
    BLINK_PLATFORM_EXPORT static void EnableAutoplayIgnoresWebAudio(bool);
    BLINK_PLATFORM_EXPORT static void EnableMediaControlsExpandGesture(bool);
@@ -185,10 +185,10 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/debug/dump_without_crashing.h"
  #include "base/metrics/histogram_functions.h"
 +#include "base/rand_util.h"
+ #include "base/notreached.h"
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
- #include "cc/input/scroll_snap_data.h"
-@@ -2178,6 +2179,23 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() {
+@@ -2170,6 +2171,23 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() {
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this, true /* allow_dirty_container_subtrees */);
  #endif
@@ -215,7 +215,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -482,6 +482,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -496,6 +496,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -226,7 +226,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    AtomicString visibilityState() const;
    bool IsPageVisible() const;
    bool hidden() const;
-@@ -2196,6 +2200,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -2232,6 +2236,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -239,7 +239,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
 diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
 --- a/third_party/blink/renderer/core/dom/element.cc
 +++ b/third_party/blink/renderer/core/dom/element.cc
-@@ -2062,6 +2062,7 @@ void Element::ClientQuads(Vector<gfx::QuadF>& quads) const {
+@@ -2052,6 +2052,7 @@ void Element::ClientQuads(Vector<gfx::QuadF>& quads) const {
        quads.push_back(element_layout_object->LocalToAbsoluteQuad(
            gfx::QuadF(element_layout_object->ObjectBoundingBox())));
      }
@@ -247,7 +247,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
      return;
    }
  
-@@ -2069,6 +2070,11 @@ void Element::ClientQuads(Vector<gfx::QuadF>& quads) const {
+@@ -2059,6 +2060,11 @@ void Element::ClientQuads(Vector<gfx::QuadF>& quads) const {
    if (element_layout_object->IsBoxModelObject() ||
        element_layout_object->IsBR())
      element_layout_object->AbsoluteQuads(quads);
@@ -259,7 +259,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
  }
  
  DOMRectList* Element::getClientRects() {
-@@ -2100,6 +2106,9 @@ gfx::RectF Element::GetBoundingClientRectNoLifecycleUpdate() const {
+@@ -2090,6 +2096,9 @@ gfx::RectF Element::GetBoundingClientRectNoLifecycleUpdate() const {
    DCHECK(element_layout_object);
    GetDocument().AdjustRectForScrollAndAbsoluteZoom(result,
                                                     *element_layout_object);
@@ -349,7 +349,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c
  #include "third_party/blink/renderer/platform/graphics/skia/skia_utils.h"
  #include "third_party/blink/renderer/platform/graphics/stroke_data.h"
  #include "third_party/blink/renderer/platform/graphics/video_frame_image_util.h"
-@@ -2047,6 +2048,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
+@@ -2046,6 +2047,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
            snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds();
        DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh)));
      }
@@ -363,7 +363,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c
 diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
 +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-@@ -916,9 +916,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -917,9 +917,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    TextDirection direction =
        ToTextDirection(GetState().GetDirection(), canvas());
  
@@ -383,7 +383,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1591,7 +1591,9 @@ component("platform") {
+@@ -1596,7 +1596,9 @@ component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
  
    allow_circular_includes_from = [
      "//third_party/blink/renderer/platform/blob",
-@@ -1659,6 +1661,7 @@ component("platform") {
+@@ -1664,6 +1666,7 @@ component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -405,8 +405,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
 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
-@@ -667,4 +667,16 @@ void WebRuntimeFeatures::EnableCLSScrollAnchoring(bool enable) {
-   RuntimeEnabledFeatures::SetCLSScrollAnchoringEnabled(enable);
+@@ -677,4 +677,16 @@ void WebRuntimeFeatures::EnableWebAuthenticationRemoteDesktopSupport(
+       enable);
  }
  
 +void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
@@ -468,7 +468,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  namespace blink {
  
  scoped_refptr<StaticBitmapImage> StaticBitmapImage::Create(
-@@ -79,4 +84,154 @@ void StaticBitmapImage::DrawHelper(cc::PaintCanvas* canvas,
+@@ -113,4 +118,154 @@ void StaticBitmapImage::DrawHelper(cc::PaintCanvas* canvas,
        WebCoreClampingModeToSkiaRectConstraint(draw_options.clamping_mode));
  }
  
@@ -626,7 +626,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
 diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 --- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 +++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
-@@ -36,6 +36,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
+@@ -37,6 +37,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
  
    StaticBitmapImage(ImageOrientation orientation) : orientation_(orientation) {}
  
@@ -638,7 +638,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -1098,6 +1098,15 @@
+@@ -1091,6 +1091,15 @@
        origin_trial_allows_third_party: true,
        status: "experimental",
      },

+ 1 - 1
build/patches/Open-YouTube-links-in-Bromite.patch

@@ -10,7 +10,7 @@ See https://github.com/bromite/bromite/issues/1472
 diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
-@@ -1331,6 +1331,12 @@ public class ExternalNavigationHandler {
+@@ -1347,6 +1347,12 @@ public class ExternalNavigationHandler {
                      OverrideUrlLoadingAsyncActionType.UI_GATING_BROWSER_NAVIGATION);
          }
  

+ 4 - 4
build/patches/OpenSearch-miscellaneous.patch

@@ -135,7 +135,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro
 diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc
 --- a/chrome/renderer/chrome_render_frame_observer.cc
 +++ b/chrome/renderer/chrome_render_frame_observer.cc
-@@ -13,6 +13,7 @@
+@@ -14,6 +14,7 @@
  
  #include "base/bind.h"
  #include "base/command_line.h"
@@ -143,7 +143,7 @@ diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/c
  #include "base/metrics/histogram_macros.h"
  #include "base/no_destructor.h"
  #include "base/strings/string_number_conversions.h"
-@@ -202,6 +203,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() {
+@@ -250,6 +251,7 @@ void ChromeRenderFrameObserver::DidFinishLoad() {
  
    GURL osdd_url = frame->GetDocument().OpenSearchDescriptionURL();
    if (!osdd_url.is_empty()) {
@@ -203,7 +203,7 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear
 diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h
 --- a/components/search_engines/template_url_service.h
 +++ b/components/search_engines/template_url_service.h
-@@ -277,7 +277,10 @@ class TemplateURLService : public WebDataServiceConsumer,
+@@ -278,7 +278,10 @@ class TemplateURLService : public WebDataServiceConsumer,
    void UpdateProviderFavicons(const GURL& potential_search_url,
                                const GURL& favicon_url);
  
@@ -215,7 +215,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc
    // regardless of |url| if the default search provider is managed by policy or
    // controlled by an extension.
    bool CanMakeDefault(const TemplateURL* url) const;
-@@ -607,9 +610,6 @@ class TemplateURLService : public WebDataServiceConsumer,
+@@ -608,9 +611,6 @@ class TemplateURLService : public WebDataServiceConsumer,
    // SetKeywordSearchTermsForURL is invoked.
    void UpdateKeywordSearchTermsForURL(const URLVisitedDetails& details);
  

+ 36 - 38
build/patches/Partition-DNS-requests-by-top-frame-NIK.patch

@@ -30,16 +30,16 @@ See also:
  net/base/isolation_info.proto        |  4 +++-
  net/base/network_isolation_key.cc    | 16 ++++++++++++++++
  net/base/network_isolation_key.h     | 19 +++++++++++++++----
- net/dns/dns_transaction.cc           | 24 ++++++++++++++++++++----
+ net/dns/dns_transaction.cc           | 23 +++++++++++++++++++----
  net/dns/dns_transaction.h            |  4 +++-
  net/dns/host_resolver_manager.cc     | 21 +++++++++++++++++----
  net/socket/ssl_client_socket_impl.cc |  6 ++++++
- 14 files changed, 149 insertions(+), 15 deletions(-)
+ 14 files changed, 148 insertions(+), 15 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
-@@ -7574,6 +7574,18 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7598,6 +7598,18 @@ const FeatureEntry kFeatureEntries[] = {
          FEATURE_VALUE_TYPE(features::kUIDebugTools),
      },
  #endif
@@ -61,9 +61,9 @@ 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
-@@ -2480,6 +2480,15 @@ const char kWebOTPCrossDeviceName[] = "WebOTP Cross Device";
- const char kWebOTPCrossDeviceDescription[] =
-     "Enable the WebOTP API to work across devices";
+@@ -2413,6 +2413,15 @@ const char kSmoothScrollingName[] = "Smooth Scrolling";
+ const char kSmoothScrollingDescription[] =
+     "Animate smoothly when scrolling page content.";
  
 +const char kSplitDnsByNetworkIsolationKeyName[] = "DNS Requests Partitioning";
 +const char kSplitDnsByNetworkIsolationKeyDescription[] =
@@ -80,9 +80,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
-@@ -1419,6 +1419,12 @@ extern const char kSmoothScrollingDescription[];
- extern const char kWebOTPCrossDeviceName[];
- extern const char kWebOTPCrossDeviceDescription[];
+@@ -1371,6 +1371,12 @@ extern const char kSiteIsolationOptOutChoiceOptOut[];
+ extern const char kSmoothScrollingName[];
+ extern const char kSmoothScrollingDescription[];
  
 +extern const char kSplitDnsByNetworkIsolationKeyName[];
 +extern const char kSplitDnsByNetworkIsolationKeyDescription[];
@@ -96,7 +96,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
-@@ -107,6 +107,12 @@ const base::Feature kIsCleartextPermitted{"IsCleartextPermitted",
+@@ -127,6 +127,12 @@ const base::Feature kIsCleartextPermitted{"IsCleartextPermitted",
  const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator",
                                               base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -112,7 +112,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc
 diff --git a/net/base/features.h b/net/base/features.h
 --- a/net/base/features.h
 +++ b/net/base/features.h
-@@ -170,6 +170,12 @@ NET_EXPORT extern const base::Feature kEncryptedClientHello;
+@@ -189,6 +189,12 @@ NET_EXPORT extern const base::Feature kEncryptedClientHello;
  // quality estimator (NQE).
  NET_EXPORT extern const base::Feature kNetworkQualityEstimator;
  
@@ -307,7 +307,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
  #include "net/base/idempotency.h"
  #include "net/base/io_buffer.h"
  #include "net/base/ip_address.h"
-@@ -442,6 +443,12 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -452,6 +453,12 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
                             LOAD_MINIMAL_HEADERS | LOAD_BYPASS_PROXY);
      request_->set_allow_credentials(false);
      request_->set_isolation_info(isolation_info);
@@ -320,7 +320,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
    }
  
    DnsHTTPAttempt(const DnsHTTPAttempt&) = delete;
-@@ -1012,6 +1019,8 @@ class DnsOverHttpsProbeRunner : public DnsProbeRunner {
+@@ -1022,6 +1029,8 @@ class DnsOverHttpsProbeRunner : public DnsProbeRunner {
          session_.get(), doh_server_index, formatted_probe_hostname_,
          dns_protocol::kTypeA, nullptr /* opt_rdata */,
          &probe_stats->probe_attempts, context_->url_request_context(),
@@ -329,7 +329,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
          context_->isolation_info(), RequestPriority::DEFAULT_PRIORITY);
  
      DnsAttempt* probe_attempt = probe_stats->probe_attempts.back().get();
-@@ -1105,7 +1114,8 @@ class DnsTransactionImpl : public DnsTransaction,
+@@ -1114,7 +1123,8 @@ class DnsTransactionImpl : public DnsTransaction,
                       bool secure,
                       SecureDnsMode secure_dns_mode,
                       ResolveContext* resolve_context,
@@ -339,7 +339,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
        : session_(session),
          hostname_(std::move(hostname)),
          qtype_(qtype),
-@@ -1119,7 +1129,8 @@ class DnsTransactionImpl : public DnsTransaction,
+@@ -1127,7 +1137,8 @@ class DnsTransactionImpl : public DnsTransaction,
          attempts_count_(0),
          had_tcp_retry_(false),
          resolve_context_(resolve_context->AsSafeRef()),
@@ -348,8 +348,8 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 +        network_isolation_key_(network_isolation_key) {
      DCHECK(session_.get());
      DCHECK(!hostname_.empty());
-     DCHECK(!callback_.is_null());
-@@ -1367,6 +1378,8 @@ class DnsTransactionImpl : public DnsTransaction,
+     DCHECK(!IsIPLiteral(hostname_));
+@@ -1374,6 +1385,8 @@ class DnsTransactionImpl : public DnsTransaction,
      ConstructDnsHTTPAttempt(
          session_.get(), doh_server_index, qnames_.front(), qtype_, opt_rdata_,
          &attempts_, resolve_context_->url_request_context(),
@@ -358,7 +358,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
          resolve_context_->isolation_info(), request_priority_);
      ++attempts_count_;
      int rv = attempts_.back()->Start(base::BindOnce(
-@@ -1693,6 +1706,8 @@ class DnsTransactionImpl : public DnsTransaction,
+@@ -1708,6 +1721,8 @@ class DnsTransactionImpl : public DnsTransaction,
    base::SafeRef<ResolveContext> resolve_context_;
    RequestPriority request_priority_;
  
@@ -367,18 +367,16 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
    THREAD_CHECKER(thread_checker_);
  };
  
-@@ -1714,11 +1729,12 @@ class DnsTransactionFactoryImpl : public DnsTransactionFactory {
+@@ -1728,10 +1743,10 @@ class DnsTransactionFactoryImpl : public DnsTransactionFactory {
        bool secure,
        SecureDnsMode secure_dns_mode,
        ResolveContext* resolve_context,
 -      bool fast_timeout) override {
-+      bool fast_timeout,
-+      const NetworkIsolationKey& network_isolation_key) override {
++      bool fast_timeout, const NetworkIsolationKey& network_isolation_key) override {
      return std::make_unique<DnsTransactionImpl>(
-         session_.get(), std::move(hostname), qtype, std::move(callback),
-         net_log, opt_rdata_.get(), secure, secure_dns_mode, resolve_context,
--        fast_timeout);
-+        fast_timeout, network_isolation_key);
+         session_.get(), std::move(hostname), qtype, net_log, opt_rdata_.get(),
+-        secure, secure_dns_mode, resolve_context, fast_timeout);
++        secure, secure_dns_mode, resolve_context, fast_timeout, network_isolation_key);
    }
  
    std::unique_ptr<DnsProbeRunner> CreateDohProbeRunner(
@@ -393,7 +391,7 @@ diff --git a/net/dns/dns_transaction.h b/net/dns/dns_transaction.h
  #include "net/dns/public/secure_dns_mode.h"
  #include "net/dns/record_rdata.h"
  #include "third_party/abseil-cpp/absl/types/optional.h"
-@@ -119,7 +120,8 @@ class NET_EXPORT_PRIVATE DnsTransactionFactory {
+@@ -117,7 +118,8 @@ class NET_EXPORT_PRIVATE DnsTransactionFactory {
        bool secure,
        SecureDnsMode secure_dns_mode,
        ResolveContext* resolve_context,
@@ -406,7 +404,7 @@ diff --git a/net/dns/dns_transaction.h b/net/dns/dns_transaction.h
 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
-@@ -1308,7 +1308,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+@@ -1262,7 +1262,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
            Delegate* delegate,
            const NetLogWithSource& job_net_log,
            const base::TickClock* tick_clock,
@@ -416,7 +414,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
        : client_(client),
          host_(std::move(host)),
          resolve_context_(resolve_context->AsSafeRef()),
-@@ -1318,7 +1319,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+@@ -1272,7 +1273,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
          net_log_(job_net_log),
          tick_clock_(tick_clock),
          task_start_time_(tick_clock_->NowTicks()),
@@ -426,17 +424,17 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
      DCHECK(client_);
      DCHECK(delegate_);
  
-@@ -1449,7 +1451,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
-                            base::Unretained(this), tick_clock_->NowTicks(),
-                            dns_query_type, request_port),
-             net_log_, secure_, secure_dns_mode_, &*resolve_context_,
+@@ -1489,7 +1491,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+             std::move(transaction_hostname),
+             DnsQueryTypeToQtype(transaction_info.type), net_log_, secure_,
+             secure_dns_mode_, &*resolve_context_,
 -            fallback_available_ /* fast_timeout */);
 +            fallback_available_ /* fast_timeout */,
 +            network_isolation_key_);
-     trans->SetRequestPriority(delegate_->priority());
-     return trans;
-   }
-@@ -1984,6 +1987,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+     transaction_info.transaction->SetRequestPriority(delegate_->priority());
+ 
+     auto transaction_info_it =
+@@ -2111,6 +2114,8 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
    // task completes unsuccessfully. Used as a signal that underlying
    // transactions should timeout more quickly.
    bool fallback_available_;
@@ -445,7 +443,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  };
  
  //-----------------------------------------------------------------------------
-@@ -2550,7 +2555,8 @@ class HostResolverManager::Job : public PrioritizedDispatcher::Job,
+@@ -2679,7 +2684,8 @@ class HostResolverManager::Job : public PrioritizedDispatcher::Job,
      dns_task_ = std::make_unique<DnsTask>(
          resolver_->dns_client_.get(), key_.host, key_.query_types,
          &*key_.resolve_context, secure, key_.secure_dns_mode, this, net_log_,
@@ -455,7 +453,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
      dns_task_->StartNextTransaction();
      // Schedule a second transaction, if needed. DoH queries can bypass the
      // dispatcher and start all of their transactions immediately.
-@@ -2826,6 +2832,13 @@ class HostResolverManager::Job : public PrioritizedDispatcher::Job,
+@@ -2971,6 +2977,13 @@ class HostResolverManager::Job : public PrioritizedDispatcher::Job,
      net_log_.EndEventWithNetErrorCode(
          NetLogEventType::HOST_RESOLVER_MANAGER_JOB, results.error());
  

+ 4 - 4
build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch

@@ -27,7 +27,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -439,7 +439,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -449,7 +449,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      // avoid deadlock and enable the use of preconfigured IP addresses.
      request_->SetSecureDnsPolicy(SecureDnsPolicy::kBootstrap);
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
@@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
  
-@@ -605,6 +609,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -602,6 +606,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
        if (request_->Supports(SourceStream::SourceType::TYPE_DEFLATE)) {
          advertised_encoding_names.push_back("deflate");
        }
@@ -70,7 +70,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        if (request()->context()->enable_brotli() &&
            request_->Supports(SourceStream::SourceType::TYPE_BROTLI)) {
-@@ -613,6 +618,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -610,6 +615,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
            advertised_encoding_names.push_back("br");
          }
        }
@@ -78,7 +78,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
        if (!advertised_encoding_names.empty()) {
          // Tell the server what compression formats are supported.
          request_info_.extra_headers.SetHeader(
-@@ -622,7 +628,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -619,7 +625,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio