浏览代码

v97 patches

Carmelo Messina 3 年之前
父节点
当前提交
d17ef02c4d
共有 100 个文件被更改,包括 1008 次插入35672 次删除
  1. 0 1
      build/bromite_patches_list.txt
  2. 6 6
      build/patches/AImageReader-CFI-crash-mitigations.patch
  3. 1 1
      build/patches/AV1-codec-support.patch
  4. 6 6
      build/patches/Add-AllowUserCertificates-flag.patch
  5. 1 1
      build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch
  6. 8 8
      build/patches/Add-IsCleartextPermitted-flag.patch
  7. 4 4
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  8. 7 7
      build/patches/Add-a-proxy-configuration-page.patch
  9. 14 14
      build/patches/Add-an-always-incognito-mode.patch
  10. 32 33
      build/patches/Add-bookmark-import-export-actions.patch
  11. 7 7
      build/patches/Add-custom-tab-intents-privacy-option.patch
  12. 5 5
      build/patches/Add-exit-menu-item.patch
  13. 2 2
      build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch
  14. 5 5
      build/patches/Add-flag-for-save-data-header.patch
  15. 9 9
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  16. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  17. 5 5
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  18. 6 6
      build/patches/Add-flag-to-disable-WebGL.patch
  19. 3 3
      build/patches/Add-flag-to-disable-external-intent-requests.patch
  20. 8 8
      build/patches/Add-flag-to-disable-vibration.patch
  21. 27 28
      build/patches/Add-history-support-in-incognito-mode.patch
  22. 15 15
      build/patches/Add-menu-item-to-bookmark-all-tabs.patch
  23. 6 6
      build/patches/Add-menu-item-to-view-source.patch
  24. 6 6
      build/patches/Add-option-to-force-tablet-UI.patch
  25. 7 7
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  26. 3 3
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  27. 20 19
      build/patches/Allow-building-without-enable_reporting.patch
  28. 2 2
      build/patches/Ask-user-before-closing-all-tabs.patch
  29. 0 34131
      build/patches/Automated-domain-substitution.patch
  30. 3 3
      build/patches/Battery-API-return-nothing.patch
  31. 7 7
      build/patches/Block-qjz9zk-or-trk-requests.patch
  32. 17 17
      build/patches/Bromite-AdBlockUpdaterService.patch
  33. 17 104
      build/patches/Bromite-auto-updater.patch
  34. 1 1
      build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch
  35. 1 1
      build/patches/Disable-AGSA-by-default.patch
  36. 2 2
      build/patches/Disable-Accessibility-service-by-default.patch
  37. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  38. 8 8
      build/patches/Disable-FLoC.patch
  39. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  40. 19 18
      build/patches/Disable-conversion-measurement-api.patch
  41. 5 5
      build/patches/Disable-feeds-support-by-default.patch
  42. 7 7
      build/patches/Disable-fetching-of-all-field-trials.patch
  43. 1 1
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  44. 1 1
      build/patches/Disable-plugins-enumeration.patch
  45. 2 2
      build/patches/Disable-privacy-sandbox.patch
  46. 1 1
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  47. 118 117
      build/patches/Disable-safe-browsing.patch
  48. 3 3
      build/patches/Disable-smart-selection-by-default.patch
  49. 5 5
      build/patches/Disable-some-signed-exchange-features.patch
  50. 10 14
      build/patches/Disable-text-fragments-by-default.patch
  51. 9 9
      build/patches/Disable-third-party-origin-trials.patch
  52. 1 1
      build/patches/Disable-unified-autoplay-feature.patch
  53. 1 1
      build/patches/Do-not-build-API-keys-infobar.patch
  54. 2 2
      build/patches/Do-not-compile-QR-code-sharing.patch
  55. 1 1
      build/patches/Do-not-hide-component-extensions.patch
  56. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  57. 2 2
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  58. 3 3
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  59. 10 10
      build/patches/Enable-native-Android-autofill.patch
  60. 1 1
      build/patches/Enable-network-isolation-features.patch
  61. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  62. 13 13
      build/patches/Enable-share-intent.patch
  63. 1 1
      build/patches/Enable-user-agent-freeze-by-default.patch
  64. 27 27
      build/patches/Experimental-user-scripts-support.patch
  65. 2 2
      build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch
  66. 6 6
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  67. 5 5
      build/patches/JIT-less-toggle.patch
  68. 1 1
      build/patches/Logcat-crash-reports-UI.patch
  69. 2 2
      build/patches/Modify-default-preferences.patch
  70. 8 8
      build/patches/Move-some-account-settings-back-to-privacy-settings.patch
  71. 18 18
      build/patches/Multiple-fingerprinting-mitigations.patch
  72. 2 2
      build/patches/Never-fetch-popular-sites.patch
  73. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  74. 1 1
      build/patches/Open-YouTube-links-in-Bromite.patch
  75. 1 1
      build/patches/Override-UA-client-hint-for-model.patch
  76. 41 486
      build/patches/Remove-binary-blob-integrations.patch
  77. 6 6
      build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch
  78. 4 4
      build/patches/Remove-help-menu-item.patch
  79. 205 195
      build/patches/Remove-signin-and-data-saver-integrations.patch
  80. 8 8
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  81. 23 38
      build/patches/Restore-Simplified-NTP-launch.patch
  82. 6 6
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  83. 5 5
      build/patches/Revert-flags-remove-num-raster-threads.patch
  84. 11 11
      build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch
  85. 4 4
      build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch
  86. 11 11
      build/patches/Site-setting-for-images.patch
  87. 15 8
      build/patches/Skip-the-first-run-and-metrics.patch
  88. 6 4
      build/patches/Switch-to-fstack-protector-strong.patch
  89. 24 24
      build/patches/Timezone-customization.patch
  90. 3 3
      build/patches/Unexpire-tab-groups-flags.patch
  91. 4 4
      build/patches/Update-i18n-zh_CN-support.patch
  92. 3 3
      build/patches/Use-4-tile-rows-never-show-logo.patch
  93. 30 30
      build/patches/User-agent-customization.patch
  94. 2 2
      build/patches/autofill-disable-autofill-download-manager.patch
  95. 4 4
      build/patches/build-remove-calling-untrusted-hooks.patch
  96. 1 1
      build/patches/disable-WebView-variations-support.patch
  97. 1 1
      build/patches/disable-autofill-server-communication-by-default.patch
  98. 5 5
      build/patches/kill-Auth.patch
  99. 15 16
      build/patches/kill-TOS-and-metrics-opt-out.patch
  100. 1 1
      build/patches/kill-Vision.patch

+ 0 - 1
build/bromite_patches_list.txt

@@ -169,4 +169,3 @@ Disable-privacy-sandbox.patch
 Disable-conversion-measurement-api.patch
 Disable-FLoC.patch
 Restore-offline-indicator-v2-flag.patch
-Automated-domain-substitution.patch

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

@@ -82,8 +82,8 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2062,9 +2062,9 @@
-     "expiry_milestone": 97
+@@ -2095,9 +2095,9 @@
+     "expiry_milestone": 100
    },
    {
 -    "name": "enable-image-reader",
@@ -124,7 +124,7 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis
 diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 --- a/gpu/config/gpu_finch_features.cc
 +++ b/gpu/config/gpu_finch_features.cc
-@@ -51,6 +51,11 @@ bool IsDeviceBlocked(const char* field, const std::string& block_list) {
+@@ -52,6 +52,11 @@ bool IsDeviceBlocked(const char* field, const std::string& block_list) {
  }  // namespace
  
  #if defined(OS_ANDROID)
@@ -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;
  
-@@ -344,6 +347,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -356,6 +359,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
-@@ -663,6 +663,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -678,6 +678,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
-@@ -219,6 +219,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders;
+@@ -216,6 +216,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;

+ 1 - 1
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
-@@ -642,6 +642,11 @@ aom_mem_sources = [
+@@ -643,6 +643,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/float.asm" ]
  

+ 6 - 6
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
-@@ -226,6 +226,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
+@@ -227,6 +227,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;
-@@ -981,6 +982,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -990,6 +991,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
-@@ -90,6 +90,7 @@ public class ChromeCachedFlags {
+@@ -91,6 +91,7 @@ public class ChromeCachedFlags {
                  add(ChromeFeatureList
                                  .GIVE_JAVA_UI_THREAD_DEFAULT_TASK_TRAITS_USER_BLOCKING_PRIORITY);
                  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
-@@ -2874,6 +2874,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2903,6 +2903,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kCSSContainerQueriesDescription, kOsAll,
       FEATURE_VALUE_TYPE(blink::features::kCSSContainerQueries)},
  #if defined(OS_ANDROID)
@@ -91,7 +91,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
-@@ -150,6 +150,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -153,6 +153,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &feed::kFeedSignInPromoDismiss,
      &feed::kInterestFeedContentSuggestions,
      &feed::kInterestFeedSpinnerAlwaysAnimate,
@@ -99,7 +99,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &feed::kInterestFeedV1ClicksAndViewsConditionalUpload,
      &feed::kInterestFeedV2,
      &feed::kInterestFeedV2Autoplay,
-@@ -387,6 +388,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
+@@ -392,6 +393,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
      "AdaptiveButtonInTopToolbarCustomizationV2",
      base::FEATURE_DISABLED_BY_DEFAULT};
  

+ 1 - 1
build/patches/Add-Alt-D-hotkey-to-focus-address-bar.patch

@@ -9,7 +9,7 @@ Subject: Add Alt+D hotkey to focus address bar
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
-@@ -156,6 +156,8 @@ public class KeyboardShortcuts {
+@@ -154,6 +154,8 @@ public class KeyboardShortcuts {
                  KeyEvent.KEYCODE_F, KeyEvent.META_CTRL_ON);
          addShortcut(context, chromeFeatureShortcutGroup, R.string.keyboard_shortcut_address_bar,
                  KeyEvent.KEYCODE_L, KeyEvent.META_CTRL_ON);

+ 8 - 8
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
-@@ -7780,6 +7780,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7817,6 +7817,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(
           chrome::android::kBookmarksExportUseSaf)},
  
@@ -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
-@@ -1507,6 +1507,10 @@ const char kHttpsOnlyModeDescription[] =
+@@ -1474,6 +1474,10 @@ const char kHttpsOnlyModeDescription[] =
      "Adds a setting under chrome://settings/security to opt-in to HTTPS-First "
      "Mode.";
  
@@ -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
-@@ -867,6 +867,9 @@ extern const char kHostedAppShimCreationDescription[];
+@@ -846,6 +846,9 @@ extern const char kHideShelfControlsInTabletModeDescription[];
  extern const char kHttpsOnlyModeName[];
  extern const char kHttpsOnlyModeDescription[];
  
@@ -63,15 +63,15 @@ diff --git a/net/base/features.cc b/net/base/features.cc
 +const base::Feature kIsCleartextPermitted{"IsCleartextPermitted",
 +                                      base::FEATURE_ENABLED_BY_DEFAULT};
 +
- const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator",
-                                              base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kEncryptedClientHello{"EncryptedClientHello",
+                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
 diff --git a/net/base/features.h b/net/base/features.h
 --- a/net/base/features.h
 +++ b/net/base/features.h
-@@ -37,6 +37,8 @@ NET_EXPORT extern const base::Feature kCapReferrerToOriginOnCrossOrigin;
- // Enables TLS 1.3 early data.
- NET_EXPORT extern const base::Feature kEnableTLS13EarlyData;
+@@ -34,6 +34,8 @@ NET_EXPORT extern const base::Feature kAvoidH2Reprioritization;
+ // origin requests are restricted to contain at most the source origin.
+ NET_EXPORT extern const base::Feature kCapReferrerToOriginOnCrossOrigin;
  
 +NET_EXPORT extern const base::Feature kIsCleartextPermitted;
 +

+ 4 - 4
build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch

@@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -712,6 +712,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
+@@ -700,6 +700,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
      "authenticator (if available) to verify card ownership when retrieving "
      "credit cards from Google Payments.";
  
@@ -48,7 +48,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
-@@ -446,6 +446,9 @@ extern const char kEnableAutofillSaveCardInfoBarAccountIndicationFooterName[];
+@@ -440,6 +440,9 @@ extern const char kEnableAutofillSaveCardInfoBarAccountIndicationFooterName[];
  extern const char
      kEnableAutofillSaveCardInfoBarAccountIndicationFooterDescription[];
  
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmp
 diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
 --- a/chrome/common/chrome_switches.cc
 +++ b/chrome/common/chrome_switches.cc
-@@ -335,6 +335,9 @@ const char kHomePage[]                      = "homepage";
+@@ -332,6 +332,9 @@ const char kHomePage[]                      = "homepage";
  // Causes the browser to launch directly in incognito mode.
  const char kIncognito[]                     = "incognito";
  
@@ -88,7 +88,7 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
 diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
 --- a/chrome/common/chrome_switches.h
 +++ b/chrome/common/chrome_switches.h
-@@ -110,6 +110,7 @@ extern const char kForceStackedTabStripLayout[];
+@@ -109,6 +109,7 @@ extern const char kForceFirstRun[];
  extern const char kHideCrashRestoreBubble[];
  extern const char kHomePage[];
  extern const char kIncognito[];

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

@@ -70,7 +70,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -52,6 +52,7 @@ import org.chromium.ui.text.SpanApplier;
+@@ -51,6 +51,7 @@ import org.chromium.ui.text.SpanApplier;
  public class PrivacySettings
          extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener,
                                                      INeedSnackbarManager {
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -374,6 +374,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -280,6 +280,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUISettingsURL));
  #endif
@@ -173,7 +173,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
-@@ -164,6 +164,8 @@
+@@ -160,6 +160,8 @@
  #include "printing/buildflags/buildflags.h"
  #include "rlz/buildflags/buildflags.h"
  
@@ -182,7 +182,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
-@@ -960,6 +962,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
+@@ -981,6 +983,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
    PluginsResourceService::RegisterPrefs(registry);
  #endif
  
@@ -647,7 +647,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/signin_internals_ui.h"
  #include "chrome/browser/ui/webui/support_tool_ui.h"
-@@ -644,6 +645,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -647,6 +648,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -1138,7 +1138,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIOobeHost,
      kChromeUIOSCreditsHost,
      kChromeUIOSSettingsHost,
-@@ -584,6 +587,7 @@ const char* const kChromeHostURLs[] = {
+@@ -582,6 +585,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !BUILDFLAG(IS_CHROMEOS_ASH)
      kChromeUIAppLauncherPageHost,
@@ -1149,7 +1149,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
-@@ -127,6 +127,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -125,6 +125,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -153,7 +153,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;
-@@ -1770,8 +1771,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1760,8 +1761,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -176,7 +176,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;
-@@ -1891,6 +1892,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1910,6 +1911,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -189,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -538,6 +538,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -515,6 +515,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -301,7 +301,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
-@@ -34,6 +34,9 @@ import org.chromium.content_public.browser.WebContents;
+@@ -38,6 +38,9 @@ import org.chromium.network.mojom.ReferrerPolicy;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.url.GURL;
  
@@ -311,7 +311,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
  /**
   * This class attempts to preload the tab if the url is known from the intent when the profile
   * is created. This is done to improve startup latency.
-@@ -185,17 +188,22 @@ public class StartupTabPreloader implements ProfileManager.Observer, DestroyObse
+@@ -349,17 +352,22 @@ public class StartupTabPreloader implements ProfileManager.Observer, DestroyObse
          Intent intent = mIntentSupplier.get();
          GURL url = UrlFormatter.fixupUrl(getUrlFromIntent(intent));
  
@@ -340,7 +340,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -29,6 +29,10 @@ import org.chromium.chrome.browser.profiles.Profile;
+@@ -28,6 +28,10 @@ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
@@ -351,7 +351,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
  import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
  import org.chromium.components.browser_ui.settings.SettingsLauncher;
-@@ -43,7 +47,12 @@ import org.chromium.ui.text.SpanApplier;
+@@ -42,7 +46,12 @@ import org.chromium.ui.text.SpanApplier;
   * Fragment to keep track of the all the privacy related preferences.
   */
  public class PrivacySettings
@@ -365,7 +365,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
-@@ -96,6 +105,25 @@ public class PrivacySettings
+@@ -99,6 +108,25 @@ public class PrivacySettings
                  (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
          canMakePaymentPref.setOnPreferenceChangeListener(this);
  
@@ -391,7 +391,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          ChromeSwitchPreference networkPredictionPref =
                  (ChromeSwitchPreference) findPreference(PREF_NETWORK_PREDICTIONS);
          networkPredictionPref.setChecked(
-@@ -156,6 +184,9 @@ public class PrivacySettings
+@@ -130,6 +158,9 @@ public class PrivacySettings
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManagerImpl.getInstance().setNetworkPredictionEnabled(
                      (boolean) newValue);
@@ -401,7 +401,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          } else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue);
-@@ -238,4 +269,8 @@ public class PrivacySettings
+@@ -208,4 +239,8 @@ public class PrivacySettings
          }
          return false;
      }
@@ -434,7 +434,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
 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
-@@ -121,6 +121,8 @@ import org.chromium.ui.base.DeviceFormFactor;
+@@ -120,6 +120,8 @@ import org.chromium.ui.base.DeviceFormFactor;
  import org.chromium.ui.base.IntentRequestTracker;
  import org.chromium.ui.modaldialog.ModalDialogManager;
  import org.chromium.ui.util.TokenHolder;
@@ -443,7 +443,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.
-@@ -483,11 +485,13 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -494,11 +496,13 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
  
          // TODO(twellington): Supply TabModelSelector as well and move initialization earlier.
          if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
@@ -608,7 +608,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI
 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
-@@ -455,7 +455,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
+@@ -460,7 +460,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognitoAvailableToThirdParty{
@@ -620,7 +620,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/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
-@@ -924,6 +924,19 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -930,6 +930,19 @@ 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>

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

@@ -21,7 +21,7 @@ Completely remove contacts picker permission from the file dialog
  .../native_page/NativePageFactory.java        |  11 +-
  chrome/browser/BUILD.gn                       |  11 +-
  chrome/browser/about_flags.cc                 |   6 +
- .../android/bookmarks/bookmark_bridge.cc      | 284 ++++++++++++++++++
+ .../android/bookmarks/bookmark_bridge.cc      | 283 ++++++++++++++++++
  .../android/bookmarks/bookmark_bridge.h       |  29 +-
  .../browser/bookmarks/bookmark_html_writer.cc |   8 +-
  .../dialogs/DownloadLocationCustomView.java   |   8 +-
@@ -44,7 +44,7 @@ Completely remove contacts picker permission from the file dialog
  ui/shell_dialogs/select_file_dialog.h         |   2 +
  .../select_file_dialog_android.cc             |   6 +
  ui/shell_dialogs/select_file_dialog_android.h |   2 +
- 38 files changed, 891 insertions(+), 29 deletions(-)
+ 38 files changed, 890 insertions(+), 29 deletions(-)
 
 diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
 --- a/base/android/content_uri_utils.cc
@@ -196,7 +196,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
-@@ -85,6 +85,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
+@@ -86,6 +86,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
          } else if (menuItem.getItemId() == R.id.search_menu_id) {
              mDelegate.openSearchUI();
              return true;
@@ -209,7 +209,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          }
  
          SelectionDelegate<BookmarkId> selectionDelegate = mDelegate.getSelectionDelegate();
-@@ -136,6 +142,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
+@@ -137,6 +143,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
      void showLoadingUi() {
          setTitle(null);
          setNavigationButton(NAVIGATION_BUTTON_NONE);
@@ -218,7 +218,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          getMenu().findItem(R.id.search_menu_id).setVisible(false);
          getMenu().findItem(R.id.edit_menu_id).setVisible(false);
      }
-@@ -145,6 +153,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
+@@ -146,6 +154,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
          super.showNormalView();
  
          if (mDelegate == null) {
@@ -227,7 +227,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
              getMenu().findItem(R.id.search_menu_id).setVisible(false);
              getMenu().findItem(R.id.edit_menu_id).setVisible(false);
          }
-@@ -175,6 +185,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
+@@ -176,6 +186,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
      public void onFolderStateSet(BookmarkId folder) {
          mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
  
@@ -330,7 +330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import android.text.TextUtils;
  import android.util.Pair;
  
-@@ -30,8 +43,33 @@ import org.chromium.components.url_formatter.UrlFormatter;
+@@ -32,8 +45,33 @@ import org.chromium.components.url_formatter.UrlFormatter;
  import org.chromium.content_public.browser.WebContents;
  import org.chromium.url.GURL;
  
@@ -364,7 +364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  /**
   * Provides the communication channel for Android to fetch and manipulate the
-@@ -588,6 +626,209 @@ public class BookmarkBridge {
+@@ -614,6 +652,209 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
      }
  
@@ -574,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
-@@ -1100,6 +1341,39 @@ public class BookmarkBridge {
+@@ -1132,6 +1373,39 @@ public class BookmarkBridge {
          depthList.add(depth);
      }
  
@@ -614,7 +614,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          for (int i = 0; i < left.length; i++) {
-@@ -1167,6 +1441,9 @@ public class BookmarkBridge {
+@@ -1202,6 +1476,9 @@ public class BookmarkBridge {
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
                  List<BookmarkId> bookmarksList);
@@ -786,7 +786,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
-@@ -1843,6 +1843,13 @@ static_library("browser") {
+@@ -1855,6 +1855,13 @@ static_library("browser") {
      "window_placement/window_placement_permission_context.h",
    ]
  
@@ -800,7 +800,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
    configs += [
      "//build/config/compiler:wexit_time_destructors",
      "//build/config:precompiled_headers",
-@@ -2974,6 +2981,8 @@ static_library("browser") {
+@@ -2989,6 +2996,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",
@@ -809,7 +809,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",
-@@ -3585,8 +3594,6 @@ static_library("browser") {
+@@ -3618,8 +3627,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -821,9 +821,9 @@ 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
-@@ -7733,6 +7733,12 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(ui::kLibinputHandleTouchpad)},
- #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+@@ -7770,6 +7770,12 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(ash::features::kDesksTemplates)},
+ #endif
  
 +    {"export-bookmarks-use-saf",
 +     flag_descriptions::kBookmarksExportUseSafName,
@@ -870,7 +870,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  using base::android::AttachCurrentThread;
  using base::android::ConvertUTF8ToJavaString;
  using base::android::ConvertUTF16ToJavaString;
-@@ -68,8 +87,93 @@ using bookmarks::BookmarkNode;
+@@ -68,8 +87,92 @@ using bookmarks::BookmarkNode;
  using bookmarks::BookmarkType;
  using content::BrowserThread;
  
@@ -960,11 +960,10 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
 +  const std::string export_path_;
 +};
 +
-+
- const int kInvalidId = -1;
- 
  class BookmarkTitleComparer {
-@@ -156,6 +260,10 @@ BookmarkBridge::~BookmarkBridge() {
+  public:
+   explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge,
+@@ -154,6 +257,10 @@ BookmarkBridge::~BookmarkBridge() {
    if (partner_bookmarks_shim_)
      partner_bookmarks_shim_->RemoveObserver(this);
    reading_list_manager_->RemoveObserver(this);
@@ -975,7 +974,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  }
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -547,6 +655,182 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -571,6 +678,182 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
  }
  
@@ -1202,7 +1201,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
    jboolean IsEditBookmarksEnabled(JNIEnv* env);
  
    void LoadEmptyPartnerBookmarkShimForTesting(
-@@ -146,6 +157,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -156,6 +167,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
                               jlong id,
                               jint type);
  
@@ -1218,7 +1217,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
    void SetBookmarkTitle(JNIEnv* env,
                          const base::android::JavaParamRef<jobject>& obj,
                          jlong id,
-@@ -347,12 +367,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -359,12 +379,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
    void DestroyJavaObject();
  
    Profile* profile_;
@@ -1234,7 +1233,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
  
    // Information about the Partner bookmarks (must check for IsLoaded()).
    // This is owned by profile.
-@@ -363,6 +386,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -375,6 +398,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
  
    // Observes the profile destruction and creation.
    base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this};
@@ -1340,7 +1339,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -5474,6 +5474,11 @@ const char kWebKioskEnableLacrosDescription[] =
+@@ -5468,6 +5468,11 @@ const char kWebKioskEnableLacrosDescription[] =
      "Chrome OS. When disabled, the Ash-chrome will be used";
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -1355,7 +1354,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
-@@ -3185,6 +3185,9 @@ extern const char kWebKioskEnableLacrosName[];
+@@ -3193,6 +3193,9 @@ extern const char kWebKioskEnableLacrosName[];
  extern const char kWebKioskEnableLacrosDescription[];
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -1368,7 +1367,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
-@@ -174,6 +174,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -177,6 +177,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kBackgroundThreadPool,
      &kBentoOffline,
      &kBookmarkBottomSheet,
@@ -1376,7 +1375,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCastDeviceFilter,
      &kCloseTabSuggestions,
      &kCriticalPersistedTabData,
-@@ -824,6 +825,10 @@ const base::Feature kWebApkInstallCompleteNotification{
+@@ -829,6 +830,10 @@ const base::Feature kWebApkInstallCompleteNotification{
  const base::Feature kWebApkTrampolineOnInitialIntent{
      "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -1401,7 +1400,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
-@@ -552,6 +552,7 @@ public abstract class ChromeFeatureList {
+@@ -560,6 +560,7 @@ public abstract class ChromeFeatureList {
              "WebApkTrampolineOnInitialIntent";
      public static final String XSURFACE_METRICS_REPORTING = "XsurfaceMetricsReporting";
      public static final String WEB_OTP_CROSS_DEVICE_SIMPLE_STRING = "WebOtpCrossDeviceSimpleString";
@@ -1470,7 +1469,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
-@@ -121,6 +121,8 @@ public final class ChromePreferenceKeys {
+@@ -122,6 +122,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";
@@ -1479,7 +1478,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
  
      /**
       * Whether Chrome is set as the default browser.
-@@ -1042,6 +1044,7 @@ public final class ChromePreferenceKeys {
+@@ -1049,6 +1051,7 @@ public final class ChromePreferenceKeys {
                  AUTOFILL_ASSISTANT_PROACTIVE_HELP,
                  APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
                  APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@@ -1518,7 +1517,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
-@@ -414,6 +414,9 @@ static_library("common") {
+@@ -415,6 +415,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",

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

@@ -124,8 +124,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 @@ -94,6 +94,9 @@ public class PrivacySettings
- 
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
+     private IncognitoLockSettings mIncognitoLockSettings;
  
 +    private ChromeSwitchPreference allowCustomTabIntentsPref;
 +    private ChromeSwitchPreference openExternalLinksPref;
@@ -133,8 +133,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          PrivacyPreferencesManagerImpl privacyPrefManager =
-@@ -232,6 +235,9 @@ public class PrivacySettings
-         incognitoReauthPreference.setChecked(lastPrefValue);
+@@ -206,6 +209,9 @@ public class PrivacySettings
+         updatePreferences();
      }
  
 +    public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
@@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
          String key = preference.getKey();
-@@ -266,6 +272,14 @@ public class PrivacySettings
+@@ -237,6 +243,14 @@ public class PrivacySettings
          } else if (PREF_INCOGNITO_TAB_HISTORY_ENABLED.equals(key)) {
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue);
@@ -156,9 +156,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +            sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
 +            sharedPreferencesEditor.apply();
          }
- 
          return true;
-@@ -301,6 +315,16 @@ public class PrivacySettings
+     }
+@@ -271,6 +285,16 @@ public class PrivacySettings
              canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
@@ -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
-@@ -4609,6 +4609,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4622,6 +4622,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

@@ -14,7 +14,7 @@ Corrected Exit functionality
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -150,6 +150,9 @@
+@@ -147,6 +147,9 @@
              android:icon="@drawable/gm_filled_cardboard_24" />
          <item android:id="@+id/managed_by_menu_id"
              android:title="@string/managed" />
@@ -24,7 +24,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
      </group>
  
      <!-- Items shown only in the tab switcher -->
-@@ -176,6 +179,9 @@
+@@ -173,6 +176,9 @@
          <item android:id="@id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
@@ -46,7 +46,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.
-@@ -2032,6 +2034,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2022,6 +2024,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          } else if (id == R.id.close_tab) {
              getCurrentTabModel().closeTab(currentTab, true, false, true);
              RecordUserAction.record("MobileTabClosed");
@@ -66,7 +66,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;
-@@ -2316,6 +2317,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2346,6 +2347,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -97,7 +97,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
-@@ -3223,6 +3223,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3222,6 +3222,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

@@ -15,7 +15,7 @@ and internal chrome:// pages will be used for the autocomplete results.
 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
-@@ -459,6 +459,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
+@@ -474,6 +474,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
       base::size(kReaderModeOfferInSettings), nullptr}};
  #endif  // OS_ANDROID
  
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #if defined(OS_ANDROID)
  const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = {
      {"mode", "always-none"}};
-@@ -4913,6 +4929,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5008,6 +5024,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
  #endif  // !defined(OS_ANDROID)
  

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

@@ -14,7 +14,7 @@ Subject: Add flag for save-data-header
 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
-@@ -4652,6 +4652,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4735,6 +4735,9 @@ const FeatureEntry kFeatureEntries[] = {
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
  #if defined(OS_ANDROID)
@@ -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
-@@ -1111,6 +1111,10 @@ const char kDisableKeepaliveFetchDescription[] =
+@@ -1096,6 +1096,10 @@ const char kDisableKeepaliveFetchDescription[] =
      "Disable fetch with keepalive set "
      "(https://fetch.spec.whatwg.org/#request-keepalive-flag).";
  
@@ -41,7 +41,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
-@@ -605,6 +605,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
+@@ -596,6 +596,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
  extern const char kDisableKeepaliveFetchName[];
  extern const char kDisableKeepaliveFetchDescription[];
  
@@ -70,7 +70,7 @@ diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/cont
 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
-@@ -141,6 +141,10 @@ const base::FeatureParam<std::string>
+@@ -134,6 +134,10 @@ const base::FeatureParam<std::string>
                                                 "DisabledProviders", ""};
  
  // Disable special treatment on requests with keepalive set (see
@@ -84,7 +84,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
-@@ -54,6 +54,8 @@ extern const base::FeatureParam<std::string>
+@@ -52,6 +52,8 @@ extern const base::FeatureParam<std::string>
  COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kDisableKeepaliveFetch;
  

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

@@ -19,7 +19,7 @@ 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
-@@ -849,6 +849,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -862,6 +862,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  // 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 ==
-@@ -3918,6 +3923,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3988,6 +3993,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidPictureInPictureAPIName,
       flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
@@ -44,9 +44,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
-@@ -1626,6 +1626,10 @@ const char kMediaHistoryDescription[] =
-     "Enables Media History which records data around media playbacks on "
-     "websites.";
+@@ -1585,6 +1585,10 @@ const char kLogJsConsoleMessagesDescription[] =
+     "Enable logging JS console messages in system logs, please note that they "
+     "may contain PII.";
  
 +const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
 +const char kMaxConnectionsPerHostDescription[] =
@@ -58,9 +58,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
-@@ -933,6 +933,9 @@ extern const char kLogJsConsoleMessagesDescription[];
- extern const char kMediaHistoryName[];
- extern const char kMediaHistoryDescription[];
+@@ -909,6 +909,9 @@ extern const char kLiteVideoForceOverrideDecisionDescription[];
+ extern const char kLogJsConsoleMessagesName[];
+ extern const char kLogJsConsoleMessagesDescription[];
  
 +extern const char kMaxConnectionsPerHostName[];
 +extern const char kMaxConnectionsPerHostDescription[];
@@ -110,7 +110,7 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
 diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 --- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 +++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
-@@ -73,6 +73,7 @@ executable("make_top_domain_list_variables") {
+@@ -89,6 +89,7 @@ executable("make_top_domain_list_variables") {
      "//base:i18n",
      "//components/url_formatter/spoof_checks/common_words:common",
      "//third_party/icu",

+ 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
-@@ -2801,6 +2801,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2830,6 +2830,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
-@@ -1196,6 +1196,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
+@@ -1185,6 +1185,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
-@@ -673,6 +673,9 @@ extern const char kEnablePortalsDescription[];
+@@ -664,6 +664,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
-@@ -282,11 +282,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -283,11 +283,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

+ 5 - 5
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
-@@ -4892,6 +4892,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4987,6 +4987,11 @@ const FeatureEntry kFeatureEntries[] = {
  #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
          // defined(OS_CHROMEOS)
  
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3124,6 +3124,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -3083,6 +3083,10 @@ const char kContextualSearchRankerQueryDescription[] =
  
  const char kContextualSearchSecondTapName[] =
      "Contextual Search second tap triggering";
@@ -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
-@@ -736,6 +736,9 @@ extern const char kEnableWasmLazyCompilationName[];
+@@ -727,6 +727,9 @@ extern const char kEnableWasmLazyCompilationName[];
  extern const char kEnableWasmLazyCompilationDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -88,7 +88,7 @@ diff --git a/components/subresource_filter/tools/BUILD.gn b/components/subresour
 diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 --- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 +++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
-@@ -73,7 +73,8 @@ executable("make_top_domain_list_variables") {
+@@ -89,7 +89,8 @@ executable("make_top_domain_list_variables") {
      "//base:i18n",
      "//components/url_formatter/spoof_checks/common_words:common",
      "//third_party/icu",
@@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
-@@ -3695,8 +3696,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3697,8 +3698,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {

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

@@ -11,7 +11,7 @@ Subject: Add flag to disable WebGL
 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
-@@ -2736,6 +2736,9 @@ const FeatureEntry::FeatureVariation kWin11StyleMenusVariations[] = {
+@@ -2771,6 +2771,9 @@ const FeatureEntry::FeatureVariation kWin11StyleMenusVariations[] = {
  // When adding a new choice, add it to the end of the list.
  const FeatureEntry kFeatureEntries[] = {
  // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and
@@ -24,10 +24,10 @@ 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
-@@ -690,6 +690,10 @@ const char kEnableAudioFocusEnforcementName[] = "Audio Focus Enforcement";
- const char kEnableAudioFocusEnforcementDescription[] =
-     "Enables enforcement of a single media session having audio focus at "
-     "any one time. Requires #enable-media-session-service to be enabled too.";
+@@ -678,6 +678,10 @@ const char kDocumentTransitionSlowdownFactorName[] =
+ const char kDocumentTransitionSlowdownFactorDescription[] =
+     "Slows down animations triggered by documentTransition JavaScript API for "
+     "debugging.";
 +const char kDisableWebGLName[] = "WebGL";
 +
 +const char kDisableWebGLDescription[] = "Enable or disable all versions of WebGL";
@@ -38,7 +38,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
-@@ -380,6 +380,9 @@ extern const char kForceColorProfileSRGB[];
+@@ -377,6 +377,9 @@ extern const char kForceColorProfileSRGB[];
  extern const char kForceColorProfileP3[];
  extern const char kForceColorProfileColorSpin[];
  extern const char kForceColorProfileSCRGBLinear[];

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

@@ -11,7 +11,7 @@ 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
-@@ -2790,6 +2790,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2825,6 +2825,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebrtcCaptureMultiChannelApmName,
       flag_descriptions::kWebrtcCaptureMultiChannelApmDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kWebRtcEnableCaptureMultiChannelApm)},
@@ -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
-@@ -3378,6 +3378,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
+@@ -3349,6 +3349,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support";
  const char kPhotoPickerVideoSupportDescription[] =
      "Enables video files to be shown in the Photo Picker dialog";
  
@@ -40,7 +40,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
-@@ -1948,6 +1948,9 @@ extern const char kQueryTilesNTPDescription[];
+@@ -1939,6 +1939,9 @@ extern const char kQueryTilesNTPDescription[];
  extern const char kQueryTilesOmniboxName[];
  extern const char kQueryTilesOmniboxDescription[];
  extern const char kQueryTilesSingleTierName[];

+ 8 - 8
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
-@@ -6354,6 +6354,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6361,6 +6361,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
-@@ -5283,6 +5283,9 @@ const char kDefaultCalculatorWebAppDescription[] =
+@@ -5267,6 +5267,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
-@@ -3054,6 +3054,9 @@ extern const char kDefaultCalculatorWebAppName[];
+@@ -3053,6 +3053,9 @@ extern const char kDefaultCalculatorWebAppName[];
  extern const char kDefaultCalculatorWebAppDescription[];
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
  
@@ -58,7 +58,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
-@@ -102,6 +102,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -103,6 +103,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
  #if defined(OS_ANDROID)
    if (command_line.HasSwitch(switches::kDisableMediaSessionAPI))
      WebRuntimeFeatures::EnableMediaSession(false);
@@ -69,7 +69,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_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
-@@ -102,7 +102,11 @@ const base::Feature kBackForwardCacheMemoryControls {
+@@ -113,7 +113,11 @@ const base::Feature kBackForwardCacheMemoryControls {
  #endif
  };
  
@@ -84,8 +84,8 @@ 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
-@@ -274,6 +274,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
- CONTENT_EXPORT extern const base::Feature kWebNfc;
+@@ -288,6 +288,8 @@ extern const char kBigLittleSchedulingGpuMainBigParam[];
+ 
  #endif  // defined(OS_ANDROID)
  
 +CONTENT_EXPORT extern const base::Feature kVibration;
@@ -141,7 +141,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
-@@ -1577,6 +1577,10 @@
+@@ -1595,6 +1595,10 @@
        name: "OrientationEvent",
        status: {"Android": "stable"},
      },

+ 27 - 28
build/patches/Add-history-support-in-incognito-mode.patch

@@ -56,7 +56,7 @@ See also: https://github.com/bromite/bromite/pull/1427
 diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni
 --- a/chrome/android/chrome_junit_test_java_sources.gni
 +++ b/chrome/android/chrome_junit_test_java_sources.gni
-@@ -226,3 +226,7 @@ chrome_junit_test_java_sources = [
+@@ -227,3 +227,7 @@ chrome_junit_test_java_sources = [
    "junit/src/org/chromium/chrome/browser/webapps/WebappLauncherActivityTest.java",
    "junit/src/org/chromium/chrome/browser/webapps/WebappRegistryTest.java",
  ]
@@ -68,7 +68,7 @@ diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/
 diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
 --- a/chrome/android/chrome_test_java_sources.gni
 +++ b/chrome/android/chrome_test_java_sources.gni
-@@ -653,3 +653,9 @@ chrome_test_java_sources = [
+@@ -660,3 +660,9 @@ chrome_test_java_sources = [
  if (enable_feed_v2) {
    chrome_test_java_sources += [ "javatests/src/org/chromium/chrome/browser/ntp/NewTabPageColorWithFeedV2Test.java" ]
  }
@@ -96,7 +96,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -92,6 +92,10 @@ import java.util.ArrayList;
+@@ -94,6 +94,10 @@ import java.util.ArrayList;
  import java.util.List;
  import java.util.Map;
  
@@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
   * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu
   * items based on activity state.
 @@ -153,6 +157,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
-     protected BookmarkBridge mBookmarkBridge;
+     private @StartSurfaceState int mStartSurfaceState;
      protected Runnable mAppMenuInvalidator;
  
 +    private PrefService sPrefServiceForTest;
@@ -121,7 +121,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
      /**
       * Construct a new {@link AppMenuPropertiesDelegateImpl}.
       * @param context The activity context.
-@@ -539,7 +550,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -516,7 +527,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -131,7 +131,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
              final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id);
              if (newTabOption != null)
                  newTabOption.setVisible(false);
-@@ -601,7 +613,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -578,7 +590,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
              }
  
              if (item.getItemId() == R.id.recent_tabs_menu_id) {
@@ -148,7 +148,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
              }
              if (item.getItemId() == R.id.menu_group_tabs) {
                  item.setVisible(isMenuGroupTabsVisible);
-@@ -811,7 +831,10 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -804,7 +824,10 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          //                is not persisted when adding to the homescreen.
          // * If creating shortcuts it not supported by the current home screen.
          return WebappsUtils.isAddToHomeIntentSupported() && !isChromeScheme && !isFileScheme
@@ -277,7 +277,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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
-@@ -87,15 +87,15 @@ public class RecentTabsManager implements SignInStateObserver,
+@@ -75,15 +75,15 @@ public class RecentTabsManager implements SignInStateObserver,
       */
      public RecentTabsManager(
              Tab tab, Profile profile, Context context, Runnable showHistoryManager) {
@@ -308,7 +308,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -149,6 +150,11 @@ public class PrivacySettings
+@@ -152,6 +153,11 @@ public class PrivacySettings
          Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
          secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
  
@@ -320,15 +320,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          updatePreferences();
      }
  
-@@ -203,11 +209,16 @@ public class PrivacySettings
-         } else if (PREF_INCOGNITO_LOCK.equals(key)) {
+@@ -174,10 +180,15 @@ public class PrivacySettings
+         } else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
              UserPrefs.get(Profile.getLastUsedRegularProfile())
-                     .setBoolean(Pref.INCOGNITO_REAUTHENTICATION_FOR_ANDROID, (boolean) newValue);
+                     .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue);
 +        } else if (PREF_INCOGNITO_TAB_HISTORY_ENABLED.equals(key)) {
 +            UserPrefs.get(Profile.getLastUsedRegularProfile())
 +                    .setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue);
          }
- 
          return true;
      }
  
@@ -337,7 +336,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onResume() {
          super.onResume();
-@@ -249,6 +260,13 @@ public class PrivacySettings
+@@ -219,6 +230,13 @@ public class PrivacySettings
          closeTabsOnExitPref.setOnPreferenceChangeListener(this);
          closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
@@ -348,7 +347,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +                    prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
 +        }
 +
-         updateIncognitoReauthPreference();
+         mIncognitoLockSettings.updateIncognitoReauthPreferenceIfNeeded(getActivity());
      }
  
 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
@@ -1277,7 +1276,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
  #else
  #include "chrome/browser/ui/browser.h"
  #include "chrome/browser/ui/browser_finder.h"
-@@ -352,6 +355,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
+@@ -357,6 +360,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
  history::HistoryService* HistoryTabHelper::GetHistoryService() {
    Profile* profile =
        Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -1291,7 +1290,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
    if (profile->IsOffTheRecord())
      return NULL;
  
-@@ -359,6 +369,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
+@@ -364,6 +374,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
        profile, ServiceAccessType::IMPLICIT_ACCESS);
  }
  
@@ -1328,7 +1327,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
   private:
    explicit HistoryTabHelper(content::WebContents* web_contents);
    friend class content::WebContentsUserData<HistoryTabHelper>;
-@@ -68,9 +75,6 @@ class HistoryTabHelper : public content::WebContentsObserver,
+@@ -70,9 +77,6 @@ class HistoryTabHelper : public content::WebContentsObserver,
                             bool started_from_context_menu,
                             bool renderer_initiated) override;
  
@@ -1571,7 +1570,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
-@@ -216,6 +216,8 @@
+@@ -214,6 +214,8 @@
  #endif
  
  #if defined(OS_ANDROID)
@@ -1580,18 +1579,18 @@ 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"
-@@ -1259,6 +1261,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1276,6 +1278,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    variations::VariationsService::RegisterProfilePrefs(registry);
    video_tutorials::RegisterPrefs(registry);
    feed::prefs::RegisterFeedSharedProfilePrefs(registry);
 +  HistoryTabHelper::RegisterProfilePrefs(registry);
    feed::RegisterProfilePrefs(registry);
- #else  // defined(OS_ANDROID)
+ #else   // defined(OS_ANDROID)
    AppShortcutManager::RegisterProfilePrefs(registry);
 diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn
 --- a/chrome/browser/ui/android/native_page/BUILD.gn
 +++ b/chrome/browser/ui/android/native_page/BUILD.gn
-@@ -31,8 +31,10 @@ java_library("junit") {
+@@ -32,8 +32,10 @@ java_library("junit") {
  
    deps = [
      ":java",
@@ -1669,7 +1668,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
-@@ -955,6 +955,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -961,6 +961,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_UI_RELAUNCH_NOTICE" desc="Summary for always incognito mode">
          Your changes will take effect the next time you relaunch Bromite.
        </message>
@@ -1685,7 +1684,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
-@@ -3276,6 +3276,11 @@ const char kShowCaretBrowsingDialog[] =
+@@ -3298,6 +3298,11 @@ const char kShowCaretBrowsingDialog[] =
  const char kLacrosLaunchSwitch[] = "lacros_launch_switch";
  #endif
  
@@ -1700,9 +1699,9 @@ 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
-@@ -1201,6 +1201,10 @@ extern const char kLastWhatsNewVersion[];
- extern const char kLensRegionSearchEnabled[];
- #endif
+@@ -1206,6 +1206,10 @@ extern const char kPrivacyReviewShowWelcomeCard[];
+ 
+ extern const char kCorsNonWildcardRequestHeadersSupport[];
  
 +#if defined(OS_ANDROID)
 +extern const char kIncognitoTabHistoryEnabled[];
@@ -1714,7 +1713,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -4818,6 +4818,11 @@ test("unit_tests") {
+@@ -4872,6 +4872,11 @@ test("unit_tests") {
      ]
    }
  

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

@@ -40,7 +40,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
          <item android:id="@+id/recent_tabs_menu_id"
              android:title="@string/menu_recent_tabs"
              android:icon="@drawable/devices_black_24dp" />
-@@ -173,6 +177,9 @@
+@@ -170,6 +174,9 @@
          <item android:id="@+id/menu_group_tabs"
              android:title="@string/menu_group_tabs"
              android:icon="@drawable/ic_widgets" />
@@ -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;
-@@ -2044,6 +2046,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2034,6 +2036,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              // Close both incognito and normal tabs
              getTabModelSelector().closeAllTabs();
              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
              getTabModelSelector().getModel(true).closeAllTabs();
-@@ -2093,6 +2097,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2083,6 +2087,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          mTabModalHandler.onOmniboxFocusChanged(hasFocus);
      }
  
@@ -111,9 +111,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.base.ObserverList;
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.annotations.CalledByNative;
-@@ -36,6 +37,10 @@ import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
- import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkMeta;
+@@ -38,6 +39,10 @@ import org.chromium.chrome.browser.power_bookmarks.PowerBookmarkType;
  import org.chromium.chrome.browser.profiles.Profile;
+ import org.chromium.chrome.browser.read_later.ReadingListUtils;
  import org.chromium.chrome.browser.tab.Tab;
 +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
 +import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -122,7 +122,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkType;
  import org.chromium.components.url_formatter.SchemeDisplay;
-@@ -76,6 +81,7 @@ import java.io.File;
+@@ -78,6 +83,7 @@ import java.io.File;
   * bookmark model stored in native.
   */
  public class BookmarkBridge {
@@ -130,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private final Profile mProfile;
      private boolean mIsDoingExtensiveChanges;
      private long mNativeBookmarkBridge;
-@@ -557,6 +563,16 @@ public class BookmarkBridge {
+@@ -567,6 +573,16 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this);
      }
  
@@ -147,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @return Id representing the special "other" folder from bookmark model.
       */
-@@ -1178,6 +1194,49 @@ public class BookmarkBridge {
+@@ -1210,6 +1226,49 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, title, url);
      }
  
@@ -197,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @param url The URL of the reading list item.
       * @return The reading list item with the URL, or null if no such reading list item.
-@@ -1434,6 +1493,7 @@ public class BookmarkBridge {
+@@ -1467,6 +1526,7 @@ public class BookmarkBridge {
          void getAllFoldersWithDepths(long nativeBookmarkBridge, BookmarkBridge caller,
                  List<BookmarkId> folderList, List<Integer> depthList);
          BookmarkId getRootFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
@@ -208,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
-@@ -595,6 +595,7 @@ public class BookmarkUtils {
+@@ -633,6 +633,7 @@ public class BookmarkUtils {
          List<BookmarkId> topLevelFolders = new ArrayList<>();
          BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId();
          BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId();
@@ -216,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          BookmarkId othersNodeId = bookmarkModel.getOtherFolderId();
  
          List<BookmarkId> specialFoldersIds =
-@@ -620,6 +621,9 @@ public class BookmarkUtils {
+@@ -658,6 +659,9 @@ public class BookmarkUtils {
          if (bookmarkModel.isFolderVisible(mobileNodeId)) {
              topLevelFolders.add(mobileNodeId);
          }
@@ -241,7 +241,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
      for (const auto& node : bookmark_model_->bookmark_bar_node()->children()) {
        if (node->is_folder())
          top_level_folders.push_back(node.get());
-@@ -466,6 +471,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
+@@ -476,6 +481,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
    // Vector to temporarily contain all child bookmarks at same level for sorting
    std::vector<const BookmarkNode*> bookmarks = {
        bookmark_model_->mobile_node(),
@@ -249,7 +249,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
        bookmark_model_->bookmark_bar_node(),
        bookmark_model_->other_node(),
    };
-@@ -520,6 +526,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
+@@ -530,6 +536,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
    return folder_id_obj;
  }
  
@@ -270,7 +270,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.h
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
-@@ -114,6 +114,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -118,6 +118,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
        JNIEnv* env,
        const base::android::JavaParamRef<jobject>& obj);
  
@@ -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
-@@ -3306,6 +3306,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3305,6 +3305,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>

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

@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -103,6 +103,9 @@
+@@ -100,6 +100,9 @@
          <item android:id="@+id/add_to_homescreen_id"
              android:title="@string/menu_add_to_homescreen"
              android:icon="@drawable/ic_add_to_home_screen" />
@@ -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
-@@ -2067,6 +2067,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2057,6 +2057,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -53,7 +53,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
-@@ -2451,6 +2451,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2488,6 +2488,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return true;
          }
  
@@ -68,7 +68,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -511,6 +511,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -493,6 +493,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
                          isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme);
@@ -76,8 +76,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  
          updateAutoDarkMenuItem(menu, currentTab, isChromeScheme);
  
-@@ -1027,6 +1028,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
-         }
+@@ -1074,6 +1075,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+         readingListMenuItemEdit.setVisible(readingListItemExists);
      }
  
 +    /**

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

@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
 diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
 +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
-@@ -516,6 +516,7 @@ public final class ChromePreferenceKeys {
+@@ -510,6 +510,7 @@ public final class ChromePreferenceKeys {
      public static final String FONT_USER_SET_FORCE_ENABLE_ZOOM = "user_set_force_enable_zoom";
  
      public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
@@ -89,7 +89,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
 diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
 +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
-@@ -355,7 +355,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
+@@ -352,7 +352,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
      // OmniboxSuggestionsDropdownEmbedder implementation
      @Override
      public boolean isTablet() {
@@ -101,7 +101,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
-@@ -1228,6 +1228,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1261,6 +1261,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM" desc="Message for Safe Browsing no protection confirmation button.">
          Turn off
        </message>
@@ -143,7 +143,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
-@@ -555,7 +555,7 @@ test("components_unittests") {
+@@ -561,7 +561,7 @@ test("components_unittests") {
  
    # On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
    # On other platforms, no components should depend on Chrome.
@@ -152,7 +152,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
      assert_no_deps = [ "//chrome/*" ]
    }
  
-@@ -804,7 +804,7 @@ if (!is_ios) {
+@@ -817,7 +817,7 @@ if (!is_ios) {
  
      # On LaCrOS, tests use ash - chrome as a window manager, thus the dependency.
      # On other platforms, no components should depend on Chrome.
@@ -164,7 +164,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
 diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
 --- a/ui/android/BUILD.gn
 +++ b/ui/android/BUILD.gn
-@@ -359,6 +359,8 @@ android_library("ui_no_recycler_view_java") {
+@@ -358,6 +358,8 @@ android_library("ui_no_recycler_view_java") {
      ":ui_java_resources",
      ":ui_utils_java",
      "//base:base_java",

+ 7 - 7
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
-@@ -1185,8 +1185,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1175,8 +1175,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -59,16 +59,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -63,6 +66,8 @@ public class PrivacySettings
+@@ -62,6 +65,8 @@ public class PrivacySettings
      private static final String PREF_PRIVACY_REVIEW = "privacy_review";
      private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
  
 +    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
 +
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
+     private IncognitoLockSettings mIncognitoLockSettings;
  
-     @Override
-@@ -178,7 +183,11 @@ public class PrivacySettings
+@@ -152,7 +157,11 @@ public class PrivacySettings
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
          String key = preference.getKey();
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
-@@ -234,6 +243,11 @@ public class PrivacySettings
+@@ -204,6 +213,11 @@ public class PrivacySettings
                      PrivacySandboxSettingsFragment.getStatusString(getContext()));
          }
  
@@ -90,13 +90,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +        closeTabsOnExitPref.setOnPreferenceChangeListener(this);
 +        closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
 +
-         updateIncognitoReauthPreference();
+         mIncognitoLockSettings.updateIncognitoReauthPreferenceIfNeeded(getActivity());
      }
  
 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
-@@ -4126,6 +4126,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4139,6 +4139,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>

+ 3 - 3
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
-@@ -524,6 +524,7 @@ public final class ChromePreferenceKeys {
+@@ -518,6 +518,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
-@@ -1004,6 +1004,9 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1010,6 +1010,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>
@@ -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
-@@ -356,6 +356,7 @@ extern const char kExternalStorageReadOnly[];
+@@ -362,6 +362,7 @@ extern const char kExternalStorageReadOnly[];
  extern const char kSettingsShowOSBanner[];
  #endif  // defined(OS_CHROMEOS)
  extern const char kShowHomeButton[];

+ 20 - 19
build/patches/Allow-building-without-enable_reporting.patch

@@ -6,7 +6,7 @@ Subject: Allow building without enable_reporting
  content/browser/BUILD.gn                       |  8 ++++----
  .../devtools/protocol/network_handler.cc       |  2 ++
  .../devtools/protocol/network_handler.h        |  2 ++
- .../cross_origin_embedder_policy_reporter.cc   |  2 ++
+ .../cross_origin_embedder_policy_reporter.cc   |  3 ++-
  .../net/cross_origin_opener_policy_reporter.cc | 16 +++++++---------
  .../renderer_host/render_frame_host_impl.cc    |  2 ++
  .../web_package/signed_exchange_reporter.cc    |  2 ++
@@ -20,12 +20,12 @@ Subject: Allow building without enable_reporting
  .../blink/renderer/core/frame/local_frame.h    |  6 +++---
  .../renderer/core/frame/reporting_context.cc   |  9 +++++++++
  .../renderer/core/frame/reporting_context.h    |  7 +++++--
- 17 files changed, 56 insertions(+), 46 deletions(-)
+ 17 files changed, 56 insertions(+), 47 deletions(-)
 
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -1275,6 +1275,10 @@ source_set("browser") {
+@@ -1219,6 +1219,10 @@ source_set("browser") {
      "net/browser_online_state_observer.cc",
      "net/browser_online_state_observer.h",
      "net/cookie_store_factory.cc",
@@ -36,7 +36,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
      "net/network_errors_listing_ui.cc",
      "net/network_errors_listing_ui.h",
      "net/network_quality_observer_impl.cc",
-@@ -3035,10 +3039,6 @@ source_set("browser") {
+@@ -2984,10 +2988,6 @@ source_set("browser") {
  
    if (enable_reporting) {
      sources += [
@@ -91,10 +91,11 @@ diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.cc b/cont
      base::DictionaryValue body_to_pass;
      for (const auto& pair : body) {
        body_to_pass.SetString(pair.first, pair.second);
-@@ -122,6 +123,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
-         kType, *endpoint, context_url_, reporting_source_,
-         network_isolation_key_,
-         /*user_agent=*/absl::nullopt, std::move(body_to_pass));
+@@ -123,7 +124,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
+           kType, *endpoint, context_url_, reporting_source_,
+           network_isolation_key_,
+           /*user_agent=*/absl::nullopt, std::move(body_to_pass));
+-    }
 +#endif
    }
  }
@@ -179,7 +180,7 @@ diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/conten
 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
-@@ -10649,6 +10649,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed(
+@@ -10812,6 +10812,7 @@ void RenderFrameHostImpl::OnSameDocumentCommitProcessed(
  void RenderFrameHostImpl::MaybeGenerateCrashReport(
      base::TerminationStatus status,
      int exit_code) {
@@ -187,7 +188,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b
    if (!last_committed_url_.SchemeIsHTTPOrHTTPS())
      return;
  
-@@ -10698,6 +10699,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
+@@ -10861,6 +10862,7 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
        /*type=*/"crash", /*group=*/"default", last_committed_url_,
        GetReportingSource(), isolation_info_.network_isolation_key(),
        absl::nullopt /* user_agent */, std::move(body));
@@ -225,7 +226,7 @@ diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
  #include "third_party/blink/public/common/features.h"
-@@ -40,9 +41,11 @@ GetSwitchDependentFeatureOverrides(const base::CommandLine& command_line) {
+@@ -36,9 +37,11 @@ GetSwitchDependentFeatureOverrides(const base::CommandLine& command_line) {
        {switches::kEnableExperimentalWebPlatformFeatures,
         std::cref(features::kDocumentPolicyNegotiation),
         base::FeatureList::OVERRIDE_ENABLE_FEATURE},
@@ -240,7 +241,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
-@@ -206,6 +206,12 @@ class ReportingServiceImpl : public ReportingService {
+@@ -207,6 +207,12 @@ class ReportingServiceImpl : public ReportingService {
        std::unique_ptr<const base::Value> body,
        int depth,
        base::TimeTicks queued_ticks) {
@@ -256,7 +257,7 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic
 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
-@@ -1121,25 +1121,9 @@ void NetworkContext::SetDocumentReportingEndpoints(
+@@ -1126,25 +1126,9 @@ void NetworkContext::SetDocumentReportingEndpoints(
  
  void NetworkContext::SendReportsAndRemoveSource(
      const base::UnguessableToken& reporting_source) {
@@ -286,7 +287,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
 diff --git a/services/network/network_context.h b/services/network/network_context.h
 --- a/services/network/network_context.h
 +++ b/services/network/network_context.h
-@@ -418,17 +418,6 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
+@@ -420,17 +420,6 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
        const base::flat_map<std::string, std::string>& endpoints) override;
    void SendReportsAndRemoveSource(
        const base::UnguessableToken& reporting_source) override;
@@ -307,7 +308,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
-@@ -916,6 +916,9 @@ mojom("mojom") {
+@@ -941,6 +941,9 @@ mojom("mojom") {
      export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
      export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
      export_header_blink = "third_party/blink/public/platform/web_common.h"
@@ -320,7 +321,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo
 diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
 --- a/services/network/public/mojom/network_context.mojom
 +++ b/services/network/public/mojom/network_context.mojom
-@@ -986,6 +986,7 @@ interface NetworkContext {
+@@ -990,6 +990,7 @@ interface NetworkContext {
    // provided |network_isolation_key|.
    //
    // Spec: https://w3c.github.io/reporting/#concept-reports
@@ -328,7 +329,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
    QueueReport(string type,
                string group,
                url.mojom.Url url,
-@@ -999,6 +1000,7 @@ interface NetworkContext {
+@@ -1003,6 +1004,7 @@ interface NetworkContext {
    // Note that this queued report will never be delivered if no reporting
    // endpoint matching is registered for with the provided
    // |network_isolation_key|.
@@ -347,7 +348,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"
-@@ -2302,9 +2303,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
+@@ -2323,9 +2324,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
    return base::UnguessableToken::Null();
  }
  
@@ -373,7 +374,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"
-@@ -545,9 +545,9 @@ class CORE_EXPORT LocalFrame final : public Frame,
+@@ -547,9 +547,9 @@ class CORE_EXPORT LocalFrame final : public Frame,
    }
  
    SmoothScrollSequencer& GetSmoothScrollSequencer();

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

@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  
  import org.chromium.base.CallbackController;
  import org.chromium.base.CommandLine;
-@@ -2044,8 +2045,23 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2034,8 +2035,23 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              ApplicationLifetime.terminate(false);
          } else if (id == R.id.close_all_tabs_menu_id) {
              // Close both incognito and normal tabs
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 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
-@@ -3297,6 +3297,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3296,6 +3296,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_CLOSE_ALL_TABS" desc="Menu item for closing all open tabs. [CHAR_LIMIT=27]">
          Close all tabs
        </message>

文件差异内容过多而无法显示
+ 0 - 34131
build/patches/Automated-domain-substitution.patch


+ 3 - 3
build/patches/Battery-API-return-nothing.patch

@@ -19,13 +19,13 @@ diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/thi
  }
  
  double BatteryManager::chargingTime() {
--  return battery_status_.charging_time();
+-  return battery_status_.charging_time().InSecondsF();
 +  return 0.0;
  }
  
  double BatteryManager::dischargingTime() {
--  return battery_status_.discharging_time();
-+  return std::numeric_limits<double>::infinity();
+-  return battery_status_.discharging_time().InSecondsF();
++  return std::numeric_limits<double>::infinity().InSecondsF();
  }
  
  double BatteryManager::level() {

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

@@ -104,7 +104,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur
 diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
 --- a/content/browser/child_process_security_policy_impl.cc
 +++ b/content/browser/child_process_security_policy_impl.cc
-@@ -861,6 +861,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
+@@ -853,6 +853,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
  #endif  // BUILDFLAG(ENABLE_WEBSOCKETS)
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kDataScheme);
@@ -115,7 +115,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
-@@ -1039,6 +1039,8 @@ component("net") {
+@@ -1041,6 +1041,8 @@ component("net") {
      "url_request/url_request_http_job.cc",
      "url_request/url_request_http_job.h",
      "url_request/url_request_interceptor.cc",
@@ -209,7 +209,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
  
  using base::Time;
  using std::string;
-@@ -595,6 +597,12 @@ URLRequest::URLRequest(const GURL& url,
+@@ -594,6 +596,12 @@ URLRequest::URLRequest(const GURL& url,
    // Sanity check out environment.
    DCHECK(base::ThreadTaskRunnerHandle::IsSet());
  
@@ -245,10 +245,10 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
 diff --git a/url/url_constants.cc b/url/url_constants.cc
 --- a/url/url_constants.cc
 +++ b/url/url_constants.cc
-@@ -29,6 +29,7 @@ const char kMailToScheme[] = "mailto";
- const char kQuicTransportScheme[] = "quic-transport";
+@@ -30,6 +30,7 @@ const char kQuicTransportScheme[] = "quic-transport";
  const char kTelScheme[] = "tel";
  const char kUrnScheme[] = "urn";
+ const char kUuidInPackageScheme[] = "uuid-in-package";
 +const char kTraceScheme[] = "trk";
  const char kWsScheme[] = "ws";
  const char kWssScheme[] = "wss";
@@ -256,10 +256,10 @@ diff --git a/url/url_constants.cc b/url/url_constants.cc
 diff --git a/url/url_constants.h b/url/url_constants.h
 --- a/url/url_constants.h
 +++ b/url/url_constants.h
-@@ -33,6 +33,7 @@ COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
- COMPONENT_EXPORT(URL) extern const char kQuicTransportScheme[];
+@@ -34,6 +34,7 @@ COMPONENT_EXPORT(URL) extern const char kQuicTransportScheme[];
  COMPONENT_EXPORT(URL) extern const char kTelScheme[];
  COMPONENT_EXPORT(URL) extern const char kUrnScheme[];
+ COMPONENT_EXPORT(URL) extern const char kUuidInPackageScheme[];
 +COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
  COMPONENT_EXPORT(URL) extern const char kWsScheme[];
  COMPONENT_EXPORT(URL) extern const char kWssScheme[];

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

@@ -59,7 +59,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
-@@ -557,6 +557,7 @@ chrome_java_resources = [
+@@ -556,6 +556,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",
@@ -67,7 +67,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",
-@@ -774,6 +775,7 @@ chrome_java_resources = [
+@@ -769,6 +770,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -78,7 +78,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
-@@ -986,6 +986,8 @@ chrome_java_sources = [
+@@ -974,6 +974,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",
@@ -422,7 +422,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -11012,6 +11012,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -11029,6 +11029,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -442,16 +442,16 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
 diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
 --- a/chrome/browser/after_startup_task_utils.cc
 +++ b/chrome/browser/after_startup_task_utils.cc
-@@ -26,6 +26,8 @@
- #include "ui/views/linux_ui/linux_ui.h"
- #endif
+@@ -30,6 +30,8 @@
+ #include "chromeos/lacros/lacros_service.h"
+ #endif  // BUILDFLAG(IS_CHROMEOS_LACROS)
  
 +#include "chrome/browser/browser_process.h"
 +
  using content::BrowserThread;
  
  namespace {
-@@ -121,6 +123,9 @@ void SetBrowserStartupIsComplete() {
+@@ -125,6 +127,9 @@ void SetBrowserStartupIsComplete() {
    g_after_startup_tasks.Get().clear();
    g_after_startup_tasks.Get().shrink_to_fit();
  
@@ -494,7 +494,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
-@@ -1075,6 +1075,26 @@ BrowserProcessImpl::component_updater() {
+@@ -1076,6 +1076,26 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -543,7 +543,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
-@@ -1653,6 +1653,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1655,6 +1655,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
      speech::SodaInstaller::GetInstance()->Init(profile_->GetPrefs(),
                                                 browser_process_->local_state());
  #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
@@ -619,7 +619,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
-@@ -267,6 +267,14 @@ public class CachedFeatureFlags {
+@@ -268,6 +268,14 @@ public class CachedFeatureFlags {
                  ChromeFeatureList.isEnabled(ChromeFeatureList.BACKGROUND_THREAD_POOL));
      }
  
@@ -634,7 +634,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.
       */
-@@ -472,5 +480,7 @@ public class CachedFeatureFlags {
+@@ -485,5 +493,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -645,7 +645,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
-@@ -351,6 +351,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -338,6 +338,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -654,7 +654,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #if !defined(OS_ANDROID)
    // QuicAllowed was not part of Android policy.
    const base::Value* value =
-@@ -421,6 +423,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -408,6 +410,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -704,7 +704,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
-@@ -2221,6 +2221,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2246,6 +2246,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -1496,7 +1496,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
-@@ -651,6 +651,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -652,6 +652,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1677,7 +1677,7 @@ diff --git a/components/subresource_filter/content/browser/verified_ruleset_deal
 +#include "base/logging.h"
  #include "base/metrics/histogram_macros.h"
  #include "base/notreached.h"
- #include "base/task_runner_util.h"
+ #include "base/task/task_runner_util.h"
 @@ -39,6 +40,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
    TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
                 "VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",

+ 17 - 104
build/patches/Bromite-auto-updater.patch

@@ -10,21 +10,17 @@ Enable checking for new versions, with notifications and proxy support
  .../java/res/xml/about_chrome_preferences.xml |   5 +
  .../about_settings/AboutChromeSettings.java   |  28 ++-
  .../chrome/browser/omaha/OmahaBase.java       |  47 +++-
- .../chrome/browser/omaha/UpdateConfigs.java   |   6 +-
- .../browser/omaha/UpdateStatusProvider.java   |  33 ++-
+ .../browser/omaha/UpdateStatusProvider.java   |  30 ++-
  .../browser/omaha/VersionNumberGetter.java    |   3 +-
  .../inline/BromiteInlineUpdateController.java | 204 ++++++++++++++++++
- .../inline/InlineUpdateControllerFactory.java |   8 +-
  chrome/browser/endpoint_fetcher/BUILD.gn      |   2 +
  .../endpoint_fetcher/endpoint_fetcher.cc      | 129 +++++++++++
  .../endpoint_fetcher/endpoint_fetcher.h       |  23 +-
  .../endpoint_fetcher/EndpointFetcher.java     |  11 +
  .../EndpointHeaderResponse.java               |  31 +++
- chrome/browser/flag-metadata.json             |   2 +-
- chrome/browser/flag_descriptions.cc           |   5 +-
  .../flags/android/chrome_feature_list.cc      |   2 +-
  .../strings/android_chrome_strings.grd        |   8 +-
- 20 files changed, 516 insertions(+), 37 deletions(-)
+ 16 files changed, 504 insertions(+), 25 deletions(-)
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
  create mode 100644 chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java
 
@@ -41,7 +37,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
-@@ -1970,6 +1970,9 @@ if (enable_java_templates) {
+@@ -1975,6 +1975,9 @@ if (enable_java_templates) {
            ]
          }
        }
@@ -54,12 +50,12 @@ 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
-@@ -892,6 +892,7 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java",
-   "java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java",
-   "java/src/org/chromium/chrome/browser/omaha/inline/NoopInlineUpdateController.java",
+@@ -878,6 +878,7 @@ 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",
 +  "java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java",
-   "java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java",
+   "java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java",
    "java/src/org/chromium/chrome/browser/omaha/metrics/HistogramUtils.java",
    "java/src/org/chromium/chrome/browser/omaha/metrics/TrackingProvider.java",
 diff --git a/chrome/android/java/res/xml/about_chrome_preferences.xml b/chrome/android/java/res/xml/about_chrome_preferences.xml
@@ -210,38 +206,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase
 +        OmahaBase.updateLastPushedTimeStamp(0);
 +    }
  }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
-@@ -65,7 +65,7 @@ public class UpdateConfigs {
-     private static final String UPDATE_NOTIFICATION_EXPERIMENTAL_PARAM_NAME =
-             "update_notification_experimental_context";
- 
--    private static final long DEFAULT_UPDATE_NOTIFICATION_INTERVAL = 21 * DateUtils.DAY_IN_MILLIS;
-+    private static final long DEFAULT_UPDATE_NOTIFICATION_INTERVAL = 3 * DateUtils.DAY_IN_MILLIS;
-     private static final long DEFAULT_UPDATE_ATTRIBUTION_WINDOW_MS = 2 * DateUtils.DAY_IN_MILLIS;
- 
-     /** Possible update flow configurations. */
-@@ -300,7 +300,7 @@ public class UpdateConfigs {
-      * @return the current inline update flow configuration.
-      */
-     @UpdateFlowConfiguration
--    static int getConfiguration() {
-+    public static int getConfiguration() {
-         if (!ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
-             // Always use the the old flow if the inline update flow feature is not enabled.
-             return UpdateFlowConfiguration.INTENT_ONLY;
-@@ -328,4 +328,4 @@ public class UpdateConfigs {
-         if (configuration == null) return "";
-         return configuration.toLowerCase(Locale.US);
-     }
--}
-\ No newline at end of file
-+}
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
-@@ -45,6 +45,12 @@ import java.io.File;
+@@ -36,6 +36,12 @@ import java.io.File;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  
@@ -254,17 +222,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
  /**
   * Provides the current update state for Chrome.  This update state is asynchronously determined and
   * can change as Chrome runs.
-@@ -339,8 +345,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
-             case UpdateConfigs.UpdateFlowConfiguration.NEVER_SHOW:
-                 return UpdateState.NONE;
-             case UpdateConfigs.UpdateFlowConfiguration.INLINE_ONLY:
--                if (omahaState != UpdateState.UPDATE_AVAILABLE) return omahaState;
--                if (inlineState == UpdateState.NONE) return UpdateState.NONE;
-+                if (inlineState == UpdateState.NONE) return omahaState;
-                 return inlineState;
-             case UpdateConfigs.UpdateFlowConfiguration.BEST_EFFORT:
-                 if (omahaState != UpdateState.UPDATE_AVAILABLE) return omahaState;
-@@ -415,24 +420,12 @@ public class UpdateStatusProvider implements ActivityStateListener {
+@@ -287,24 +293,12 @@ public class UpdateStatusProvider {
          private UpdateStatus getRealStatus(Context context) {
              UpdateStatus status = new UpdateStatus();
  
@@ -517,23 +475,6 @@ new file mode 100644
 +        PostTask.postTask(UiThreadTaskTraits.DEFAULT, mCallback);
 +    }
 +}
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
-@@ -19,8 +19,10 @@ public class InlineUpdateControllerFactory {
-         @FakeAppUpdateManagerWrapper.Type
-         int mockInlineEndState = UpdateConfigs.getMockInlineScenarioEndState();
- 
--        // No test scenario was in place, and the inline flow has not been enabled, so use a
--        // controller with no functionality.
--        return new NoopInlineUpdateController(callback);
-+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
-+            return new BromiteInlineUpdateController(callback);
-+        } else {
-+            return new NoopInlineUpdateController(callback);
-+        }
-     }
- }
 diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn
 --- a/chrome/browser/endpoint_fetcher/BUILD.gn
 +++ b/chrome/browser/endpoint_fetcher/BUILD.gn
@@ -859,50 +800,22 @@ new file mode 100644
 +        return new EndpointHeaderResponse(response, redirectUrl);
 +    }
 +}
-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
-@@ -2079,7 +2079,7 @@
-   {
-     "name": "enable-inline-update-flow",
-     "owners": [ "nyquist", "dtrainor" ],
--    "expiry_milestone": 83
-+    "expiry_milestone": -1
-   },
-   {
-     "name": "enable-input-event-logging",
-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
-@@ -3697,10 +3697,9 @@ const char kVoiceButtonInTopToolbarDescription[] =
-     "Enables showing the voice search button in the top toolbar. Enabling "
-     "Adaptive Button overrides this.";
- 
--const char kInlineUpdateFlowName[] = "Enable Google Play inline update flow";
-+const char kInlineUpdateFlowName[] = "Enable inline update flow";
- const char kInlineUpdateFlowDescription[] =
--    "When this flag is set, instead of taking the user to the Google Play "
--    "Store when an update is available, the user is presented with an inline "
-+    "When this flag is set, the user is presented with an inline "
-     "flow where they do not have to leave Chrome until the update is ready "
-     "to install.";
- 
 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
-@@ -644,7 +644,7 @@ const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -649,7 +649,7 @@ const base::Feature kIncognitoReauthenticationForAndroid{
+     "IncognitoReauthenticationForAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  
- const base::Feature kInlineUpdateFlow{"InlineUpdateFlow",
--                                      base::FEATURE_DISABLED_BY_DEFAULT};
-+                                      base::FEATURE_ENABLED_BY_DEFAULT};
+ const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
+-                                         base::FEATURE_DISABLED_BY_DEFAULT};
++                                         base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kInstantStart{"InstantStart",
                                    base::FEATURE_DISABLED_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
-@@ -1698,6 +1698,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1731,6 +1731,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>
@@ -915,7 +828,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]">
-@@ -3214,7 +3220,7 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3228,7 +3234,7 @@ 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]">

+ 1 - 1
build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch

@@ -12,7 +12,7 @@ See also: https://github.com/bromite/bromite/issues/553
 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
-@@ -657,12 +657,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -796,12 +796,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
            port_config.enable_nonproxied_udp = false;
            break;
          case DEFAULT:

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

@@ -10,7 +10,7 @@ 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
-@@ -622,7 +622,7 @@ const base::Feature kEnhancedProtectionPromoCard{
+@@ -630,7 +630,7 @@ const base::Feature kEnhancedProtectionPromoCard{
      "EnhancedProtectionPromoCard", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kExperimentsForAgsa{"ExperimentsForAgsa",

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

@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/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
-@@ -1287,6 +1287,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1320,6 +1320,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR_LIMIT=32]">
          Accessibility
        </message>
@@ -42,7 +42,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
-@@ -774,6 +774,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
+@@ -775,6 +775,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProvider
              structure.setChildCount(0);
              return;
          }

+ 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
-@@ -655,7 +655,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -670,7 +670,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",

+ 8 - 8
build/patches/Disable-FLoC.patch

@@ -29,7 +29,7 @@ Also added the disabling of blink features through the DisabledForBromite tag
 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
-@@ -2773,6 +2773,10 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
+@@ -2771,6 +2771,10 @@ bool ChromeContentBrowserClient::IsConversionMeasurementOperationAllowed(
      const url::Origin* impression_origin,
      const url::Origin* conversion_origin,
      const url::Origin* reporting_origin) {
@@ -153,7 +153,7 @@ diff --git a/chrome/browser/federated_learning/floc_eligibility_observer.cc b/ch
 -  observed_opt_in_signal_ = true;
  }
  
- RENDER_DOCUMENT_HOST_USER_DATA_KEY_IMPL(FlocEligibilityObserver);
+ DOCUMENT_USER_DATA_KEY_IMPL(FlocEligibilityObserver);
 diff --git a/chrome/browser/federated_learning/floc_id_provider_impl.cc b/chrome/browser/federated_learning/floc_id_provider_impl.cc
 --- a/chrome/browser/federated_learning/floc_id_provider_impl.cc
 +++ b/chrome/browser/federated_learning/floc_id_provider_impl.cc
@@ -362,7 +362,7 @@ diff --git a/components/history/core/browser/url_row.h b/components/history/core
 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
-@@ -883,11 +883,11 @@ const base::Feature kSendCnameAliasesToSubresourceFilterFromRenderer{
+@@ -888,11 +888,11 @@ const base::Feature kSendCnameAliasesToSubresourceFilterFromRenderer{
  // API exposure will be disabled regardless of the OT config.
  // (See https://github.com/WICG/floc.)
  const base::Feature kInterestCohortAPIOriginTrial{
@@ -414,7 +414,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
  #include "third_party/blink/renderer/bindings/core/v8/v8_union_elementcreationoptions_string.h"
  #include "third_party/blink/renderer/bindings/core/v8/v8_union_htmlscriptelement_svgscriptelement.h"
-@@ -5998,8 +5997,7 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
+@@ -5968,8 +5967,7 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
      return ScriptPromise();
    }
  
@@ -424,7 +424,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
      exception_state.ThrowDOMException(
          DOMExceptionCode::kInvalidAccessError,
          "The \"interest-cohort\" Permissions Policy denied the use of "
-@@ -6011,33 +6009,6 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
+@@ -5981,33 +5979,6 @@ ScriptPromise Document::interestCohort(ScriptState* script_state,
        MakeGarbageCollected<ScriptPromiseResolver>(script_state);
  
    ScriptPromise promise = resolver->Promise();
@@ -494,12 +494,12 @@ diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_poli
 -      depends_on: ["InterestCohortFeaturePolicy"],
 -    },
      {
-       name: "Magnetometer",
-       permissions_policy_name: "magnetometer",
+       name: "KeyboardMap",
+       permissions_policy_name: "keyboard-map",
 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
-@@ -1225,12 +1225,11 @@
+@@ -1235,12 +1235,11 @@
      },
      {
        name: "InterestCohortAPI",

+ 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
-@@ -847,7 +847,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -856,7 +856,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;
              }
-@@ -882,8 +882,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -891,8 +891,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

+ 19 - 18
build/patches/Disable-conversion-measurement-api.patch

@@ -20,12 +20,12 @@ being sent and being saved to disk, although it is currently in uncalled code.
  .../attribution_network_sender_impl.cc          | 17 ++++++++++-------
  .../attribution_storage_sql.cc                  |  2 +-
  .../navigation_controller_android.cc            | 16 ----------------
- content/browser/storage_partition_impl.cc       |  7 +------
+ content/browser/storage_partition_impl.cc       |  8 +-------
  .../browser/AttributionReporterImpl.java        |  4 ----
  content/public/browser/navigation_controller.cc |  1 -
  third_party/blink/common/features.cc            |  2 +-
  .../platform/runtime_enabled_features.json5     | 13 +++++++++----
- 17 files changed, 32 insertions(+), 82 deletions(-)
+ 17 files changed, 32 insertions(+), 83 deletions(-)
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
@@ -67,7 +67,7 @@ diff --git a/chrome/browser/attribution_reporting/android/internal/java/src/org/
 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
-@@ -426,7 +426,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
+@@ -431,7 +431,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
                                               base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kAppToWebAttribution{"AppToWebAttribution",
@@ -93,7 +93,7 @@ diff --git a/components/embedder_support/origin_trials/features.cc b/components/
 diff --git a/components/renderer_context_menu/render_view_context_menu_base.cc b/components/renderer_context_menu/render_view_context_menu_base.cc
 --- a/components/renderer_context_menu/render_view_context_menu_base.cc
 +++ b/components/renderer_context_menu/render_view_context_menu_base.cc
-@@ -484,9 +484,6 @@ void RenderViewContextMenuBase::OpenURLWithExtraHeaders(
+@@ -485,9 +485,6 @@ void RenderViewContextMenuBase::OpenURLWithExtraHeaders(
  
    open_url_params.source_site_instance = site_instance_;
  
@@ -126,7 +126,7 @@ diff --git a/content/browser/android/navigation_handle_proxy.cc b/content/browse
 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
-@@ -417,14 +417,6 @@ void AttributionHost::BindReceiver(
+@@ -418,14 +418,6 @@ void AttributionHost::BindReceiver(
    conversion_host->receivers_.Bind(rfh, std::move(receiver));
  }
  
@@ -166,7 +166,7 @@ diff --git a/content/browser/attribution_reporting/attribution_host_utils.cc b/c
  namespace content {
  
  namespace attribution_host_utils {
-@@ -79,6 +81,10 @@ absl::optional<blink::Impression> ParseImpressionFromApp(
+@@ -81,6 +83,10 @@ absl::optional<blink::Impression> ParseImpressionFromApp(
    // Java API should have rejected these already.
    DCHECK(!source_event_id.empty() && !destination.empty());
  
@@ -180,7 +180,7 @@ diff --git a/content/browser/attribution_reporting/attribution_host_utils.cc b/c
 diff --git a/content/browser/attribution_reporting/attribution_network_sender_impl.cc b/content/browser/attribution_reporting/attribution_network_sender_impl.cc
 --- a/content/browser/attribution_reporting/attribution_network_sender_impl.cc
 +++ b/content/browser/attribution_reporting/attribution_network_sender_impl.cc
-@@ -146,13 +146,9 @@ void AttributionNetworkSenderImpl::SendReport(
+@@ -143,13 +143,9 @@ void AttributionNetworkSenderImpl::SendReport(
  
    LogMetricsOnReportSend(report);
  
@@ -197,7 +197,7 @@ diff --git a/content/browser/attribution_reporting/attribution_network_sender_im
  }
  
  void AttributionNetworkSenderImpl::SetURLLoaderFactoryForTesting(
-@@ -165,6 +161,13 @@ void AttributionNetworkSenderImpl::OnReportSent(
+@@ -162,6 +158,13 @@ void AttributionNetworkSenderImpl::OnReportSent(
      AttributionReport report,
      ReportSentCallback sent_callback,
      scoped_refptr<net::HttpResponseHeaders> headers) {
@@ -214,7 +214,7 @@ diff --git a/content/browser/attribution_reporting/attribution_network_sender_im
 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
-@@ -239,7 +239,7 @@ void AttributionStorageSql::RunInMemoryForTesting() {
+@@ -237,7 +237,7 @@ void AttributionStorageSql::RunInMemoryForTesting() {
  }
  
  // static
@@ -252,20 +252,21 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/co
 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
-@@ -1299,12 +1299,7 @@ void StoragePartitionImpl::Initialize(
+@@ -1292,13 +1292,7 @@ void StoragePartitionImpl::Initialize(
    bucket_context_ = base::MakeRefCounted<BucketContext>();
    bucket_context_->Initialize();
  
 -  // The Conversion Measurement API is not available in Incognito mode.
 -  if (!is_in_memory() &&
 -      base::FeatureList::IsEnabled(blink::features::kConversionMeasurement)) {
--    conversion_manager_ = std::make_unique<ConversionManagerImpl>(
+-    attribution_manager_ = std::make_unique<AttributionManagerImpl>(
 -        this, path, special_storage_policy_);
 -  }
+-
 +  // The Conversion Measurement API is not available in Bromite.
- 
    if (base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) {
      interest_group_manager_ = std::make_unique<InterestGroupManager>(
+         path, is_in_memory(), GetURLLoaderFactoryForBrowserProcess());
 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
@@ -278,12 +279,12 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
      }
  
      /**
-@@ -32,8 +30,6 @@ public class AttributionReporterImpl extends AttributionReporter {
-     @Override
+@@ -33,8 +31,6 @@ public class AttributionReporterImpl extends AttributionReporter {
      public void reportAppImpression(BrowserContextHandle browserContext, String sourcePackageName,
-             String sourceEventId, String destination, String reportTo, long expiry) {
--        AttributionReporterImplJni.get().reportAppImpression(
--                browserContext, sourcePackageName, sourceEventId, destination, reportTo, expiry);
+             String sourceEventId, String destination, String reportTo, long expiry,
+             long eventTime) {
+-        AttributionReporterImplJni.get().reportAppImpression(browserContext, sourcePackageName,
+-                sourceEventId, destination, reportTo, expiry, eventTime);
      }
  
      @NativeMethods
@@ -301,7 +302,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
-@@ -37,7 +37,7 @@ const base::Feature kCSSContainerQueries{"CSSContainerQueries",
+@@ -42,7 +42,7 @@ const base::Feature kCSSContainerQueries{"CSSContainerQueries",
  
  // Controls whether the Conversion Measurement API infrastructure is enabled.
  const base::Feature kConversionMeasurement{"ConversionMeasurement",

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

@@ -3,15 +3,15 @@ Date: Thu, 19 Dec 2019 22:52:53 +0100
 Subject: Disable feeds support by default
 
 ---
- .../chromium/chrome/browser/feed/shared/FeedFeatures.java | 8 +-------
+ .../org/chromium/chrome/browser/feed/FeedFeatures.java    | 8 +-------
  .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +-
  components/feed/feed_feature_list.cc                      | 4 ++--
  3 files changed, 4 insertions(+), 10 deletions(-)
 
-diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java
---- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java
-+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/shared/FeedFeatures.java
-@@ -35,13 +35,7 @@ public final class FeedFeatures {
+diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
+--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
++++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java
+@@ -43,13 +43,7 @@ public final class FeedFeatures {
       *         the user is signed in and confirms it's not a child profile.
       */
      public static boolean isWebFeedUIEnabled() {

+ 7 - 7
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
-@@ -186,6 +186,8 @@ ChromeMetricsServicesManagerClient::GetMetricsStateManagerForTesting() {
+@@ -188,6 +188,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
-@@ -189,6 +189,9 @@ UkmRecorderImpl::~UkmRecorderImpl() = default;
+@@ -181,6 +181,9 @@ UkmRecorderImpl::~UkmRecorderImpl() = default;
  void UkmRecorderImpl::CreateFallbackSamplingTrial(
      bool is_stable_channel,
      base::FeatureList* feature_list) {
@@ -160,7 +160,7 @@ diff --git a/components/variations/net/variations_http_headers.cc b/components/v
 diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
 --- a/components/variations/service/variations_field_trial_creator.cc
 +++ b/components/variations/service/variations_field_trial_creator.cc
-@@ -271,8 +271,8 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -250,8 +250,8 @@ bool VariationsFieldTrialCreator::SetUpFieldTrials(
    // instance is set.
    feature_list->RegisterExtraFeatureOverrides(extra_overrides);
  
@@ -170,7 +170,7 @@ diff --git a/components/variations/service/variations_field_trial_creator.cc b/c
    if (!command_line->HasSwitch(switches::kDisableFieldTrialTestingConfig) &&
        !command_line->HasSwitch(::switches::kForceFieldTrials) &&
        !command_line->HasSwitch(switches::kVariationsServerURL)) {
-@@ -286,10 +286,12 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -265,10 +265,12 @@ bool VariationsFieldTrialCreator::SetUpFieldTrials(
    }
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
    bool used_seed = false;
@@ -181,12 +181,12 @@ diff --git a/components/variations/service/variations_field_trial_creator.cc b/c
    }
 +#endif  // BUILDFLAG(FIELDTRIAL_SEED_ENABLED)
  
-   platform_field_trials->SetupFeatureControllingFieldTrials(
+   platform_field_trials->SetUpFeatureControllingFieldTrials(
        used_seed, low_entropy_provider.get(), feature_list.get());
 diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 --- a/components/variations/service/variations_service.cc
 +++ b/components/variations/service/variations_service.cc
-@@ -238,17 +238,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -234,17 +234,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
  // Variations seed fetching is only enabled in official Chrome builds, if a URL
  // is specified on the command line, and for testing.
  bool IsFetchingEnabled() {
@@ -206,7 +206,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
  }
  
  std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
-@@ -608,7 +599,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
+@@ -602,7 +593,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
    // debugger or if the machine was suspended) and OnURLFetchComplete() hasn't
    // had a chance to run yet from the previous request. In this case, don't
    // start a new request and just let the previous one finish.

+ 1 - 1
build/patches/Disable-metrics-on-all-I-O-threads.patch

@@ -9,7 +9,7 @@ Subject: Disable metrics on all I/O threads
 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
-@@ -989,7 +989,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -990,7 +990,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,

+ 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
-@@ -1871,10 +1871,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
+@@ -1892,10 +1892,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
  }
  
  PluginData* LocalFrame::GetPluginData() const {

+ 2 - 2
build/patches/Disable-privacy-sandbox.patch

@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -73,7 +73,6 @@ public class PrivacySettings
+@@ -72,7 +72,6 @@ public class PrivacySettings
      private static final String PREF_SECURE_DNS = "secure_dns";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
@@ -53,7 +53,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          Preference privacyReviewPreference = findPreference(PREF_PRIVACY_REVIEW);
          if (!ChromeFeatureList.isEnabled(ChromeFeatureList.PRIVACY_REVIEW)) {
              getPreferenceScreen().removePreference(privacyReviewPreference);
-@@ -337,12 +324,6 @@ public class PrivacySettings
+@@ -307,12 +294,6 @@ public class PrivacySettings
              secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext()));
          }
  

+ 1 - 1
build/patches/Disable-references-to-fonts.googleapis.com.patch

@@ -12,7 +12,7 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -300,7 +300,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -298,7 +298,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
  std::string DomDistillerViewerSource::GetContentSecurityPolicy(
      network::mojom::CSPDirectiveName directive) {
    if (directive == network::mojom::CSPDirectiveName::StyleSrc) {

+ 118 - 117
build/patches/Disable-safe-browsing.patch

@@ -61,12 +61,12 @@ Disable CrowdDeny feature
  .../download_protection_service.h             |  5 --
  .../url_lookup_service_factory.cc             |  4 ++
  .../safety_check/SafetyCheckMediator.java     | 13 ----
- .../java/res/layout/fre_uma_dialog.xml        | 11 ---
- .../ui/fre/FreUMADialogCoordinator.java       |  3 -
  .../ssl/sct_reporting_service_factory.cc      | 11 +--
  .../browser/ssl/security_state_tab_helper.cc  | 10 +--
  ...urce_filter_web_contents_helper_factory.cc |  4 ++
  chrome/browser/ui/BUILD.gn                    |  2 -
+ .../signin/java/res/layout/fre_uma_dialog.xml | 11 ---
+ .../signin/fre/FreUMADialogCoordinator.java   |  4 --
  .../strings/android_chrome_strings.grd        |  9 ---
  chrome/browser/ui/tab_helpers.cc              | 17 ++---
  .../ui/webui/interstitials/interstitial_ui.cc | 12 ++--
@@ -88,7 +88,7 @@ Disable CrowdDeny feature
  .../file_system_access_permission_context.h   |  6 --
  weblayer/BUILD.gn                             |  1 -
  weblayer/test/BUILD.gn                        |  1 -
- 82 files changed, 180 insertions(+), 673 deletions(-)
+ 82 files changed, 180 insertions(+), 674 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrome/android/java/res/xml/google_services_preferences.xml
 --- a/chrome/android/java/res/xml/google_services_preferences.xml
@@ -187,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/promo
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -26,14 +26,11 @@ import org.chromium.chrome.browser.privacy_review.PrivacyReviewDialog;
+@@ -25,14 +25,11 @@ import org.chromium.chrome.browser.privacy_review.PrivacyReviewDialog;
  import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxReferrer;
  import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragment;
  import org.chromium.chrome.browser.profiles.Profile;
@@ -202,7 +202,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
  import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
  import org.chromium.components.browser_ui.settings.SettingsLauncher;
-@@ -53,9 +50,7 @@ public class PrivacySettings
+@@ -52,9 +49,7 @@ public class PrivacySettings
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
      private static final String PREF_SECURE_DNS = "secure_dns";
@@ -212,9 +212,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
-@@ -96,15 +91,6 @@ public class PrivacySettings
- 
-         setUpIncognitoReauthPreference();
+@@ -99,15 +94,6 @@ public class PrivacySettings
+         mIncognitoLockSettings = new IncognitoLockSettings(incognitoReauthPreference);
+         mIncognitoLockSettings.setUpIncognitoReauthPreference(getActivity());
  
 -        Preference safeBrowsingPreference = findPreference(PREF_SAFE_BROWSING);
 -        safeBrowsingPreference.setSummary(
@@ -228,7 +228,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          setHasOptionsMenu(true);
  
          mManagedPreferenceDelegate = createManagedPreferenceDelegate();
-@@ -241,32 +227,6 @@ public class PrivacySettings
+@@ -211,32 +197,6 @@ public class PrivacySettings
              secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext()));
          }
  
@@ -315,7 +315,7 @@ diff --git a/chrome/app/android/chrome_main_delegate_android.cc b/chrome/app/and
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -314,16 +314,12 @@ static_library("browser") {
+@@ -311,16 +311,12 @@ static_library("browser") {
      "component_updater/chrome_component_updater_configurator.h",
      "component_updater/chrome_origin_trials_component_installer.cc",
      "component_updater/chrome_origin_trials_component_installer.h",
@@ -332,7 +332,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "component_updater/first_party_sets_component_installer.cc",
      "component_updater/first_party_sets_component_installer.h",
      "component_updater/floc_component_installer.cc",
-@@ -1118,8 +1114,6 @@ static_library("browser") {
+@@ -1117,8 +1113,6 @@ static_library("browser") {
      "permissions/adaptive_quiet_notification_permission_ui_enabler.h",
      "permissions/chrome_permissions_client.cc",
      "permissions/chrome_permissions_client.h",
@@ -341,7 +341,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "permissions/crowd_deny_preload_data.cc",
      "permissions/crowd_deny_preload_data.h",
      "permissions/crowd_deny_safe_browsing_request.cc",
-@@ -1454,15 +1448,6 @@ static_library("browser") {
+@@ -1459,15 +1453,6 @@ static_library("browser") {
      "renderer_host/chrome_navigation_ui_data.h",
      "renderer_preferences_util.cc",
      "renderer_preferences_util.h",
@@ -357,7 +357,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "resource_coordinator/resource_coordinator_parts.cc",
      "resource_coordinator/resource_coordinator_parts.h",
      "resource_coordinator/session_restore_policy.cc",
-@@ -2189,11 +2174,8 @@ static_library("browser") {
+@@ -2202,11 +2187,8 @@ static_library("browser") {
      "//components/reporting/util:status_macros",
      "//components/reporting/util:status_proto",
      "//components/reporting/util:task_runner_context",
@@ -369,7 +369,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "//components/safe_browsing/content/browser:safe_browsing_service",
      "//components/safe_browsing/content/browser/password_protection",
      "//components/safe_browsing/content/browser/web_ui",
-@@ -3248,12 +3230,6 @@ static_library("browser") {
+@@ -3271,12 +3253,6 @@ static_library("browser") {
        "profiles/profile_manager_android.cc",
        "profiles/profile_manager_android.h",
        "query_tiles/android/tile_provider_factory.cc",
@@ -382,7 +382,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "safe_browsing/android/password_reuse_controller_android.cc",
        "safe_browsing/android/password_reuse_controller_android.h",
        "safe_browsing/android/safe_browsing_referring_app_bridge_android.cc",
-@@ -3704,8 +3680,6 @@ static_library("browser") {
+@@ -3738,8 +3714,6 @@ static_library("browser") {
        "download/download_commands.h",
        "download/download_crx_util.cc",
        "download/download_crx_util.h",
@@ -391,7 +391,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "download/download_dir_policy_handler.cc",
        "download/download_dir_policy_handler.h",
        "download/download_dir_util.cc",
-@@ -7369,8 +7343,6 @@ static_library("test_support") {
+@@ -7466,8 +7440,6 @@ static_library("test_support") {
      "//components/reporting/util:status_macros",
      "//components/reporting/util:status_proto",
      "//components/reporting/util:task_runner_context",
@@ -403,15 +403,15 @@ 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
-@@ -2203,7 +2203,7 @@ const FeatureEntry::FeatureParam
-         {QuietNotificationPermissionUiConfig::kEnableAbusiveRequestWarning,
-          "true"},
-         {QuietNotificationPermissionUiConfig::kEnableCrowdDenyTriggering,
--         "true"},
-+         "false"},
-         {QuietNotificationPermissionUiConfig::kCrowdDenyHoldBackChance, "0"}};
- 
- // The default "Enabled" option has the semantics of showing the quiet UI
+@@ -616,7 +616,7 @@ const FeatureEntry::FeatureParam kCloseTabSuggestionsTimeSiteEngagement[] = {
+     {"close_tab_features_time_last_used_enabled", "true"},
+     {"close_tab_features_time_last_used_transform", "MEAN_VARIANCE"},
+     {"close_tab_features_time_last_used_threshold", "0.5"},
+-    {"close_tab_features_site_engagement_enabled", "true"},
++    {"close_tab_features_site_engagement_enabled", "false"},
+     {"close_tab_features_site_engagement_threshold", "90.0"},
+ };
+ const FeatureEntry::FeatureParam kGroupAndCloseTabSuggestions_Immediate[] = {
 diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrome/browser/android/tab_web_contents_delegate_android.cc
 --- a/chrome/browser/android/tab_web_contents_delegate_android.cc
 +++ b/chrome/browser/android/tab_web_contents_delegate_android.cc
@@ -435,7 +435,7 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom
  #include "components/security_state/content/content_utils.h"
  #include "content/public/browser/file_select_listener.h"
  #include "content/public/browser/navigation_entry.h"
-@@ -155,8 +159,10 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
+@@ -154,8 +158,10 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
      content::WebContents* portal_contents) {
    WebContentsDelegateAndroid::PortalWebContentsCreated(portal_contents);
  
@@ -446,7 +446,7 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom
  
    // This is a subset of the tab helpers that would be attached by
    // TabAndroid::AttachTabHelpers.
-@@ -178,11 +184,13 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
+@@ -177,11 +183,13 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
    infobars::ContentInfoBarManager::CreateForWebContents(portal_contents);
    PrefsTabHelper::CreateForWebContents(portal_contents);
    DataReductionProxyTabHelper::CreateForWebContents(portal_contents);
@@ -495,7 +495,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
  #include "chrome/browser/shell_integration.h"
  #include "chrome/browser/site_isolation/prefs_observer.h"
  #include "chrome/browser/ssl/secure_origin_prefs_observer.h"
-@@ -110,7 +109,6 @@
+@@ -111,7 +110,6 @@
  #include "components/prefs/json_pref_store.h"
  #include "components/prefs/pref_registry_simple.h"
  #include "components/prefs/pref_service.h"
@@ -503,7 +503,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
  #include "components/sessions/core/session_id_generator.h"
  #include "components/subresource_filter/content/browser/ruleset_service.h"
  #include "components/translate/core/browser/translate_download_manager.h"
-@@ -395,8 +393,6 @@ void BrowserProcessImpl::StartTearDown() {
+@@ -396,8 +394,6 @@ void BrowserProcessImpl::StartTearDown() {
  
    metrics_services_manager_.reset();
    intranet_redirect_detector_.reset();
@@ -512,7 +512,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
    network_time_tracker_.reset();
  #if BUILDFLAG(ENABLE_PLUGINS)
    plugins_resource_service_.reset();
-@@ -1030,14 +1026,6 @@ StatusTray* BrowserProcessImpl::status_tray() {
+@@ -1031,14 +1027,6 @@ StatusTray* BrowserProcessImpl::status_tray() {
    return status_tray_.get();
  }
  
@@ -527,7 +527,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
  subresource_filter::RulesetService*
  BrowserProcessImpl::subresource_filter_ruleset_service() {
    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-@@ -1301,23 +1289,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() {
+@@ -1303,23 +1291,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() {
  }
  
  void BrowserProcessImpl::CreateSafeBrowsingService() {
@@ -605,9 +605,9 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/safe_browsing/url_lookup_service_factory.h"
 +#endif
  #include "chrome/browser/search/search.h"
+ #include "chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.h"
  #include "chrome/browser/sharing/sms/sms_remote_fetcher.h"
- #include "chrome/browser/signin/chrome_signin_proxying_url_loader_factory.h"
-@@ -928,9 +930,7 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
+@@ -936,9 +938,7 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
  class CertificateReportingServiceCertReporter : public SSLCertReporter {
   public:
    explicit CertificateReportingServiceCertReporter(
@@ -618,7 +618,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
    CertificateReportingServiceCertReporter(
        const CertificateReportingServiceCertReporter&) = delete;
-@@ -942,11 +942,9 @@ class CertificateReportingServiceCertReporter : public SSLCertReporter {
+@@ -950,11 +950,9 @@ class CertificateReportingServiceCertReporter : public SSLCertReporter {
    // SSLCertReporter implementation
    void ReportInvalidCertificateChain(
        const std::string& serialized_report) override {
@@ -630,7 +630,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  };
  
  #if BUILDFLAG(ENABLE_EXTENSIONS)
-@@ -1423,7 +1421,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask(
+@@ -1438,7 +1436,9 @@ void ChromeContentBrowserClient::PostAfterStartupTask(
    InitNetworkContextsParentDirectory();
  
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -640,7 +640,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  }
  
  bool ChromeContentBrowserClient::IsBrowserStartupComplete() {
-@@ -2163,7 +2163,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2178,7 +2178,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
    }
  #elif defined(OS_POSIX)
  #if defined(OS_ANDROID)
@@ -649,7 +649,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #else
    bool enable_crash_reporter = false;
    if (crash_reporter::IsCrashpadEnabled()) {
-@@ -2300,6 +2300,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2315,6 +2315,9 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
          command_line->AppendSwitch(
              switches::kSharedArrayBufferUnrestrictedAccessAllowed);
        }
@@ -667,7 +667,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    // g_browser_process->safe_browsing_service() may be null in unittests.
    safe_browsing::SafeBrowsingUIManager* ui_manager =
        g_browser_process->safe_browsing_service()
-@@ -4272,6 +4276,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4273,6 +4277,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
          std::make_unique<safe_browsing::DelayedWarningNavigationThrottle>(
              handle));
    }
@@ -675,7 +675,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
  // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch
  // of lacros-chrome is complete.
-@@ -5670,6 +5675,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5684,6 +5689,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
      const std::vector<std::string>& allowlist_domains) {
    DCHECK_CURRENTLY_ON(BrowserThread::IO);
  
@@ -683,7 +683,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    // Should not bypass safe browsing check if the check is for enterprise
    // lookup.
    if (!safe_browsing_enabled_for_profile && !should_check_on_sb_disabled)
-@@ -5690,6 +5696,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5704,6 +5710,9 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
    }
  
    return safe_browsing_url_checker_delegate_;
@@ -693,7 +693,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  }
  
  safe_browsing::RealTimeUrlLookupServiceBase*
-@@ -5697,24 +5706,28 @@ ChromeContentBrowserClient::GetUrlLookupService(
+@@ -5711,24 +5720,28 @@ ChromeContentBrowserClient::GetUrlLookupService(
      content::BrowserContext* browser_context,
      bool is_enterprise_lookup_enabled,
      bool is_consumer_lookup_enabled) {
@@ -726,7 +726,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
 --- a/chrome/browser/chrome_content_browser_client.h
 +++ b/chrome/browser/chrome_content_browser_client.h
-@@ -843,9 +843,11 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
+@@ -844,9 +844,11 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
    // Parts are deleted in the reverse order they are added.
    std::vector<ChromeContentBrowserClientParts*> extra_parts_;
  
@@ -802,7 +802,7 @@ diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/c
  #include "chrome/browser/component_updater/crl_set_component_installer.h"
  #include "chrome/browser/component_updater/crowd_deny_component_installer.h"
  #include "chrome/browser/component_updater/file_type_policies_component_installer.h"
-@@ -36,7 +35,6 @@
+@@ -35,7 +34,6 @@
  #include "components/component_updater/installer_policies/autofill_states_component_installer.h"
  #include "components/component_updater/installer_policies/on_device_head_suggest_component_installer.h"
  #include "components/component_updater/installer_policies/optimization_hints_component_installer.h"
@@ -810,7 +810,7 @@ diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/c
  #include "components/nacl/common/buildflags.h"
  #include "device/vr/buildflags/buildflags.h"
  #include "ppapi/buildflags/buildflags.h"
-@@ -200,9 +198,6 @@ void RegisterComponentsForUpdate(bool is_off_the_record_profile,
+@@ -188,9 +186,6 @@ void RegisterComponentsForUpdate() {
  
    MaybeRegisterPKIMetadataComponent(cus);
  
@@ -820,7 +820,7 @@ diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/c
  #if BUILDFLAG(IS_CHROMEOS_ASH)
    RegisterSmartDimComponent(cus);
  #endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
-@@ -219,8 +214,6 @@ void RegisterComponentsForUpdate(bool is_off_the_record_profile,
+@@ -207,8 +202,6 @@ void RegisterComponentsForUpdate() {
    RegisterAutofillStatesComponent(cus, g_browser_process->local_state());
  
    RegisterAutofillRegexComponent(cus);
@@ -960,7 +960,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
  void ChromeDownloadManagerDelegate::GetMixedContentStatus(
      download::DownloadItem* download,
-@@ -1535,8 +1524,11 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
+@@ -1545,8 +1534,11 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
        DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
  #endif
  
@@ -972,7 +972,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
    if (ShouldBlockFile(target_info->danger_type, item)) {
      MaybeReportDangerousDownloadBlocked(
          download_prefs_->download_restriction(), "DANGEROUS_FILE_TYPE",
-@@ -1545,6 +1537,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
+@@ -1555,6 +1547,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
      // A dangerous type would take precedence over the blocking of the file.
      target_info->danger_type = download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS;
    }
@@ -980,7 +980,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
    base::FilePath target_path = target_info->target_path;
  
-@@ -1687,7 +1680,6 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
+@@ -1697,7 +1690,6 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
      service->MaybeSendDangerousDownloadOpenedReport(download,
                                                      show_download_in_folder);
    }
@@ -988,7 +988,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
    if (!download->GetAutoOpened()) {
      download::DownloadContent download_content =
          download::DownloadContentFromMimeType(download->GetMimeType(), false);
-@@ -1695,6 +1687,7 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
+@@ -1705,6 +1697,7 @@ void ChromeDownloadManagerDelegate::MaybeSendDangerousDownloadOpenedReport(
          download->GetDangerType(), download_content, base::Time::Now(),
          download->GetEndTime(), show_download_in_folder);
    }
@@ -1176,7 +1176,7 @@ diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download
  
  namespace {
  
-@@ -260,14 +264,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
+@@ -251,14 +255,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
          base::FilePath::StringType(1, base::FilePath::kExtensionSeparator) +
          extension);
  
@@ -1192,7 +1192,7 @@ diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download
    }
  }
  
-@@ -475,10 +472,6 @@ bool DownloadPrefs::IsAutoOpenByPolicy(const GURL& url,
+@@ -466,10 +463,6 @@ bool DownloadPrefs::IsAutoOpenByPolicy(const GURL& url,
  bool DownloadPrefs::EnableAutoOpenByUserBasedOnExtension(
      const base::FilePath& file_name) {
    base::FilePath::StringType extension = file_name.Extension();
@@ -1683,7 +1683,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  #include "chrome/browser/ui/file_system_access_dialogs.h"
  #include "chrome/common/chrome_paths.h"
  #include "components/content_settings/core/browser/host_content_settings_map.h"
-@@ -299,6 +301,7 @@ BindResultCallbackToCurrentSequence(
+@@ -301,6 +303,7 @@ BindResultCallbackToCurrentSequence(
        base::SequencedTaskRunnerHandle::Get(), std::move(callback));
  }
  
@@ -1691,7 +1691,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  void DoSafeBrowsingCheckOnUIThread(
      content::GlobalRenderFrameHostId frame_id,
      std::unique_ptr<content::FileSystemAccessWriteItem> item,
-@@ -375,6 +378,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) {
+@@ -377,6 +380,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) {
    NOTREACHED();
    return ChromeFileSystemAccessPermissionContext::AfterWriteCheckResult::kBlock;
  }
@@ -1699,7 +1699,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  
  std::string GenerateLastPickedDirectoryKey(const std::string& id) {
    return id.empty() ? kDefaultLastPickedDirectoryKey
-@@ -1106,6 +1110,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveDirectoryAccess(
+@@ -1130,6 +1134,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveDirectoryAccess(
                       std::move(callback)));
  }
  
@@ -1707,7 +1707,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss
  void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
      std::unique_ptr<content::FileSystemAccessWriteItem> item,
      content::GlobalRenderFrameHostId frame_id,
-@@ -1127,6 +1132,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
+@@ -1151,6 +1156,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks(
                },
                base::SequencedTaskRunnerHandle::Get(), std::move(callback))));
  }
@@ -1760,7 +1760,7 @@ diff --git a/chrome/browser/lookalikes/lookalike_url_controller_client.cc b/chro
 diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
 +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
-@@ -828,9 +828,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
+@@ -824,9 +824,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
    metrics_service_->RegisterMetricsProvider(
        std::make_unique<HttpsEngagementMetricsProvider>());
  
@@ -1832,7 +1832,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b
  }
  
  #if !defined(OS_ANDROID)
-@@ -1441,6 +1420,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage(
+@@ -1442,6 +1421,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage(
      is_enabled = false;
    }
  
@@ -1840,7 +1840,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b
    // SafeBrowsing Delayed Warnings experiment can delay some SafeBrowsing
    // warnings until user interaction. If the current page has a delayed warning,
    // it'll have a user interaction observer attached. Disable password
-@@ -1451,6 +1431,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage(
+@@ -1452,6 +1432,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage(
      observer->OnPasswordSaveOrAutofillDenied();
      is_enabled = false;
    }
@@ -1922,7 +1922,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
  #include "chrome/browser/search_engines/template_url_fetcher_factory.h"
  #include "chrome/browser/search_engines/template_url_service_factory.h"
  #include "chrome/browser/segmentation_platform/segmentation_platform_service_factory.h"
-@@ -297,7 +296,6 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -298,7 +297,6 @@ void ChromeBrowserMainExtraPartsProfiles::
  #if BUILDFLAG(IS_CHROMEOS_LACROS)
    CertDbInitializerFactory::GetInstance();
  #endif
@@ -1941,7 +1941,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
  #include "chrome/browser/sessions/exit_type_service.h"
  #include "chrome/browser/sharing/sharing_service_factory.h"
  #include "chrome/browser/signin/identity_manager_factory.h"
-@@ -627,6 +626,7 @@ void ProfileImpl::LoadPrefsForNormalStartup(bool async_prefs) {
+@@ -628,6 +627,7 @@ void ProfileImpl::LoadPrefsForNormalStartup(bool async_prefs) {
  
    mojo::PendingRemote<prefs::mojom::TrackedPreferenceValidationDelegate>
        pref_validation_delegate;
@@ -1949,7 +1949,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
    scoped_refptr<safe_browsing::SafeBrowsingService> safe_browsing_service(
        g_browser_process->safe_browsing_service());
    if (safe_browsing_service.get()) {
-@@ -638,7 +638,7 @@ void ProfileImpl::LoadPrefsForNormalStartup(bool async_prefs) {
+@@ -639,7 +639,7 @@ void ProfileImpl::LoadPrefsForNormalStartup(bool async_prefs) {
            pref_validation_delegate.InitWithNewPipeAndPassReceiver());
      }
    }
@@ -1985,7 +1985,7 @@ diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsin
  
    if (safe_browsing_mode != 0) {
      # "Safe Browsing Basic" files used for safe browsing in full mode
-@@ -162,7 +163,6 @@ static_library("safe_browsing") {
+@@ -164,7 +165,6 @@ static_library("safe_browsing") {
        "//components/safe_browsing/content/browser/triggers:ad_sampler_trigger",
        "//components/safe_browsing/content/browser/triggers:suspicious_site_trigger",
        "//components/safe_browsing/content/browser/triggers:trigger_throttler",
@@ -2147,7 +2147,7 @@ diff --git a/chrome/browser/safe_browsing/android/safe_browsing_bridge.cc b/chro
 -  signin::IdentityManager* identity_manager =
 -      IdentityManagerFactory::GetForProfile(
 -          ProfileManager::GetLastUsedProfile());
--  return password_manager::AuthenticatedLeakCheck::HasAccountForRequest(
+-  return password_manager::LeakDetectionCheckImpl::HasAccountForRequest(
 -      identity_manager);
 -}
 -
@@ -2213,7 +2213,7 @@ diff --git a/chrome/browser/safe_browsing/url_lookup_service_factory.cc b/chrome
 diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java
 --- a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java
 +++ b/chrome/browser/safety_check/android/java/src/org/chromium/chrome/browser/safety_check/SafetyCheckMediator.java
-@@ -30,7 +30,6 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerHelper;
+@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerHelper;
  import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
  import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
  import org.chromium.chrome.browser.safe_browsing.metrics.SettingsAccessPoint;
@@ -2221,7 +2221,7 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br
  import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.PasswordsState;
  import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.SafeBrowsingState;
  import org.chromium.chrome.browser.safety_check.SafetyCheckProperties.UpdatesState;
-@@ -177,18 +176,6 @@ class SafetyCheckMediator implements PasswordCheck.Observer {
+@@ -176,18 +175,6 @@ class SafetyCheckMediator implements PasswordCheck.Observer {
          // Set the listener for clicking the Safe Browsing element.
          mModel.set(SafetyCheckProperties.SAFE_BROWSING_CLICK_LISTENER,
                  (Preference.OnPreferenceClickListener) (p) -> {
@@ -2240,40 +2240,6 @@ diff --git a/chrome/browser/safety_check/android/java/src/org/chromium/chrome/br
                      return true;
                  });
          // Set the listener for clicking the passwords element.
-diff --git a/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml b/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
---- a/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
-+++ b/chrome/browser/signin/ui/android/java/res/layout/fre_uma_dialog.xml
-@@ -22,17 +22,6 @@
-             android:text="@string/signin_fre_uma_dialog_title"
-             style="@style/TextAppearance.Headline.Primary" />
- 
--        <Switch
--            android:id="@+id/fre_uma_dialog_switch"
--            android:layout_width="match_parent"
--            android:layout_height="wrap_content"
--            android:layout_marginBottom="12dp"
--            android:text="@string/usage_and_crash_reports_title"
--            android:checked="true"
--            android:gravity="start|center"
--            android:lineSpacingMultiplier="1.2"
--            style="@style/TextAppearance.TextLarge.Primary" />
--
-         <TextView
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
-diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
---- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
-+++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/fre/FreUMADialogCoordinator.java
-@@ -68,9 +68,6 @@ public class FreUMADialogCoordinator {
-                 .setOnClickListener(v
-                         -> mDialogManager.dismissDialog(
-                                 mModel, DialogDismissalCause.ACTION_ON_CONTENT));
--        Switch umaSwitch = view.findViewById(R.id.fre_uma_dialog_switch);
--        umaSwitch.setOnCheckedChangeListener(
--                (compoundButton, isChecked) -> listener.onAllowCrashUploadChecked(isChecked));
-         return view;
-     }
- 
 diff --git a/chrome/browser/ssl/sct_reporting_service_factory.cc b/chrome/browser/ssl/sct_reporting_service_factory.cc
 --- a/chrome/browser/ssl/sct_reporting_service_factory.cc
 +++ b/chrome/browser/ssl/sct_reporting_service_factory.cc
@@ -2313,7 +2279,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/ssl/https_only_mode_tab_helper.h"
  #include "chrome/browser/ssl/known_interception_disclosure_infobar_delegate.h"
-@@ -104,13 +103,8 @@ SecurityStateTabHelper::GetVisibleSecurityState() {
+@@ -103,13 +102,8 @@ SecurityStateTabHelper::GetVisibleSecurityState() {
    // information is still being initialized, thus no need to check for that.
    state->malicious_content_status = GetMaliciousContentStatus();
  
@@ -2327,8 +2293,8 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
 +          security_state::SafetyTipInfo(
                  {security_state::SafetyTipStatus::kUnknown, GURL()});
  
-   // If both the on-form warning and the on-submit warning are enabled for mixed
-@@ -217,6 +211,7 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
+   // If both the mixed form warnings are not disabled by policy we don't degrade
+@@ -210,6 +204,7 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
  
  security_state::MaliciousContentStatus
  SecurityStateTabHelper::GetMaliciousContentStatus() const {
@@ -2336,7 +2302,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
    content::NavigationEntry* entry =
        web_contents()->GetController().GetVisibleEntry();
    if (!entry)
-@@ -300,6 +295,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
+@@ -293,6 +288,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
          break;
      }
    }
@@ -2373,7 +2339,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
      "//components/safe_browsing/content/browser/password_protection",
      "//components/safe_browsing/content/browser/web_ui",
      "//components/safe_browsing/core/browser/db:database_manager",
-@@ -3946,7 +3945,6 @@ static_library("ui") {
+@@ -3957,7 +3956,6 @@ static_library("ui") {
        "views/device_chooser_content_view.h",
        "views/devtools_process_observer.cc",
        "views/devtools_process_observer.h",
@@ -2381,6 +2347,41 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
        "views/download/download_in_progress_dialog_view.cc",
        "views/download/download_in_progress_dialog_view.h",
        "views/download/download_item_view.cc",
+diff --git a/chrome/browser/ui/android/signin/java/res/layout/fre_uma_dialog.xml b/chrome/browser/ui/android/signin/java/res/layout/fre_uma_dialog.xml
+--- a/chrome/browser/ui/android/signin/java/res/layout/fre_uma_dialog.xml
++++ b/chrome/browser/ui/android/signin/java/res/layout/fre_uma_dialog.xml
+@@ -32,17 +32,6 @@
+                 android:text="@string/signin_fre_uma_dialog_title"
+                 style="@style/TextAppearance.Headline.Primary" />
+ 
+-            <Switch
+-                android:id="@+id/fre_uma_dialog_switch"
+-                android:layout_width="match_parent"
+-                android:layout_height="wrap_content"
+-                android:layout_marginBottom="12dp"
+-                android:text="@string/usage_and_crash_reports_title"
+-                android:checked="true"
+-                android:gravity="start|center"
+-                android:lineSpacingMultiplier="1.2"
+-                style="@style/TextAppearance.TextLarge.Primary" />
+-
+             <TextView
+                 android:layout_width="match_parent"
+                 android:layout_height="wrap_content"
+diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/FreUMADialogCoordinator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/FreUMADialogCoordinator.java
+--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/FreUMADialogCoordinator.java
++++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/FreUMADialogCoordinator.java
+@@ -53,10 +53,6 @@ public class FreUMADialogCoordinator {
+         mView.findViewById(R.id.fre_uma_dialog_dismiss_button).setOnClickListener(v -> {
+             mDialogManager.dismissDialog(mModel, DialogDismissalCause.ACTION_ON_CONTENT);
+         });
+-        final Switch umaSwitch = mView.findViewById(R.id.fre_uma_dialog_switch);
+-        umaSwitch.setChecked(allowCrashUpload);
+-        umaSwitch.setOnCheckedChangeListener(
+-                (compoundButton, isChecked) -> listener.onAllowCrashUploadChecked(isChecked));
+ 
+         mDialogManager.showDialog(mModel, ModalDialogType.APP);
+     }
 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
@@ -2397,7 +2398,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
  
        <!-- Metrics settings -->
        <message name="IDS_PREFS_METRICS_SETTINGS" desc="Title for the page that allows the user to control how much usage data Chrome uploads. [CHAR_LIMIT=32]">
-@@ -4536,9 +4530,6 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4549,9 +4543,6 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          To use this setting <ph name="BEGIN_LINK">&lt;link&gt;</ph>Make searches and browsing better<ph name="END_LINK">&lt;/link&gt;</ph> must be turned on
        </message>
        <!-- Usage Stats strings -->
@@ -2436,7 +2437,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
  #include "components/site_engagement/content/site_engagement_helper.h"
  #include "components/site_engagement/content/site_engagement_service.h"
  #include "components/sync/engine/sync_engine_switches.h"
-@@ -330,17 +332,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -343,17 +345,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
    //     See https://crbug.com/910288.
    resource_coordinator::ResourceCoordinatorTabHelper::CreateForWebContents(
        web_contents);
@@ -2547,7 +2548,7 @@ diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/
 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
-@@ -97,7 +97,9 @@
+@@ -98,7 +98,9 @@
  #include "components/page_load_metrics/renderer/metrics_render_frame_observer.h"
  #include "components/paint_preview/buildflags/buildflags.h"
  #include "components/safe_browsing/buildflags.h"
@@ -2560,7 +2561,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
 diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -1196,7 +1196,6 @@ if (!is_android && !is_fuchsia) {
+@@ -1205,7 +1205,6 @@ if (!is_android && !is_fuchsia) {
        "//components/resources",
        "//components/safe_browsing:buildflags",
        "//components/safe_browsing/content/browser",
@@ -2568,7 +2569,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
        "//components/safe_browsing/content/browser:safe_browsing_service",
        "//components/safe_browsing/content/browser/password_protection",
        "//components/safe_browsing/content/browser/password_protection:test_support",
-@@ -5349,7 +5348,6 @@ test("unit_tests") {
+@@ -5405,7 +5404,6 @@ test("unit_tests") {
      "//components/resources",
      "//components/safe_browsing:buildflags",
      "//components/safe_browsing/content/browser",
@@ -2591,7 +2592,7 @@ diff --git a/components/component_updater/installer_policies/BUILD.gn b/componen
 diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
 --- a/components/permissions/permission_request_manager.cc
 +++ b/components/permissions/permission_request_manager.cc
-@@ -533,10 +533,7 @@ PermissionRequestManager::PermissionRequestManager(
+@@ -557,10 +557,7 @@ PermissionRequestManager::PermissionRequestManager(
        view_(nullptr),
        tab_is_hidden_(web_contents->GetVisibility() ==
                       content::Visibility::HIDDEN),
@@ -2606,7 +2607,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
 diff --git a/components/safe_browsing/content/browser/BUILD.gn b/components/safe_browsing/content/browser/BUILD.gn
 --- a/components/safe_browsing/content/browser/BUILD.gn
 +++ b/components/safe_browsing/content/browser/BUILD.gn
-@@ -145,7 +145,6 @@ source_set("unit_tests") {
+@@ -140,7 +140,6 @@ source_set("unit_tests") {
    ]
  
    deps = [
@@ -2630,7 +2631,7 @@ diff --git a/components/safe_browsing/content/common/file_type_policies.cc b/com
 diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
 --- a/components/safe_browsing/core/common/features.cc
 +++ b/components/safe_browsing/core/common/features.cc
-@@ -134,7 +134,7 @@ constexpr base::FeatureParam<bool> kShouldFillOldPhishGuardProto{
+@@ -126,7 +126,7 @@ constexpr base::FeatureParam<bool> kShouldFillOldPhishGuardProto{
      &kPasswordProtectionForSignedInUsers, "DeprecateOldProto", false};
  
  const base::Feature kSuspiciousSiteTriggerQuotaFeature{
@@ -2701,9 +2702,9 @@ diff --git a/content/browser/file_system_access/file_system_access_file_writer_i
        auto_close_(auto_close) {
    DCHECK_EQ(swap_url.type(), url.type());
    DCHECK_EQ(lock_->type(),
-@@ -252,7 +251,7 @@ void FileSystemAccessFileWriterImpl::CloseImpl(CloseCallback callback) {
-       /*dest_url=*/url(),
-       FileSystemOperation::OPTION_PRESERVE_DESTINATION_PERMISSIONS,
+@@ -254,7 +253,7 @@ void FileSystemAccessFileWriterImpl::CloseImpl(CloseCallback callback) {
+           FileSystemOperation::CopyOrMoveOption::
+               kPreserveDestinationPermissions),
        std::move(quarantine_connection_callback_),
 -      has_transient_user_activation_);
 +      false);
@@ -2729,7 +2730,7 @@ diff --git a/content/browser/file_system_access/safe_move_helper.cc b/content/br
 +++ b/content/browser/file_system_access/safe_move_helper.cc
 @@ -135,8 +135,7 @@ SafeMoveHelper::SafeMoveHelper(
        dest_url_(dest_url),
-       option_(option),
+       options_(options),
        quarantine_connection_callback_(
 -          std::move(quarantine_connection_callback)),
 -      has_transient_user_activation_(has_transient_user_activation) {}
@@ -2841,7 +2842,7 @@ diff --git a/content/public/browser/file_system_access_permission_context.h b/co
 diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn
 --- a/weblayer/BUILD.gn
 +++ b/weblayer/BUILD.gn
-@@ -463,7 +463,6 @@ source_set("weblayer_lib_base") {
+@@ -461,7 +461,6 @@ source_set("weblayer_lib_base") {
      "//components/prefs",
      "//components/profile_metrics",
      "//components/safe_browsing/content/browser",

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

@@ -43,7 +43,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
-@@ -182,6 +182,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -185,6 +185,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kCCTClientDataHeader,
      &kCCTExternalLinkHandling,
      &kCCTIncognito,
@@ -51,7 +51,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCCTIncognitoAvailableToThirdParty,
      &kCCTPostMessageAPI,
      &kCCTRedirectPreconnect,
-@@ -500,6 +501,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
+@@ -505,6 +506,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
  const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -98,7 +98,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
-@@ -1975,6 +1975,21 @@
+@@ -2131,6 +2131,21 @@
              ]
          }
      ],

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

@@ -9,18 +9,18 @@ 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
-@@ -701,7 +701,7 @@ const base::Feature kSharedArrayBufferOnDesktop{
+@@ -712,7 +712,7 @@ const base::Feature kSharedArrayBufferOnDesktop{
  // Signed Exchange Reporting for distributors
- // https://www.chromestatus.com/features/5687904902840320
+ // https://www.chromestatus.com/feature/5687904902840320
  const base::Feature kSignedExchangeReportingForDistributors{
 -    "SignedExchangeReportingForDistributors", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "SignedExchangeReportingForDistributors", base::FEATURE_DISABLED_BY_DEFAULT};
  
  // Subresource prefetching+loading via Signed HTTP Exchange
- // https://www.chromestatus.com/features/5126805474246656
-@@ -711,7 +711,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
+ // https://www.chromestatus.com/feature/5126805474246656
+@@ -722,7 +722,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
- // https://www.chromestatus.com/features/5745285984681984
+ // https://www.chromestatus.com/feature/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",
 -                                        base::FEATURE_ENABLED_BY_DEFAULT};
 +                                        base::FEATURE_DISABLED_BY_DEFAULT};

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

@@ -17,7 +17,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
-@@ -5538,6 +5538,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5629,6 +5629,7 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kSharingHubDesktopOmniboxDescription, kOsDesktop,
       FEATURE_VALUE_TYPE(sharing_hub::kSharingHubDesktopOmnibox)},
  #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2961,7 +2961,7 @@
+@@ -2989,7 +2989,7 @@
    {
      "name": "ev-details-in-page-info",
      "owners": [ "cthomp" ],
@@ -52,7 +52,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
-@@ -263,6 +263,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
+@@ -264,6 +264,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
      {wf::EnableMouseSubframeNoImplicitCapture,
       features::kMouseSubframeNoImplicitCapture},
      {wf::EnableNeverSlowMode, features::kNeverSlowMode},
@@ -63,7 +63,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
-@@ -387,7 +387,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
+@@ -393,7 +393,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
  
  // Enable text snippets in URL fragments. https://crbug.com/919204.
  const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
@@ -75,9 +75,9 @@ 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
-@@ -4062,6 +4062,10 @@ void Document::SetURL(const KURL& url) {
-     }
-   }
+@@ -4033,9 +4033,14 @@ void Document::SetURL(const KURL& url) {
+   TRACE_EVENT1("navigation", "Document::SetURL", "url",
+                new_url.GetString().Utf8());
  
 +  // If text fragment identifiers are enabled, we strip the fragment directive
 +  // from the URL fragment.
@@ -85,11 +85,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 +  if (RuntimeEnabledFeatures::TextFragmentIdentifiersEnabled(domWindow())) {
    // Strip the fragment directive from the URL fragment. E.g. "#id:~:text=a"
    // --> "#id". See https://github.com/WICG/scroll-to-text-fragment.
-   String fragment = new_url.FragmentIdentifier();
-@@ -4075,6 +4079,7 @@ void Document::SetURL(const KURL& url) {
-     else
-       new_url.SetFragmentIdentifier(fragment.Substring(0, start_pos));
-   }
+   new_url = fragment_directive_->ConsumeFragmentDirective(new_url);
 +  }
  
    url_ = new_url;
@@ -97,7 +93,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
 +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
-@@ -1249,34 +1249,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) {
+@@ -1252,34 +1252,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) {
    // result of the element-id fragment if a text directive is successfully
    // parsed. If the feature is off we treat the text directive as an element-id
    // and should count the result.
@@ -145,7 +141,7 @@ diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor
 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
-@@ -2178,8 +2178,7 @@
+@@ -2222,8 +2222,7 @@
      },
      {
        name: "TextFragmentIdentifiers",

+ 9 - 9
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
-@@ -6522,7 +6522,6 @@ void NavigationRequest::RestartBackForwardCachedNavigationImpl() {
+@@ -6588,7 +6588,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(
+@@ -470,10 +470,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(
+@@ -506,12 +502,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) {
-@@ -556,11 +546,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
+@@ -558,11 +548,6 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
            info->url_request.GetURLRequestExtraData().get());
    DCHECK(url_request_extra_data);
  
@@ -106,15 +106,15 @@ 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,
 -      initiator_origin_trial_features, info->href_translate.Latin1(),
 +      /*initiator_origin_trial_features*/std::vector<int>(), info->href_translate.Latin1(),
-       is_history_navigation_in_new_child_frame, info->input_start);
+       is_history_navigation_in_new_child_frame, info->input_start,
+       request_destination);
  }
- 
 diff --git a/content/shell/common/shell_origin_trial_policy.cc b/content/shell/common/shell_origin_trial_policy.cc
 --- a/content/shell/common/shell_origin_trial_policy.cc
 +++ b/content/shell/common/shell_origin_trial_policy.cc
@@ -179,7 +179,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
    return result;
  }
  
-@@ -2432,10 +2419,6 @@ void DocumentLoader::CreateParserPostCommit() {
+@@ -2450,10 +2437,6 @@ void DocumentLoader::CreateParserPostCommit() {
            OriginTrialFeature::kTouchEventFeatureDetection);
      }
  
@@ -251,7 +251,7 @@ diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context.
 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
-@@ -2188,10 +2188,6 @@
+@@ -2232,10 +2232,6 @@
        name: "TextFragmentTapOpensContextMenu",
        status: {"Android": "stable"},
      },

+ 1 - 1
build/patches/Disable-unified-autoplay-feature.patch

@@ -9,7 +9,7 @@ Subject: Disable unified autoplay feature
 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
-@@ -490,7 +490,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
+@@ -491,7 +491,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
  // Enables the Unified Autoplay policy by overriding the platform's default
  // autoplay policy.
  const base::Feature kUnifiedAutoplay{"UnifiedAutoplay",

+ 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
-@@ -1227,8 +1227,6 @@ static_library("ui") {
+@@ -1229,8 +1229,6 @@ static_library("ui") {
        "singleton_tabs.h",
        "startup/automation_infobar_delegate.cc",
        "startup/automation_infobar_delegate.h",

+ 2 - 2
build/patches/Do-not-compile-QR-code-sharing.patch

@@ -16,10 +16,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
  import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin;
  import org.chromium.chrome.browser.share.ShareUtils;
 -import org.chromium.chrome.browser.share.qrcode.QrCodeDialog;
+ import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager;
  import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
  import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController;
- import org.chromium.chrome.browser.tab.Tab;
-@@ -421,10 +420,6 @@ public class RootUiCoordinator
+@@ -428,10 +427,6 @@ public class RootUiCoordinator
      }
  
      public void onAttachFragment(Fragment fragment) {

+ 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
-@@ -439,9 +439,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
+@@ -440,9 +440,8 @@ bool Extension::ShouldDisplayInNewTabPage() const {
  }
  
  bool Extension::ShouldExposeViaManagementAPI() const {

+ 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
-@@ -922,11 +922,7 @@ const base::Feature kShow10_10ObsoleteInfobar{
+@@ -958,11 +958,7 @@ const base::Feature kShow10_10ObsoleteInfobar{
  // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
    "SitePerProcess",

+ 2 - 2
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
-@@ -965,7 +965,7 @@
+@@ -988,7 +988,7 @@
    {
      "name": "darken-websites-checkbox-in-themes-setting",
      "owners": [ "lazzzis@google.com", "twellington" ],
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 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
-@@ -571,7 +571,7 @@ const base::Feature kContextualSearchTranslations{
+@@ -579,7 +579,7 @@ const base::Feature kContextualSearchTranslations{
      "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kDarkenWebsitesCheckboxInThemesSetting{

+ 3 - 3
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
-@@ -351,6 +351,10 @@ config("compiler") {
+@@ -354,6 +354,10 @@ config("compiler") {
        }
      }
  
@@ -51,8 +51,8 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 +    }
 +
      # Linker warnings.
-     if (fatal_linker_warnings && !is_apple && current_os != "aix") {
-       ldflags += [ "-Wl,--fatal-warnings" ]
+     if (fatal_linker_warnings && !is_apple && current_os != "aix" &&
+         current_os != "zos") {
 -- 
 2.20.1
 

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

@@ -49,7 +49,7 @@ diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -419,6 +419,7 @@ android_library("chrome_java") {
+@@ -426,6 +426,7 @@ android_library("chrome_java") {
      "//chrome/browser/xsurface:java",
      "//components/autofill/android:autofill_java",
      "//components/autofill_assistant/browser:proto_java",
@@ -270,7 +270,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
              TabHelpers.initWebContentsHelpers(this);
              notifyContentChanged();
          } finally {
-@@ -1771,5 +1821,6 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1772,5 +1822,6 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
          void setActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, String title);
          void loadOriginalImage(long nativeTabAndroid);
          boolean handleNonNavigationAboutURL(GURL url);
@@ -309,7 +309,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabViewAndr
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2393,6 +2393,14 @@ static_library("browser") {
+@@ -2406,6 +2406,14 @@ static_library("browser") {
      "//ui/webui/resources/cr_components/most_visited:mojom",
      "//ui/webui/resources/js/browser_command:mojo_bindings",
    ]
@@ -380,7 +380,7 @@ diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_a
 diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrome/browser/android/tab_web_contents_delegate_android.cc
 --- a/chrome/browser/android/tab_web_contents_delegate_android.cc
 +++ b/chrome/browser/android/tab_web_contents_delegate_android.cc
-@@ -176,7 +176,8 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
+@@ -175,7 +175,8 @@ void TabWebContentsDelegateAndroid::PortalWebContentsCreated(
        portal_contents,
        autofill::ChromeAutofillClient::FromWebContents(portal_contents),
        g_browser_process->GetApplicationLocale(),
@@ -393,7 +393,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
-@@ -576,6 +576,12 @@ CHAR_LIMIT guidelines:
+@@ -582,6 +582,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>
@@ -409,17 +409,17 @@ 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
-@@ -141,6 +141,9 @@
- #include "chrome/browser/ui/android/context_menu_helper.h"
+@@ -143,6 +143,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"
 +#include "components/android_autofill/browser/android_autofill_manager.h"
 +#include "components/android_autofill/browser/autofill_provider.h"
 +#include "components/android_autofill/browser/autofill_provider_android.h"
  #else
  #include "chrome/browser/accuracy_tips/accuracy_service_factory.h"
  #include "chrome/browser/banners/app_banner_manager_desktop.h"
-@@ -265,7 +268,9 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -272,7 +275,9 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
        web_contents,
        autofill::ChromeAutofillClient::FromWebContents(web_contents),
        g_browser_process->GetApplicationLocale(),
@@ -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
-@@ -728,7 +728,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
+@@ -731,7 +731,10 @@ void PasswordAutofillAgent::UpdateStateForTextChange(
  
  void PasswordAutofillAgent::TrackAutofilledElement(
      const blink::WebFormControlElement& element) {
@@ -840,7 +840,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
-@@ -1403,7 +1403,8 @@ void TabImpl::InitializeAutofillDriver() {
+@@ -1395,7 +1395,8 @@ void TabImpl::InitializeAutofillDriver() {
    autofill::ContentAutofillDriverFactory::CreateForWebContentsAndDelegate(
        web_contents, AutofillClientImpl::FromWebContents(web_contents),
        i18n::GetApplicationLocale(), enable_autofill_download_manager,

+ 1 - 1
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
-@@ -96,30 +96,30 @@ const base::Feature kSplitCacheByIncludeCredentials{
+@@ -99,30 +99,30 @@ const base::Feature kSplitCacheByIncludeCredentials{
      "SplitCacheByIncludeCredentials", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kSplitCacheByNetworkIsolationKey{

+ 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
-@@ -416,7 +416,7 @@ const base::Feature kComputePressure{"ComputePressure",
+@@ -422,7 +422,7 @@ const base::Feature kComputePressure{"ComputePressure",
  // Prefetch request properties are updated to be privacy-preserving. See
  // crbug.com/988956.
  const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges",

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

@@ -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
-@@ -717,6 +717,7 @@ chrome_java_resources = [
+@@ -711,6 +711,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
-@@ -1048,6 +1048,7 @@ chrome_java_sources = [
+@@ -1037,6 +1037,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",
@@ -171,8 +171,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni
  import org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity;
 +import org.chromium.chrome.browser.sharing.shared_intent.SharedIntentShareActivity;
  import org.chromium.chrome.browser.tab.state.ShoppingPersistedTabData;
+ import org.chromium.chrome.browser.tasks.tab_management.PriceTrackingUtilities;
  import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityPreferencesManager;
- import org.chromium.chrome.browser.util.AfterStartupTaskUtils;
 @@ -409,6 +410,8 @@ public class ProcessInitializationHandler {
          deferredStartupHandler.addDeferredTask(
                  () -> IncognitoTabLauncher.updateComponentEnabledState());
@@ -304,8 +304,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
-@@ -5563,6 +5563,10 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(sharing_hub::kDesktopScreenshots)},
+@@ -5654,6 +5654,10 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(share::kSharingDesktopScreenshotsEdit)},
  #endif
  
 +    {"shared-intent-ui", flag_descriptions::kSharedIntentUIName,
@@ -318,7 +318,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
-@@ -2335,6 +2335,11 @@ const char kSharingDesktopScreenshotsDescription[] =
+@@ -2280,6 +2280,11 @@ const char kSharingDesktopScreenshotsDescription[] =
      "Enables taking"
      " screenshots from the desktop sharing hub.";
  
@@ -333,20 +333,20 @@ 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
-@@ -1340,6 +1340,9 @@ extern const char kSharedClipboardUIDescription[];
+@@ -1313,6 +1313,9 @@ extern const char kSharedClipboardUIDescription[];
  extern const char kSharingDesktopScreenshotsName[];
  extern const char kSharingDesktopScreenshotsDescription[];
  
 +extern const char kSharedIntentUIName[];
 +extern const char kSharedIntentUIDescription[];
 +
- extern const char kSharingHubDesktopAppMenuName[];
- extern const char kSharingHubDesktopAppMenuDescription[];
+ extern const char kSharingDesktopScreenshotsEditName[];
+ extern const char kSharingDesktopScreenshotsEditDescription[];
  
 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
-@@ -270,6 +270,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -273,6 +273,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kServiceManagerForDownload,
      &kShareButtonInTopToolbar,
      &kSharedClipboardUI,
@@ -354,7 +354,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kSharingHubLinkToggle,
      &kSingleTouchSelect,
      &kSpannableInlineAutocomplete,
-@@ -657,6 +658,9 @@ const base::Feature kSearchEnginePromoExistingDevice{
+@@ -662,6 +663,9 @@ const base::Feature kSearchEnginePromoExistingDevice{
  const base::Feature kSearchEnginePromoNewDevice{
      "SearchEnginePromo.NewDevice", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -378,7 +378,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
-@@ -488,6 +488,7 @@ public abstract class ChromeFeatureList {
+@@ -493,6 +493,7 @@ public abstract class ChromeFeatureList {
      public static final String SHARE_USAGE_RANKING = "ShareUsageRanking";
      public static final String SHARE_USAGE_RANKING_FIXED_MORE = "ShareUsageRankingFixedMore";
      public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI";
@@ -389,7 +389,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
-@@ -4572,6 +4572,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4585,6 +4585,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
-@@ -86,7 +86,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
+@@ -99,7 +99,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
  
  // Freezes the user-agent as part of https://github.com/WICG/ua-client-hints.
  const base::Feature kReduceUserAgent{"ReduceUserAgent",

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

@@ -225,7 +225,7 @@ See also: components/user_scripts/README.md
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -252,6 +252,10 @@ android_resources("chrome_app_java_resources") {
+@@ -253,6 +253,10 @@ android_resources("chrome_app_java_resources") {
      "//third_party/androidx:androidx_preference_preference_java",
      "//third_party/androidx:androidx_recyclerview_recyclerview_java",
    ]
@@ -236,7 +236,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
  }
  
  if (enable_vr) {
-@@ -524,6 +528,7 @@ android_library("chrome_java") {
+@@ -532,6 +536,7 @@ android_library("chrome_java") {
      "//components/ukm/android:java",
      "//components/url_formatter/android:url_formatter_java",
      "//components/user_prefs/android:java",
@@ -285,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
-@@ -112,6 +112,8 @@ import java.util.Date;
+@@ -113,6 +113,8 @@ import java.util.Date;
  import java.util.List;
  import java.util.Locale;
  
@@ -322,7 +322,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
-@@ -3491,6 +3491,11 @@ static_library("browser") {
+@@ -3515,6 +3515,11 @@ static_library("browser") {
        ]
        deps += [ "//chrome/android/modules/dev_ui/provider:native" ]
      }
@@ -333,11 +333,11 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 +    ]
    } else {
      #!is_android
-     sources += [
+     if (!is_chromeos_lacros) {
 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
-@@ -151,6 +151,7 @@
+@@ -149,6 +149,7 @@
  #include "components/translate/core/browser/translate_ranker_impl.h"
  #include "components/translate/core/common/translate_util.h"
  #include "components/ui_devtools/switches.h"
@@ -345,7 +345,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "components/version_info/version_info.h"
  #include "components/viz/common/features.h"
  #include "components/viz/common/switches.h"
-@@ -6528,6 +6529,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -6535,6 +6536,10 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kUserDataSnapshot)},
  #endif
  
@@ -359,7 +359,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
-@@ -4659,7 +4659,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
+@@ -4662,7 +4662,8 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles(
    chrome::mojom::DynamicParams dynamic_params = {
        profile->GetPrefs()->GetBoolean(prefs::kForceGoogleSafeSearch),
        profile->GetPrefs()->GetInteger(prefs::kForceYouTubeRestrict),
@@ -372,7 +372,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
-@@ -5393,6 +5393,11 @@ const char kUserDataSnapshotDescription[] =
+@@ -5382,6 +5382,11 @@ const char kUserDataSnapshotDescription[] =
      "update and restoring them after a version rollback.";
  #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -387,7 +387,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
-@@ -3132,6 +3132,9 @@ extern const char kUserDataSnapshotName[];
+@@ -3134,6 +3134,9 @@ extern const char kUserDataSnapshotName[];
  extern const char kUserDataSnapshotDescription[];
  #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
  
@@ -400,7 +400,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
-@@ -237,6 +237,7 @@
+@@ -235,6 +235,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"
@@ -408,7 +408,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #else  // defined(OS_ANDROID)
  #include "chrome/browser/cart/cart_service.h"
  #include "chrome/browser/device_api/device_service_impl.h"
-@@ -1197,6 +1198,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1214,6 +1215,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    translate::TranslatePrefs::RegisterProfilePrefs(registry);
    omnibox::RegisterProfilePrefs(registry);
    ZeroSuggestProvider::RegisterProfilePrefs(registry);
@@ -430,7 +430,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
-@@ -216,6 +216,8 @@
+@@ -217,6 +217,8 @@
  #include "chrome/browser/lacros/cert_db_initializer_factory.h"
  #endif
  
@@ -439,7 +439,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
  namespace chrome {
  
  void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
-@@ -516,6 +518,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -517,6 +519,7 @@ void ChromeBrowserMainExtraPartsProfiles::
  #endif
    WebDataServiceFactory::GetInstance();
    webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance();
@@ -450,16 +450,16 @@ 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
-@@ -117,6 +117,8 @@
+@@ -118,6 +118,8 @@
  #include "extensions/common/manifest.h"
  #endif
  
 +#include "components/user_scripts/browser/userscripts_browser_client.h"
 +
  #if BUILDFLAG(ENABLE_SESSION_SERVICE)
+ #include "chrome/browser/sessions/app_session_service_factory.h"
  #include "chrome/browser/sessions/session_service_factory.h"
- #endif
-@@ -1539,6 +1541,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
+@@ -1538,6 +1540,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile,
    }
  
  #endif
@@ -534,7 +534,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"
-@@ -678,6 +679,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -681,6 +682,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<UserActionsUI>;
    if (url.host_piece() == chrome::kChromeUIVersionHost)
      return &NewWebUI<VersionUI>;
@@ -576,7 +576,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
-@@ -171,6 +171,7 @@ static_library("renderer") {
+@@ -172,6 +172,7 @@ static_library("renderer") {
      "//components/feed:feature_list",
      "//components/feed/content/renderer:feed_renderer",
      "//components/history_clusters/core",
@@ -587,7 +587,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
-@@ -254,6 +254,9 @@
+@@ -253,6 +253,9 @@
  #include "chrome/renderer/supervised_user/supervised_user_error_page_controller_delegate_impl.h"
  #endif
  
@@ -595,9 +595,9 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
 +#include "components/user_scripts/renderer/user_scripts_renderer_client.h"
 +
  using autofill::AutofillAgent;
- using autofill::AutofillAssistantAgent;
  using autofill::PasswordAutofillAgent;
-@@ -419,6 +422,12 @@ void ChromeContentRendererClient::RenderThreadStarted() {
+ using autofill::PasswordGenerationAgent;
+@@ -425,6 +428,12 @@ void ChromeContentRendererClient::RenderThreadStarted() {
        WebString::FromASCII(extensions::kExtensionScheme));
  #endif
  
@@ -610,7 +610,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_SPELLCHECK)
    if (!spellcheck_)
      InitSpellCheck();
-@@ -555,6 +564,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
+@@ -561,6 +570,13 @@ void ChromeContentRendererClient::RenderFrameCreated(
        render_frame, registry);
  #endif
  
@@ -624,7 +624,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  #if BUILDFLAG(ENABLE_PLUGINS)
    new PepperHelper(render_frame);
  #endif
-@@ -1546,7 +1562,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
+@@ -1547,7 +1563,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentStart(
        render_frame);
    // |render_frame| might be dead by now.
@@ -639,7 +639,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
-@@ -1555,7 +1578,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
+@@ -1556,7 +1579,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentEnd(
        render_frame);
    // |render_frame| might be dead by now.
@@ -654,7 +654,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
  }
  
  void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
-@@ -1564,7 +1594,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
+@@ -1565,7 +1595,14 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle(
    ChromeExtensionsRendererClient::GetInstance()->RunScriptsAtDocumentIdle(
        render_frame);
    // |render_frame| might be dead by now.
@@ -10621,7 +10621,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
-@@ -585,6 +585,12 @@
+@@ -589,6 +589,12 @@
    "components/autofill/core/browser/autofill_address_rewriter_resources.grd":{
      "includes": [3720]
    },

+ 2 - 2
build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch

@@ -11,11 +11,11 @@ Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment
 diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
 --- a/components/omnibox/browser/autocomplete_result.cc
 +++ b/components/omnibox/browser/autocomplete_result.cc
-@@ -68,7 +68,8 @@ struct MatchGURLHash {
+@@ -69,7 +69,8 @@ struct MatchGURLHash {
  // static
  size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
  #if (defined(OS_ANDROID))
--  constexpr size_t kDefaultMaxAutocompleteMatches = 5;
+-  constexpr size_t kDefaultMaxAutocompleteMatches = 8;
 +  // changed from 6, this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
 +  constexpr size_t kDefaultMaxAutocompleteMatches = 10;
    constexpr size_t kDefaultMaxZeroSuggestMatches = 15;

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

@@ -39,9 +39,9 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
 +#include "extensions/video_bg_play.h"
  #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
- #include "third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h"
  #include "third_party/blink/renderer/core/page/scrolling/text_fragment_handler.h"
-@@ -342,6 +343,8 @@
+ #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+@@ -341,6 +342,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();
-@@ -6521,6 +6524,61 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
+@@ -6491,6 +6494,61 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
        val ? AllowState::kAllow : AllowState::kDeny;
  }
  
@@ -112,7 +112,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);
-@@ -6579,6 +6637,10 @@ void Document::FinishedParsing() {
+@@ -6549,6 +6607,10 @@ void Document::FinishedParsing() {
      if (frame->IsMainFrame() && ShouldMarkFontPerformance())
        FontPerformance::MarkDomContentLoaded();
  
@@ -126,7 +126,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
-@@ -1776,6 +1776,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1767,6 +1767,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  
@@ -161,7 +161,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
-@@ -169,6 +169,11 @@ void HTMLScriptElement::setTextContent(const String& string) {
+@@ -174,6 +174,11 @@ void HTMLScriptElement::setTextContent(const String& string) {
    script_text_internal_slot_ = ParkableString(string.Impl());
  }
  

+ 5 - 5
build/patches/JIT-less-toggle.patch

@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import android.os.Build;
  import android.content.SharedPreferences;
  import android.os.Bundle;
-@@ -83,6 +84,7 @@ public class PrivacySettings
+@@ -82,6 +83,7 @@ public class PrivacySettings
      private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
      private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
      public static final String PREF_AUTOFILL_ASSISTANT = "autofill_assistant";
@@ -44,7 +44,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private ChromeSwitchPreference mSearchSuggestions;
      private @Nullable ChromeSwitchPreference mAutofillAssistant;
      private @Nullable Preference mContextualSearch;
-@@ -242,6 +244,10 @@ public class PrivacySettings
+@@ -216,6 +218,10 @@ public class PrivacySettings
                      .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              prefService.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          } else if (PREF_AUTOFILL_ASSISTANT.equals(key)) {
              mSharedPreferencesManager.writeBoolean(
                  ChromePreferenceKeys.AUTOFILL_ASSISTANT_ENABLED, (boolean) newValue);
-@@ -325,6 +331,11 @@ public class PrivacySettings
+@@ -295,6 +301,11 @@ public class PrivacySettings
                      prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
          }
  
@@ -64,13 +64,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +        forceNoJit.setOnPreferenceChangeListener(this);
 +        forceNoJit.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
 +
-         updateIncognitoReauthPreference();
+         mIncognitoLockSettings.updateIncognitoReauthPreferenceIfNeeded(getActivity());
      }
  
 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
-@@ -946,6 +946,13 @@ Privacy Sandbox trials are still in active development and are available in sele
+@@ -952,6 +952,13 @@ Privacy Sandbox trials are still in active development and are available in sele
          Please verify that this is a valid provider or try again later
        </message>
  

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

@@ -138,7 +138,7 @@ diff --git a/chrome/browser/crash_upload_list/crash_upload_list_android.h b/chro
 diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
 --- a/chrome/browser/net/chrome_network_delegate.cc
 +++ b/chrome/browser/net/chrome_network_delegate.cc
-@@ -131,6 +131,13 @@ bool IsAccessAllowedAndroid(const base::FilePath& path) {
+@@ -132,6 +132,13 @@ bool IsAccessAllowedAndroid(const base::FilePath& path) {
    if (external_storage_path.IsParent(path))
      return true;
  

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

@@ -33,7 +33,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
-@@ -1267,7 +1267,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1275,7 +1275,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -174,7 +174,7 @@ diff --git a/components/bookmarks/browser/features.cc b/components/bookmarks/bro
 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
-@@ -190,9 +190,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -188,9 +188,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(

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

@@ -47,8 +47,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +import org.chromium.chrome.browser.flags.ChromeFeatureList;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager;
-@@ -47,6 +48,13 @@ import org.chromium.components.user_prefs.UserPrefs;
+ import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthSettingSwitchPreference;
+@@ -46,6 +47,13 @@ import org.chromium.components.user_prefs.UserPrefs;
  import org.chromium.ui.text.NoUnderlineClickableSpan;
  import org.chromium.ui.text.SpanApplier;
  
@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  /**
   * Fragment to keep track of the all the privacy related preferences.
   */
-@@ -70,6 +78,18 @@ public class PrivacySettings
+@@ -69,6 +77,18 @@ public class PrivacySettings
  
      private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
  
@@ -79,9 +79,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +    private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
 +
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
+     private IncognitoLockSettings mIncognitoLockSettings;
  
-     @Override
-@@ -108,6 +128,29 @@ public class PrivacySettings
+@@ -111,6 +131,29 @@ public class PrivacySettings
  
          mManagedPreferenceDelegate = createManagedPreferenceDelegate();
  
@@ -111,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          ChromeSwitchPreference canMakePaymentPref =
                  (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
          canMakePaymentPref.setOnPreferenceChangeListener(this);
-@@ -197,6 +240,11 @@ public class PrivacySettings
+@@ -171,6 +214,11 @@ public class PrivacySettings
          } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -123,7 +123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManagerImpl.getInstance().setNetworkPredictionEnabled(
                      (boolean) newValue);
-@@ -219,6 +267,16 @@ public class PrivacySettings
+@@ -189,6 +237,16 @@ public class PrivacySettings
  
      public static final String PREF_INCOGNITO_TAB_HISTORY_ENABLED = "incognito_history_enabled";
  
@@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onResume() {
          super.onResume();
-@@ -229,7 +287,7 @@ public class PrivacySettings
+@@ -199,7 +257,7 @@ public class PrivacySettings
       * Updates the preferences.
       */
      public void updatePreferences() {

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

@@ -56,7 +56,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
-@@ -2316,6 +2316,7 @@ static_library("browser") {
+@@ -2329,6 +2329,7 @@ static_library("browser") {
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/serial:switches",
      "//services/device/public/cpp/usb",
@@ -67,7 +67,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
-@@ -186,6 +186,7 @@
+@@ -184,6 +184,7 @@
  #include "services/media_session/public/cpp/features.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
@@ -75,7 +75,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"
-@@ -2824,6 +2825,20 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2853,6 +2854,20 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebrtcUseMinMaxVEADimensionsName,
       flag_descriptions::kWebrtcUseMinMaxVEADimensionsDescription, kOsAll,
       FEATURE_VALUE_TYPE(blink::features::kWebRtcUseMinMaxVEADimensions)},
@@ -99,7 +99,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
-@@ -223,6 +223,7 @@ source_set("browser") {
+@@ -222,6 +222,7 @@ source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -110,7 +110,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
-@@ -212,6 +212,8 @@
+@@ -214,6 +214,8 @@
  #include "services/tracing/public/cpp/system_tracing_service.h"
  #endif
  
@@ -119,7 +119,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
  #if defined(OS_WIN)
  #include "base/win/scoped_com_initializer.h"
  #include "base/win/windows_version.h"
-@@ -3413,6 +3415,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3377,6 +3379,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisableBreakpad,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -143,7 +143,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
-@@ -38,6 +38,8 @@
+@@ -39,6 +39,8 @@
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  
@@ -152,7 +152,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #if defined(OS_ANDROID)
  #include "base/android/build_info.h"
  #endif
-@@ -540,6 +542,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -547,6 +549,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    if (!command_line.HasSwitch(switches::kDisableYUVImageDecoding) &&
        base::FeatureList::IsEnabled(
            blink::features::kDecodeLossyWebPImagesToYUV)) {
@@ -190,7 +190,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/scroll_snap_data.h"
-@@ -2148,6 +2149,23 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() {
+@@ -2141,6 +2142,23 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() {
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this, true /* allow_dirty_container_subtrees */);
  #endif
@@ -217,7 +217,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
-@@ -456,6 +456,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -454,6 +454,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -228,7 +228,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;
-@@ -2081,6 +2085,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -2073,6 +2077,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -241,7 +241,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
-@@ -2114,6 +2114,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2119,6 +2119,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -253,7 +253,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -2131,6 +2136,9 @@ FloatRect Element::GetBoundingClientRectNoLifecycleUpdate() const {
+@@ -2136,6 +2141,9 @@ FloatRect Element::GetBoundingClientRectNoLifecycleUpdate() const {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -343,7 +343,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"
-@@ -2311,6 +2312,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
+@@ -2332,6 +2333,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
            snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds();
        DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh)));
      }
@@ -377,7 +377,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
-@@ -1645,7 +1645,9 @@ component("platform") {
+@@ -1646,7 +1646,9 @@ component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -388,7 +388,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",
-@@ -1712,6 +1714,7 @@ component("platform") {
+@@ -1714,6 +1716,7 @@ component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -399,7 +399,7 @@ 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
-@@ -689,4 +689,16 @@ void WebRuntimeFeatures::EnableCLSScrollAnchoring(bool enable) {
+@@ -685,4 +685,16 @@ void WebRuntimeFeatures::EnableCLSScrollAnchoring(bool enable) {
    RuntimeEnabledFeatures::SetCLSScrollAnchoringEnabled(enable);
  }
  
@@ -632,7 +632,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
-@@ -1039,6 +1039,15 @@
+@@ -1041,6 +1041,15 @@
        origin_trial_allows_third_party: true,
        status: "experimental",
      },

+ 2 - 2
build/patches/Never-fetch-popular-sites.patch

@@ -17,7 +17,7 @@ diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/p
  
  GURL GetPopularSitesURL(const std::string& directory,
                          const std::string& country,
-@@ -275,7 +274,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
+@@ -276,7 +275,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
    DCHECK(!callback_);
    callback_ = std::move(callback);
  
@@ -31,7 +31,7 @@ diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/p
        prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref));
    const base::TimeDelta time_since_last_download =
        base::Time::Now() - last_download_time;
-@@ -292,7 +296,7 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
+@@ -293,7 +297,7 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
        (time_since_last_download > redownload_interval) || url_changed) {
      FetchPopularSites();
      return true;

+ 1 - 1
build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch

@@ -9,7 +9,7 @@ Subject: Offer builtin autocomplete for chrome://flags
 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
-@@ -366,6 +366,8 @@ std::vector<std::u16string> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
+@@ -272,6 +272,8 @@ std::vector<std::u16string> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
  std::vector<std::u16string>
  ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<std::u16string> builtins_to_provide;

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

@@ -9,7 +9,7 @@ Subject: Open YouTube links in Bromite
 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
-@@ -1280,6 +1280,12 @@ public class ExternalNavigationHandler {
+@@ -1281,6 +1281,12 @@ public class ExternalNavigationHandler {
                      OverrideUrlLoadingAsyncActionType.UI_GATING_BROWSER_NAVIGATION);
          }
  

+ 1 - 1
build/patches/Override-UA-client-hint-for-model.patch

@@ -29,7 +29,7 @@ diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -311,7 +311,7 @@ const base::Feature kExtraSafelistedRequestHeadersForOutOfBlinkCors{
+@@ -322,7 +322,7 @@ const base::Feature kExtraSafelistedRequestHeadersForOutOfBlinkCors{
  
  // Controls whether Client Hints are guarded by Permissions Policy.
  const base::Feature kFeaturePolicyForClientHints{

+ 41 - 486
build/patches/Remove-binary-blob-integrations.patch

@@ -33,13 +33,10 @@ Parts of this patch were developed by csagan5, uazo and others.
  .../browser/gcore/GoogleApiClientHelper.java  |  82 +--
  .../instantapps/InstantAppsHandler.java       |  57 +-
  .../browser/omaha/UpdateStatusProvider.java   |  10 +-
- .../inline/FakeAppUpdateManagerWrapper.java   |  60 +-
- .../inline/InlineUpdateControllerFactory.java |  16 -
- .../inline/PlayInlineUpdateController.java    | 226 +-------
  .../modules/chrome_feature_modules.gni        |   3 -
  chrome/browser/BUILD.gn                       |   2 -
  chrome/browser/language/android/BUILD.gn      |   2 -
- .../language/AppLanguagePromoDialog.java      |  13 -
+ .../language/AppLanguagePromoDialog.java      |  17 -
  .../AppLanguagePreferenceDelegate.java        |   8 -
  .../language/settings/LanguageSettings.java   |   6 -
  .../prefetch/prefetch_service_factory.cc      |  16 -
@@ -95,7 +92,7 @@ Parts of this patch were developed by csagan5, uazo and others.
  third_party/android_deps/BUILD.gn             | 540 +-----------------
  .../preconditions/javatests/BUILD.gn          |   1 -
  .../gms/ChromiumPlayServicesAvailability.java |  10 +-
- 74 files changed, 66 insertions(+), 2580 deletions(-)
+ 71 files changed, 63 insertions(+), 2285 deletions(-)
  delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
  delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
 
@@ -124,7 +121,7 @@ diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -304,20 +304,10 @@ android_library("chrome_java") {
+@@ -309,20 +309,10 @@ android_library("chrome_java") {
      ":chrome_public_apk_template_resources",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -145,7 +142,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/android/modules/image_editor/provider:java",
      "//chrome/android/modules/stack_unwinder/provider:java",
      "//chrome/android/webapk/libs/client:client_java",
-@@ -571,7 +561,6 @@ android_library("chrome_java") {
+@@ -579,7 +569,6 @@ android_library("chrome_java") {
      "//third_party/android_data_chart:android_data_chart_java",
      "//third_party/android_deps:android_support_v7_appcompat_java",
      "//third_party/android_deps:chromium_play_services_availability_java",
@@ -153,7 +150,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
      "//third_party/android_deps:com_google_guava_listenablefuture_java",
      "//third_party/android_deps:dagger_java",
-@@ -894,11 +883,6 @@ junit_binary("chrome_junit_tests") {
+@@ -904,11 +893,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_java",
      ":chrome_public_android_manifest",
      ":delegate_public_impl_java",
@@ -165,7 +162,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -1260,14 +1244,6 @@ android_library("chrome_test_java") {
+@@ -1273,14 +1257,6 @@ android_library("chrome_test_java") {
      ":chrome_test_util_java",
      ":chrome_test_util_jni",
      ":delegate_public_impl_java",
@@ -180,7 +177,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base/test:test_support_java",
-@@ -2314,7 +2290,6 @@ android_library("browser_java_test_support") {
+@@ -2331,7 +2307,6 @@ android_library("browser_java_test_support") {
    ]
    deps = [
      ":chrome_java",
@@ -188,7 +185,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:jni_java",
-@@ -2459,9 +2434,7 @@ android_library("base_monochrome_module_java") {
+@@ -2478,9 +2453,7 @@ android_library("base_monochrome_module_java") {
  android_library("base_module_java") {
    sources = [
      "../browser/attribution_reporting/android/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionReportingProvider.java",
@@ -198,7 +195,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
      "java/src/org/chromium/chrome/browser/DeferredStartupHandler.java",
      "java/src/org/chromium/chrome/browser/base/DexFixer.java",
-@@ -2472,8 +2445,6 @@ android_library("base_module_java") {
+@@ -2491,8 +2464,6 @@ android_library("base_module_java") {
      "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
      "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java",
      "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
@@ -207,7 +204,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java",
      "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java",
      "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java",
-@@ -2500,16 +2471,10 @@ android_library("base_module_java") {
+@@ -2519,16 +2490,10 @@ android_library("base_module_java") {
      "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
      "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java",
      "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java",
@@ -224,7 +221,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//chrome/browser/download/android:file_provider_java",
      "//chrome/browser/flags:java",
-@@ -2522,7 +2487,6 @@ android_library("base_module_java") {
+@@ -2541,7 +2506,6 @@ android_library("base_module_java") {
      "//components/media_router/browser/android:cast_options_provider_java",
      "//components/minidump_uploader:minidump_uploader_java",
      "//components/module_installer/android:module_installer_java",
@@ -232,7 +229,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//third_party/androidx:androidx_annotation_annotation_java",
      "//third_party/androidx:androidx_collection_collection_java",
      "//third_party/androidx:androidx_fragment_fragment_java",
-@@ -2544,7 +2508,6 @@ android_library("base_module_java") {
+@@ -2563,7 +2527,6 @@ android_library("base_module_java") {
      # Deps to pull services into base module.
      # TODO(crbug.com/1126301): Consider moving these to the chrome module to
      # reduce base dex size.
@@ -251,7 +248,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
    "java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
    "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
-@@ -1025,10 +1024,6 @@ chrome_java_sources = [
+@@ -1014,10 +1013,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/searchwidget/SearchType.java",
    "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
    "java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfShareActivity.java",
@@ -312,7 +309,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 -        <activity
 -            android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity"
 -            android:exported="false"
--            android:theme="@android:style/Theme.NoDisplay"
+-            android:theme="@style/Theme.BrowserUI.NoDisplay"
 -            android:noHistory="true"
 -            android:excludeFromRecents="true">
 -        </activity>
@@ -812,16 +809,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
-@@ -19,8 +19,6 @@ import androidx.annotation.NonNull;
+@@ -17,8 +17,6 @@ import androidx.annotation.IntDef;
+ import androidx.annotation.NonNull;
  import androidx.annotation.Nullable;
- import androidx.annotation.VisibleForTesting;
  
 -import com.google.android.gms.common.GooglePlayServicesUtil;
 -
- import org.chromium.base.ActivityState;
- import org.chromium.base.ApplicationStatus;
- import org.chromium.base.ApplicationStatus.ActivityStateListener;
-@@ -456,13 +454,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
+ import org.chromium.base.BuildInfo;
+ import org.chromium.base.Callback;
+ import org.chromium.base.ContextUtils;
+@@ -328,13 +326,7 @@ public class UpdateStatusProvider {
          }
  
          private boolean isGooglePlayStoreAvailable(Context context) {
@@ -836,452 +833,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
          }
  
          private long getSize(StatFs statFs) {
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
-@@ -11,11 +11,6 @@ import android.os.Message;
- 
- import androidx.annotation.IntDef;
- 
--import com.google.android.play.core.appupdate.AppUpdateInfo;
--import com.google.android.play.core.appupdate.testing.FakeAppUpdateManager;
--import com.google.android.play.core.install.model.AppUpdateType;
--import com.google.android.play.core.tasks.Task;
--
- import org.chromium.base.ContextUtils;
- import org.chromium.base.task.PostTask;
- import org.chromium.chrome.browser.app.ChromeActivity;
-@@ -31,7 +26,7 @@ import java.lang.ref.WeakReference;
-  * wrapper isn't meant to be used for a full integration test, but simulating all of the possible
-  * error cases is a bit easier to do here.
-  */
--public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
-+public class FakeAppUpdateManagerWrapper {
-     private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
-     private static final int STEP_DELAY_MS = 5000;
-     private static final int TOAST_DURATION_MS = 2000;
-@@ -108,15 +103,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
-             switch (event) {
-                 case Event.UPDATE_AVAILABLE:
-                     w.toast("Making app update available.");
--                    w.setUpdateAvailable(10000 /* Figure out a better version? */);
-                     return;
-                 case Event.USER_ACCEPTS_UPDATE:
-                     w.toast("User accepts update.");
--                    w.userAcceptsUpdate();
-                     return;
-                 case Event.USER_REJECTS_UPDATE:
-                     w.toast("User rejects update.");
--                    w.userRejectsUpdate();
-                     return;
-                 case Event.TRIGGER_DOWNLOAD:
-                     w.toast("Triggering download.");
-@@ -124,27 +116,21 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
-                     return;
-                 case Event.DOWNLOAD_STARTS:
-                     w.toast("Download has started.");
--                    w.downloadStarts();
-                     return;
-                 case Event.DOWNLOAD_FAILS:
-                     w.toast("Triggering download failure.");
--                    w.downloadFails();
-                     return;
-                 case Event.USER_CANCELS_DOWNLOAD:
-                     w.toast("Triggering cancellation of download.");
--                    w.userCancelsDownload();
-                     return;
-                 case Event.DOWNLOAD_COMPLETES:
-                     w.toast("Download completes.");
--                    w.downloadCompletes();
-                     return;
-                 case Event.INSTALL_FAILS:
-                     w.toast("Triggering install failure.");
--                    w.installFails();
-                     return;
-                 case Event.INSTALL_COMPLETES:
-                     w.toast("Triggering install completion.");
--                    w.installCompletes();
-                     return;
-                 default:
-                     w.toast("Unknown event.");
-@@ -159,56 +145,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
-      * @param endState at which point should the inline update flow end.
-      */
-     FakeAppUpdateManagerWrapper(@Type int endState) {
--        super(ContextUtils.getApplicationContext());
-         mType = endState;
-         mEventHandler = new EventHandler(this);
- 
-         if (mType != Type.NONE) execute(Event.UPDATE_AVAILABLE);
-     }
- 
--    // FakeAppUpdateManager implementation.
--    @Override
--    public boolean startUpdateFlowForResult(AppUpdateInfo appUpdateInfo,
--            @AppUpdateType int appUpdateType, Activity activity, int requestCode) {
--        toast("Starting update flow.");
--        // TODO(dtrainor): Simulate exceptions being thrown or returning false from the super call.
--        boolean success =
--                super.startUpdateFlowForResult(appUpdateInfo, appUpdateType, activity, requestCode);
--        if (!success) return false;
--
--        assert activity instanceof ChromeActivity : "Unexpected triggering activity.";
--
--        final int resultCode;
--        if (mType == Type.FAIL_DIALOG_CANCEL) {
--            resultCode = Activity.RESULT_CANCELED;
--        } else if (mType == Type.FAIL_DIALOG_UPDATE_FAILED) {
--            resultCode = RESULT_IN_APP_UPDATE_FAILED;
--        } else {
--            resultCode = Activity.RESULT_OK;
--        }
--
--        PostTask.postDelayedTask(UiThreadTaskTraits.DEFAULT, () -> {
--            triggerDialogResponse((ChromeActivity) activity, requestCode, resultCode);
--        }, STEP_DELAY_MS);
--
--        return true;
--    }
--
--    @Override
--    public Task<Void> completeUpdate() {
--        toast("Completing update.");
--        Task<Void> result = super.completeUpdate();
--
--        if (mType == Type.FAIL_INSTALL) {
--            postDelayedEvent(Event.INSTALL_FAILS);
--        } else {
--            postDelayedEvent(Event.INSTALL_COMPLETES);
--            // This doesn't actually restart Chrome in this case.
--        }
--
--        return result;
--    }
--
-     private void triggerDialogResponse(ChromeActivity activity, int requestCode, int resultCode) {
-         if (resultCode == Activity.RESULT_OK) {
-             execute(Event.USER_ACCEPTS_UPDATE);
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
-@@ -4,8 +4,6 @@
- 
- package org.chromium.chrome.browser.omaha.inline;
- 
--import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
--
- import org.chromium.base.ContextUtils;
- import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.omaha.UpdateConfigs;
-@@ -20,20 +18,6 @@ public class InlineUpdateControllerFactory {
-     public static InlineUpdateController create(Runnable callback) {
-         @FakeAppUpdateManagerWrapper.Type
-         int mockInlineEndState = UpdateConfigs.getMockInlineScenarioEndState();
--        if (mockInlineEndState != FakeAppUpdateManagerWrapper.Type.NO_SIMULATION) {
--            // The config requires to run through a test controller, using the
--            // PlayInlineUpdateController, but with a fake Google Play backend that automatically
--            // goes through a scenario flow.
--            return new PlayInlineUpdateController(
--                    callback, new FakeAppUpdateManagerWrapper(mockInlineEndState));
--        }
--
--        if (ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
--            // The application configuration requires to use the real Google Play backend for inline
--            // updates.
--            return new PlayInlineUpdateController(
--                    callback, AppUpdateManagerFactory.create(ContextUtils.getApplicationContext()));
--        }
- 
-         // No test scenario was in place, and the inline flow has not been enabled, so use a
-         // controller with no functionality.
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
-@@ -10,15 +10,6 @@ import android.content.IntentSender.SendIntentException;
- import androidx.annotation.IntDef;
- import androidx.annotation.Nullable;
- 
--import com.google.android.play.core.appupdate.AppUpdateInfo;
--import com.google.android.play.core.appupdate.AppUpdateManager;
--import com.google.android.play.core.install.InstallState;
--import com.google.android.play.core.install.InstallStateUpdatedListener;
--import com.google.android.play.core.install.model.AppUpdateType;
--import com.google.android.play.core.install.model.InstallErrorCode;
--import com.google.android.play.core.install.model.InstallStatus;
--import com.google.android.play.core.install.model.UpdateAvailability;
--
- import org.chromium.base.Log;
- import org.chromium.base.metrics.RecordHistogram;
- import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
-@@ -32,7 +23,7 @@ import java.lang.annotation.RetentionPolicy;
-  * in the foreground.
-  */
- public class PlayInlineUpdateController
--        implements InlineUpdateController, InstallStateUpdatedListener {
-+        implements InlineUpdateController {
-     /**
-      * Converts Play's InstallErrorCode enum to a stable monotomically incrementing Chrome enum.
-      * This is used for metric stability.
-@@ -127,26 +118,9 @@ public class PlayInlineUpdateController
-     private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
-     private static final int REQUEST_CODE = 8123;
- 
--    private final Runnable mCallback;
--    private final AppUpdateManager mAppUpdateManager;
--
-     private boolean mEnabled;
-     private @Nullable @UpdateState Integer mUpdateState;
- 
--    private AppUpdateInfo mAppUpdateInfo;
--    private @Nullable @UpdateAvailability Integer mUpdateAvailability;
--    private @Nullable @InstallStatus Integer mInstallStatus;
--
--    /**
--     * Builds an instance of {@link PlayInlineUpdateController}.
--     * @param callback The {@link Runnable} to notify when an inline update state change occurs.
--     */
--    PlayInlineUpdateController(Runnable callback, AppUpdateManager appUpdateManager) {
--        mCallback = callback;
--        mAppUpdateManager = appUpdateManager;
--        setEnabled(true);
--    }
--
-     // InlineUpdateController implementation.
-     @Override
-     public void setEnabled(boolean enabled) {
-@@ -155,10 +129,8 @@ public class PlayInlineUpdateController
- 
-         if (mEnabled) {
-             mUpdateState = UpdateState.NONE;
--            mAppUpdateManager.registerListener(this);
-             pullCurrentState();
-         } else {
--            mAppUpdateManager.unregisterListener(this);
-         }
-     }
- 
-@@ -169,220 +141,26 @@ public class PlayInlineUpdateController
- 
-     @Override
-     public void startUpdate(Activity activity) {
--        try {
--            boolean success = mAppUpdateManager.startUpdateFlowForResult(
--                    mAppUpdateInfo, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE);
--            Log.i(TAG, "startUpdateFlowForResult() returned " + success);
--
--            if (!success) recordCallFailure(CallFailure.START_FAILED);
--        } catch (SendIntentException exception) {
--            mInstallStatus = InstallStatus.FAILED;
--            Log.i(TAG, "startUpdateFlowForResult() threw an exception.");
--            recordCallFailure(CallFailure.START_EXCEPTION);
--        }
--        // TODO(dtrainor): Use success.
-     }
- 
-     @Override
-     public void completeUpdate() {
--        mAppUpdateManager.completeUpdate()
--                .addOnSuccessListener(unused -> {
--                    Log.i(TAG, "completeUpdate() success.");
--                    pushStatus();
--                })
--                .addOnFailureListener(exception -> {
--                    Log.i(TAG, "completeUpdate() failed.");
--                    recordCallFailure(CallFailure.COMPLETE_FAILED);
--                    mInstallStatus = InstallStatus.FAILED;
--                    pushStatus();
--                });
--    }
--
--    // InstallStateUpdatedListener implementation.
--    @Override
--    public void onStateUpdate(InstallState state) {
--        Log.i(TAG,
--                "onStateUpdate(" + state.installStatus() + ", " + state.installErrorCode() + ")");
--
--        if (state.installStatus() != mInstallStatus) {
--            RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.StateChange.Error."
--                            + installStatusToEnumSuffix(state.installStatus()),
--                    installErrorCodeToMetrics(state.installErrorCode()),
--                    InstallErrorCodeMetrics.NUM_ENTRIES);
--        }
--
--        mInstallStatus = state.installStatus();
--        pushStatus();
-     }
- 
-     private void pullCurrentState() {
--        mAppUpdateManager.getAppUpdateInfo()
--                .addOnSuccessListener(info -> {
--                    mAppUpdateInfo = info;
--                    mUpdateAvailability = info.updateAvailability();
--                    mInstallStatus = info.installStatus();
--                    Log.i(TAG,
--                            "pullCurrentState(" + mUpdateAvailability + ", " + mInstallStatus
--                                    + ") success.");
--                    recordOnAppUpdateInfo(info);
--                    pushStatus();
--                })
--                .addOnFailureListener(exception -> {
--                    mAppUpdateInfo = null;
--                    mUpdateAvailability = UpdateAvailability.UNKNOWN;
--                    mInstallStatus = InstallStatus.UNKNOWN;
--                    Log.i(TAG, "pullCurrentState() failed.");
--                    recordCallFailure(CallFailure.QUERY_FAILED);
--                    pushStatus();
--                });
-     }
- 
-     private void pushStatus() {
--        if (!mEnabled || mUpdateAvailability == null || mInstallStatus == null) return;
--
--        @UpdateState
--        int newState = toUpdateState(mUpdateAvailability, mInstallStatus);
--        if (mUpdateState != null && mUpdateState == newState) return;
--
--        Log.i(TAG, "Pushing inline update state to " + newState);
--        mUpdateState = newState;
--        mCallback.run();
-     }
- 
-     private static @UpdateState int toUpdateState(
--            @UpdateAvailability int updateAvailability, @InstallStatus int installStatus) {
-+            int updateAvailability, int installStatus) {
-         @UpdateState
-         int newStatus = UpdateState.NONE;
- 
--        // Note, use InstallStatus first then UpdateAvailability if InstallStatus doesn't indicate
--        // a currently active install.
--        switch (installStatus) {
--            case InstallStatus.PENDING:
--                // Intentional fall through.
--            case InstallStatus.DOWNLOADING:
--                newStatus = UpdateState.INLINE_UPDATE_DOWNLOADING;
--                break;
--            case InstallStatus.DOWNLOADED:
--                newStatus = UpdateState.INLINE_UPDATE_READY;
--                break;
--            case InstallStatus.FAILED:
--                newStatus = UpdateState.INLINE_UPDATE_FAILED;
--                break;
--        }
--
--        if (newStatus == UpdateState.NONE) {
--            switch (updateAvailability) {
--                case UpdateAvailability.UPDATE_AVAILABLE:
--                    newStatus = UpdateState.INLINE_UPDATE_AVAILABLE;
--                    break;
--            }
--        }
--
-         return newStatus;
-     }
- 
--    private static String installStatusToEnumSuffix(@InstallStatus int status) {
--        switch (status) {
--            case InstallStatus.UNKNOWN:
--                return "Unknown";
--            case InstallStatus.REQUIRES_UI_INTENT:
--                return "RequiresUiIntent";
--            case InstallStatus.PENDING:
--                return "Pending";
--            case InstallStatus.DOWNLOADING:
--                return "Downloading";
--            case InstallStatus.DOWNLOADED:
--                return "Downloaded";
--            case InstallStatus.INSTALLING:
--                return "Installing";
--            case InstallStatus.INSTALLED:
--                return "Installed";
--            case InstallStatus.FAILED:
--                return "Failed";
--            case InstallStatus.CANCELED:
--                return "Canceled";
--            default:
--                return "Untracked";
--        }
--    }
--
--    private static @InstallErrorCodeMetrics int installErrorCodeToMetrics(
--            @InstallErrorCode int error) {
--        switch (error) {
--            case InstallErrorCode.NO_ERROR:
--                return InstallErrorCodeMetrics.NO_ERROR;
--            case InstallErrorCode.NO_ERROR_PARTIALLY_ALLOWED:
--                return InstallErrorCodeMetrics.NO_ERROR_PARTIALLY_ALLOWED;
--            case InstallErrorCode.ERROR_UNKNOWN:
--                return InstallErrorCodeMetrics.ERROR_UNKNOWN;
--            case InstallErrorCode.ERROR_API_NOT_AVAILABLE:
--                return InstallErrorCodeMetrics.ERROR_API_NOT_AVAILABLE;
--            case InstallErrorCode.ERROR_INVALID_REQUEST:
--                return InstallErrorCodeMetrics.ERROR_INVALID_REQUEST;
--            case InstallErrorCode.ERROR_INSTALL_UNAVAILABLE:
--                return InstallErrorCodeMetrics.ERROR_INSTALL_UNAVAILABLE;
--            case InstallErrorCode.ERROR_INSTALL_NOT_ALLOWED:
--                return InstallErrorCodeMetrics.ERROR_INSTALL_NOT_ALLOWED;
--            case InstallErrorCode.ERROR_DOWNLOAD_NOT_PRESENT:
--                return InstallErrorCodeMetrics.ERROR_DOWNLOAD_NOT_PRESENT;
--            case InstallErrorCode.ERROR_INTERNAL_ERROR:
--                return InstallErrorCodeMetrics.ERROR_INTERNAL_ERROR;
--            default:
--                return InstallErrorCodeMetrics.ERROR_UNTRACKED;
--        }
--    }
--
--    private static @UpdateAvailabilityMetric int updateAvailabilityToMetrics(
--            @UpdateAvailability int updateAvailability) {
--        switch (updateAvailability) {
--            case UpdateAvailability.UNKNOWN:
--                return UpdateAvailabilityMetric.UNKNOWN;
--            case UpdateAvailability.UPDATE_NOT_AVAILABLE:
--                return UpdateAvailabilityMetric.UPDATE_NOT_AVAILABLE;
--            case UpdateAvailability.UPDATE_AVAILABLE:
--                return UpdateAvailabilityMetric.UPDATE_AVAILABLE;
--            case UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS:
--                return UpdateAvailabilityMetric.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS;
--            default:
--                return UpdateAvailabilityMetric.UNTRACKED;
--        }
--    }
--
--    private static @InstallStatusMetric int installStatusToMetrics(
--            @InstallStatus int installStatus) {
--        switch (installStatus) {
--            case InstallStatus.UNKNOWN:
--                return InstallStatusMetric.UNKNOWN;
--            case InstallStatus.REQUIRES_UI_INTENT:
--                return InstallStatusMetric.REQUIRES_UI_INTENT;
--            case InstallStatus.PENDING:
--                return InstallStatusMetric.PENDING;
--            case InstallStatus.DOWNLOADING:
--                return InstallStatusMetric.DOWNLOADING;
--            case InstallStatus.DOWNLOADED:
--                return InstallStatusMetric.DOWNLOADED;
--            case InstallStatus.INSTALLING:
--                return InstallStatusMetric.INSTALLING;
--            case InstallStatus.INSTALLED:
--                return InstallStatusMetric.INSTALLED;
--            case InstallStatus.FAILED:
--                return InstallStatusMetric.FAILED;
--            case InstallStatus.CANCELED:
--                return InstallStatusMetric.CANCELED;
--            default:
--                return InstallStatusMetric.UNTRACKED;
--        }
--    }
--
--    private static void recordOnAppUpdateInfo(AppUpdateInfo info) {
--        RecordHistogram.recordEnumeratedHistogram(
--                "GoogleUpdate.Inline.AppUpdateInfo.UpdateAvailability",
--                updateAvailabilityToMetrics(info.updateAvailability()),
--                UpdateAvailabilityMetric.NUM_ENTRIES);
--        RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.AppUpdateInfo.InstallStatus",
--                installStatusToMetrics(info.installStatus()), InstallStatusMetric.NUM_ENTRIES);
--    }
--
-     private static void recordCallFailure(@CallFailure int failure) {
-         RecordHistogram.recordEnumeratedHistogram(
-                 "GoogleUpdate.Inline.CallFailure", failure, CallFailure.NUM_ENTRIES);
 diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni
 --- a/chrome/android/modules/chrome_feature_modules.gni
 +++ b/chrome/android/modules/chrome_feature_modules.gni
@@ -1305,7 +856,7 @@ diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -6501,8 +6501,6 @@ static_library("browser") {
+@@ -6594,8 +6594,6 @@ static_library("browser") {
        "offline_pages/offliner_helper.h",
        "offline_pages/offliner_user_data.cc",
        "offline_pages/offliner_user_data.h",
@@ -1334,7 +885,7 @@ diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/
 diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
 +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
-@@ -459,19 +459,6 @@ public class AppLanguagePromoDialog {
+@@ -464,23 +464,6 @@ public class AppLanguagePromoDialog {
          }
          AndroidLanguageMetricsBridge.reportAppLanguagePromptLanguage(
                  selectedLanguage.isSystemDefault() ? "" : selectedLanguage.getCode());
@@ -1342,12 +893,16 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse
 -        // Create call back for after language split install completes.
 -        AppLocaleUtils.setAppLanguagePref(selectedLanguage.getCode(), (success) -> {
 -            if (success) {
--                mRestartAction.restart();
+-                if (!isSelectedCurrentUI) {
+-                    // Only restart if the new language is different than the current UI.
+-                    mRestartAction.restart();
+-                }
 -            } else {
+-                // The loading language modal will always already be shown if a download fails.
 -                CharSequence failedText = mActivity.getResources().getString(
 -                        R.string.languages_split_failed, selectedLanguage.getDisplayName());
 -                messageView.setText(failedText);
--                mConfirmModal.set(ModalDialogProperties.POSITIVE_BUTTON_TEXT,
+-                mLoadingModal.set(ModalDialogProperties.POSITIVE_BUTTON_TEXT,
 -                        mActivity.getText(R.string.ok).toString());
 -            }
 -        });
@@ -1477,7 +1032,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/image_editor/image_editor_ui.h"
  #include "chrome/browser/ui/webui/internals/internals_ui.h"
  #include "chrome/browser/ui/webui/interstitials/interstitial_ui.h"
-@@ -629,8 +628,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -632,8 +631,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<FlagsUI>;
    if (url.host_piece() == chrome::kChromeUIFlocInternalsHost)
      return &NewWebUI<FlocInternalsUI>;
@@ -1489,7 +1044,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
 diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 --- a/chrome/test/android/BUILD.gn
 +++ b/chrome/test/android/BUILD.gn
-@@ -268,8 +268,6 @@ android_library("chrome_java_test_support") {
+@@ -307,8 +307,6 @@ android_library("chrome_java_test_support") {
    ]
  
    deps = [
@@ -3802,7 +3357,7 @@ diff --git a/components/signin/public/android/BUILD.gn b/components/signin/publi
      "java/src/org/chromium/components/signin/AccountRestrictionPatternReceiver.java",
      "java/src/org/chromium/components/signin/AccountUtils.java",
      "java/src/org/chromium/components/signin/AccountsChangeObserver.java",
-@@ -136,7 +133,6 @@ java_library("junit") {
+@@ -137,7 +134,6 @@ java_library("junit") {
    deps = [
      ":java",
      ":signin_java_test_support",
@@ -3892,7 +3447,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
 diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc
 --- a/content/browser/push_messaging/push_messaging_manager.cc
 +++ b/content/browser/push_messaging/push_messaging_manager.cc
-@@ -755,7 +755,7 @@ void PushMessagingManager::GetSubscriptionInfo(
+@@ -757,7 +757,7 @@ void PushMessagingManager::GetSubscriptionInfo(
  }
  
  PushMessagingService* PushMessagingManager::GetService() {
@@ -3918,7 +3473,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 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
-@@ -939,7 +939,7 @@ const base::Feature kWebAssemblyTrapHandler {
+@@ -958,7 +958,7 @@ const base::Feature kWebAssemblyTrapHandler {
  // Controls whether the WebAuthentication API is enabled:
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuth{"WebAuthentication",
@@ -3930,7 +3485,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2869,10 +2869,6 @@ if (is_android) {
+@@ -2868,10 +2868,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -3944,7 +3499,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -446,9 +446,6 @@ if (is_android) {
+@@ -447,9 +447,6 @@ if (is_android) {
        "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java",
      ]
      deps = [
@@ -3970,7 +3525,7 @@ diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_jav
 diff --git a/services/BUILD.gn b/services/BUILD.gn
 --- a/services/BUILD.gn
 +++ b/services/BUILD.gn
-@@ -110,11 +110,6 @@ if (is_android) {
+@@ -114,11 +114,6 @@ if (is_android) {
        "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
      ]
      deps = [
@@ -3982,7 +3537,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn
        "//base:base_java",
        "//base:base_java_test_support",
        "//base:base_junit_test_support",
-@@ -143,10 +138,6 @@ if (is_android) {
+@@ -147,10 +142,6 @@ if (is_android) {
        "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
      ]
      deps = [
@@ -4251,8 +3806,8 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
    # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
    android_aar_prebuilt("com_google_android_material_material_java") {
      aar_path =
-@@ -1267,60 +1062,6 @@ if (!limit_android_deps) {
-     ignore_proguard_configs = true
+@@ -1269,60 +1064,6 @@ if (!limit_android_deps) {
+     proguard_configs = [ "material_design.flags" ]
    }
  
 -  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -4312,7 +3867,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
    # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
    java_prebuilt("com_google_guava_guava_android_java") {
      jar_path = "libs/com_google_guava_guava_android/guava-31.0-android.jar"
-@@ -1458,19 +1199,6 @@ if (!limit_android_deps) {
+@@ -1471,19 +1212,6 @@ if (!limit_android_deps) {
      bypass_platform_checks = true
    }
  
@@ -4332,7 +3887,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
    # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
    java_prebuilt("org_robolectric_utils_java") {
      jar_path = "libs/org_robolectric_utils/utils-4.3.1.jar"
-@@ -1847,272 +1575,6 @@ if (!limit_android_deps) {
+@@ -1860,272 +1588,6 @@ if (!limit_android_deps) {
      deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
    }
  

+ 6 - 6
build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch

@@ -9,7 +9,7 @@ Subject: Remove blocklisted URLs upon bookmark creation
 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
-@@ -141,6 +141,8 @@ import org.chromium.chrome.browser.night_mode.SystemNightModeMonitor;
+@@ -140,6 +140,8 @@ import org.chromium.chrome.browser.night_mode.SystemNightModeMonitor;
  import org.chromium.chrome.browser.night_mode.WebContentsDarkModeController;
  import org.chromium.chrome.browser.night_mode.WebContentsDarkModeMessageController;
  import org.chromium.chrome.browser.ntp.NewTabPageUma;
@@ -17,8 +17,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 +import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSites;
  import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
  import org.chromium.chrome.browser.offlinepages.indicator.OfflineIndicatorController;
- import org.chromium.chrome.browser.omaha.UpdateInfoBarController;
-@@ -241,6 +243,8 @@ import org.chromium.ui.widget.Toast;
+ import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
+@@ -242,6 +244,8 @@ import org.chromium.ui.widget.Toast;
  import org.chromium.url.GURL;
  import org.chromium.webapk.lib.client.WebApkNavigationClient;
  
@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import java.util.ArrayList;
  import java.util.List;
  import java.util.function.Consumer;
-@@ -290,6 +294,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -291,6 +295,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
      private UmaSessionStats mUmaSessionStats;
      private ContextReporter mContextReporter;
@@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  
      private boolean mPartnerBrowserRefreshNeeded;
  
-@@ -1438,6 +1443,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1451,6 +1456,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              mCompositorViewHolderSupplier.set(null);
          }
  
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
          onDestroyInternal();
  
          if (mDidAddPolicyChangeListener) {
-@@ -1763,6 +1773,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1783,6 +1793,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          // Defense in depth against the UI being erroneously enabled.
          BookmarkBridge bridge = mBookmarkBridgeSupplier.get();

+ 4 - 4
build/patches/Remove-help-menu-item.patch

@@ -13,7 +13,7 @@ Subject: Remove help menu item
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -142,9 +142,6 @@
+@@ -139,9 +139,6 @@
          <item android:id="@+id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
@@ -26,7 +26,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/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
-@@ -364,9 +364,6 @@ public class KeyboardShortcuts {
+@@ -362,9 +362,6 @@ public class KeyboardShortcuts {
                  case KeyEvent.KEYCODE_BUTTON_START:
                      if (currentTab != null && currentTab.canGoForward()) currentTab.goForward();
                      return true;
@@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
 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
-@@ -2329,16 +2329,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2359,16 +2359,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
@@ -59,7 +59,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
-@@ -524,7 +524,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
+@@ -537,7 +537,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
          if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id

文件差异内容过多而无法显示
+ 205 - 195
build/patches/Remove-signin-and-data-saver-integrations.patch


+ 8 - 8
build/patches/Restore-Search-Ready-Omnibox-flag.patch

@@ -20,7 +20,7 @@ Disable search-ready omnibox 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
-@@ -3380,8 +3380,8 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3435,8 +3435,8 @@ const FeatureEntry kFeatureEntries[] = {
  #if defined(USE_AURA)
      {"overscroll-history-navigation",
       flag_descriptions::kOverscrollHistoryNavigationName,
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
      {"pull-to-refresh", flag_descriptions::kPullToRefreshName,
       flag_descriptions::kPullToRefreshDescription, kOsAura,
       MULTI_VALUE_TYPE(kPullToRefreshChoices)},
-@@ -7748,6 +7748,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7785,6 +7785,9 @@ const FeatureEntry kFeatureEntries[] = {
      // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
      // Histograms" in tools/metrics/histograms/README.md (run the
      // AboutFlagsHistogramTest unit test to verify this process).
@@ -43,7 +43,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2355,6 +2355,11 @@
+@@ -2378,6 +2378,11 @@
      //  with neural net palm detection.
      "expiry_milestone": 90
    },
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3525,6 +3525,11 @@ const char kSecurePaymentConfirmationAndroidName[] =
+@@ -3493,6 +3493,11 @@ const char kSecurePaymentConfirmationAndroidName[] =
  const char kSecurePaymentConfirmationAndroidDescription[] =
      "Enables Secure Payment Confirmation on Android.";
  
@@ -73,7 +73,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -2020,6 +2020,9 @@ extern const char kScrollCaptureDescription[];
+@@ -2008,6 +2008,9 @@ extern const char kScrollCaptureDescription[];
  extern const char kSecurePaymentConfirmationAndroidName[];
  extern const char kSecurePaymentConfirmationAndroidDescription[];
  
@@ -86,7 +86,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
-@@ -255,6 +255,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -258,6 +258,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kReachedCodeProfiler,
      &kReaderModeInCCT,
      &kReengagementNotification,
@@ -94,7 +94,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kRelatedSearches,
      &kRelatedSearchesAlternateUx,
      &kRelatedSearchesInBar,
-@@ -698,6 +699,9 @@ const base::Feature kRelatedSearchesSimplifiedUx{
+@@ -703,6 +704,9 @@ const base::Feature kRelatedSearchesSimplifiedUx{
  const base::Feature kRelatedSearchesUi{"RelatedSearchesUi",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -118,7 +118,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
-@@ -399,6 +399,7 @@ public abstract class ChromeFeatureList {
+@@ -403,6 +403,7 @@ public abstract class ChromeFeatureList {
      public static final String MODAL_PERMISSION_DIALOG_VIEW = "ModalPermissionDialogView";
      public static final String METRICS_SETTINGS_ANDROID = "MetricsSettingsAndroid";
      public static final String NEW_WINDOW_APP_MENU = "NewWindowAppMenu";

+ 23 - 38
build/patches/Restore-Simplified-NTP-launch.patch

@@ -12,7 +12,6 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
  .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++
  .../NativePageNavigationDelegateImpl.java     |  4 +-
  .../chrome/browser/ntp/NewTabPageLayout.java  | 30 ++++++++-
- .../suggestions/SuggestionsConfig.java        |  4 +-
  .../SuggestionsNavigationDelegate.java        | 17 +++++
  chrome/browser/about_flags.cc                 |  3 +
  chrome/browser/flag_descriptions.cc           |  3 +
@@ -22,16 +21,16 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
  .../browser/flags/ChromeFeatureList.java      |  1 +
  components/ntp_snippets/features.cc           |  6 +-
  .../variations/fieldtrial_testing_config.json | 18 +++++
- 18 files changed, 201 insertions(+), 6 deletions(-)
+ 17 files changed, 198 insertions(+), 5 deletions(-)
  create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java
 
 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
-@@ -680,6 +680,7 @@ chrome_java_resources = [
-   "java/res/layout/new_tab_page_multi_feed_header.xml",
-   "java/res/layout/new_tab_page_section_tab.xml",
+@@ -674,6 +674,7 @@ chrome_java_resources = [
+   "java/res/layout/new_tab_page_incognito.xml",
+   "java/res/layout/new_tab_page_layout.xml",
    "java/res/layout/new_tab_page_tile_grid_placeholder.xml",
 +  "java/res/layout/ntp_shortcuts.xml",
    "java/res/layout/optional_toolbar_button.xml",
@@ -207,15 +206,15 @@ 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/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
-@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer;
- import org.chromium.chrome.browser.explore_sites.ExperimentalExploreSitesSection;
+@@ -38,6 +38,7 @@ import org.chromium.chrome.browser.explore_sites.ExperimentalExploreSitesSection
  import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge;
+ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate;
  import org.chromium.chrome.browser.lens.LensEntryPoint;
 +import org.chromium.chrome.browser.flags.ChromeFeatureList;
  import org.chromium.chrome.browser.lens.LensMetrics;
  import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
  import org.chromium.chrome.browser.native_page.ContextMenuManager;
-@@ -118,6 +119,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -119,6 +120,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
      private UiConfig mUiConfig;
      private CallbackController mCallbackController = new CallbackController();
  
@@ -224,7 +223,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
      /**
       * Whether the tiles shown in the layout have finished loading.
       * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress.
-@@ -283,6 +286,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -253,6 +256,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          mNoSearchLogoSpacer = findViewById(R.id.no_search_logo_spacer);
  
          initializeSearchBoxBackground();
@@ -232,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          initializeSearchBoxTextView();
          initializeVoiceSearchButton();
          initializeLensButton();
-@@ -596,10 +600,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -566,10 +570,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
       * Updates the padding for the tile grid based on what is shown above it.
       */
      private void updateTileGridPadding() {
@@ -251,7 +250,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          mSiteSectionViewHolder.getItemView().setPadding(
                  0, paddingTop, 0, mSiteSectionViewHolder.getItemView().getPaddingBottom());
      }
-@@ -987,6 +997,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -957,6 +967,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          return iphCommandBuilder;
      }
  
@@ -274,26 +273,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
      /**
       * Makes the Search Box and Logo as wide as Most Visited.
       */
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java
-@@ -51,7 +51,9 @@ public final class SuggestionsConfig {
-         // The scroll to load feature does not work well for users who require accessibility mode.
-         if (ChromeAccessibilityUtil.get().isAccessibilityEnabled()) return false;
- 
--        return ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_SCROLL_TO_LOAD);
-+        return ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP)
-+                && ChromeFeatureList.isEnabled(
-+                           ChromeFeatureList.CONTENT_SUGGESTIONS_SCROLL_TO_LOAD);
-     }
- 
-     /**
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java
-@@ -16,6 +16,11 @@ import org.chromium.content_public.browser.LoadUrlParams;
+@@ -14,6 +14,11 @@ import org.chromium.chrome.browser.ui.native_page.NativePageHost;
+ import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.ui.base.PageTransition;
- import org.chromium.ui.mojom.WindowOpenDisposition;
  
 +import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
 +import org.chromium.chrome.browser.download.DownloadUtils;
@@ -303,8 +288,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug
  /**
   * Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods.
   */
-@@ -35,6 +40,18 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI
-                 new LoadUrlParams(NEW_TAB_URL_HELP, PageTransition.AUTO_BOOKMARK));
+@@ -25,6 +30,18 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI
+         super(activity, profile, host, tabModelSelector, tab);
      }
  
 +    public void navigateToBookmarks() {
@@ -325,7 +310,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug
 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
-@@ -4002,6 +4002,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4069,6 +4069,9 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE_AND_VALUE(
           switches::kForceShowUpdateMenuItemCustomSummary,
           "Custom Summary")},
@@ -338,7 +323,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
-@@ -3573,6 +3573,9 @@ const char kSharingHubLinkToggleName[] = "Sharing Hub Link Toggle";
+@@ -3541,6 +3541,9 @@ const char kSharingHubLinkToggleName[] = "Sharing Hub Link Toggle";
  const char kSharingHubLinkToggleDescription[] =
      "Enable the link toggle in the Sharing Hub.";
  
@@ -351,7 +336,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
-@@ -2041,6 +2041,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
+@@ -2029,6 +2029,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
  extern const char kSmartSuggestionForLargeDownloadsName[];
  extern const char kSmartSuggestionForLargeDownloadsDescription[];
  
@@ -364,7 +349,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
-@@ -233,6 +233,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -237,6 +237,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kEnhancedProtectionPromoCard,
      &kExperimentsForAgsa,
      &kExploreSites,
@@ -372,7 +357,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kFocusOmniboxInIncognitoTabIntents,
      &kGoogleLensSdkIntent,
      &kHandleMediaIntents,
-@@ -664,6 +665,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
+@@ -669,6 +670,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
  const base::Feature kOfflineMeasurementsBackgroundTask{
      "OfflineMeasurementsBackgroundTask", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -396,14 +381,14 @@ 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
-@@ -389,6 +389,7 @@ public abstract class ChromeFeatureList {
-     public static final String MARK_HTTP_AS = "MarkHttpAs";
+@@ -391,6 +391,7 @@ public abstract class ChromeFeatureList {
+     public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked";
      public static final String MESSAGES_FOR_ANDROID_CHROME_SURVEY =
              "MessagesForAndroidChromeSurvey";
 +    public static final String SIMPLIFIED_NTP = "SimplifiedNTP";
      public static final String MESSAGES_FOR_ANDROID_INFRASTRUCTURE =
              "MessagesForAndroidInfrastructure";
-     public static final String MESSAGES_FOR_ANDROID_READER_MODE = "MessagesForAndroidReaderMode";
+     public static final String MESSAGES_FOR_ANDROID_PERMISSION_UPDATE =
 diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
 --- a/components/ntp_snippets/features.cc
 +++ b/components/ntp_snippets/features.cc
@@ -429,7 +414,7 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
 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
-@@ -3972,6 +3972,24 @@
+@@ -4191,6 +4191,24 @@
              ]
          }
      ],

+ 6 - 6
build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch

@@ -13,9 +13,9 @@ This reverts commit 4e598f38a0e6dd3dbede009c6a99b2a520a94e1f.
 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
-@@ -3432,6 +3432,10 @@ const FeatureEntry kFeatureEntries[] = {
-      SINGLE_DISABLE_VALUE_TYPE(switches::kDisableHostedAppShimCreation)},
- #endif  // OS_MAC
+@@ -3481,6 +3481,10 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kEnableVulkanDescription,
+      kOsWin | kOsLinux | kOsAndroid, FEATURE_VALUE_TYPE(features::kVulkan)},
  #if defined(OS_ANDROID)
 +    {switches::kDisablePullToRefreshEffect,
 +     flag_descriptions::kDisablePullToRefreshEffectName,
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1160,6 +1160,11 @@
+@@ -1178,6 +1178,11 @@
      // enable-javascript-harmony.
      "expiry_milestone": -1
    },
@@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -3409,6 +3409,10 @@ const char kReadLaterDescription[] =
+@@ -3380,6 +3380,10 @@ const char kReadLaterDescription[] =
      "Allow users to save tabs for later. Enables a new button and menu for "
      "accessing tabs saved for later.";
  
@@ -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
-@@ -1954,6 +1954,9 @@ extern const char kQueryTilesSegmentationDescription[];
+@@ -1945,6 +1945,9 @@ extern const char kQueryTilesSegmentationDescription[];
  extern const char kQueryTilesSwapTrendingName[];
  extern const char kQueryTilesSwapTrendingDescription[];
  

+ 5 - 5
build/patches/Revert-flags-remove-num-raster-threads.patch

@@ -13,7 +13,7 @@ This reverts commit 2a51528a1737e9038f7f96f29403032a6a845a25.
 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
-@@ -319,6 +319,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
+@@ -330,6 +330,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
       "single-fullscreen,single-on-top,underlay"},
  };
  
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = {
      {flags_ui::kGenericExperimentChoiceDefault, "", ""},
      {flag_descriptions::kTouchSelectionStrategyCharacter,
-@@ -3644,6 +3653,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3707,6 +3716,9 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-use-zoom-for-dsf", flag_descriptions::kEnableUseZoomForDsfName,
       flag_descriptions::kEnableUseZoomForDsfDescription, kOsAll,
       MULTI_VALUE_TYPE(kEnableUseZoomForDSFChoices)},
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +++ b/chrome/browser/flag-metadata.json
 @@ -3945,6 +3945,11 @@
      "owners": [ "jerem", "tiborg" ],
-     "expiry_milestone": 96
+     "expiry_milestone": 100
    },
 +  {
 +    "name": "num-raster-threads",
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1742,6 +1742,14 @@ const char kOmniboxActiveSearchEnginesDescription[] =
+@@ -1688,6 +1688,14 @@ const char kOmniboxActiveSearchEnginesDescription[] =
      "Enables a 'Your Search Engines' section on "
      "chrome://settings/searchEngines.";
  
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1009,6 +1009,13 @@ extern const char kNotificationsSystemFlagDescription[];
+@@ -979,6 +979,13 @@ extern const char kNotificationsSystemFlagDescription[];
  extern const char kOmniboxActiveSearchEnginesName[];
  extern const char kOmniboxActiveSearchEnginesDescription[];
  

+ 11 - 11
build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch

@@ -196,7 +196,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
-@@ -586,6 +586,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -614,6 +614,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          int resource = 0;
          if (mCategory.showSites(SiteSettingsCategory.Type.AUTOMATIC_DOWNLOADS)) {
              resource = R.string.website_settings_add_site_description_automatic_downloads;
@@ -205,19 +205,19 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else if (mCategory.showSites(SiteSettingsCategory.Type.BACKGROUND_SYNC)) {
              resource = R.string.website_settings_add_site_description_background_sync;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT)) {
-@@ -708,6 +710,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
-         boolean exception = false;
+@@ -736,6 +738,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+         boolean allowSpecifyingExceptions = false;
          if (mCategory.showSites(SiteSettingsCategory.Type.SOUND)) {
-             exception = true;
+             allowSpecifyingExceptions = true;
 +        } else if (mCategory.showSites(SiteSettingsCategory.Type.AUTOPLAY)) {
 +            exception = true;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT)) {
-             exception = true;
+             allowSpecifyingExceptions = true;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
-@@ -119,6 +119,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -121,6 +121,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "bluetooth_scanning_permission_list";
              case ContentSettingsType.COOKIES:
                  return "cookies_permission_list";
@@ -226,7 +226,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.IDLE_DETECTION:
                  return "idle_detection_permission_list";
              case ContentSettingsType.JAVASCRIPT:
-@@ -485,6 +487,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -487,6 +489,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
  
              if (type == ContentSettingsType.ADS) {
                  setUpAdsPreference(preference);
@@ -235,7 +235,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              } else if (type == ContentSettingsType.SOUND) {
                  setUpSoundPreference(preference);
              } else if (type == ContentSettingsType.JAVASCRIPT) {
-@@ -975,6 +979,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -977,6 +981,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */);
      }
  
@@ -480,7 +480,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h
 diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc
 --- a/components/page_info/android/page_info_controller_android.cc
 +++ b/components/page_info/android/page_info_controller_android.cc
-@@ -134,6 +134,7 @@ void PageInfoControllerAndroid::SetPermissionInfo(
+@@ -141,6 +141,7 @@ void PageInfoControllerAndroid::SetPermissionInfo(
    permissions_to_display.push_back(ContentSettingsType::ADS);
    permissions_to_display.push_back(
        ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER);
@@ -491,7 +491,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
-@@ -97,6 +97,7 @@ ContentSettingsType kPermissionType[] = {
+@@ -98,6 +98,7 @@ ContentSettingsType kPermissionType[] = {
      ContentSettingsType::ADS,
      ContentSettingsType::BACKGROUND_SYNC,
      ContentSettingsType::SOUND,
@@ -499,7 +499,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
      ContentSettingsType::AUTOMATIC_DOWNLOADS,
  #if defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_WIN)
      ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER,
-@@ -140,6 +141,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -141,6 +142,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
      return is_subresource_filter_activated;
    }
  

+ 4 - 4
build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch

@@ -11,7 +11,7 @@ Avoid displaying info about intrusive ads
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
-@@ -487,6 +487,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -489,6 +489,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  setUpSoundPreference(preference);
              } else if (type == ContentSettingsType.JAVASCRIPT) {
                  setUpJavascriptPreference(preference);
@@ -20,7 +20,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              } else if (type == ContentSettingsType.GEOLOCATION) {
                  setUpLocationPreference(preference);
              } else if (type == ContentSettingsType.NOTIFICATIONS) {
-@@ -813,16 +815,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -815,16 +817,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
      private void setUpAdsInformationalBanner() {
          // Add the informational banner which shows at the top of the UI if ad blocking is
          // activated on this site.
@@ -37,7 +37,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      }
  
      private SiteSettingsCategory getWarningCategory() {
-@@ -984,17 +978,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -986,17 +980,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          @Nullable
          Integer currentValue =
                  mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT);
@@ -79,7 +79,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      /**
       * Updates the ads list preference based on whether the site is a candidate for blocking. This
       * has some custom behavior.
-@@ -1010,22 +1022,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1012,22 +1024,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              setupContentSettingsPreference(preference, null, false);
              return;
          }

+ 11 - 11
build/patches/Site-setting-for-images.patch

@@ -188,7 +188,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
-@@ -600,6 +600,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -628,6 +628,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                                 browserContextHandle, ContentSettingsType.SOUND)
                      ? R.string.website_settings_add_site_description_sound_block
                      : R.string.website_settings_add_site_description_sound_allow;
@@ -197,19 +197,19 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
              if (mRequiresFourStateSetting) {
                  resource = cookieSettingsExceptionShouldBlock()
-@@ -714,6 +716,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -742,6 +744,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              exception = true;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT)) {
-             exception = true;
+             allowSpecifyingExceptions = true;
 +        } else if (mCategory.showSites(SiteSettingsCategory.Type.IMAGES)) {
 +            exception = true;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
-             exception = true;
+             allowSpecifyingExceptions = true;
          } else if (mCategory.showSites(SiteSettingsCategory.Type.BACKGROUND_SYNC)
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
-@@ -123,6 +123,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -125,6 +125,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "autoplay_permission_list";
              case ContentSettingsType.IDLE_DETECTION:
                  return "idle_detection_permission_list";
@@ -218,7 +218,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.JAVASCRIPT:
                  return "javascript_permission_list";
              case ContentSettingsType.POPUPS:
-@@ -495,6 +497,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -497,6 +499,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  setUpJavascriptPreference(preference);
              } else if (type == ContentSettingsType.COOKIES) {
                  setUpCookiesPreference(preference);
@@ -227,7 +227,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              } else if (type == ContentSettingsType.GEOLOCATION) {
                  setUpLocationPreference(preference);
              } else if (type == ContentSettingsType.NOTIFICATIONS) {
-@@ -1064,6 +1068,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1066,6 +1070,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          setupContentSettingsPreference(preference, permission, false /* isEmbargoed */);
      }
  
@@ -357,7 +357,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
    <message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR_LIMIT=32]">
      JavaScript
    </message>
-@@ -188,6 +191,9 @@
+@@ -194,6 +197,9 @@
    <message name="IDS_WEBSITE_SETTINGS_ADD_SITE_TOAST" desc="The toast shown when a new site has been added to the exception list.">
      Site <ph name="SITE_NAME">%1$s<ex>google.com</ex></ph> added
    </message>
@@ -402,7 +402,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc
 --- a/components/page_info/android/page_info_controller_android.cc
 +++ b/components/page_info/android/page_info_controller_android.cc
-@@ -214,6 +214,10 @@ absl::optional<ContentSetting> PageInfoControllerAndroid::GetSettingToDisplay(
+@@ -221,6 +221,10 @@ absl::optional<ContentSetting> PageInfoControllerAndroid::GetSettingToDisplay(
      // audio since last navigation.
      if (web_contents_->WasEverAudible())
        return permission.default_setting;
@@ -416,7 +416,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
-@@ -89,9 +89,7 @@ ContentSettingsType kPermissionType[] = {
+@@ -90,9 +90,7 @@ ContentSettingsType kPermissionType[] = {
      ContentSettingsType::SENSORS,
      ContentSettingsType::NOTIFICATIONS,
      ContentSettingsType::JAVASCRIPT,
@@ -426,7 +426,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
      ContentSettingsType::POPUPS,
      ContentSettingsType::WINDOW_PLACEMENT,
      ContentSettingsType::ADS,
-@@ -146,6 +144,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
+@@ -147,6 +145,11 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info,
       return true;
    }
  

+ 15 - 8
build/patches/Skip-the-first-run-and-metrics.patch

@@ -3,10 +3,10 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
 Subject: Skip the first run and metrics
 
 ---
- .../org/chromium/chrome/browser/firstrun/FirstRunUtils.java | 3 ---
- .../chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java  | 6 ------
- .../chromium/chrome/browser/firstrun/FirstRunStatus.java    | 6 ++----
- 3 files changed, 2 insertions(+), 13 deletions(-)
+ .../chrome/browser/firstrun/FirstRunUtils.java      |  3 ---
+ .../browser/firstrun/ToSAndUMAFirstRunFragment.java | 13 -------------
+ .../chrome/browser/firstrun/FirstRunStatus.java     |  6 ++----
+ 3 files changed, 2 insertions(+), 20 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
@@ -30,19 +30,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
-@@ -85,12 +85,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -92,19 +92,6 @@ public class ToSAndUMAFirstRunFragment
  
          mAcceptButton.setOnClickListener((v) -> onTosButtonClicked());
  
--        mSendReportCheckBox.setChecked(getUmaCheckBoxInitialState());
+-        mSendReportCheckBox.setChecked(mAllowCrashUpload);
+-        mSendReportCheckBox.setOnCheckedChangeListener(
+-                ((compoundButton, isChecked) -> mAllowCrashUpload = isChecked));
 -        if (!canShowUmaCheckBox()) {
+-            if (!FREMobileIdentityConsistencyFieldTrial.shouldShowOldFreWithUmaDialog()) {
+-                mAllowCrashUpload =
+-                        sShowUmaCheckBoxForTesting || ChromeVersionInfo.isOfficialBuild();
+-            }
 -            mSendReportCheckBox.setVisibility(View.GONE);
 -        }
 -
 -        mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
- 
+-
          Resources resources = getResources();
-         NoUnderlineClickableSpan clickableGoogleTermsSpan =
+         final boolean showUmaDialog =
+                 FREMobileIdentityConsistencyFieldTrial.shouldShowOldFreWithUmaDialog();
 diff --git a/chrome/browser/first_run/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/browser/first_run/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 --- a/chrome/browser/first_run/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 +++ b/chrome/browser/first_run/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java

+ 6 - 4
build/patches/Switch-to-fstack-protector-strong.patch

@@ -10,19 +10,21 @@ The size increase on Android is something they care a lot about since some
 devices have very little storage space. That also means ever so slightly
 higher memory/cache usage but not by the full 2-3%.
 ---
- build/config/compiler/BUILD.gn | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
+ build/config/compiler/BUILD.gn | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
 
 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
-@@ -335,16 +335,12 @@ config("compiler") {
+@@ -338,18 +338,12 @@ config("compiler") {
          cflags += [ "-fstack-protector" ]
        }
      } else if ((is_posix && !is_chromeos_ash && !is_nacl) || is_fuchsia) {
 -      # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it.
 -      # See also https://crbug.com/533294
--      cflags += [ "--param=ssp-buffer-size=4" ]
+-      if (current_os != "zos") {
+-        cflags += [ "--param=ssp-buffer-size=4" ]
+-      }
 -
        # The x86 toolchain currently has problems with stack-protector.
        if (is_android && current_cpu == "x86") {

+ 24 - 24
build/patches/Timezone-customization.patch

@@ -321,7 +321,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
-@@ -58,6 +58,10 @@ import org.chromium.ui.widget.Toast;
+@@ -60,6 +60,10 @@ import org.chromium.ui.widget.Toast;
  
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
@@ -332,7 +332,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.Collections;
-@@ -163,6 +167,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -165,6 +169,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
      public static final String BINARY_TOGGLE_KEY = "binary_toggle";
      public static final String TRI_STATE_TOGGLE_KEY = "tri_state_toggle";
      public static final String FOUR_STATE_COOKIE_TOGGLE_KEY = "four_state_cookie_toggle";
@@ -340,7 +340,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
  
      // Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
      public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
-@@ -170,6 +175,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -172,6 +177,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
      public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
      private static final String ADD_EXCEPTION_KEY = "add_exception";
      public static final String COOKIE_INFO_TEXT_KEY = "cookie_info_text";
@@ -348,7 +348,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
  
      // Keys for Allowed/Blocked preference groups/headers.
      private static final String ALLOWED_GROUP = "allowed_group";
-@@ -247,7 +253,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -249,7 +255,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              Integer contentSetting = website.site().getContentSetting(
                      browserContextHandle, SiteSettingsCategory.contentSettingsType(i));
              if (contentSetting != null) {
@@ -360,7 +360,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              }
          }
          return false;
-@@ -407,7 +416,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -421,7 +430,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              if (queryHasChanged) getInfoForOrigins();
          });
  
@@ -370,7 +370,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              MenuItem help = menu.add(
                      Menu.NONE, R.id.menu_id_site_settings_help, Menu.NONE, R.string.menu_help);
              help.setIcon(VectorDrawableCompat.create(
-@@ -418,7 +428,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -432,7 +442,10 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          if (item.getItemId() == R.id.menu_id_site_settings_help) {
@@ -382,7 +382,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
                  getSiteSettingsDelegate().launchProtectedContentHelpAndFeedbackActivity(
                          getActivity());
              } else {
-@@ -497,6 +510,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -525,6 +538,12 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              WebsitePreferenceBridge.setDefaultContentSetting(
                      browserContextHandle, mCategory.getContentSettingsType(), setting);
              getInfoForOrigins();
@@ -395,7 +395,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else if (FOUR_STATE_COOKIE_TOGGLE_KEY.equals(preference.getKey())) {
              setCookieSettingsPreference((CookieSettingsState) newValue);
              getInfoForOrigins();
-@@ -594,6 +613,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -622,6 +641,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              assert WebsitePreferenceBridge.isCategoryEnabled(
                      browserContextHandle, ContentSettingsType.AUTO_DARK_WEB_CONTENT);
              resource = R.string.website_settings_add_site_description_auto_dark_block;
@@ -404,7 +404,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          }
          assert resource > 0;
          return getString(resource);
-@@ -634,6 +655,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -662,6 +683,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES) && mRequiresFourStateSetting) {
              setting = cookieSettingsExceptionShouldBlock() ? ContentSettingValues.BLOCK
                                                             : ContentSettingValues.ALLOW;
@@ -418,16 +418,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else {
              setting = (WebsitePreferenceBridge.isCategoryEnabled(
                                browserContextHandle, mCategory.getContentSettingsType()))
-@@ -696,6 +724,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -724,6 +752,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                  && WebsitePreferenceBridge.isCategoryEnabled(
                          browserContextHandle, ContentSettingsType.AUTO_DARK_WEB_CONTENT)) {
-             exception = true;
+             allowSpecifyingExceptions = true;
 +        } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) {
 +            exception = true;
          }
-         if (exception) {
+         if (allowSpecifyingExceptions) {
              getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(),
-@@ -867,7 +897,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -895,7 +925,14 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              TriStateSiteSettingsPreference triStateToggle =
                      (TriStateSiteSettingsPreference) getPreferenceScreen().findPreference(
                              TRI_STATE_TOGGLE_KEY);
@@ -443,7 +443,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          } else if (mRequiresFourStateSetting) {
              FourStateCookieSettingsPreference fourStateCookieToggle =
                      (FourStateCookieSettingsPreference) getPreferenceScreen().findPreference(
-@@ -896,6 +933,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -924,6 +961,9 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                  (FourStateCookieSettingsPreference) screen.findPreference(
                          FOUR_STATE_COOKIE_TOGGLE_KEY);
          // TODO(crbug.com/1104836): Remove the old third-party cookie blocking UI
@@ -453,7 +453,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
          Preference notificationsQuietUi = screen.findPreference(NOTIFICATIONS_QUIET_UI_TOGGLE_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
-@@ -907,20 +947,32 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -935,20 +975,32 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          if (mRequiresTriStateSetting) {
              screen.removePreference(binaryToggle);
              screen.removePreference(fourStateCookieToggle);
@@ -487,7 +487,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
  
          if (permissionBlockedByOs) {
              maybeShowOsWarning(screen);
-@@ -1035,6 +1087,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1063,6 +1115,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          triStateToggle.initialize(setting, descriptionIds);
      }
  
@@ -503,7 +503,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) {
          binaryToggle.setOnPreferenceChangeListener(this);
          binaryToggle.setTitle(ContentSettingsResources.getTitle(contentType));
-@@ -1118,9 +1179,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1146,9 +1207,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
  
          CharSequence[] descriptions = new String[2];
          descriptions[0] =
@@ -520,7 +520,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
-@@ -127,6 +127,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -129,6 +129,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "popup_permission_list";
              case ContentSettingsType.SOUND:
                  return "sound_permission_list";
@@ -529,7 +529,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.AR:
                  return "ar_permission_list";
              case ContentSettingsType.MEDIASTREAM_CAMERA:
-@@ -886,11 +888,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -888,11 +890,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          if (value == null) return;
          setUpPreferenceCommon(preference, value);
  
@@ -544,7 +544,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          switchPreference.setOnPreferenceChangeListener(this);
          @ContentSettingsType
          int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey());
-@@ -1109,7 +1113,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1111,7 +1115,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              preference.setSummary(getDSECategorySummary(permission));
          } else {
              preference.setSummary(
@@ -928,7 +928,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
    <message name="IDS_DESKTOP_SITE_TITLE" desc="Title of the permission to request the desktop view of a site by default [CHAR_LIMIT=32]">
      Desktop site
    </message>
-@@ -480,6 +483,38 @@
+@@ -486,6 +489,38 @@
      Block sites from playing protected content
    </message>
  
@@ -1068,7 +1068,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 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
-@@ -588,6 +588,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) {
+@@ -589,6 +589,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) {
      provider->SetClockForTesting(clock);
  }
  
@@ -1086,7 +1086,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
 diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h
 --- a/components/content_settings/core/browser/host_content_settings_map.h
 +++ b/components/content_settings/core/browser/host_content_settings_map.h
-@@ -332,6 +332,9 @@ class HostContentSettingsMap : public content_settings::Observer,
+@@ -333,6 +333,9 @@ class HostContentSettingsMap : public content_settings::Observer,
      allow_invalid_secondary_pattern_for_testing_ = allow;
    }
  
@@ -1345,7 +1345,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h
 diff --git a/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java
 --- a/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java
 +++ b/weblayer/browser/java/org/chromium/weblayer_private/settings/WebLayerSiteSettingsDelegate.java
-@@ -143,4 +143,7 @@ public class WebLayerSiteSettingsDelegate
+@@ -132,4 +132,7 @@ public class WebLayerSiteSettingsDelegate
  
      @Override
      public void dismissPrivacySandboxSnackbar() {}

+ 3 - 3
build/patches/Unexpire-tab-groups-flags.patch

@@ -12,7 +12,7 @@ Disable by default
 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
-@@ -2636,7 +2636,7 @@
+@@ -2659,7 +2659,7 @@
    {
      "name": "enable-tab-groups",
      "owners": [ "memex-team@google.com" ],
@@ -21,7 +21,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
    },
    {
      "name": "enable-tab-groups-continuation",
-@@ -2646,7 +2646,7 @@
+@@ -2669,7 +2669,7 @@
    {
      "name": "enable-tab-groups-ui-improvements",
      "owners": [ "memex-team@google.com" ],
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 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
-@@ -749,13 +749,13 @@ const base::Feature kTabEngagementReportingAndroid{
+@@ -754,13 +754,13 @@ const base::Feature kTabEngagementReportingAndroid{
      "TabEngagementReportingAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kTabGroupsAndroid{"TabGroupsAndroid",

+ 4 - 4
build/patches/Update-i18n-zh_CN-support.patch

@@ -12,7 +12,7 @@ Subject: Update i18n zh_CN support
 diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
 --- a/chrome/app/resources/generated_resources_zh-CN.xtb
 +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
-@@ -7871,4 +7871,6 @@
+@@ -7905,4 +7905,6 @@
  <translation id="996250603853062861">正在建立安全连接...</translation>
  <translation id="99731366405731005">您需要开启 <ph name="LINK1_BEGIN" />Chrome 同步<ph name="LINK1_END" />才能使用 Wi-Fi 同步功能。<ph name="LINK2_BEGIN" />了解详情<ph name="LINK2_END" /></translation>
  <translation id="998747458861718449">检查(&amp;N)</translation>
@@ -24,7 +24,7 @@ diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/res
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
-@@ -1410,4 +1410,37 @@ Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部
+@@ -1422,4 +1422,37 @@ Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部
  <translation id="983192555821071799">关闭所有标签页</translation>
  <translation id="987264212798334818">常规</translation>
  <translation id="996149300115483134">动态卡片上的菜单已关闭</translation>
@@ -67,7 +67,7 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
 +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
-@@ -330,4 +330,17 @@
+@@ -332,4 +332,17 @@
  <translation id="9162462602695099906">这是一个危险网页</translation>
  <translation id="930525582205581608">移除此网站?</translation>
  <translation id="967624055006145463">已存储的数据</translation>
@@ -90,7 +90,7 @@ diff --git a/components/browser_ui/strings/android/translations/browser_ui_strin
 diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
 --- a/components/strings/components_strings_zh-CN.xtb
 +++ b/components/strings/components_strings_zh-CN.xtb
-@@ -2509,4 +2509,7 @@
+@@ -2529,4 +2529,7 @@
      &lt;/ul&gt;</translation>
  <translation id="994346157028146140">JIS B1</translation>
  <translation id="997986563973421916">来自 Google Pay</translation>

+ 3 - 3
build/patches/Use-4-tile-rows-never-show-logo.patch

@@ -12,7 +12,7 @@ Subject: Use 4 tile rows, never show logo
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
-@@ -130,7 +130,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -131,7 +131,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
       */
      private boolean mHasShownView;
  
@@ -21,7 +21,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
      private boolean mSearchProviderIsGoogle;
      private boolean mShowingNonStandardLogo;
  
-@@ -255,7 +255,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -225,7 +225,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          mTileGroup = new TileGroup(tileRenderer, mManager, contextMenuManager, tileGroupDelegate,
                  /* observer = */ this, offlinePageBridge);
  
@@ -30,7 +30,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          if (searchProviderIsGoogle && QueryTileUtils.isQueryTilesEnabledOnNTP()) {
              maxRows = QueryTileSection.getMaxRowsForMostVisitedTiles(getContext());
          }
-@@ -576,7 +576,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -546,7 +546,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }

+ 30 - 30
build/patches/User-agent-customization.patch

@@ -70,9 +70,9 @@ diff --git a/base/base_switches.h b/base/base_switches.h
 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
-@@ -796,4 +796,6 @@ chrome_java_resources = [
+@@ -790,4 +790,6 @@ chrome_java_resources = [
+   "java/res/xml/privacy_preferences.xml",
    "java/res/xml/search_widget_info.xml",
-   "java/res/xml/tab_layout_badge.xml",
    "java/res/xml/tracing_preferences.xml",
 +  "java/res/xml/useragent_preferences.xml",
 +  "java/res/layout/custom_useragent_preferences.xml",
@@ -80,7 +80,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
-@@ -975,6 +975,7 @@ chrome_java_sources = [
+@@ -963,6 +963,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java",
    "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java",
    "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java",
@@ -253,7 +253,7 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
-@@ -45,6 +45,7 @@ import org.chromium.content_public.browser.DeviceUtils;
+@@ -46,6 +46,7 @@ import org.chromium.content_public.browser.DeviceUtils;
  import org.chromium.content_public.browser.SpeechRecognition;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  import org.chromium.net.NetworkChangeNotifier;
@@ -261,7 +261,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow
  
  import java.io.File;
  import java.util.ArrayList;
-@@ -306,11 +307,13 @@ public class ChromeBrowserInitializer {
+@@ -307,11 +308,13 @@ public class ChromeBrowserInitializer {
  
                          @Override
                          public void onSuccess() {
@@ -542,7 +542,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ActivityUtils;
 @@ -498,6 +502,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
-             // Request desktop sites for large screen tablets.
+             // Request desktop sites for large screen tablets if necessary.
              params.setOverrideUserAgent(calculateUserAgentOverrideOption());
  
 +            final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
@@ -584,7 +584,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
          } finally {
              TraceEvent.end("Tab.restoreIfNeeded");
          }
-@@ -1683,6 +1716,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1684,6 +1717,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
                  /* forcedByUser */ false);
      }
  
@@ -631,9 +631,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/TabUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
-@@ -24,6 +24,10 @@ import org.chromium.ui.base.DeviceFormFactor;
- import org.chromium.ui.base.WindowAndroid;
+@@ -26,6 +26,10 @@ import org.chromium.ui.base.WindowAndroid;
  import org.chromium.ui.display.DisplayAndroidManager;
+ import org.chromium.url.GURL;
  
 +import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
 +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
@@ -642,7 +642,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.ja
  /**
   * Collection of utility methods that operates on Tab.
   */
-@@ -86,10 +90,16 @@ public class TabUtils {
+@@ -88,10 +92,16 @@ public class TabUtils {
       * @param forcedByUser Whether this was triggered by users action.
       */
      public static void switchUserAgent(Tab tab, boolean switchToDesktop, boolean forcedByUser) {
@@ -866,7 +866,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
 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
-@@ -1025,6 +1025,9 @@ public final class ChromePreferenceKeys {
+@@ -1032,6 +1032,9 @@ public final class ChromePreferenceKeys {
      public static final KeyPrefix KEY_ZERO_SUGGEST_HEADER_GROUP_COLLAPSED_BY_DEFAULT_PREFIX =
              new KeyPrefix("zero_suggest_header_group_collapsed_by_default*");
  
@@ -876,7 +876,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
      /**
       * These values are currently used as SharedPreferences keys, along with the keys in
       * {@link LegacyChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys
-@@ -1140,6 +1143,8 @@ public final class ChromePreferenceKeys {
+@@ -1149,6 +1152,8 @@ public final class ChromePreferenceKeys {
                  TAP_FEED_CARDS_COUNT,
                  TAP_MV_TILES_COUNT,
                  TWA_DISCLOSURE_SEEN_PACKAGES,
@@ -884,7 +884,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
 +                USERAGENT_ALWAYS_DESKTOP_MODE,
                  VIDEO_TUTORIALS_SHARE_URL_SET,
                  WEB_FEED_INTRO_LAST_SHOWN_TIME_MS,
-                 WEB_FEED_INTRO_WEB_FEED_ID_SHOWN_TIME_MS_PREFIX.pattern()
+                 WEB_FEED_INTRO_WEB_FEED_ID_SHOWN_TIME_MS_PREFIX.pattern(),
 diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
 --- a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
 +++ b/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManager.java
@@ -1024,7 +1024,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
-@@ -1206,6 +1206,14 @@ extern const char kLensRegionSearchEnabled[];
+@@ -1211,6 +1211,14 @@ extern const char kCorsNonWildcardRequestHeadersSupport[];
  extern const char kIncognitoTabHistoryEnabled[];
  #endif
  
@@ -1063,10 +1063,10 @@ diff --git a/components/browser_ui/widget/android/java/src/org/chromium/componen
 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
-@@ -275,6 +275,13 @@ std::string GetPlatformForUAMetadata() {
- blink::UserAgentMetadata GetUserAgentMetadata() {
-   blink::UserAgentMetadata metadata;
- 
+@@ -332,6 +332,13 @@ blink::UserAgentMetadata GetUserAgentMetadata(PrefService* pref_service) {
+     enable_updated_grease_by_policy = pref_service->GetBoolean(
+         policy::policy_prefs::kUserAgentClientHintsGREASEUpdateEnabled);
+   }
 +  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
 +  if (command_line->HasSwitch(kUserAgent)) {
 +    std::string ua = command_line->GetSwitchValueASCII(kUserAgent);
@@ -1074,9 +1074,9 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
 +    return metadata;
 +  }
 +
-   metadata.brand_version_list = GetBrandVersionList();
+   metadata.brand_version_list =
+       GetBrandVersionList(enable_updated_grease_by_policy);
    metadata.full_version = base::FeatureList::IsEnabled(
-                               blink::features::kForceMajorVersion100InUserAgent)
 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
@@ -1112,7 +1112,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con
 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
-@@ -3604,6 +3604,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3569,6 +3569,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kLacrosUseChromeosProtectedMedia,
      switches::kLacrosUseChromeosProtectedAv1,
  #endif
@@ -1123,15 +1123,15 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
 diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
 --- a/content/browser/web_contents/web_contents_impl.cc
 +++ b/content/browser/web_contents/web_contents_impl.cc
-@@ -38,6 +38,7 @@
- #include "base/strings/string_util.h"
- #include "base/strings/stringprintf.h"
- #include "base/system/sys_info.h"
+@@ -15,6 +15,7 @@
+ 
+ #include "base/allocator/partition_alloc_features.h"
+ #include "base/allocator/partition_allocator/starscan/pcscan.h"
 +#include "base/base_switches.h"
- #include "base/threading/thread_task_runner_handle.h"
- #include "base/time/time.h"
- #include "base/trace_event/optional_trace_event.h"
-@@ -2640,6 +2641,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
+ #include "base/bind.h"
+ #include "base/command_line.h"
+ #include "base/containers/contains.h"
+@@ -2697,6 +2698,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
          !renderer_preferences_.user_agent_override.ua_metadata_override->mobile)
  #endif
        prefs.viewport_meta_enabled = false;
@@ -1164,7 +1164,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh
 diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
 --- a/content/renderer/render_thread_impl.cc
 +++ b/content/renderer/render_thread_impl.cc
-@@ -1670,7 +1670,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
+@@ -1703,7 +1703,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
  }
  
  void RenderThreadImpl::SetUserAgent(const std::string& user_agent) {

+ 2 - 2
build/patches/autofill-disable-autofill-download-manager.patch

@@ -86,7 +86,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.h b/comp
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -60,19 +60,6 @@ bool CachedFormNeedsUpdate(const FormData& live_form,
+@@ -54,19 +54,6 @@ bool CachedFormNeedsUpdate(const FormData& live_form,
    return false;
  }
  
@@ -106,7 +106,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  }  // namespace
  
  using base::TimeTicks;
-@@ -126,13 +113,6 @@ AutofillManager::AutofillManager(
+@@ -120,13 +107,6 @@ AutofillManager::AutofillManager(
        client_(client),
        log_manager_(client ? client->GetLogManager() : nullptr),
        form_interactions_ukm_logger_(CreateFormInteractionsUkmLogger()) {

+ 4 - 4
build/patches/build-remove-calling-untrusted-hooks.patch

@@ -11,7 +11,7 @@ sysroot.
 diff --git a/DEPS b/DEPS
 --- a/DEPS
 +++ b/DEPS
-@@ -113,7 +113,7 @@ vars = {
+@@ -112,7 +112,7 @@ vars = {
  
    # Check out and download nacl by default, unless on an arm mac.
    # This can be disabled e.g. with custom_vars.
@@ -20,7 +20,7 @@ diff --git a/DEPS b/DEPS
  
    # By default, do not check out src-internal. This can be overridden e.g. with
    # custom_vars.
-@@ -144,8 +144,8 @@ vars = {
+@@ -143,8 +143,8 @@ vars = {
    # support for other platforms may be added in the future.
    'checkout_openxr' : 'checkout_win',
  
@@ -81,7 +81,7 @@ diff --git a/DEPS b/DEPS
    {
      # Case-insensitivity for the Win SDK. Must run before win_toolchain below.
      'name': 'ciopfs_linux',
-@@ -3956,43 +3913,6 @@ hooks = [
+@@ -3957,43 +3914,6 @@ hooks = [
                 '-s', 'src/third_party/skia',
                 '--header', 'src/skia/ext/skia_commit_hash.h'],
    },
@@ -125,7 +125,7 @@ diff --git a/DEPS b/DEPS
    # Pull rc binaries using checked-in hashes.
    {
      'name': 'rc_win',
-@@ -4018,30 +3938,6 @@ hooks = [
+@@ -4019,30 +3939,6 @@ hooks = [
                  '-s', 'src/build/toolchain/win/rc/mac/rc.sha1',
      ],
    },

+ 1 - 1
build/patches/disable-WebView-variations-support.patch

@@ -24,7 +24,7 @@ diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewC
 diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
 +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
-@@ -435,8 +435,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
+@@ -431,8 +431,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
                  }
              }
  

+ 1 - 1
build/patches/disable-autofill-server-communication-by-default.patch

@@ -9,7 +9,7 @@ Subject: disable autofill server communication by default
 diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
 --- a/components/autofill/core/common/autofill_features.cc
 +++ b/components/autofill/core/common/autofill_features.cc
-@@ -342,7 +342,7 @@ const base::Feature kAutofillSectionUponRedundantNameInfo{
+@@ -363,7 +363,7 @@ const base::Feature kAutofillSectionUponRedundantNameInfo{
  // "upload" resources.
  // i.e., https://other.autofill.server:port/tbproxy/af/
  const base::Feature kAutofillServerCommunication{

+ 5 - 5
build/patches/kill-Auth.patch

@@ -9,7 +9,7 @@ Subject: kill Auth
 diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 --- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 +++ b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
-@@ -26,9 +26,6 @@ import android.os.SystemClock;
+@@ -25,9 +25,6 @@ import android.os.SystemClock;
  
  import androidx.annotation.Nullable;
  
@@ -19,7 +19,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
  import org.chromium.base.ApiCompatibilityUtils;
  import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
-@@ -83,14 +80,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -82,14 +79,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
  
      @Override
      public Account[] getAccounts() {
@@ -34,7 +34,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
          // Account seeding relies on GoogleAuthUtil.getAccountId to get GAIA ids,
          // so don't report any accounts if Google Play Services are out of date.
          return new Account[] {};
-@@ -101,28 +90,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -100,28 +89,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
              throws AuthException {
          ThreadUtils.assertOnBackgroundThread();
          assert AccountUtils.GOOGLE_ACCOUNT_TYPE.equals(account.type);
@@ -65,7 +65,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
      }
  
      @Override
-@@ -152,17 +125,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -151,17 +124,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
      @SuppressLint("MissingPermission")
      @Override
      public void createAddAccountIntent(Callback<Intent> callback) {
@@ -83,7 +83,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
      }
  
      // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs
-@@ -180,12 +142,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -179,12 +141,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
      @Nullable
      @Override
      public String getAccountGaiaId(String accountEmail) {

+ 15 - 16
build/patches/kill-TOS-and-metrics-opt-out.patch

@@ -3,11 +3,11 @@ Date: Fri, 22 Jun 2018 17:16:07 +0200
 Subject: kill TOS and metrics opt-out
 
 ---
- chrome/android/java/res/layout/fre_tosanduma.xml   |  9 ---------
- chrome/android/java/res/values/dimens.xml          |  1 -
- .../browser/firstrun/FirstRunActivityBase.java     |  2 +-
- .../firstrun/ToSAndUMAFirstRunFragment.java        | 14 --------------
- 4 files changed, 1 insertion(+), 25 deletions(-)
+ chrome/android/java/res/layout/fre_tosanduma.xml    |  9 ---------
+ chrome/android/java/res/values/dimens.xml           |  1 -
+ .../browser/firstrun/FirstRunActivityBase.java      |  2 +-
+ .../browser/firstrun/ToSAndUMAFirstRunFragment.java | 13 -------------
+ 4 files changed, 1 insertion(+), 24 deletions(-)
 
 diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
 --- a/chrome/android/java/res/layout/fre_tosanduma.xml
@@ -54,15 +54,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
-@@ -51,7 +51,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
-     private boolean mTosButtonClicked;
+@@ -57,7 +57,6 @@ public class ToSAndUMAFirstRunFragment
+     private boolean mAllowCrashUpload;
  
      private Button mAcceptButton;
 -    private CheckBox mSendReportCheckBox;
      private TextView mTosAndPrivacy;
      private View mTitle;
      private View mProgressSpinner;
-@@ -79,7 +78,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -86,7 +85,6 @@ public class ToSAndUMAFirstRunFragment
          mProgressSpinner = view.findViewById(R.id.progress_spinner);
          mProgressSpinner.setVisibility(View.GONE);
          mAcceptButton = (Button) view.findViewById(R.id.terms_accept);
@@ -70,7 +70,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
          mTosAndPrivacy = (TextView) view.findViewById(R.id.tos_and_privacy);
  
          mAcceptButton.setOnClickListener((v) -> onTosButtonClicked());
-@@ -140,11 +138,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -143,11 +141,6 @@ public class ToSAndUMAFirstRunFragment
          if (!isVisibleToUser) {
              // Restore original enabled & visibility states, in case the user returns to the page.
              setSpinnerVisible(false);
@@ -82,24 +82,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
          }
      }
  
-@@ -167,7 +160,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -170,7 +163,6 @@ public class ToSAndUMAFirstRunFragment
          assert !isWaitingForNativeAndPolicyInit();
  
          setSpinnerVisible(false);
--        mSendReportCheckBox.setChecked(getUmaCheckBoxInitialState());
+-        mSendReportCheckBox.setChecked(mAllowCrashUpload);
      }
  
-     private void onTosButtonClicked() {
-@@ -194,8 +186,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+     /** Implements {@link FreUMADialogCoordinator.Listener} */
+@@ -209,7 +201,6 @@ public class ToSAndUMAFirstRunFragment
              RecordHistogram.recordTimesHistogram("MobileFre.TosFragment.SpinnerVisibleDuration",
                      SystemClock.elapsedRealtime() - mTosAcceptedTime);
          }
--        boolean allowCrashUpload = canShowUmaCheckBox() && mSendReportCheckBox.isChecked();
--        getPageDelegate().acceptTermsOfService(allowCrashUpload);
+-        getPageDelegate().acceptTermsOfService(mAllowCrashUpload);
      }
  
      private void setSpinnerVisible(boolean spinnerVisible) {
-@@ -228,10 +218,6 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -242,10 +233,6 @@ public class ToSAndUMAFirstRunFragment
  
          mAcceptButton.setVisibility(visibility);
          mTosAndPrivacy.setVisibility(visibility);

+ 1 - 1
build/patches/kill-Vision.patch

@@ -13,7 +13,7 @@ Barcode, face and text detection APIs
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -313,8 +313,6 @@ android_library("chrome_java") {
+@@ -318,8 +318,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_gcm_java",
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",

部分文件因为文件数量过多而无法显示