Kaynağa Gözat

Release 94.0.4606.94

csagan5 3 yıl önce
ebeveyn
işleme
77822a7efb
100 değiştirilmiş dosya ile 1402 ekleme ve 1696 silme
  1. 6 0
      CHANGELOG.md
  2. 1 1
      build/GN_ARGS
  3. 1 1
      build/RELEASE
  4. 3 6
      build/bromite_patches_list.txt
  5. 4 4
      build/patches/AImageReader-CFI-crash-mitigations.patch
  6. 2 2
      build/patches/AV1-codec-support.patch
  7. 14 14
      build/patches/Add-AllowUserCertificates-flag.patch
  8. 1 1
      build/patches/Add-English-only-search-engine.patch
  9. 5 5
      build/patches/Add-IsCleartextPermitted-flag.patch
  10. 10 10
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  11. 16 16
      build/patches/Add-a-proxy-configuration-page.patch
  12. 8 8
      build/patches/Add-an-always-incognito-mode.patch
  13. 26 26
      build/patches/Add-bookmark-import-export-actions.patch
  14. 10 10
      build/patches/Add-custom-tab-intents-privacy-option.patch
  15. 6 6
      build/patches/Add-exit-menu-item.patch
  16. 6 6
      build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch
  17. 3 3
      build/patches/Add-flag-for-save-data-header.patch
  18. 4 4
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  19. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  20. 6 6
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  21. 3 3
      build/patches/Add-flag-to-disable-WebGL.patch
  22. 14 14
      build/patches/Add-flag-to-disable-external-intent-requests.patch
  23. 8 8
      build/patches/Add-flag-to-disable-vibration.patch
  24. 13 13
      build/patches/Add-history-support-in-incognito-mode.patch
  25. 33 19
      build/patches/Add-menu-item-to-bookmark-all-tabs.patch
  26. 5 5
      build/patches/Add-menu-item-to-view-source.patch
  27. 9 9
      build/patches/Add-option-to-force-tablet-UI.patch
  28. 7 7
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  29. 2 2
      build/patches/Add-support-for-ISupportHelpAndFeedback.patch
  30. 38 36
      build/patches/Allow-building-without-enable_reporting.patch
  31. 2 2
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  32. 186 96
      build/patches/Automated-domain-substitution.patch
  33. 1 14
      build/patches/Block-gateway-attacks-via-websockets.patch
  34. 4 4
      build/patches/Block-qjz9zk-or-trk-requests.patch
  35. 23 22
      build/patches/Bromite-AdBlockUpdaterService.patch
  36. 69 76
      build/patches/Bromite-auto-updater.patch
  37. 10 10
      build/patches/Disable-AGSA-by-default.patch
  38. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  39. 0 37
      build/patches/Disable-Omaha-update-checks.patch
  40. 0 23
      build/patches/Disable-RTCGetCurrentBrowsingContextMedia-by-default.patch
  41. 0 46
      build/patches/Disable-UA-client-hint-for-model.patch
  42. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  43. 18 16
      build/patches/Disable-feeds-support-by-default.patch
  44. 1 1
      build/patches/Disable-fetching-of-all-field-trials.patch
  45. 1 1
      build/patches/Disable-lock-icon-in-address-bar-by-default.patch
  46. 4 4
      build/patches/Disable-media-router-and-remoting-by-default.patch
  47. 1 1
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  48. 1 1
      build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch
  49. 1 1
      build/patches/Disable-plugins-enumeration.patch
  50. 1 1
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  51. 177 129
      build/patches/Disable-safe-browsing.patch
  52. 1 1
      build/patches/Disable-search-engine-DSE-automatic-permission.patch
  53. 2 2
      build/patches/Disable-seed-based-field-trials.patch
  54. 7 7
      build/patches/Disable-smart-selection-by-default.patch
  55. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  56. 13 13
      build/patches/Disable-text-fragments-by-default.patch
  57. 2 2
      build/patches/Disable-third-party-cookies-by-default.patch
  58. 1 1
      build/patches/Disable-unified-autoplay-feature.patch
  59. 1 1
      build/patches/Do-not-build-API-keys-infobar.patch
  60. 4 4
      build/patches/Do-not-compile-QR-code-sharing.patch
  61. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  62. 9 13
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  63. 1 1
      build/patches/Enable-network-isolation-features.patch
  64. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  65. 23 23
      build/patches/Enable-share-intent.patch
  66. 3 3
      build/patches/Force-open-external-links-in-incognito.patch
  67. 3 3
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  68. 4 4
      build/patches/JIT-less-toggle.patch
  69. 3 3
      build/patches/Logcat-crash-reports-UI.patch
  70. 4 4
      build/patches/Make-all-favicon-requests-on-demand.patch
  71. 19 18
      build/patches/Modify-default-preferences.patch
  72. 8 8
      build/patches/Move-some-account-settings-back-to-privacy-settings.patch
  73. 24 24
      build/patches/Multiple-fingerprinting-mitigations.patch
  74. 0 91
      build/patches/Observe-WebContents-in-PPAPIDownloadRequest.patch
  75. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  76. 1 1
      build/patches/Open-YouTube-links-in-Bromite.patch
  77. 43 0
      build/patches/Override-UA-client-hint-for-model.patch
  78. 0 234
      build/patches/Prevents-non-browser-processes-from-requesting-memory-dumps.patch
  79. 3 3
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
  80. 53 54
      build/patches/Remove-binary-blob-integrations.patch
  81. 4 4
      build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch
  82. 3 3
      build/patches/Remove-help-menu-item.patch
  83. 3 3
      build/patches/Remove-offline-measurement-background-task.patch
  84. 181 166
      build/patches/Remove-signin-and-data-saver-integrations.patch
  85. 12 12
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  86. 24 25
      build/patches/Restore-Simplified-NTP-launch.patch
  87. 4 4
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  88. 15 15
      build/patches/Revert-flags-remove-num-raster-threads.patch
  89. 12 12
      build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch
  90. 4 4
      build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch
  91. 13 13
      build/patches/Site-setting-for-images.patch
  92. 24 24
      build/patches/Skip-the-first-run-and-metrics.patch
  93. 44 101
      build/patches/Timezone-customization.patch
  94. 12 12
      build/patches/Unexpire-tab-groups-flags.patch
  95. 5 5
      build/patches/Update-i18n-zh_CN-support.patch
  96. 3 3
      build/patches/Use-4-tile-rows-never-show-logo.patch
  97. 2 2
      build/patches/Use-dummy-DFM-installer.patch
  98. 25 24
      build/patches/User-agent-customization.patch
  99. 1 1
      build/patches/ask-permission-to-play-protected-media-by-default.patch
  100. 3 3
      build/patches/autofill-disable-autofill-download-manager.patch

+ 6 - 0
CHANGELOG.md

@@ -1,3 +1,9 @@
+# 94.0.4606.94
+* Bromite auto-update feature, disabled by default (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/706)
+* add site setting for images (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/1339)
+* use SM-G960U as model provided via client hints and Javascript
+* drop patches already merged upstream
+
 # 93.0.4577.110
 
 * set enable_reporting to false (thanks to @nikolowry)

+ 1 - 1
build/GN_ARGS

@@ -6,6 +6,7 @@ debuggable_apks=false
 dfmify_dev_ui=false
 disable_android_lint=true
 disable_autofill_assistant_dfm=true
+disable_fieldtrial_testing_config=true
 disable_tab_ui_dfm=true
 enable_av1_decoder=true
 enable_dav1d_decoder=true
@@ -23,7 +24,6 @@ enable_reporting=false
 enable_vr=false
 exclude_unwind_tables=false
 ffmpeg_branding="Chrome"
-fieldtrial_testing_like_official_build=true
 icu_use_data_file=true
 is_component_build=false
 is_debug=false

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-93.0.4577.110
+94.0.4606.94

+ 3 - 6
build/bromite_patches_list.txt

@@ -143,7 +143,6 @@ Remove-offline-measurement-background-task.patch
 User-agent-customization.patch
 Add-AllowUserCertificates-flag.patch
 Add-IsCleartextPermitted-flag.patch
-Disable-RTCGetCurrentBrowsingContextMedia-by-default.patch
 Unexpire-tab-groups-flags.patch
 Add-flag-for-omnibox-autocomplete-filtering.patch
 Enable-IntentBlockExternalFormRedirectsNoGesture-by-default.patch
@@ -154,14 +153,12 @@ JIT-less-toggle.patch
 API-level-21-prevent-crash-on-download.patch
 Add-flag-to-disable-vibration.patch
 mime_util-force-text-x-suse-ymp-to-be-downloaded.patch
-Disable-UA-client-hint-for-model.patch
+Override-UA-client-hint-for-model.patch
 Disable-AGSA-by-default.patch
 Allow-building-without-enable_reporting.patch
 Disable-lock-icon-in-address-bar-by-default.patch
 Force-open-external-links-in-incognito.patch
 Enable-share-intent.patch
+Site-setting-for-images.patch
+Bromite-auto-updater.patch
 Automated-domain-substitution.patch
-Observe-WebContents-in-PPAPIDownloadRequest.patch
-Prevents-non-browser-processes-from-requesting-memory-dumps.patch
-Add-images-contentsettings.patch
-Enable-update-notification.patch

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

@@ -82,7 +82,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2039,7 +2039,7 @@
+@@ -2017,7 +2017,7 @@
    {
      "name": "enable-image-reader",
      "owners": [ "vikassoni", "liberato" ],
@@ -182,7 +182,7 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
-@@ -503,6 +503,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -517,6 +517,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
      }
    }
  
@@ -225,7 +225,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
-@@ -635,6 +635,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -668,6 +668,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};
@@ -239,7 +239,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
-@@ -208,6 +208,7 @@ MEDIA_EXPORT extern const base::Feature kForceHardwareAudioDecoders;
+@@ -219,6 +219,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;

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

@@ -54,9 +54,9 @@ 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
-@@ -633,6 +633,11 @@ aom_mem_sources = [
+@@ -634,6 +634,11 @@ aom_mem_sources = [
  
- aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
+ aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/float.asm" ]
  
 +aom_ports_arm_sources = [
 +  "//third_party/libaom/source/libaom/aom_ports/arm_cpudetect.c",

+ 14 - 14
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
-@@ -224,6 +224,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
+@@ -223,6 +223,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;
-@@ -968,6 +969,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -976,6 +977,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          UpdateMenuItemHelper.getInstance().onStart();
          ChromeActivitySessionTracker.getInstance().onStartWithNative();
          ChromeCachedFlags.getInstance().cacheNativeFlags();
@@ -38,18 +38,18 @@ 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
-@@ -85,6 +85,7 @@ public class ChromeCachedFlags {
+@@ -88,6 +88,7 @@ public class ChromeCachedFlags {
                  add(ChromeFeatureList.EARLY_LIBRARY_LOAD);
                  add(ChromeFeatureList.ELASTIC_OVERSCROLL);
                  add(ChromeFeatureList.IMMERSIVE_UI_MODE);
 +                add(ChromeFeatureList.ALLOW_USER_CERTIFICATES);
                  add(ChromeFeatureList.INSTANT_START);
+                 add(ChromeFeatureList.INSTANCE_SWITCHER);
                  add(ChromeFeatureList.INTEREST_FEED_V2);
-                 add(ChromeFeatureList.LENS_CAMERA_ASSISTED_SEARCH);
 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
-@@ -2886,6 +2886,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2781,6 +2781,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
-@@ -131,6 +131,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -139,6 +139,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &feed::kFeedInteractiveRefresh,
      &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,
-@@ -359,6 +360,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
+@@ -373,6 +374,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
      "AdaptiveButtonInTopToolbarCustomizationV2",
      base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -123,14 +123,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/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
-@@ -46,6 +46,7 @@ public class CachedFeatureFlags {
+@@ -48,6 +48,7 @@ public class CachedFeatureFlags {
       */
-     private static Map<String, Boolean> sDefaults = new HashMap<String, Boolean>() {
-         {
-+            put(ChromeFeatureList.ALLOW_USER_CERTIFICATES, false);
-             put(ChromeFeatureList.ANDROID_PARTNER_CUSTOMIZATION_PHENOTYPE, true);
-             put(ChromeFeatureList.BOOKMARK_BOTTOM_SHEET, false);
-             put(ChromeFeatureList.CONDITIONAL_TAB_STRIP_ANDROID, false);
+     private static Map<String, Boolean> sDefaults =
+             ImmutableMap.<String, Boolean>builder()
++                    .put(ChromeFeatureList.ALLOW_USER_CERTIFICATES, false)
+                     .put(ChromeFeatureList.ANDROID_PARTNER_CUSTOMIZATION_PHENOTYPE, true)
+                     .put(ChromeFeatureList.BOOKMARK_BOTTOM_SHEET, false)
+                     .put(ChromeFeatureList.CONDITIONAL_TAB_STRIP_ANDROID, false)
 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

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

@@ -13,7 +13,7 @@ disable from all its searches RLZ and field experiments querystring parameters.
 diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
 --- a/components/search_engines/prepopulated_engines.json
 +++ b/components/search_engines/prepopulated_engines.json
-@@ -132,6 +132,27 @@
+@@ -133,6 +133,27 @@
        "id": 1
      },
  

+ 5 - 5
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
-@@ -7709,6 +7709,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -7612,6 +7612,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(
           chrome::android::kBookmarksExportUseSaf)},
  
@@ -29,8 +29,8 @@ 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
-@@ -1463,6 +1463,10 @@ const char kHttpsOnlyModeDescription[] =
-     "Adds a setting under chrome://settings/security to opt-in to HTTPS-Only "
+@@ -1407,6 +1407,10 @@ const char kHttpsOnlyModeDescription[] =
+     "Adds a setting under chrome://settings/security to opt-in to HTTPS-First "
      "Mode.";
  
 +const char kIsCleartextPermittedName[] = "Allow cleartext traffic";
@@ -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
-@@ -847,6 +847,9 @@ extern const char kHostedAppShimCreationDescription[];
+@@ -814,6 +814,9 @@ extern const char kHostedAppShimCreationDescription[];
  extern const char kHttpsOnlyModeName[];
  extern const char kHttpsOnlyModeDescription[];
  
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -88,6 +88,9 @@ const base::FeatureParam<int> kUseDnsHttpsSvcbExtraTimePercent{
+@@ -89,6 +89,9 @@ const base::FeatureParam<int> kUseDnsHttpsSvcbExtraTimePercent{
  const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
  

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

@@ -17,7 +17,7 @@ See also:
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3288,6 +3288,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3156,6 +3156,12 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kDeprecateLowUsageCodecsName,
       flag_descriptions::kDeprecateLowUsageCodecsDescription, kOsCrOS | kOsLinux,
       FEATURE_VALUE_TYPE(media::kDeprecateLowUsageCodecs)},
@@ -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
-@@ -664,6 +664,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
+@@ -635,6 +635,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
      "authenticator (if available) to verify card ownership when retrieving "
      "credit cards from Google Payments.";
  
@@ -48,20 +48,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
-@@ -402,6 +402,9 @@ extern const char kEnableAutofillAddressSavePromptDescription[];
+@@ -404,6 +404,9 @@ extern const char kEnableAutofillSaveCardInfoBarAccountIndicationFooterName[];
+ extern const char
+     kEnableAutofillSaveCardInfoBarAccountIndicationFooterDescription[];
  
- extern const char kEnableAutofillCreditCardAblationExperimentDisplayName[];
- extern const char kEnableAutofillCreditCardAblationExperimentDescription[];
 +extern const char kEnableIncognitoSnapshotsInAndroidRecentsName[];
 +extern const char kEnableIncognitoSnapshotsInAndroidRecentsDescription[];
 +
+ extern const char kEnableExperimentalCookieFeaturesName[];
+ extern const char kEnableExperimentalCookieFeaturesDescription[];
  
- extern const char kEnableAutofillCreditCardAuthenticationName[];
- extern const char kEnableAutofillCreditCardAuthenticationDescription[];
 diff --git a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl b/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl
 --- a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl
 +++ b/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmpl
-@@ -141,10 +141,6 @@ public abstract class ChromeSwitches {{
+@@ -129,10 +129,6 @@ public abstract class ChromeSwitches {{
      /** Switch for enabling the Chrome Survey. Only works when UMA is accepted. */
      public static final String CHROME_FORCE_ENABLE_SURVEY = "force-enable-chrome-survey";
  
@@ -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
-@@ -348,6 +348,9 @@ const char kHomePage[]                      = "homepage";
+@@ -344,6 +344,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
-@@ -115,6 +115,7 @@ extern const char kForceStackedTabStripLayout[];
+@@ -114,6 +114,7 @@ extern const char kForceStackedTabStripLayout[];
  extern const char kHideCrashRestoreBubble[];
  extern const char kHomePage[];
  extern const char kIncognito[];

+ 16 - 16
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 @@ public class PrivacySettings
+@@ -54,6 +54,7 @@ public class PrivacySettings
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
      private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
@@ -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
-@@ -363,6 +363,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -365,6 +365,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUISettingsURL));
  #endif
@@ -93,7 +93,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -92,6 +92,12 @@
+@@ -88,6 +88,12 @@
          <include name="IDR_HANGOUT_SERVICES_MANIFEST" file="resources\hangout_services\manifest.json" type="BINDATA" />
        </if>
  
@@ -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
-@@ -902,6 +904,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
+@@ -914,6 +916,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
    PluginsResourceService::RegisterPrefs(registry);
  #endif
  
@@ -627,7 +627,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -263,6 +263,8 @@ static_library("ui") {
+@@ -265,6 +265,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -639,7 +639,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -52,6 +52,7 @@
+@@ -53,6 +53,7 @@
  #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
  #include "chrome/browser/ui/webui/policy/policy_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
@@ -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/sync_internals/sync_internals_ui.h"
-@@ -614,6 +615,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -619,6 +620,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -1127,7 +1127,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUIChromeURLsHost[] = "chrome-urls";
  const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
  const char kChromeUIComponentsHost[] = "components";
-@@ -344,6 +346,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -346,6 +348,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
      kChromeUIMobileSetupHost,
      kChromeUIMultiDeviceSetupHost,
      kChromeUINetworkHost,
@@ -1135,7 +1135,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIOobeHost,
      kChromeUIOSCreditsHost,
      kChromeUIOSSettingsHost,
-@@ -567,6 +570,7 @@ const char* const kChromeHostURLs[] = {
+@@ -568,6 +571,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !BUILDFLAG(IS_CHROMEOS_ASH)
      kChromeUIAppLauncherPageHost,
@@ -1146,7 +1146,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
-@@ -122,6 +122,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[];
@@ -1158,12 +1158,12 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const
 diff --git a/components/policy/core/browser/proxy_policy_handler.cc b/components/policy/core/browser/proxy_policy_handler.cc
 --- a/components/policy/core/browser/proxy_policy_handler.cc
 +++ b/components/policy/core/browser/proxy_policy_handler.cc
-@@ -210,7 +210,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
-           bypass_list->GetAsString(&bypass_list_string);
-         prefs->SetValue(proxy_config::prefs::kProxy,
-                         ProxyConfigDictionary::CreateFixedServers(
--                            proxy_server, bypass_list_string));
-+                            proxy_server, bypass_list_string, false));
+@@ -207,7 +207,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
+             ProxyConfigDictionary::CreateFixedServers(
+                 server->GetString(), bypass_list && bypass_list->is_string()
+                                          ? bypass_list->GetString()
+-                                         : std::string()));
++                                         : std::string(), false));
        }
        break;
      }

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

@@ -40,7 +40,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -24,6 +24,11 @@
+@@ -28,6 +28,11 @@
          android:key="secure_dns"
          android:title="@string/settings_secure_dns_title"
          android:fragment="org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings"/>
@@ -148,7 +148,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;
-@@ -1738,8 +1739,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1756,8 +1757,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -158,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 +                || (savedInstanceState != null
 +                && savedInstanceState.getBoolean(IS_INCOGNITO_SELECTED, false));
  
-         int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
+         mNextTabPolicySupplier = new ChromeNextTabPolicySupplier(mOverviewModeBehaviorSupplier);
  
 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
@@ -171,7 +171,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;
-@@ -1886,6 +1887,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1872,6 +1873,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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
-@@ -363,6 +363,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -378,6 +378,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -335,14 +335,14 @@ 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
-@@ -41,6 +41,7 @@ import org.chromium.ui.text.SpanApplier;
+@@ -42,6 +42,7 @@ import org.chromium.ui.text.SpanApplier;
   */
  public class PrivacySettings
          extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
 +    private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
      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_SECURE_DNS = "secure_dns";
+     private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -493,7 +493,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
-@@ -433,7 +433,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
+@@ -447,7 +447,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognitoAvailableToThirdParty{

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

@@ -132,9 +132,9 @@ diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -56,7 +56,6 @@ by a child template that "extends" this file.
-     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
-     {% endif %}
+@@ -59,7 +59,6 @@ by a child template that "extends" this file.
+     <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_SCAN"
+                             android:usesPermissionFlags="neverForLocation"/>
  
 -    <uses-permission-sdk-23 android:name="android.permission.READ_CONTACTS"/>
      <uses-permission-sdk-23 android:name="android.permission.REORDER_TASKS"/>
@@ -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
-@@ -1816,6 +1816,13 @@ static_library("browser") {
+@@ -1817,6 +1817,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",
-@@ -2922,6 +2929,8 @@ static_library("browser") {
+@@ -2938,6 +2945,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",
-@@ -3446,8 +3455,6 @@ static_library("browser") {
+@@ -3483,8 +3492,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
-@@ -7659,6 +7659,12 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kShareUsageRanking)},
- #endif
+@@ -7562,6 +7562,12 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(
+          password_manager::features::kPasswordsAccountStorageRevisedOptInFlow)},
  
 +    {"export-bookmarks-use-saf",
 +     flag_descriptions::kBookmarksExportUseSafName,
@@ -1339,9 +1339,9 @@ 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
-@@ -5497,6 +5497,11 @@ const char kWebrtcPipeWireCapturerDescription[] =
-     "capturing the desktop content on the Wayland display server.";
- #endif  // #if defined(WEBRTC_USE_PIPEWIRE)
+@@ -5302,6 +5302,11 @@ const char kWebKioskEnableLacrosDescription[] =
+     "Chrome OS. When disabled, the Ash-chrome will be used";
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
 +const char kBookmarksExportUseSafName[] = "Use saf for bookmarks export";
 +const char kBookmarksExportUseSafDescription[] =
@@ -1354,9 +1354,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
-@@ -3207,6 +3207,9 @@ extern const char kWebrtcPipeWireCapturerName[];
- extern const char kWebrtcPipeWireCapturerDescription[];
- #endif  // #if defined(WEBRTC_USE_PIPEWIRE)
+@@ -3088,6 +3088,9 @@ extern const char kWebKioskEnableLacrosName[];
+ extern const char kWebKioskEnableLacrosDescription[];
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
 +extern const char kBookmarksExportUseSafName[];
 +extern const char kBookmarksExportUseSafDescription[];
@@ -1367,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
-@@ -156,6 +156,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -164,6 +164,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kBackgroundThreadPool,
      &kBentoOffline,
      &kBookmarkBottomSheet,
@@ -1375,9 +1375,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kCastDeviceFilter,
      &kCloseTabSuggestions,
      &kCriticalPersistedTabData,
-@@ -774,6 +775,10 @@ const base::Feature kWebOtpCrossDeviceSimpleString{
- const base::Feature kWebApkInstallCompleteNotification{
-     "WebApkInstallCompleteNotification", base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -810,6 +811,10 @@ const base::Feature kWebApkInstallCompleteNotification{
+ const base::Feature kWebApkTrampolineOnInitialIntent{
+     "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT};
  
 +// disabled by default because of an issue on Android 6.0
 +const base::Feature kBookmarksExportUseSaf{"BookmarksExportUseSaf",
@@ -1389,7 +1389,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -140,6 +140,7 @@ extern const base::Feature kToolbarMicIphAndroid;
+@@ -146,6 +146,7 @@ extern const base::Feature kToolbarMicIphAndroid;
  extern const base::Feature kToolbarUseHardwareBitmapDraw;
  extern const base::Feature kTrustedWebActivityLocationDelegation;
  extern const base::Feature kTrustedWebActivityNewDisclosure;
@@ -1400,8 +1400,8 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -541,6 +541,7 @@ public abstract class ChromeFeatureList {
-             "WebApkInstallCompleteNotification";
+@@ -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";
 +    public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf";
@@ -1469,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 {
+@@ -124,6 +124,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";
@@ -1478,7 +1478,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
  
      /**
       * Whether Chrome is set as the default browser.
-@@ -1027,6 +1029,7 @@ public final class ChromePreferenceKeys {
+@@ -1042,6 +1044,7 @@ public final class ChromePreferenceKeys {
                  AUTOFILL_ASSISTANT_PROACTIVE_HELP,
                  APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
                  APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@@ -1517,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
-@@ -412,6 +412,9 @@ static_library("common") {
+@@ -416,6 +416,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -1539,7 +1539,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/external_process_importer_bridge.cc",
-@@ -181,6 +179,11 @@ static_library("utility") {
+@@ -184,6 +182,11 @@ static_library("utility") {
      }
    }
  

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

@@ -12,7 +12,7 @@ Subject: Add custom tab intents privacy option
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -33,6 +33,11 @@
+@@ -37,6 +37,11 @@
          android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
          android:key="do_not_track"
          android:title="@string/do_not_track_title"/>
@@ -29,14 +29,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 @@ -59,6 +59,8 @@ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
- import java.util.List;
+ import java.util.Set;
  
 +import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
 +
  /**
   * Dispatches incoming intents to the appropriate activity based on the current configuration and
   * Intent fired.
-@@ -285,6 +287,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -279,6 +281,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -48,7 +48,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 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
-@@ -47,6 +47,7 @@ public class PrivacySettings
+@@ -49,6 +49,7 @@ 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";
@@ -56,10 +56,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
-@@ -105,6 +106,10 @@ public class PrivacySettings
-         } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
-             PrivacyPreferencesManagerImpl.getInstance().setNetworkPredictionEnabled(
-                     (boolean) newValue);
+@@ -119,6 +120,10 @@ public class PrivacySettings
+         } else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
+             UserPrefs.get(Profile.getLastUsedRegularProfile())
+                     .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue);
 +        } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -128,6 +133,11 @@ public class PrivacySettings
+@@ -142,6 +147,11 @@ public class PrivacySettings
              canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -4224,6 +4224,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4405,6 +4405,13 @@ 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>

+ 6 - 6
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
-@@ -121,6 +121,9 @@
+@@ -124,6 +124,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 -->
-@@ -147,6 +150,9 @@
+@@ -150,6 +153,9 @@
          <item android:id="@id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
@@ -37,7 +37,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
-@@ -200,6 +200,8 @@ import java.lang.annotation.RetentionPolicy;
+@@ -206,6 +206,8 @@ import java.util.HashSet;
  import java.util.List;
  import java.util.Locale;
  
@@ -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.
-@@ -1953,6 +1955,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2008,6 +2010,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;
-@@ -2317,6 +2318,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2303,6 +2304,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
-@@ -3056,6 +3056,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3144,6 +3144,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
          Turn on Request desktop site
        </message>

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

@@ -15,8 +15,8 @@ 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
-@@ -507,6 +507,22 @@ const FeatureEntry::FeatureVariation
- };
+@@ -449,6 +449,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
+      base::size(kReaderModeOfferInSettings), nullptr}};
  #endif  // OS_ANDROID
  
 +const FeatureEntry::Choice kOmniboxAutocompleteFiltering[] = {
@@ -36,9 +36,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +};
 +
  #if defined(OS_ANDROID)
- const FeatureEntry::FeatureParam kHideDismissButton[] = {
-     {"dismiss_button", "hide"}};
-@@ -4881,6 +4897,11 @@ const FeatureEntry kFeatureEntries[] = {
+ const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = {
+     {"mode", "always-none"}};
+@@ -4772,6 +4788,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
  #endif  // !defined(OS_ANDROID)
  
@@ -102,7 +102,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
  #include "base/feature_list.h"
  #include "base/i18n/break_iterator.h"
  #include "base/i18n/case_conversion.h"
-@@ -646,6 +647,9 @@ void SearchProvider::Run(bool query_is_private) {
+@@ -647,6 +648,9 @@ void SearchProvider::Run(bool query_is_private) {
  }
  
  void SearchProvider::DoHistoryQuery(bool minimal_changes) {

+ 3 - 3
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
-@@ -4627,6 +4627,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4506,6 +4506,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
-@@ -1087,6 +1087,10 @@ const char kDisableKeepaliveFetchDescription[] =
+@@ -1035,6 +1035,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
-@@ -600,6 +600,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
+@@ -564,6 +564,9 @@ extern const char kDiagnosticsAppNavigationDescription[];
  extern const char kDisableKeepaliveFetchName[];
  extern const char kDisableKeepaliveFetchDescription[];
  

+ 4 - 4
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
-@@ -866,6 +866,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -837,6 +837,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 ==
-@@ -3932,6 +3937,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3792,6 +3797,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidPictureInPictureAPIName,
       flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1571,6 +1571,10 @@ const char kMediaHistoryDescription[] =
+@@ -1524,6 +1524,10 @@ const char kMediaHistoryDescription[] =
      "Enables Media History which records data around media playbacks on "
      "websites.";
  
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -905,6 +905,9 @@ extern const char kLogJsConsoleMessagesDescription[];
+@@ -877,6 +877,9 @@ extern const char kLogJsConsoleMessagesDescription[];
  extern const char kMediaHistoryName[];
  extern const char kMediaHistoryDescription[];
  

+ 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
-@@ -2813,6 +2813,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2708,6 +2708,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
-@@ -1172,6 +1172,11 @@ const char kEnablePenetratingImageSelectionDescription[] =
+@@ -1120,6 +1120,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
-@@ -662,6 +662,9 @@ extern const char kEnablePortalsDescription[];
+@@ -632,6 +632,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
-@@ -255,11 +255,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -276,11 +276,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -16,7 +16,7 @@ Subject: Add flag to disable IPv6 probes
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -4851,6 +4851,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4742,6 +4742,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
-@@ -3150,6 +3150,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -3015,6 +3015,10 @@ const char kContextualSearchRankerQueryDescription[] =
  
  const char kContextualSearchSecondTapName[] =
      "Contextual Search second tap triggering";
@@ -45,8 +45,8 @@ 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
-@@ -722,6 +722,9 @@ extern const char kEnableWasmSimdName[];
- extern const char kEnableWasmSimdDescription[];
+@@ -689,6 +689,9 @@ extern const char kEnableWasmLazyCompilationName[];
+ extern const char kEnableWasmLazyCompilationDescription[];
  
  extern const char kEnableWasmTieringName[];
 +extern const char kIPv6ProbingName[];
@@ -101,7 +101,7 @@ diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/compon
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
-@@ -97,6 +97,7 @@
+@@ -86,6 +86,7 @@
  #include "net/log/net_log_event_type.h"
  #include "net/log/net_log_source.h"
  #include "net/log/net_log_source_type.h"
@@ -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"
-@@ -3362,8 +3363,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3512,8 +3513,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {

+ 3 - 3
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
-@@ -2753,6 +2753,9 @@ const FeatureEntry::FeatureVariation kContinuousSearchFeatureVariations[] = {
+@@ -2643,6 +2643,9 @@ const FeatureEntry::FeatureVariation kReadLaterVariations[] = {
  // 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,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
-@@ -642,6 +642,10 @@ const char kEnableAudioFocusEnforcementName[] = "Audio Focus Enforcement";
+@@ -613,6 +613,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.";
@@ -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
-@@ -356,6 +356,9 @@ extern const char kForceColorProfileSRGB[];
+@@ -341,6 +341,9 @@ extern const char kForceColorProfileSRGB[];
  extern const char kForceColorProfileP3[];
  extern const char kForceColorProfileColorSpin[];
  extern const char kForceColorProfileSCRGBLinear[];

+ 14 - 14
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
-@@ -2807,6 +2807,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2697,6 +2697,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebrtcCaptureMultiChannelApmName,
       flag_descriptions::kWebrtcCaptureMultiChannelApmDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kWebRtcEnableCaptureMultiChannelApm)},
@@ -24,9 +24,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
-@@ -3280,6 +3280,12 @@ const char kIntentBlockExternalFormRedirectsNoGestureDescription[] =
-     "Require a user gesture that triggered a form submission in order to "
-     "allow for redirecting to an external intent.";
+@@ -3272,6 +3272,12 @@ const char kProcessSharingWithStrictSiteInstancesDescription[] =
+     "separated like strict site isolation, but process selection puts multiple "
+     "site instances in a single process.";
  
 +const char kDisableExternalIntentRequestsName[] =
 +    "Never forward URL requests to external intents";
@@ -34,22 +34,22 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 +    "URL requests will never"
 +    "allow for redirecting to an external intent.";
 +
- const char kInterestFeedContentSuggestionsDescription[] =
-     "Use the interest feed to render content suggestions. Currently "
-     "content "
+ const char kQueryTilesName[] = "Show query tiles";
+ const char kQueryTilesDescription[] = "Shows query tiles in Chrome";
+ const char kQueryTilesNTPName[] = "Show query tiles in NTP";
 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
-@@ -1883,6 +1883,9 @@ extern const char kInstantStartDescription[];
- extern const char kIntentBlockExternalFormRedirectsNoGestureName[];
- extern const char kIntentBlockExternalFormRedirectsNoGestureDescription[];
- 
+@@ -1883,6 +1883,9 @@ extern const char kQueryTilesNTPDescription[];
+ extern const char kQueryTilesOmniboxName[];
+ extern const char kQueryTilesOmniboxDescription[];
+ extern const char kQueryTilesSingleTierName[];
 +extern const char kDisableExternalIntentRequestsName[];
 +extern const char kDisableExternalIntentRequestsDescription[];
 +
- extern const char kInterestFeedContentSuggestionsName[];
- extern const char kInterestFeedContentSuggestionsDescription[];
- 
+ extern const char kQueryTilesSingleTierDescription[];
+ extern const char kQueryTilesEnableQueryEditingName[];
+ extern const char kQueryTilesEnableQueryEditingDescription[];
 -- 
 2.17.1
 

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

@@ -18,8 +18,8 @@ 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
-@@ -6342,6 +6342,10 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kNotificationsViaHelperApp)},
+@@ -6208,6 +6208,10 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
  #endif
  
 +    {"enable-vibration", flag_descriptions::kEnableVibrationName,
@@ -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
-@@ -5311,6 +5311,9 @@ const char kDefaultMeetWebAppDescription[] =
+@@ -5123,6 +5123,9 @@ const char kDefaultMeetWebAppDescription[] =
      "Enables the Meet web app to be installed by default.";
  #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
-@@ -3080,6 +3080,9 @@ extern const char kDefaultMeetWebAppName[];
+@@ -2965,6 +2965,9 @@ extern const char kDefaultMeetWebAppName[];
  extern const char kDefaultMeetWebAppDescription[];
  #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
-@@ -103,6 +103,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -102,6 +102,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
  #if defined(OS_ANDROID)
    if (command_line.HasSwitch(switches::kDisableMediaSessionAPI))
      WebRuntimeFeatures::EnableMediaSession(false);
@@ -82,7 +82,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
 --- a/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
-@@ -267,6 +267,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
+@@ -266,6 +266,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
  CONTENT_EXPORT extern const base::Feature kWebNfc;
  #endif  // defined(OS_ANDROID)
  
@@ -125,7 +125,7 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -190,6 +190,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
+@@ -182,6 +182,10 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
    RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
  }
  
@@ -139,7 +139,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -1527,6 +1527,10 @@
+@@ -1537,6 +1537,10 @@
        name: "OrientationEvent",
        status: {"Android": "stable"},
      },

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

@@ -16,7 +16,7 @@ Subject: Add history support in incognito mode
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -38,6 +38,11 @@
+@@ -42,6 +42,11 @@
          android:title="@string/close_tabs_on_exit_title"
          android:summary="@string/close_tabs_on_exit_summary"
          android:defaultValue="false" />
@@ -31,7 +31,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
-@@ -39,12 +39,15 @@ import org.chromium.components.user_prefs.UserPrefs;
+@@ -40,12 +40,15 @@ import org.chromium.components.user_prefs.UserPrefs;
  import org.chromium.ui.text.NoUnderlineClickableSpan;
  import org.chromium.ui.text.SpanApplier;
  
@@ -46,8 +46,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +    public static final String PREF_INCOGNITO_TAB_HISTORY_ENABLED = "incognito_history_enabled";
      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_SECURE_DNS = "secure_dns";
-@@ -99,6 +102,11 @@ public class PrivacySettings
+     private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
+@@ -110,6 +113,11 @@ public class PrivacySettings
          Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
          secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
  
@@ -59,7 +59,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          updateSummaries();
      }
  
-@@ -119,6 +127,9 @@ public class PrivacySettings
+@@ -133,6 +141,9 @@ public class PrivacySettings
              SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
              sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
              sharedPreferencesEditor.apply();
@@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -169,6 +180,13 @@ public class PrivacySettings
+@@ -183,6 +194,13 @@ public class PrivacySettings
                  (ChromeSwitchPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
          closeTabsOnExitPref.setOnPreferenceChangeListener(this);
          closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -96,7 +96,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"
-@@ -275,6 +278,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
+@@ -299,6 +302,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
  history::HistoryService* HistoryTabHelper::GetHistoryService() {
    Profile* profile =
        Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -110,7 +110,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
    if (profile->IsOffTheRecord())
      return NULL;
  
-@@ -282,6 +292,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
+@@ -306,6 +316,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
        profile, ServiceAccessType::IMPLICIT_ACCESS);
  }
  
@@ -147,7 +147,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
 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
-@@ -213,6 +213,8 @@
+@@ -212,6 +212,8 @@
  #endif
  
  #if defined(OS_ANDROID)
@@ -156,7 +156,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
  #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
  #include "chrome/browser/android/explore_sites/history_statistics_reporter.h"
  #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h"
-@@ -1197,6 +1199,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1210,6 +1212,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    variations::VariationsService::RegisterProfilePrefs(registry);
    video_tutorials::RegisterPrefs(registry);
    feed::prefs::RegisterFeedSharedProfilePrefs(registry);
@@ -183,7 +183,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
-@@ -3154,6 +3154,11 @@ const char kLacrosAllowed[] = "lacros_allowed";
+@@ -3225,6 +3225,11 @@ const char kLacrosAllowed[] = "lacros_allowed";
  const char kLacrosLaunchSwitch[] = "lacros_launch_switch";
  #endif
  
@@ -198,8 +198,8 @@ 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
-@@ -1157,6 +1157,10 @@ extern const char kDeviceAttributesAllowedForOrigins[];
- extern const char kDesktopSharingHubEnabled[];
+@@ -1184,6 +1184,10 @@ extern const char kLastWhatsNewVersion[];
+ extern const char kLensRegionSearchEnabled[];
  #endif
  
 +#if defined(OS_ANDROID)

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

@@ -20,15 +20,16 @@ Subject: Add menu item to bookmark all tabs
  .../bookmarks/browser/bookmark_load_details.h |  2 +
  .../bookmarks/browser/bookmark_model.cc       |  3 +-
  components/bookmarks/browser/bookmark_model.h |  7 ++
- components/bookmarks/browser/bookmark_node.cc | 13 ++++
+ components/bookmarks/browser/bookmark_node.cc | 15 ++++
  components/bookmarks/browser/bookmark_node.h  |  5 ++
  components/bookmarks/browser/model_loader.cc  |  3 +-
- 20 files changed, 205 insertions(+), 15 deletions(-)
+ .../bookmark_specifics_conversions.cc         |  1 +
+ 21 files changed, 208 insertions(+), 15 deletions(-)
 
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -61,6 +61,10 @@
+@@ -64,6 +64,10 @@
          <item android:id="@+id/all_bookmarks_menu_id"
              android:title="@string/menu_bookmarks"
              android:icon="@drawable/btn_star_filled" />
@@ -39,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" />
-@@ -144,6 +148,9 @@
+@@ -147,6 +151,9 @@
          <item android:id="@+id/menu_group_tabs"
              android:title="@string/menu_group_tabs"
              android:icon="@drawable/ic_widgets" />
@@ -61,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;
-@@ -1965,6 +1967,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2020,6 +2022,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              // Close both incognito and normal tabs
              getTabModelSelector().closeAllTabs();
              RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -70,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();
-@@ -2014,6 +2018,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2069,6 +2073,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          mTabModalHandler.onOmniboxFocusChanged(hasFocus);
      }
  
@@ -235,7 +236,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
-@@ -509,6 +509,7 @@ public class BookmarkUtils {
+@@ -516,6 +516,7 @@ public class BookmarkUtils {
          List<BookmarkId> topLevelFolders = new ArrayList<>();
          BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId();
          BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId();
@@ -243,7 +244,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          BookmarkId othersNodeId = bookmarkModel.getOtherFolderId();
  
          List<BookmarkId> specialFoldersIds =
-@@ -534,6 +535,9 @@ public class BookmarkUtils {
+@@ -541,6 +542,9 @@ public class BookmarkUtils {
          if (bookmarkModel.isFolderVisible(mobileNodeId)) {
              topLevelFolders.add(mobileNodeId);
          }
@@ -376,7 +377,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
-@@ -3130,6 +3130,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3218,6 +3218,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>
@@ -500,7 +501,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
    // Fail silently if we can't deserialize mobile bookmarks. We can't require
    // them to exist in order to be backwards-compatible with older versions of
    // chrome.
-@@ -447,11 +461,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
+@@ -452,11 +466,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
  
  void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
                                  BookmarkNode* other_node,
@@ -605,7 +606,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
  }
  
  bool BookmarkModel::IsBookmarked(const GURL& url) {
-@@ -802,6 +802,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
+@@ -804,6 +804,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
    bookmark_bar_node_ = details->bb_node();
    other_node_ = details->other_folder_node();
    mobile_node_ = details->mobile_folder_node();
@@ -640,16 +641,18 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark
 diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc
 --- a/components/bookmarks/browser/bookmark_node.cc
 +++ b/components/bookmarks/browser/bookmark_node.cc
-@@ -41,6 +41,8 @@ const char BookmarkNode::kOtherBookmarksNodeGuid[] =
-     "00000000-0000-4000-a000-000000000003";
+@@ -60,6 +60,10 @@ const char BookmarkNode::kOtherBookmarksNodeGuid[] =
  const char BookmarkNode::kMobileBookmarksNodeGuid[] =
-     "00000000-0000-4000-a000-000000000004";
+     "4cf2e351-0e85-532b-bb37-df045d8f8d0f";
+ 
++// static
 +const char BookmarkNode::kTabsCollectionBookmarksNodeGuid[] =
 +    "00000000-0000-4000-a000-000000000006";
++
+ // static
  const char BookmarkNode::kManagedNodeGuid[] =
-     "00000000-0000-4000-a000-000000000005";
- 
-@@ -199,6 +201,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
+     "323123f4-9381-5aee-80e6-ea5fca2f7672";
+@@ -225,6 +229,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
        visible_when_empty));
  }
  
@@ -685,8 +688,8 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks
 +  static const char kTabsCollectionBookmarksNodeGuid[];
    static const char kManagedNodeGuid[];
  
-   // Creates a new node with |id|, |guid| and |url|.
-@@ -244,6 +246,9 @@ class BookmarkPermanentNode : public BookmarkNode {
+   // A bug in sync caused some problematic GUIDs to be produced.
+@@ -247,6 +249,9 @@ class BookmarkPermanentNode : public BookmarkNode {
    static std::unique_ptr<BookmarkPermanentNode> CreateMobileBookmarks(
        int64_t id,
        bool visible_when_empty);
@@ -709,6 +712,17 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks
                     &sync_metadata_str);
        details->set_sync_metadata_str(std::move(sync_metadata_str));
        details->set_max_id(std::max(max_node_id, details->max_id()));
+diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc
+--- a/components/sync_bookmarks/bookmark_specifics_conversions.cc
++++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc
+@@ -400,6 +400,7 @@ sync_pb::BookmarkSpecifics::Type GetProtoTypeFromBookmarkNode(
+     case bookmarks::BookmarkNode::BOOKMARK_BAR:
+     case bookmarks::BookmarkNode::OTHER_NODE:
+     case bookmarks::BookmarkNode::MOBILE:
++    case bookmarks::BookmarkNode::TABS_COLLECTION:
+       DCHECK(node->is_folder());
+       return sync_pb::BookmarkSpecifics::FOLDER;
+   }
 -- 
 2.17.1
 

+ 5 - 5
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
-@@ -85,6 +85,9 @@
+@@ -88,6 +88,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
-@@ -1988,6 +1988,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -2043,6 +2043,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
-@@ -2443,6 +2443,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2429,6 +2429,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
-@@ -348,6 +348,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -355,6 +355,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
                          isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  
          // Only display reader mode settings menu option if the current page is in reader mode.
          menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
-@@ -787,6 +788,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -845,6 +846,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          }
      }
  

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

@@ -33,15 +33,15 @@ diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
-@@ -35,6 +35,7 @@ public class AccessibilitySettings
-     static final String PREF_CAPTIONS = "captions";
+@@ -37,6 +37,7 @@ public class AccessibilitySettings
      static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
+     static final String PREF_ACCESSIBILITY_PAGE_ZOOM = "accessibility_page_zoom";
  
 +    static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
      private TextScalePreference mTextScalePref;
      private ChromeBaseCheckBoxPreference mForceEnableZoomPref;
      private boolean mRecordFontSizeChangeOnStop;
-@@ -80,6 +81,12 @@ public class AccessibilitySettings
+@@ -82,6 +83,12 @@ public class AccessibilitySettings
                                                        .getBoolean(Pref.READER_FOR_ACCESSIBILITY));
          readerForAccessibilityPref.setOnPreferenceChangeListener(this);
  
@@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
          ChromeBaseCheckBoxPreference mAccessibilityTabSwitcherPref =
                  (ChromeBaseCheckBoxPreference) findPreference(
                          ChromePreferenceKeys.ACCESSIBILITY_TAB_SWITCHER);
-@@ -131,6 +138,9 @@ public class AccessibilitySettings
+@@ -137,6 +144,9 @@ public class AccessibilitySettings
              mFontSizePrefs.setUserFontScaleFactor((Float) newValue);
          } else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
              mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue);
@@ -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
-@@ -540,6 +540,7 @@ public final class ChromePreferenceKeys {
+@@ -536,6 +536,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
-@@ -346,7 +346,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
+@@ -348,7 +348,7 @@ public final class LocationBarCoordinator implements LocationBar, NativeInitObse
      // OmniboxSuggestionsDropdownEmbedder implementation
      @Override
      public boolean isTablet() {
@@ -129,7 +129,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
-@@ -539,7 +539,7 @@ test("components_unittests") {
+@@ -542,7 +542,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.
@@ -138,7 +138,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
      assert_no_deps = [ "//chrome/*" ]
    }
  
-@@ -786,7 +786,7 @@ if (!is_ios) {
+@@ -789,7 +789,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.
@@ -150,7 +150,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
-@@ -369,6 +369,8 @@ android_library("ui_no_recycler_view_java") {
+@@ -370,6 +370,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

@@ -12,7 +12,7 @@ Subject: Add option to not persist tabs across sessions
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -29,6 +29,11 @@
+@@ -33,6 +33,11 @@
          android:title="@string/always_incognito_title"
          android:summary="@string/always_incognito_summary"
          android:defaultValue="false" />
@@ -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
-@@ -1191,8 +1191,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1188,8 +1188,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -58,8 +58,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +import org.chromium.base.BuildInfo;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
- import org.chromium.chrome.browser.preferences.Pref;
-@@ -48,6 +51,7 @@ public class PrivacySettings
+ import org.chromium.chrome.browser.flags.ChromeFeatureList;
+@@ -50,6 +53,7 @@ public class PrivacySettings
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
-@@ -100,7 +104,11 @@ public class PrivacySettings
+@@ -111,7 +115,11 @@ public class PrivacySettings
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
          String key = preference.getKey();
@@ -80,7 +80,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)) {
-@@ -155,6 +163,11 @@ public class PrivacySettings
+@@ -169,6 +177,11 @@ public class PrivacySettings
              privacySandboxPreference.setSummary(
                      PrivacySandboxSettingsFragment.getStatusString(getContext()));
          }
@@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -3927,6 +3927,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4026,6 +4026,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>

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

@@ -10,7 +10,7 @@ Subject: Add support for ISupportHelpAndFeedback
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
-@@ -58,6 +58,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable;
  import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher;
  import org.chromium.components.browser_ui.settings.SettingsLauncher;
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
  import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
  import org.chromium.ui.UiUtils;
  
-@@ -257,9 +258,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
+@@ -248,9 +249,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
              finish();
              return true;
          } else if (item.getItemId() == R.id.menu_id_general_help) {

+ 38 - 36
build/patches/Allow-building-without-enable_reporting.patch

@@ -4,16 +4,17 @@ Subject: Allow building without enable_reporting
 
 ---
  content/browser/BUILD.gn                                 | 8 ++++----
- third_party/blink/renderer/core/frame/local_frame.cc     | 5 +++++
- third_party/blink/renderer/core/frame/local_frame.h      | 7 +++++--
+ .../common/content_switch_dependent_feature_overrides.cc | 3 +++
+ third_party/blink/renderer/core/frame/local_frame.cc     | 3 +++
+ third_party/blink/renderer/core/frame/local_frame.h      | 6 +++---
  .../blink/renderer/core/frame/reporting_context.cc       | 9 +++++++++
  .../blink/renderer/core/frame/reporting_context.h        | 7 +++++--
- 5 files changed, 28 insertions(+), 8 deletions(-)
+ 6 files changed, 27 insertions(+), 9 deletions(-)
 
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -1227,6 +1227,10 @@ source_set("browser") {
+@@ -1240,6 +1240,10 @@ source_set("browser") {
      "net/browser_online_state_observer.cc",
      "net/browser_online_state_observer.h",
      "net/cookie_store_factory.cc",
@@ -24,7 +25,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",
-@@ -2966,10 +2970,6 @@ source_set("browser") {
+@@ -2989,10 +2993,6 @@ source_set("browser") {
  
    if (enable_reporting) {
      sources += [
@@ -35,6 +36,29 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
        "net/reporting_service_proxy.cc",
        "net/reporting_service_proxy.h",
      ]
+diff --git a/content/public/common/content_switch_dependent_feature_overrides.cc b/content/public/common/content_switch_dependent_feature_overrides.cc
+--- a/content/public/common/content_switch_dependent_feature_overrides.cc
++++ b/content/public/common/content_switch_dependent_feature_overrides.cc
+@@ -7,6 +7,7 @@
+ #include "content/public/common/content_features.h"
+ #include "content/public/common/content_switches.h"
+ #include "net/base/features.h"
++#include "net/net_buildflags.h"
+ #include "services/network/public/cpp/features.h"
+ #include "services/network/public/cpp/network_switches.h"
+ #include "third_party/blink/public/common/features.h"
+@@ -46,9 +47,11 @@ GetSwitchDependentFeatureOverrides(const base::CommandLine& command_line) {
+       {switches::kEnableExperimentalWebPlatformFeatures,
+        std::cref(features::kDocumentPolicyNegotiation),
+        base::FeatureList::OVERRIDE_ENABLE_FEATURE},
++#if BUILDFLAG(ENABLE_REPORTING)
+       {switches::kEnableExperimentalWebPlatformFeatures,
+        std::cref(net::features::kDocumentReporting),
+        base::FeatureList::OVERRIDE_ENABLE_FEATURE},
++#endif
+       {switches::kEnableExperimentalWebPlatformFeatures,
+        std::cref(features::kExperimentalContentSecurityPolicyFeatures),
+        base::FeatureList::OVERRIDE_ENABLE_FEATURE},
 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
@@ -46,27 +70,13 @@ 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"
-@@ -423,7 +424,9 @@ void LocalFrame::Trace(Visitor* visitor) const {
-   visitor->Trace(raw_system_clipboard_);
-   visitor->Trace(virtual_keyboard_overlay_changed_observers_);
-   visitor->Trace(pause_handle_receivers_);
-+#if BUILDFLAG(ENABLE_REPORTING)
-   visitor->Trace(reporting_service_);
-+#endif
- #if defined(OS_MAC)
-   visitor->Trace(text_input_host_);
- #endif
-@@ -2308,6 +2311,7 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
+@@ -2282,9 +2283,11 @@ const base::UnguessableToken& LocalFrame::GetAgentClusterId() const {
    return base::UnguessableToken::Null();
  }
  
 +#if BUILDFLAG(ENABLE_REPORTING)
  mojom::blink::ReportingServiceProxy* LocalFrame::GetReportingService() {
-   if (!reporting_service_.is_bound()) {
-     GetBrowserInterfaceBroker().GetInterface(
-@@ -2316,6 +2320,7 @@ mojom::blink::ReportingServiceProxy* LocalFrame::GetReportingService() {
-   }
-   return reporting_service_.get();
+   return mojo_handler_->ReportingService();
  }
 +#endif
  
@@ -75,15 +85,18 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
 diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
 --- a/third_party/blink/renderer/core/frame/local_frame.h
 +++ b/third_party/blink/renderer/core/frame/local_frame.h
-@@ -36,6 +36,7 @@
- #include "build/build_config.h"
+@@ -33,9 +33,9 @@
+ 
+ #include "base/time/default_tick_clock.h"
+ #include "base/unguessable_token.h"
+-#include "build/build_config.h"
  #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
  #include "mojo/public/cpp/bindings/pending_receiver.h"
 +#include "net/net_buildflags.h"
+ #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"
- #include "third_party/blink/public/common/frame/payment_request_token.h"
-@@ -545,9 +546,9 @@ class CORE_EXPORT LocalFrame final : public Frame,
+@@ -543,9 +543,9 @@ class CORE_EXPORT LocalFrame final : public Frame,
    }
  
    SmoothScrollSequencer& GetSmoothScrollSequencer();
@@ -95,17 +108,6 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b
    // Returns the frame host ptr. The interface returned is backed by an
    // associated interface with the legacy Chrome IPC channel.
    mojom::blink::LocalFrameHost& GetLocalFrameHostRemote() const;
-@@ -875,8 +876,10 @@ class CORE_EXPORT LocalFrame final : public Frame,
-   // const methods.
-   //
-   // LocalFrame can be reused by multiple ExecutionContext.
-+#if BUILDFLAG(ENABLE_REPORTING)
-   mutable HeapMojoRemote<mojom::blink::ReportingServiceProxy>
-       reporting_service_{nullptr};
-+#endif
- 
- #if defined(OS_MAC)
-   // LocalFrame can be reused by multiple ExecutionContext.
 diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc
 --- a/third_party/blink/renderer/core/frame/reporting_context.cc
 +++ b/third_party/blink/renderer/core/frame/reporting_context.cc

+ 2 - 2
build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch

@@ -23,8 +23,8 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
 --- a/components/cronet/url_request_context_config.cc
 +++ b/components/cronet/url_request_context_config.cc
-@@ -591,7 +591,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
-         effective_experimental_options->Remove(it.key(), nullptr);
+@@ -592,7 +592,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
+         effective_experimental_options->RemoveKey(it.key());
          continue;
        }
 -      async_dns_args->GetBoolean(kAsyncDnsEnable, &async_dns_enable);

Dosya farkı çok büyük olduğundan ihmal edildi
+ 186 - 96
build/patches/Automated-domain-substitution.patch


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

@@ -3,7 +3,6 @@ Date: Tue, 28 Jul 2020 12:28:58 +0200
 Subject: Block gateway attacks via websockets
 
 ---
- content/public/common/content_features.cc     |  2 +-
  .../renderer/core/loader/base_fetch_context.h |  1 +
  .../core/loader/frame_fetch_context.cc        | 18 +++++++++++++
  .../core/loader/frame_fetch_context.h         |  1 +
@@ -13,20 +12,8 @@ Subject: Block gateway attacks via websockets
  .../websockets/websocket_channel_impl.cc      |  5 ++++
  .../modules/websockets/websocket_common.cc    | 27 +++++++++++++++++++
  .../modules/websockets/websocket_common.h     |  4 +++
- 10 files changed, 77 insertions(+), 3 deletions(-)
+ 9 files changed, 76 insertions(+), 2 deletions(-)
 
-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
-@@ -123,7 +123,7 @@ const base::Feature kBlockCredentialedSubresources{
- //  - https://wicg.github.io/cors-rfc1918/#integration-fetch
- //  - kBlockInsecurePrivateNetworkRequestsForNavigations
- const base::Feature kBlockInsecurePrivateNetworkRequests{
--    "BlockInsecurePrivateNetworkRequests", base::FEATURE_DISABLED_BY_DEFAULT};
-+    "BlockInsecurePrivateNetworkRequests", base::FEATURE_ENABLED_BY_DEFAULT};
- 
- // Enables use of the PrivateNetworkAccessNonSecureContextsAllowed deprecation
- // trial. This is a necessary yet insufficient condition: documents that wish to
 diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third_party/blink/renderer/core/loader/base_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/base_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/base_fetch_context.h

+ 4 - 4
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
-@@ -810,6 +810,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
+@@ -819,6 +819,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
-@@ -1038,6 +1038,8 @@ component("net") {
+@@ -1042,6 +1042,8 @@ component("net") {
      "url_request/url_request_http_job.cc",
      "url_request/url_request_http_job.h",
      "url_request/url_request_interceptor.cc",
@@ -225,7 +225,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
 diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
 --- a/net/url_request/url_request_context_builder.cc
 +++ b/net/url_request/url_request_context_builder.cc
-@@ -45,6 +45,7 @@
+@@ -46,6 +46,7 @@
  #include "net/quic/quic_stream_factory.h"
  #include "net/ssl/ssl_config_service_defaults.h"
  #include "net/url_request/static_http_user_agent_settings.h"
@@ -233,7 +233,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_job_factory.h"
-@@ -551,6 +552,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -552,6 +553,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }

+ 23 - 22
build/patches/Bromite-AdBlockUpdaterService.patch

@@ -36,7 +36,7 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681)
  components/component_updater/BUILD.gn         |   7 +
  .../adblock_updater_service.cc                | 272 ++++++++++++++++++
  .../adblock_updater_service.h                 |  99 +++++++
- .../download_filters_task.cc                  | 223 ++++++++++++++
+ .../download_filters_task.cc                  | 224 +++++++++++++++
  .../component_updater/download_filters_task.h | 129 +++++++++
  ...ent_subresource_filter_throttle_manager.cc |  11 +
  .../content/browser/ruleset_service.cc        |  33 ++-
@@ -47,7 +47,7 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681)
  .../core/common/common_features.cc            |   2 +-
  .../core/common/indexed_ruleset.cc            |   5 +-
  .../navigation_throttle_runner.cc             |   5 -
- 38 files changed, 1157 insertions(+), 140 deletions(-)
+ 38 files changed, 1158 insertions(+), 140 deletions(-)
  create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
  create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -60,7 +60,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
-@@ -565,6 +565,7 @@ chrome_java_resources = [
+@@ -566,6 +566,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",
@@ -68,7 +68,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",
-@@ -773,6 +774,7 @@ chrome_java_resources = [
+@@ -776,6 +777,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -79,7 +79,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
-@@ -984,6 +984,8 @@ chrome_java_sources = [
+@@ -991,6 +991,8 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/payments/ui/ShoppingCart.java",
    "java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
@@ -358,7 +358,7 @@ new file mode 100644
 +import androidx.preference.PreferenceFragmentCompat;
 +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
 +
-+import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
++import org.chromium.content_public.browser.BrowserContextHandle;
 +import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
 +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
 +import org.chromium.components.content_settings.ContentSettingsType;
@@ -423,7 +423,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
-@@ -10718,6 +10718,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -10805,6 +10805,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -495,7 +495,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
-@@ -1042,6 +1042,26 @@ BrowserProcessImpl::component_updater() {
+@@ -1053,6 +1053,26 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -544,7 +544,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
-@@ -1654,6 +1654,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1626,6 +1626,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
      speech::SodaInstaller::GetInstance()->Init(profile_->GetPrefs(),
                                                 browser_process_->local_state());
  #endif  // !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
@@ -556,15 +556,15 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/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
-@@ -77,7 +77,6 @@
+@@ -61,7 +61,6 @@
+ #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/interstitials/enterprise_util.h"
- #include "chrome/browser/lifetime/application_lifetime.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
 -#include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h"
  #include "chrome/browser/media/audio_service_util.h"
  #include "chrome/browser/media/router/media_router_feature.h"
  #include "chrome/browser/media/webrtc/audio_debug_recordings_handler.h"
-@@ -3957,16 +3956,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3907,16 +3906,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -581,7 +581,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(IS_CHROMEOS_ASH)
    MaybeAddThrottle(
        ash::WebTimeLimitNavigationThrottle::MaybeCreateThrottleFor(handle),
-@@ -4073,10 +4062,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4022,10 +4011,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     &throttles);
  #endif
  
@@ -620,7 +620,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
-@@ -254,6 +254,14 @@ public class CachedFeatureFlags {
+@@ -265,6 +265,14 @@ public class CachedFeatureFlags {
                  ChromeFeatureList.isEnabled(ChromeFeatureList.BACKGROUND_THREAD_POOL));
      }
  
@@ -635,7 +635,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.
       */
-@@ -438,5 +446,7 @@ public class CachedFeatureFlags {
+@@ -470,5 +478,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -646,7 +646,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
-@@ -337,6 +337,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -349,6 +349,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -655,7 +655,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 =
-@@ -407,6 +409,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -419,6 +421,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -705,7 +705,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
-@@ -2168,6 +2168,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2188,6 +2188,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -1135,7 +1135,7 @@ diff --git a/components/component_updater/download_filters_task.cc b/components/
 new file mode 100644
 --- /dev/null
 +++ b/components/component_updater/download_filters_task.cc
-@@ -0,0 +1,223 @@
+@@ -0,0 +1,224 @@
 +/*
 +    This file is part of Bromite.
 +
@@ -1164,6 +1164,7 @@ new file mode 100644
 +#include "net/base/load_flags.h"
 +#include "url/gurl.h"
 +#include "services/network/public/cpp/resource_request.h"
++#include "services/network/public/mojom/url_response_head.mojom.h"
 +
 +namespace adblock_updater {
 +
@@ -1496,7 +1497,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
-@@ -627,6 +627,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -651,6 +651,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1632,7 +1633,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
 diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h
 --- a/components/subresource_filter/content/browser/ruleset_service.h
 +++ b/components/subresource_filter/content/browser/ruleset_service.h
-@@ -181,7 +181,7 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
+@@ -180,7 +180,7 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
    //
    // Virtual so that it can be mocked out in tests.
    virtual void IndexAndStoreAndPublishRulesetIfNeeded(
@@ -1641,7 +1642,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c
  
    // Get the ruleset version associated with the current local_state_.
    IndexedRulesetVersion GetMostRecentlyIndexedVersion() const;
-@@ -214,6 +214,11 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
+@@ -213,6 +213,11 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
        const base::FilePath& indexed_ruleset_base_dir,
        const UnindexedRulesetInfo& unindexed_ruleset_info);
  

+ 69 - 76
build/patches/Enable-update-notification.patch → build/patches/Bromite-auto-updater.patch

@@ -1,22 +1,22 @@
 From: uazo <uazo@users.noreply.github.com>
 Date: Thu, 7 Oct 2021 14:27:12 +0000
-Subject: Enable update notification
+Subject: Bromite auto updater
 
-Enable checking for new version, with proxy support
+Enable checking for new versions, with notifications and proxy support
 ---
  .../java/templates/BuildConfig.template       |   2 +
  build/config/android/rules.gni                |   3 +
  chrome/android/chrome_java_sources.gni        |   1 +
  .../java/res/xml/about_chrome_preferences.xml |   5 +
- .../about_settings/AboutChromeSettings.java   |  27 ++-
- .../chrome/browser/omaha/OmahaBase.java       |  44 +++-
+ .../about_settings/AboutChromeSettings.java   |  28 ++-
+ .../chrome/browser/omaha/OmahaBase.java       |  47 +++-
  .../chrome/browser/omaha/UpdateConfigs.java   |   6 +-
- .../browser/omaha/UpdateStatusProvider.java   |  36 ++--
+ .../browser/omaha/UpdateStatusProvider.java   |  33 ++-
  .../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      | 125 +++++++++++
+ .../endpoint_fetcher/endpoint_fetcher.cc      | 129 +++++++++++
  .../endpoint_fetcher/endpoint_fetcher.h       |  23 +-
  .../endpoint_fetcher/EndpointFetcher.java     |  11 +
  .../EndpointHeaderResponse.java               |  31 +++
@@ -24,7 +24,7 @@ Enable checking for new version, with proxy support
  chrome/browser/flag_descriptions.cc           |   5 +-
  .../flags/android/chrome_feature_list.cc      |   2 +-
  .../strings/android_chrome_strings.grd        |   8 +-
- 20 files changed, 511 insertions(+), 37 deletions(-)
+ 20 files changed, 516 insertions(+), 37 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
 
@@ -54,7 +54,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -880,6 +880,7 @@ chrome_java_sources = [
+@@ -887,6 +887,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",
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/res/xml/about_chrome_preferences.xml b/chrome/a
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java
-@@ -21,11 +21,16 @@ import org.chromium.ui.widget.Toast;
+@@ -21,14 +21,20 @@ import org.chromium.ui.widget.Toast;
  
  import java.util.Calendar;
  
@@ -98,13 +98,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/
      private static final int TAPS_FOR_DEVELOPER_SETTINGS = 7;
  
      private static final String PREF_APPLICATION_VERSION = "application_version";
-@@ -59,6 +64,13 @@ public class AboutChromeSettings
++    private static final String PREF_ALLOW_INLINE_UPDATE = "allow_inline_update";
+     private static final String PREF_OS_VERSION = "os_version";
+     private static final String PREF_LEGAL_INFORMATION = "legal_information";
+ 
+@@ -59,6 +65,13 @@ public class AboutChromeSettings
          p = findPreference(PREF_LEGAL_INFORMATION);
          int currentYear = Calendar.getInstance().get(Calendar.YEAR);
          p.setSummary(getString(R.string.legal_information_summary, currentYear));
 +
 +        ChromeSwitchPreference allowInlineUpdate =
-+                (ChromeSwitchPreference) findPreference(OmahaBase.PREF_ALLOW_INLINE_UPDATE);
++                (ChromeSwitchPreference) findPreference(PREF_ALLOW_INLINE_UPDATE);
 +        allowInlineUpdate.setChecked(
 +            OmahaBase.getSharedPreferences()
 +                    .getBoolean(OmahaBase.PREF_ALLOW_INLINE_UPDATE, false));
@@ -112,7 +116,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/
      }
  
      /**
-@@ -122,4 +134,17 @@ public class AboutChromeSettings
+@@ -122,4 +135,17 @@ public class AboutChromeSettings
          }
          return true;
      }
@@ -120,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/
 +    @Override
 +    public boolean onPreferenceChange(Preference preference, Object newValue) {
 +        String key = preference.getKey();
-+        if (OmahaBase.PREF_ALLOW_INLINE_UPDATE.equals(key)) {
++        if (PREF_ALLOW_INLINE_UPDATE.equals(key)) {
 +            SharedPreferences.Editor sharedPreferenceEditor = OmahaBase.getSharedPreferences().edit();
 +            sharedPreferenceEditor.putBoolean(OmahaBase.PREF_ALLOW_INLINE_UPDATE, (boolean) newValue);
 +            sharedPreferenceEditor.apply();
@@ -149,38 +153,40 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase
 -    static final String PREF_TIMESTAMP_OF_REQUEST = "timestampOfRequest";
 +    public static final String PREF_TIMESTAMP_OF_REQUEST = "timestampOfRequest";
 +    public static final String PREF_LATEST_MODIFIED_VERSION = "latestModifiedVersion";
-+    public static final String PREF_ALLOW_INLINE_UPDATE = "allow_inline_update";
++    public static final String PREF_ALLOW_INLINE_UPDATE = "allowInlineUpdate";
  
      static final int MIN_API_JOB_SCHEDULER = Build.VERSION_CODES.M;
  
-@@ -157,8 +161,9 @@ public class OmahaBase {
-     }
+@@ -158,7 +162,8 @@ public class OmahaBase {
  
      /** See {@link #sIsDisabled}. */
-+    // do not enable version control with Omaha Update Server
      static boolean isDisabled() {
 -        return sIsDisabled;
++        // do not enable version control via Omaha Update Server
 +        return true;
      }
  
      /**
-@@ -630,4 +635,39 @@ public class OmahaBase {
+@@ -630,4 +635,42 @@ public class OmahaBase {
                  // updateStatus is only used for the on-demand check.
                  null);
      }
 +
 +    public static boolean isNewVersionAvailableByVersion(String latestVersionString) {
 +        VersionNumber mCurrentProductVersion = VersionNumber.fromString(ChromeVersionInfo.getProductVersion());
-+        if (mCurrentProductVersion == null || latestVersionString == null)
++        if (mCurrentProductVersion == null) {
++            Log.e(TAG, "BromiteUpdater: current product version is null");
 +            return false;
++        }
 +
 +        VersionNumber latestVersion = VersionNumber.fromString(latestVersionString);
-+        if (latestVersion == null) return false;
++        if (latestVersion == null) {
++            Log.e(TAG, "BromiteUpdater: invalid latest version '%s'", latestVersionString);
++            return false;
++        }
 +
-+        Log.i(TAG, "isNewVersionAvailable: CurrentProductVersion: %s",
-+                mCurrentProductVersion.toString());
-+        Log.i(TAG, "isNewVersionAvailable: LatestVersion: %s",
-+                latestVersion.toString());
++        Log.i(TAG, "BromiteUpdater: currentProductVersion=%s, latestVersion=%s",
++                mCurrentProductVersion.toString(), latestVersion.toString());
 +
 +        return mCurrentProductVersion.isSmallerThan(latestVersion);
 +    }
@@ -212,7 +218,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateCon
              "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 = 7 * 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. */
@@ -248,24 +254,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.
-@@ -112,6 +118,8 @@ public class UpdateStatusProvider implements ActivityStateListener {
-          */
-         public String latestUnsupportedVersion;
- 
-+        public long latestLastModifiedBuildTime;
-+
-         /**
-          * Whether or not we are currently trying to simulate the update.  Used to ignore other
-          * update signals.
-@@ -133,6 +141,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
-             latestUnsupportedVersion = other.latestUnsupportedVersion;
-             mIsSimulated = other.mIsSimulated;
-             mIsInlineSimulated = other.mIsInlineSimulated;
-+            latestLastModifiedBuildTime = other.latestLastModifiedBuildTime;
-         }
-     }
- 
-@@ -339,8 +348,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
+@@ -339,8 +345,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
              case UpdateConfigs.UpdateFlowConfiguration.NEVER_SHOW:
                  return UpdateState.NONE;
              case UpdateConfigs.UpdateFlowConfiguration.INLINE_ONLY:
@@ -275,7 +264,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
                  return inlineState;
              case UpdateConfigs.UpdateFlowConfiguration.BEST_EFFORT:
                  if (omahaState != UpdateState.UPDATE_AVAILABLE) return omahaState;
-@@ -415,24 +423,12 @@ public class UpdateStatusProvider implements ActivityStateListener {
+@@ -415,24 +420,12 @@ public class UpdateStatusProvider implements ActivityStateListener {
          private UpdateStatus getRealStatus(Context context) {
              UpdateStatus status = new UpdateStatus();
  
@@ -301,7 +290,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
 +            status.latestVersion = preferences.getString(OmahaBase.PREF_LATEST_MODIFIED_VERSION, "");
 +
 +            status.updateState = UpdateState.NONE;
-+            if (OmahaBase.isNewVersionAvailableByVersion(status.latestVersion)) {
++            if (status.latestVersion != null && status.latestVersion.length() != 0 && OmahaBase.isNewVersionAvailableByVersion(status.latestVersion)) {
 +                status.updateState = UpdateState.INLINE_UPDATE_AVAILABLE;
              }
  
@@ -314,7 +303,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNu
  
      /** If false, OmahaClient will never report that a newer version is available. */
 -    private static boolean sEnableUpdateDetection = true;
-+    // it must be false to not enable version control with Omaha server
++    // it must be false to disable version control via Omaha server
 +    private static boolean sEnableUpdateDetection = false;
  
      protected VersionNumberGetter() { }
@@ -386,6 +375,7 @@ new file mode 100644
 +class BromiteInlineUpdateController implements InlineUpdateController {
 +
 +    private static final String TAG = "BromiteInlineUpdateController";
++    private final String REDIRECT_URL_PREFIX = "https://github.com/bromite/bromite/releases/download/";
 +    private final String UPDATE_VERSION_URL = "https://github.com/bromite/bromite/releases/latest/download/";
 +
 +    private String getDownloadUrl() {
@@ -433,7 +423,7 @@ new file mode 100644
 +    private void pullCurrentState() {
 +        if (OmahaBase.getSharedPreferences()
 +                .getBoolean(OmahaBase.PREF_ALLOW_INLINE_UPDATE, false) == false) {
-+            Log.i(TAG, "Checking for update disabled by user");
++            Log.i(TAG, "BromiteUpdater: disabled by user");
 +            return;
 +        }
 +
@@ -488,33 +478,32 @@ new file mode 100644
 +        OmahaBase.resetUpdatePrefs();
 +
 +        String urlToCheck = getDownloadUrl();
-+        Log.i(TAG, "Fetching with HEAD: " + urlToCheck);
++        Log.i(TAG, "BromiteUpdater: fetching with HEAD '%s'", urlToCheck);
 +
 +        EndpointFetcher.nativeHeadWithNoAuth(
 +                (endpointResponse) -> {
-+                    Log.i(TAG, "Obtained response");
-+                    Log.i(TAG, "with message: '%s'", endpointResponse.getResponseString());
-+                    Log.i(TAG, "and redirect: '%s'", endpointResponse.getRedirectUrl());
-+
 +                    OmahaBase.updateLastPushedTimeStamp(System.currentTimeMillis());
-+
-+                    if (endpointResponse.getRedirectUrl() != null) {
-+                        String[] parts = endpointResponse.getRedirectUrl()
-+                                                         .split(Pattern.quote("/"));
-+                        for(String part:parts) {
-+                            VersionNumber version = VersionNumber.fromString(part);
-+                            if (version != null) {
-+                                OmahaBase.setLastModifiedVersion(part);
-+                                callback.onResult(true);
-+                                return;
++                    String redirectURL = endpointResponse.getRedirectUrl();
++                    if (redirectURL != null) {
++                        Log.i(TAG, "BromiteUpdater: obtained response '%s' and redirect URL '%s'", endpointResponse.getResponseString(), redirectURL);
++                        if (redirectURL.indexOf(REDIRECT_URL_PREFIX) == 0) {
++                            redirectURL = redirectURL.substring(REDIRECT_URL_PREFIX.length());
++                            String[] parts = redirectURL.split(Pattern.quote("/"));
++                            if (parts.length > 0) {
++                                VersionNumber version = VersionNumber.fromString(parts[0]);
++                                if (version != null) {
++                                    OmahaBase.setLastModifiedVersion(parts[0]);
++                                    callback.onResult(true);
++                                    return;
++                                }
 +                            }
 +                        }
 +                    } else {
 +                        // retry after 1 hour
 +                        OmahaBase.updateLastPushedTimeStamp(
 +                            System.currentTimeMillis() - getUpdateNotificationInterval() -
-+                            DateUtils.HOUR_IN_MILLIS * 1);
-+                        Log.i(TAG, "Some error has occurred. I'll try again in 1 hour");
++                            DateUtils.HOUR_IN_MILLIS);
++                        Log.i(TAG, "BromiteUpdater: failed, will retry in 1 hour");
 +                    }
 +
 +                    callback.onResult(false);
@@ -582,7 +571,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
  namespace {
  const char kContentTypeKey[] = "Content-Type";
  const char kDeveloperKey[] = "X-Developer-Key";
-@@ -150,6 +155,19 @@ EndpointFetcher::EndpointFetcher(
+@@ -151,6 +156,19 @@ EndpointFetcher::EndpointFetcher(
        identity_manager_(nullptr),
        sanitize_response_(true) {}
  
@@ -602,7 +591,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
  EndpointFetcher::~EndpointFetcher() = default;
  
  void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) {
-@@ -279,6 +297,73 @@ void EndpointFetcher::OnSanitizationResult(
+@@ -280,6 +298,77 @@ void EndpointFetcher::OnSanitizationResult(
    std::move(endpoint_fetcher_callback).Run(std::move(response));
  }
  
@@ -629,7 +618,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
 +      base::TimeDelta::FromMilliseconds(timeout_ms_));
 +  simple_url_loader_->SetAllowHttpErrorResults(true);
 +
-+  if(!response_)
++  if (!response_)
 +    response_ = std::make_unique<EndpointResponse>();
 +
 +  if (allow_redirect == false) {
@@ -648,10 +637,14 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
 +    const network::mojom::URLResponseHead& response_head,
 +    std::vector<std::string>* removed_headers) {
 +  url_ = redirect_info.new_url;
-+  if (response_->redirect_url.empty())
++  if (response_->redirect_url.empty()) {
 +    response_->redirect_url = url_.spec();
++    response_->response = std::to_string(redirect_info.status_code);
++  } else {
++    LOG(INFO) << "BromiteUpdater: redirect URL is not empty, status code is " << redirect_info.status_code;
++  }
 +
-+  PerformHeadRequest(std::move(endpoint_fetcher_callback_), nullptr, true);
++  std::move(endpoint_fetcher_callback_).Run(std::move(response_));
 +}
 +
 +void EndpointFetcher::OnURLLoadComplete(
@@ -676,7 +669,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
  #if defined(OS_ANDROID)
  namespace {
  static void OnEndpointFetcherComplete(
-@@ -295,6 +380,25 @@ static void OnEndpointFetcherComplete(
+@@ -296,6 +385,25 @@ static void OnEndpointFetcherComplete(
                         base::android::AttachCurrentThread(),
                         std::move(endpoint_response->response))));
  }
@@ -702,7 +695,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
  }  // namespace
  
  // TODO(crbug.com/1077537) Create a KeyProvider so
-@@ -380,4 +484,25 @@ static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
+@@ -381,4 +489,25 @@ static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
        nullptr);
  }
  
@@ -869,7 +862,7 @@ new file mode 100644
 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
-@@ -2059,7 +2059,7 @@
+@@ -2037,7 +2037,7 @@
    {
      "name": "enable-inline-update-flow",
      "owners": [ "nyquist", "dtrainor" ],
@@ -881,7 +874,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
-@@ -3705,10 +3705,9 @@ const char kVoiceButtonInTopToolbarDescription[] =
+@@ -3582,10 +3582,9 @@ const char kVoiceButtonInTopToolbarDescription[] =
      "Enables showing the voice search button in the top toolbar. Enabling "
      "Adaptive Button overrides this.";
  
@@ -897,7 +890,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 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
-@@ -594,7 +594,7 @@ const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
+@@ -627,7 +627,7 @@ const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kInlineUpdateFlow{"InlineUpdateFlow",
@@ -909,7 +902,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
-@@ -1631,6 +1631,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1657,6 +1657,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>
@@ -922,7 +915,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]">
-@@ -3059,7 +3065,7 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3144,7 +3150,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]">

+ 10 - 10
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
-@@ -575,7 +575,7 @@ const base::Feature kEnhancedProtectionPromoCard{
+@@ -605,7 +605,7 @@ const base::Feature kEnhancedProtectionPromoCard{
      "EnhancedProtectionPromoCard", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kExperimentsForAgsa{"ExperimentsForAgsa",
@@ -22,15 +22,15 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/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
-@@ -84,7 +84,7 @@ public class CachedFeatureFlags {
-             put(ChromeFeatureList.CCT_REMOVE_REMOTE_VIEW_IDS, true);
-             put(ChromeFeatureList.OFFLINE_MEASUREMENTS_BACKGROUND_TASK, false);
-             put(ChromeFeatureList.CCT_INCOGNITO, true);
--            put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, true);
-+            put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, false);
-             put(ChromeFeatureList.APP_MENU_MOBILE_SITE_OPTION, false);
-             put(ChromeFeatureList.CLIPBOARD_SUGGESTION_CONTENT_HIDDEN, false);
-             put(ChromeFeatureList.OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, false);
+@@ -86,7 +86,7 @@ public class CachedFeatureFlags {
+                     .put(ChromeFeatureList.CCT_REMOVE_REMOTE_VIEW_IDS, true)
+                     .put(ChromeFeatureList.OFFLINE_MEASUREMENTS_BACKGROUND_TASK, false)
+                     .put(ChromeFeatureList.CCT_INCOGNITO, true)
+-                    .put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, true)
++                    .put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, false)
+                     .put(ChromeFeatureList.APP_MENU_MOBILE_SITE_OPTION, false)
+                     .put(ChromeFeatureList.CLIPBOARD_SUGGESTION_CONTENT_HIDDEN, false)
+                     .put(ChromeFeatureList.OPTIMIZATION_GUIDE_PUSH_NOTIFICATIONS, false)
 -- 
 2.17.1
 

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

+ 0 - 37
build/patches/Disable-Omaha-update-checks.patch

@@ -1,37 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Sun, 26 Nov 2017 23:11:56 +0100
-Subject: Disable Omaha update checks
-
-Do not consider Jelly Bean unsupported
----
- .../java/src/org/chromium/chrome/browser/omaha/OmahaBase.java   | 2 +-
- .../org/chromium/chrome/browser/omaha/VersionNumberGetter.java  | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
-@@ -158,7 +158,7 @@ public class OmahaBase {
- 
-     /** See {@link #sIsDisabled}. */
-     static boolean isDisabled() {
--        return sIsDisabled;
-+        return true;
-     }
- 
-     /**
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
-@@ -43,7 +43,7 @@ public class VersionNumberGetter {
-     private static VersionNumberGetter sInstanceForTests;
- 
-     /** If false, OmahaClient will never report that a newer version is available. */
--    private static boolean sEnableUpdateDetection = true;
-+    private static boolean sEnableUpdateDetection = false;
- 
-     protected VersionNumberGetter() { }
- 
--- 
-2.17.1
-

+ 0 - 23
build/patches/Disable-RTCGetCurrentBrowsingContextMedia-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Thu, 29 Apr 2021 20:26:31 +0200
-Subject: Disable RTCGetCurrentBrowsingContextMedia by default
-
----
- third_party/blink/common/features.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
---- a/third_party/blink/common/features.cc
-+++ b/third_party/blink/common/features.cc
-@@ -225,7 +225,7 @@ const base::Feature kRawClipboard{"RawClipboard",
- // Kill switch for getCurrentBrowsingContextMedia(), which allows capturing of
- // web content from the tab from which it is called. (crbug.com/1136940)
- const base::Feature kRTCGetCurrentBrowsingContextMedia{
--    "RTCGetCurrentBrowsingContextMedia", base::FEATURE_ENABLED_BY_DEFAULT};
-+    "RTCGetCurrentBrowsingContextMedia", base::FEATURE_DISABLED_BY_DEFAULT};
- 
- // Changes the default RTCPeerConnection constructor behavior to use Unified
- // Plan as the SDP semantics. When the feature is enabled, Unified Plan is used
--- 
-2.17.1
-

+ 0 - 46
build/patches/Disable-UA-client-hint-for-model.patch

@@ -1,46 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Thu, 22 Jul 2021 23:10:52 +0200
-Subject: Disable UA client hint for model
-
-Disable permissions policy by default
----
- content/public/common/content_features.cc             | 2 +-
- third_party/blink/common/client_hints/client_hints.cc | 4 +++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-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
-@@ -296,7 +296,7 @@ const base::Feature kExtraSafelistedRequestHeadersForOutOfBlinkCors{
- 
- // Controls whether Client Hints are guarded by Permissions Policy.
- const base::Feature kFeaturePolicyForClientHints{
--    "FeaturePolicyForClientHints", base::FEATURE_ENABLED_BY_DEFAULT};
-+    "FeaturePolicyForClientHints", base::FEATURE_DISABLED_BY_DEFAULT};
- 
- // Enables the AccessHandle surface for File System Access API's Origin Private
- // File System. Tracking bug: https://crbug.com/1218431.
-diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party/blink/common/client_hints/client_hints.cc
---- a/third_party/blink/common/client_hints/client_hints.cc
-+++ b/third_party/blink/common/client_hints/client_hints.cc
-@@ -106,6 +106,9 @@ absl::optional<std::vector<network::mojom::WebClientHintsType>> FilterAcceptCH(
-   for (network::mojom::WebClientHintsType hint : in.value()) {
-     // Some hints are supported only conditionally.
-     switch (hint) {
-+      case network::mojom::WebClientHintsType::kUAModel:
-+        // model is never provided for privacy reasons
-+        break;
-       case network::mojom::WebClientHintsType::kLang:
-         if (permit_lang_hints)
-           result.push_back(hint);
-@@ -114,7 +117,6 @@ absl::optional<std::vector<network::mojom::WebClientHintsType>> FilterAcceptCH(
-       case network::mojom::WebClientHintsType::kUAArch:
-       case network::mojom::WebClientHintsType::kUAPlatform:
-       case network::mojom::WebClientHintsType::kUAPlatformVersion:
--      case network::mojom::WebClientHintsType::kUAModel:
-       case network::mojom::WebClientHintsType::kUAMobile:
-       case network::mojom::WebClientHintsType::kUAFullVersion:
-       case network::mojom::WebClientHintsType::kUABitness:
--- 
-2.17.1
-

+ 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
-@@ -735,7 +735,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -822,7 +822,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;
              }
-@@ -770,8 +770,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -857,8 +857,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

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

@@ -3,23 +3,25 @@ Date: Thu, 19 Dec 2019 22:52:53 +0100
 Subject: Disable feeds support by default
 
 ---
- .../chromium/chrome/browser/feed/shared/FeedFeatures.java   | 6 +-----
- .../chromium/chrome/browser/flags/CachedFeatureFlags.java   | 2 +-
- components/feed/feed_feature_list.cc                        | 4 ++--
- 3 files changed, 4 insertions(+), 8 deletions(-)
+ .../chromium/chrome/browser/feed/shared/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
-@@ -34,11 +34,7 @@ public final class FeedFeatures {
-      *         the user is signed in.
+@@ -35,13 +35,7 @@ public final class FeedFeatures {
+      *         the user is signed in and confirms it's not a child profile.
       */
      public static boolean isWebFeedUIEnabled() {
+-        // TODO(b/197354832, b/188188861): change consent check to SIGNIN.
 -        return ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_FEED)
 -                && IdentityServicesProvider.get()
 -                           .getSigninManager(Profile.getLastUsedRegularProfile())
 -                           .getIdentityManager()
--                           .hasPrimaryAccount();
+-                           .hasPrimaryAccount(ConsentLevel.SYNC)
+-                && !Profile.getLastUsedRegularProfile().isChild();
 +        return false;
      }
  
@@ -27,15 +29,15 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/
 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
-@@ -75,7 +75,7 @@ public class CachedFeatureFlags {
-             put(ChromeFeatureList.TAB_TO_GTS_ANIMATION, true);
-             put(ChromeFeatureList.TEST_DEFAULT_DISABLED, false);
-             put(ChromeFeatureList.TEST_DEFAULT_ENABLED, true);
--            put(ChromeFeatureList.INTEREST_FEED_V2, true);
-+            put(ChromeFeatureList.INTEREST_FEED_V2, false);
-             put(ChromeFeatureList.THEME_REFACTOR_ANDROID, false);
-             put(ChromeFeatureList.USE_CHIME_ANDROID_SDK, false);
-             put(ChromeFeatureList.CCT_INCOGNITO_AVAILABLE_TO_THIRD_PARTY, false);
+@@ -77,7 +77,7 @@ public class CachedFeatureFlags {
+                     .put(ChromeFeatureList.TAB_TO_GTS_ANIMATION, true)
+                     .put(ChromeFeatureList.TEST_DEFAULT_DISABLED, false)
+                     .put(ChromeFeatureList.TEST_DEFAULT_ENABLED, true)
+-                    .put(ChromeFeatureList.INTEREST_FEED_V2, true)
++                    .put(ChromeFeatureList.INTEREST_FEED_V2, false)
+                     .put(ChromeFeatureList.THEME_REFACTOR_ANDROID, false)
+                     .put(ChromeFeatureList.USE_CHIME_ANDROID_SDK, false)
+                     .put(ChromeFeatureList.CCT_INCOGNITO_AVAILABLE_TO_THIRD_PARTY, false)
 diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
 --- a/components/feed/feed_feature_list.cc
 +++ b/components/feed/feed_feature_list.cc

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

@@ -28,7 +28,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
  }
  
  std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
-@@ -606,7 +596,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
+@@ -610,7 +600,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-lock-icon-in-address-bar-by-default.patch

@@ -9,7 +9,7 @@ Subject: Disable lock icon in address bar by default
 diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
 --- a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
 +++ b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
-@@ -276,5 +276,5 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
+@@ -313,5 +313,5 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
  void ChromeLocationBarModelDelegate::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(omnibox::kPreventUrlElisionsInOmnibox, true);

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

@@ -11,8 +11,8 @@ Subject: Disable media router and remoting by default
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -46,26 +46,15 @@ const base::Feature kCastFeedbackDialog{"CastFeedbackDialog",
-                                         base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -37,26 +37,15 @@ const base::Feature kAllowAllSitesToInitiateMirroring{
+     "AllowAllSitesToInitiateMirroring", base::FEATURE_DISABLED_BY_DEFAULT};
  #endif  // !defined(OS_ANDROID)
  
 -namespace {
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
  #if !defined(OS_ANDROID)
    if (!base::FeatureList::IsEnabled(kMediaRouter))
      return false;
-@@ -89,7 +78,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+@@ -80,7 +69,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
      return allowed;
    }
    return true;
@@ -68,7 +68,7 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
 diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
 --- a/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
-@@ -422,7 +422,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -434,7 +434,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

+ 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
-@@ -954,7 +954,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -965,7 +965,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,

+ 1 - 1
build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch

@@ -12,7 +12,7 @@ a corresponding user option to individually disable their usage.
 diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
 --- a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
 +++ b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
-@@ -275,6 +275,6 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
+@@ -312,6 +312,6 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
  // static
  void ChromeLocationBarModelDelegate::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {

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

+ 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
-@@ -297,7 +297,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -300,7 +300,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
  std::string DomDistillerViewerSource::GetContentSecurityPolicy(
      network::mojom::CSPDirectiveName directive) {
    if (directive == network::mojom::CSPDirectiveName::StyleSrc) {

Dosya farkı çok büyük olduğundan ihmal edildi
+ 177 - 129
build/patches/Disable-safe-browsing.patch


+ 1 - 1
build/patches/Disable-search-engine-DSE-automatic-permission.patch

@@ -9,7 +9,7 @@ Subject: Disable search engine DSE automatic permission
 diff --git a/components/permissions/features.cc b/components/permissions/features.cc
 --- a/components/permissions/features.cc
 +++ b/components/permissions/features.cc
-@@ -74,7 +74,7 @@ const base::Feature kRevisedOriginHandling{"PermissionsRevisedOriginHandling",
+@@ -76,7 +76,7 @@ const base::Feature kRevisedOriginHandling{"PermissionsRevisedOriginHandling",
  // When enabled, the Default Search Engine does not automatically receive the
  // "geolocation" and "notifications" permissions. DSE only applies to Android.
  const base::Feature kRevertDSEAutomaticPermissions{

+ 2 - 2
build/patches/Disable-seed-based-field-trials.patch

@@ -9,7 +9,7 @@ Subject: Disable seed-based field trials
 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
-@@ -261,8 +261,8 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -258,8 +258,8 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
    // instance is set.
    feature_list->RegisterExtraFeatureOverrides(extra_overrides);
  
@@ -19,7 +19,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)) {
-@@ -276,10 +276,12 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -273,10 +273,12 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
    }
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
    bool used_seed = false;

+ 7 - 7
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
-@@ -164,6 +164,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -172,6 +172,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,
-@@ -472,6 +473,9 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
+@@ -492,6 +493,9 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
  const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
                                               base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -64,7 +64,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -50,6 +50,7 @@ extern const base::Feature kChromeShareHighlightsAndroid;
+@@ -52,6 +52,7 @@ extern const base::Feature kChromeShareHighlightsAndroid;
  extern const base::Feature kChromeShareLongScreenshot;
  extern const base::Feature kChromeShareScreenshot;
  extern const base::Feature kChromeSharingHub;
@@ -75,18 +75,18 @@ 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
-@@ -275,6 +275,7 @@ public abstract class ChromeFeatureList {
+@@ -277,6 +277,7 @@ public abstract class ChromeFeatureList {
      public static final String CCT_EXTERNAL_LINK_HANDLING = "CCTExternalLinkHandling";
      public static final String CCT_POST_MESSAGE_API = "CCTPostMessageAPI";
      public static final String CCT_REDIRECT_PRECONNECT = "CCTRedirectPreconnect";
 +    public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection";
      public static final String CCT_REMOVE_REMOTE_VIEW_IDS = "CCTRemoveRemoteViewIds";
+     public static final String CCT_RESIZABLE_FOR_FIRST_PARTIES = "CCTResizableForFirstParties";
      public static final String CCT_RESIZABLE_FOR_THIRD_PARTIES = "CCTResizableForThirdParties";
-     public static final String CCT_RESOURCE_PREFETCH = "CCTResourcePrefetch";
 diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
-@@ -840,7 +840,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
+@@ -839,7 +839,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
              menu.removeItem(R.id.select_action_menu_share);
          }
  
@@ -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
-@@ -1859,6 +1859,21 @@
+@@ -1951,6 +1951,21 @@
              ]
          }
      ],

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

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

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

@@ -18,17 +18,17 @@ 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
 @@ -5383,6 +5383,7 @@ const FeatureEntry kFeatureEntries[] = {
- 
-     {"happiness-tracking-surveys-for-desktop-settings-privacy",
-      flag_descriptions::kHappinessTrackingSurveysForDesktopSettingsPrivacyName,
+      flag_descriptions::kSharingHubDesktopOmniboxDescription, kOsDesktop,
+      FEATURE_VALUE_TYPE(sharing_hub::kSharingHubDesktopOmnibox)},
+ #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
 +     // will override runtime text fragment identifiers setting too
-      flag_descriptions::
-          kHappinessTrackingSurveysForDesktopSettingsPrivacyDescription,
-      kOsDesktop,
+ 
+ #if BUILDFLAG(IS_CHROMEOS_ASH)
+     {"ash-enable-pip-rounded-corners",
 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
-@@ -2968,7 +2968,7 @@
+@@ -2941,7 +2941,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
-@@ -266,6 +266,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
+@@ -263,6 +263,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
-@@ -348,7 +348,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
+@@ -370,7 +370,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
  
  // Enable text snippets in URL fragments. https://crbug.com/919204.
  const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
@@ -75,7 +75,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -4069,6 +4069,10 @@ void Document::SetURL(const KURL& url) {
+@@ -4070,6 +4070,10 @@ void Document::SetURL(const KURL& url) {
      }
    }
  
@@ -86,7 +86,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
    // 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();
-@@ -4082,6 +4086,7 @@ void Document::SetURL(const KURL& url) {
+@@ -4083,6 +4087,7 @@ void Document::SetURL(const KURL& url) {
      else
        new_url.SetFragmentIdentifier(fragment.Substring(0, start_pos));
    }
@@ -97,7 +97,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
-@@ -1248,34 +1248,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) {
+@@ -1249,34 +1249,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 +145,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
-@@ -2119,8 +2119,7 @@
+@@ -2130,8 +2130,7 @@
      },
      {
        name: "TextFragmentIdentifiers",

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

@@ -10,9 +10,9 @@ author: Chad Miller <chad.miller@canonical.com>
 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
-@@ -697,7 +697,7 @@ void RegisterProfilePrefsForMigration(
+@@ -698,7 +698,7 @@ void RegisterProfilePrefsForMigration(
  
-   registry->RegisterDictionaryPref(kObservedSessionTime);
+   chrome_browser_net::secure_dns::RegisterProbesSettingBackupPref(registry);
  
 -  registry->RegisterBooleanPref(kBlockThirdPartyCookies, false);
 +  registry->RegisterBooleanPref(kBlockThirdPartyCookies, true);

+ 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
-@@ -470,7 +470,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
+@@ -498,7 +498,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
-@@ -1180,8 +1180,6 @@ static_library("ui") {
+@@ -1195,8 +1195,6 @@ static_library("ui") {
        "singleton_tabs.h",
        "startup/automation_infobar_delegate.cc",
        "startup/automation_infobar_delegate.h",

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

@@ -11,7 +11,7 @@ Subject: Do not compile QR code sharing
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
-@@ -71,7 +71,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
+@@ -78,7 +78,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
  import org.chromium.chrome.browser.share.ShareDelegate;
  import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin;
  import org.chromium.chrome.browser.share.ShareUtils;
@@ -19,13 +19,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
  import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
  import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController;
  import org.chromium.chrome.browser.tab.Tab;
-@@ -306,10 +305,6 @@ public class RootUiCoordinator
+@@ -401,10 +400,6 @@ public class RootUiCoordinator
      }
  
      public void onAttachFragment(Fragment fragment) {
 -        if (fragment instanceof QrCodeDialog) {
 -            QrCodeDialog qrCodeDialog = (QrCodeDialog) fragment;
--            qrCodeDialog.setAndroidPermissionDelegate(mActivity.getWindowAndroid());
+-            qrCodeDialog.setAndroidPermissionDelegate(mWindowAndroid);
 -        }
      }
  
@@ -74,7 +74,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s
 diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/share/android/java_sources.gni
 --- a/chrome/browser/share/android/java_sources.gni
 +++ b/chrome/browser/share/android/java_sources.gni
-@@ -22,24 +22,6 @@ share_java_sources = [
+@@ -21,24 +21,6 @@ share_java_sources = [
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabService.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsTabServiceFactory.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/ScreenshotBoundsManager.java",

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

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

@@ -4,22 +4,18 @@ Subject: Enable darken websites checkbox in themes
 
 Unexpire #darken-websites-checkbox-in-themes-setting
 ---
- chrome/browser/flag-metadata.json                   | 6 +++---
+ chrome/browser/flag-metadata.json                   | 2 +-
  chrome/browser/flags/android/chrome_feature_list.cc | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ 2 files changed, 2 insertions(+), 2 deletions(-)
 
 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
-@@ -917,9 +917,9 @@
-     "expiry_milestone": 100
-   },
+@@ -903,7 +903,7 @@
    {
--    "name": "darken-websites-checkbox-in-themes-setting",
--    "owners": [ "lazzzis@google.com", "twellington" ],
--    "expiry_milestone": 92
-+    "name":    "darken-websites-checkbox-in-themes-setting",
-+    "owners":  [ "lazzzis@google.com", "twellington" ],
+     "name": "darken-websites-checkbox-in-themes-setting",
+     "owners": [ "lazzzis@google.com", "twellington" ],
+-    "expiry_milestone": 98
 +    "expiry_milestone": -1
    },
    {
@@ -27,15 +23,15 @@ 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
-@@ -540,7 +540,7 @@ const base::Feature kContextualSearchTranslations{
+@@ -560,7 +560,7 @@ const base::Feature kContextualSearchTranslations{
      "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kDarkenWebsitesCheckboxInThemesSetting{
 -    "DarkenWebsitesCheckboxInThemesSetting", base::FEATURE_DISABLED_BY_DEFAULT};
 +    "DarkenWebsitesCheckboxInThemesSetting", base::FEATURE_ENABLED_BY_DEFAULT};
  
- const base::Feature kDirectActions{"DirectActions",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+ const base::Feature kQuickActionSearchWidgetAndroidDinoVariant{
+     "QuickActionSearchWidgetAndroidDinoVariant",
 -- 
 2.17.1
 

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

+ 23 - 23
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
-@@ -716,6 +716,7 @@ chrome_java_resources = [
+@@ -719,6 +719,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
-@@ -1046,6 +1046,7 @@ chrome_java_sources = [
+@@ -1053,6 +1053,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java",
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMetrics.java",
    "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java",
@@ -49,7 +49,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -803,6 +803,24 @@ by a child template that "extends" this file.
+@@ -810,6 +810,24 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -165,15 +165,15 @@ new file mode 100644
 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
-@@ -73,6 +73,7 @@ import org.chromium.chrome.browser.rlz.RevenueStats;
+@@ -72,6 +72,7 @@ import org.chromium.chrome.browser.quickactionsearchwidget.QuickActionSearchWidg
+ import org.chromium.chrome.browser.rlz.RevenueStats;
  import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
- import org.chromium.chrome.browser.share.clipboard.ClipboardImageFileProvider;
  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.util.AfterStartupTaskUtils;
  import org.chromium.chrome.browser.webapps.WebApkVersionManager;
- import org.chromium.chrome.browser.webapps.WebappRegistry;
- import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
-@@ -399,6 +400,8 @@ public class ProcessInitializationHandler {
+@@ -405,6 +406,8 @@ public class ProcessInitializationHandler {
          deferredStartupHandler.addDeferredTask(
                  () -> IncognitoTabLauncher.updateComponentEnabledState());
  
@@ -304,9 +304,9 @@ 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
-@@ -5536,6 +5536,10 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kSharedClipboardUIDescription, kOsAll,
-      FEATURE_VALUE_TYPE(kSharedClipboardUI)},
+@@ -5408,6 +5408,10 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(sharing_hub::kDesktopScreenshots)},
+ #endif
  
 +    {"shared-intent-ui", flag_descriptions::kSharedIntentUIName,
 +     flag_descriptions::kSharedIntentUIDescription, kOsAll,
@@ -318,9 +318,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
-@@ -2382,6 +2382,11 @@ const char kSharedClipboardUIDescription[] =
-     "Enables shared clipboard feature signals to be handled by showing "
-     "a list of user's available devices to share the clipboard.";
+@@ -2275,6 +2275,11 @@ const char kSharingDesktopScreenshotsDescription[] =
+     "Enables taking"
+     " screenshots from the desktop sharing hub.";
  
 +const char kSharedIntentUIName[] =
 +    "Enable shared feature";
@@ -333,9 +333,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
-@@ -1364,6 +1364,9 @@ extern const char kServiceWorkerSubresourceFilterDescription[];
- extern const char kSharedClipboardUIName[];
- extern const char kSharedClipboardUIDescription[];
+@@ -1307,6 +1307,9 @@ extern const char kSharedClipboardUIDescription[];
+ extern const char kSharingDesktopScreenshotsName[];
+ extern const char kSharingDesktopScreenshotsDescription[];
  
 +extern const char kSharedIntentUIName[];
 +extern const char kSharedIntentUIDescription[];
@@ -346,7 +346,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
-@@ -243,6 +243,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -256,6 +256,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,
-@@ -607,6 +608,9 @@ const base::Feature kSearchEnginePromoExistingDevice{
+@@ -640,6 +641,9 @@ const base::Feature kSearchEnginePromoExistingDevice{
  const base::Feature kSearchEnginePromoNewDevice{
      "SearchEnginePromo.NewDevice", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -367,7 +367,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -117,6 +117,7 @@ extern const base::Feature kRelatedSearchesSimplifiedUx;
+@@ -123,6 +123,7 @@ extern const base::Feature kRelatedSearchesSimplifiedUx;
  extern const base::Feature kRelatedSearchesUi;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
@@ -378,9 +378,9 @@ 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
-@@ -477,6 +477,7 @@ public abstract class ChromeFeatureList {
-     public static final String SHARE_BUTTON_IN_TOP_TOOLBAR = "ShareButtonInTopToolbar";
+@@ -495,6 +495,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";
 +    public static final String SHARED_INTENT_UI = "SharedIntentUI";
      public static final String SHARED_HIGHLIGHTING_V2 = "SharedHighlightingV2";
@@ -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
-@@ -4272,6 +4272,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4453,6 +4453,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Send text to Your Devices
        </message>
  

+ 3 - 3
build/patches/Force-open-external-links-in-incognito.patch

@@ -11,7 +11,7 @@ Subject: Force open external links in incognito
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -57,6 +57,11 @@
+@@ -61,6 +61,11 @@
          android:title="@string/allow_custom_tab_intents_title"
          android:summary="@string/allow_custom_tab_intents_summary"
          android:defaultValue="false" />
@@ -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/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
-@@ -427,6 +427,17 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -421,6 +421,17 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
  
          if (Intent.ACTION_VIEW.equals(newIntent.getAction())
                  && !IntentHandler.wasIntentSenderChrome(newIntent)) {
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 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
-@@ -4317,6 +4317,14 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4498,6 +4498,14 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Allow applications to open custom tab intents, similar to webview.
        </message>
  

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

@@ -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();
-@@ -6604,6 +6607,61 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
+@@ -6536,6 +6539,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);
-@@ -6661,6 +6719,10 @@ void Document::FinishedParsing() {
+@@ -6591,6 +6649,10 @@ void Document::FinishedParsing() {
      if (frame->GetFrameScheduler())
        frame->GetFrameScheduler()->OnDomContentLoaded();
  
@@ -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
-@@ -1748,6 +1748,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1746,6 +1746,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  

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

@@ -13,7 +13,7 @@ Subject: JIT-less toggle
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -24,6 +24,11 @@
+@@ -28,6 +28,11 @@
          android:title="@string/preload_pages_title"
          android:summary="@string/preload_pages_summary"
          android:persistent="false"/>
@@ -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;
-@@ -65,6 +66,7 @@ public class PrivacySettings
+@@ -67,6 +68,7 @@ public class PrivacySettings
      private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
      private static final String PREF_PROXY_OPTIONS = "proxy";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
@@ -44,7 +44,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  
      // moved from SyncAndServicesSettings.java
      private static final String PREF_SERVICES_CATEGORY = "services_category";
-@@ -165,6 +167,10 @@ public class PrivacySettings
+@@ -176,6 +178,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);
-@@ -245,6 +251,12 @@ public class PrivacySettings
+@@ -259,6 +265,12 @@ public class PrivacySettings
              historyInIncognitoPref.setChecked(
                      prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
          }

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

@@ -26,7 +26,7 @@ Subject: Logcat crash reports UI
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadServiceImpl.java
-@@ -42,6 +42,11 @@ import java.lang.annotation.Retention;
+@@ -45,6 +45,11 @@ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.concurrent.atomic.AtomicBoolean;
  
@@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpU
  /**
   * Service that is responsible for uploading crash minidumps to the Google crash server.
   */
-@@ -444,4 +449,21 @@ public class MinidumpUploadServiceImpl extends MinidumpUploadService.Impl {
+@@ -455,4 +460,21 @@ public class MinidumpUploadServiceImpl extends MinidumpUploadService.Impl {
              tryUploadCrashDump(renamedMinidumpFile);
          }
      }
@@ -155,7 +155,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -593,6 +593,7 @@ static_library("ui") {
+@@ -594,6 +594,7 @@ static_library("ui") {
      "//third_party/re2",
      "//third_party/webrtc_overrides:webrtc_component",
      "//third_party/zlib",

+ 4 - 4
build/patches/Make-all-favicon-requests-on-demand.patch

@@ -11,7 +11,7 @@ as long as the test is retained and still passes.
 diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/core/favicon_database.cc
 --- a/components/favicon/core/favicon_database.cc
 +++ b/components/favicon/core/favicon_database.cc
-@@ -504,6 +504,7 @@ FaviconBitmapID FaviconDatabase::AddFaviconBitmap(
+@@ -506,6 +506,7 @@ FaviconBitmapID FaviconDatabase::AddFaviconBitmap(
      base::Time time,
      const gfx::Size& pixel_size) {
    DCHECK(icon_id);
@@ -19,7 +19,7 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co
  
    sql::Statement statement(db_.GetCachedStatement(
        SQL_FROM_HERE,
-@@ -556,8 +557,8 @@ bool FaviconDatabase::SetFaviconBitmap(
+@@ -558,8 +559,8 @@ bool FaviconDatabase::SetFaviconBitmap(
    } else {
      statement.BindNull(0);
    }
@@ -30,7 +30,7 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co
    statement.BindInt64(3, bitmap_id);
  
    return statement.Run();
-@@ -566,7 +567,7 @@ bool FaviconDatabase::SetFaviconBitmap(
+@@ -568,7 +569,7 @@ bool FaviconDatabase::SetFaviconBitmap(
  bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id,
                                                       base::Time time) {
    DCHECK(bitmap_id);
@@ -39,7 +39,7 @@ diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/co
    // If it is ON_DEMAND, reset last_requested to 0 and thus silently change the
    // type to ON_VISIT.
    sql::Statement statement(
-@@ -576,7 +577,8 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id,
+@@ -578,7 +579,8 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id,
    statement.BindInt64(0, time.ToDeltaSinceWindowsEpoch().InMicroseconds());
    statement.BindInt64(1, 0);
    statement.BindInt64(2, bitmap_id);

+ 19 - 18
build/patches/Modify-default-preferences.patch

@@ -3,19 +3,19 @@ Date: Sat, 2 May 2020 00:25:25 +0200
 Subject: Modify default preferences
 
 ---
- chrome/browser/background/background_mode_manager.cc          | 2 +-
- chrome/browser/chrome_content_browser_client.cc               | 2 +-
- chrome/browser/net/prediction_options.cc                      | 2 +-
- chrome/browser/net/prediction_options.h                       | 2 +-
- chrome/browser/profiles/profile.cc                            | 2 +-
- .../resources/settings/reset_page/reset_profile_dialog.html   | 2 +-
- chrome/browser/ui/browser_ui_prefs.cc                         | 4 ++--
- chrome/service/cloud_print/connector_settings.cc              | 2 +-
- components/autofill/core/browser/browser_autofill_manager.h   | 4 ++--
- components/autofill/core/common/autofill_prefs.cc             | 2 +-
- components/bookmarks/browser/bookmark_utils.cc                | 4 ++--
- components/safe_browsing/core/common/safe_browsing_prefs.cc   | 4 ++--
- 12 files changed, 16 insertions(+), 16 deletions(-)
+ chrome/browser/background/background_mode_manager.cc        | 2 +-
+ chrome/browser/chrome_content_browser_client.cc             | 2 +-
+ chrome/browser/net/prediction_options.cc                    | 2 +-
+ chrome/browser/net/prediction_options.h                     | 2 +-
+ chrome/browser/profiles/profile.cc                          | 2 +-
+ .../resources/settings/reset_page/reset_profile_dialog.html | 2 +-
+ chrome/browser/ui/browser_ui_prefs.cc                       | 6 +++---
+ chrome/service/cloud_print/connector_settings.cc            | 2 +-
+ components/autofill/core/browser/browser_autofill_manager.h | 4 ++--
+ components/autofill/core/common/autofill_prefs.cc           | 2 +-
+ components/bookmarks/browser/bookmark_utils.cc              | 4 ++--
+ components/safe_browsing/core/common/safe_browsing_prefs.cc | 4 ++--
+ 12 files changed, 17 insertions(+), 17 deletions(-)
 
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
@@ -32,7 +32,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
-@@ -1288,7 +1288,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1186,7 +1186,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -96,12 +96,13 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
    registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
    registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
    registry->RegisterBooleanPref(
--      prefs::kOfferTranslateEnabled, true,
-+      prefs::kOfferTranslateEnabled, false,
+-      translate::prefs::kOfferTranslateEnabled, true,
++      translate::prefs::kOfferTranslateEnabled, false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterStringPref(prefs::kCloudPrintEmail, std::string());
-   registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
+-  registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
 -  registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, true);
++  registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, false);
 +  registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, false);
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
@@ -121,7 +122,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
 diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h
 --- a/components/autofill/core/browser/browser_autofill_manager.h
 +++ b/components/autofill/core/browser/browser_autofill_manager.h
-@@ -682,9 +682,9 @@ class BrowserAutofillManager
+@@ -681,9 +681,9 @@ class BrowserAutofillManager
    std::unique_ptr<CreditCardFormEventLogger> credit_card_form_event_logger_;
  
    // Have we logged whether Autofill is enabled for this page load?

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

@@ -12,7 +12,7 @@ Search suggestions, autofill assistant and contextual search
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -56,4 +56,24 @@
+@@ -60,4 +60,24 @@
          android:key="privacy_sandbox"
          android:title="@string/prefs_privacy_sandbox"
          android:fragment="org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragment"/>
@@ -46,9 +46,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.R;
 +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.preferences.Pref;
- import org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings;
-@@ -41,6 +42,13 @@ import org.chromium.ui.text.SpanApplier;
+@@ -42,6 +43,13 @@ import org.chromium.ui.text.SpanApplier;
  
  import org.chromium.base.Log;
  
@@ -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.
   */
-@@ -58,6 +66,18 @@ public class PrivacySettings
+@@ -60,6 +68,18 @@ public class PrivacySettings
      private static final String PREF_PROXY_OPTIONS = "proxy";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
  
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
      @Override
-@@ -88,6 +108,29 @@ public class PrivacySettings
+@@ -90,6 +110,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);
-@@ -120,6 +163,11 @@ public class PrivacySettings
+@@ -131,6 +174,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);
-@@ -135,6 +183,16 @@ public class PrivacySettings
+@@ -149,6 +197,16 @@ public class PrivacySettings
          return true;
      }
  
@@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onResume() {
          super.onResume();
-@@ -145,7 +203,7 @@ public class PrivacySettings
+@@ -159,7 +217,7 @@ public class PrivacySettings
       * Updates the summaries for several preferences.
       */
      public void updateSummaries() {

+ 24 - 24
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
-@@ -2266,6 +2266,7 @@ static_library("browser") {
+@@ -2276,6 +2276,7 @@ static_library("browser") {
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/serial:switches",
      "//services/device/public/cpp/usb",
@@ -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"
-@@ -2836,6 +2837,20 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2731,6 +2732,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
-@@ -213,6 +213,7 @@
+@@ -215,6 +215,7 @@
  #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
  #include "third_party/blink/public/mojom/disk_allocator.mojom.h"
  #include "third_party/blink/public/public_buildflags.h"
@@ -118,7 +118,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
  #include "third_party/skia/include/core/SkBitmap.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/base/ui_base_switches.h"
-@@ -3431,6 +3432,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3394,6 +3395,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisableBreakpad,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -142,7 +142,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -39,6 +39,8 @@
+@@ -38,6 +38,8 @@
  #include "ui/gl/gl_switches.h"
  #include "ui/native_theme/native_theme_features.h"
  
@@ -151,7 +151,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
-@@ -547,6 +549,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -542,6 +544,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    if (!command_line.HasSwitch(switches::kDisableYUVImageDecoding) &&
        base::FeatureList::IsEnabled(
            blink::features::kDecodeLossyWebPImagesToYUV)) {
@@ -169,15 +169,15 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
 @@ -217,6 +217,9 @@ class WebRuntimeFeatures {
+   BLINK_PLATFORM_EXPORT static void EnableAutomationControlled(bool);
+   BLINK_PLATFORM_EXPORT static void EnableAutoplayIgnoresWebAudio(bool);
    BLINK_PLATFORM_EXPORT static void EnableMediaControlsExpandGesture(bool);
-   BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
-   BLINK_PLATFORM_EXPORT static void EnableGetCurrentBrowsingContextMedia(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasMeasureTextNoise(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasImageDataNoise(bool);
+   BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
    BLINK_PLATFORM_EXPORT static void
-   EnableSignedExchangePrefetchCacheForNavigations(bool);
 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
@@ -227,7 +227,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;
-@@ -2054,6 +2058,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -2052,6 +2056,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -240,7 +240,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
-@@ -2103,6 +2103,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2107,6 +2107,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -252,7 +252,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -2120,6 +2125,9 @@ FloatRect Element::GetBoundingClientRectNoLifecycleUpdate() const {
+@@ -2124,6 +2129,9 @@ FloatRect Element::GetBoundingClientRectNoLifecycleUpdate() const {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -278,7 +278,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -1717,7 +1723,11 @@ FloatRect Range::BoundingRect() const {
+@@ -1718,7 +1724,11 @@ FloatRect Range::BoundingRect() const {
  
    // If all rects are empty, return the first rect.
    if (result.IsEmpty() && !quads.IsEmpty())
@@ -335,14 +335,14 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c
 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
 +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
 @@ -27,6 +27,7 @@
+ #include "third_party/blink/renderer/platform/geometry/float_quad.h"
+ #include "third_party/blink/renderer/platform/graphics/bitmap_image.h"
+ #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
++#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
  #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/heap/heap.h"
-+#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
- 
- namespace blink {
- 
-@@ -2091,6 +2092,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
+@@ -2304,6 +2305,10 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
            snapshot->PaintImageForCurrentFrame().GetSkImageInfo().bounds();
        DCHECK(!bounds.intersect(SkIRect::MakeXYWH(sx, sy, sw, sh)));
      }
@@ -356,7 +356,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c
 diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
 +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-@@ -946,9 +946,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -960,9 +960,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    TextDirection direction =
        ToTextDirection(GetState().GetDirection(), canvas());
  
@@ -376,7 +376,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
-@@ -1637,7 +1637,9 @@ component("platform") {
+@@ -1636,7 +1636,9 @@ component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -387,7 +387,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",
-@@ -1705,6 +1707,7 @@ component("platform") {
+@@ -1704,6 +1706,7 @@ component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -398,7 +398,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
-@@ -698,4 +698,16 @@ void WebRuntimeFeatures::EnableCLSScrollAnchoring(bool enable) {
+@@ -700,4 +700,16 @@ void WebRuntimeFeatures::EnableCLSScrollAnchoring(bool enable) {
    RuntimeEnabledFeatures::SetCLSScrollAnchoringEnabled(enable);
  }
  
@@ -631,7 +631,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
-@@ -985,6 +985,15 @@
+@@ -1003,6 +1003,15 @@
        origin_trial_allows_third_party: true,
        status: "experimental",
      },

+ 0 - 91
build/patches/Observe-WebContents-in-PPAPIDownloadRequest.patch

@@ -1,91 +0,0 @@
-From: Daniel Rubery <drubery@chromium.org>
-Date: Tue, 28 Sep 2021 19:16:15 +0000
-Subject: Observe WebContents in PPAPIDownloadRequest
-
-If the WebContents is destroyed while the PPAPIDownloadRequest is
-checking the allowlist, we end up with a UaF. The fix for this is to
-observe the WebContents and cancel the request.
-
-(cherry picked from commit e7d560979f89705ea2844f9f64b5c7a598a03f2b)
-
-Bug: 1245578
-Change-Id: Idbe5c1cb966fe21ab1a49a7345a5b197afa0b807
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3150060
-Reviewed-by: Bettina Dea <bdea@chromium.org>
-Commit-Queue: Daniel Rubery <drubery@chromium.org>
-Cr-Original-Commit-Position: refs/heads/main@{#919488}
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3188403
-Auto-Submit: Daniel Rubery <drubery@chromium.org>
-Commit-Queue: Bettina Dea <bdea@chromium.org>
-Cr-Commit-Position: refs/branch-heads/4606@{#1241}
-Cr-Branched-From: 35b0d5a9dc8362adfd44e2614f0d5b7402ef63d0-refs/heads/master@{#911515}
----
- .../download_protection/ppapi_download_request.cc         | 6 ++++++
- .../download_protection/ppapi_download_request.h          | 8 ++++++--
- 2 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
---- a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
-+++ b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
-@@ -71,6 +71,8 @@ PPAPIDownloadRequest::PPAPIDownloadRequest(
-     return;
-   }
- 
-+  Observe(web_contents);
-+
-   SafeBrowsingNavigationObserverManager* observer_manager =
-       service->GetNavigationObserverManager(web_contents);
-   if (observer_manager) {
-@@ -138,6 +140,10 @@ GURL PPAPIDownloadRequest::GetDownloadRequestUrl() {
-   return url;
- }
- 
-+void PPAPIDownloadRequest::WebContentsDestroyed() {
-+  Finish(RequestOutcome::REQUEST_DESTROYED, DownloadCheckResult::UNKNOWN);
-+}
-+
- // Allowlist checking needs to the done on the IO thread.
- void PPAPIDownloadRequest::CheckAllowlistsOnIOThread(
-     const GURL& requestor_url,
-diff --git a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.h b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.h
---- a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.h
-+++ b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.h
-@@ -12,6 +12,7 @@
- #include "base/memory/weak_ptr.h"
- #include "chrome/browser/safe_browsing/download_protection/download_protection_util.h"
- #include "components/sessions/core/session_id.h"
-+#include "content/public/browser/web_contents_observer.h"
- #include "url/gurl.h"
- 
- namespace content {
-@@ -43,7 +44,7 @@ class PPAPIDownloadRequest;
- //
- // PPAPIDownloadRequest objects are owned by the DownloadProtectionService
- // indicated by |service|.
--class PPAPIDownloadRequest {
-+class PPAPIDownloadRequest : public content::WebContentsObserver {
-  public:
-   // The outcome of the request. These values are used for UMA. New values
-   // should only be added at the end.
-@@ -70,7 +71,7 @@ class PPAPIDownloadRequest {
-       DownloadProtectionService* service,
-       scoped_refptr<SafeBrowsingDatabaseManager> database_manager);
- 
--  ~PPAPIDownloadRequest();
-+  ~PPAPIDownloadRequest() override;
- 
-   // Start the process of checking the download request. The callback passed as
-   // the |callback| parameter to the constructor will be invoked with the result
-@@ -89,6 +90,9 @@ class PPAPIDownloadRequest {
-   // Returns the URL that will be used for download requests.
-   static GURL GetDownloadRequestUrl();
- 
-+  // WebContentsObserver implementation
-+  void WebContentsDestroyed() override;
-+
-  private:
-   static const char kDownloadRequestUrl[];
- 
--- 
-2.17.1
-

+ 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
-@@ -355,6 +355,8 @@ std::vector<std::u16string> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
+@@ -357,6 +357,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
-@@ -1185,6 +1185,12 @@ public class ExternalNavigationHandler {
+@@ -1216,6 +1216,12 @@ public class ExternalNavigationHandler {
                      OverrideUrlLoadingAsyncActionType.UI_GATING_BROWSER_NAVIGATION);
          }
  

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

@@ -0,0 +1,43 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Thu, 22 Jul 2021 23:10:52 +0200
+Subject: Override UA client hint for model
+
+Hard-code model to SAMSUNG SM-G960U
+Disable permissions policy by default
+---
+ content/common/user_agent.cc              | 7 +------
+ content/public/common/content_features.cc | 2 +-
+ 2 files changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
+--- a/content/common/user_agent.cc
++++ b/content/common/user_agent.cc
+@@ -282,12 +282,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) {
+ 
+ std::string BuildModelInfo() {
+   std::string model;
+-#if defined(OS_ANDROID)
+-  // Only send the model information if on the release build of Android,
+-  // matching user agent behaviour.
+-  if (base::SysInfo::GetAndroidBuildCodename() == "REL")
+-    model = base::SysInfo::HardwareModelName();
+-#endif
++  model = "SAMSUNG SM-G960U";
+   return model;
+ }
+ 
+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
+@@ -306,7 +306,7 @@ const base::Feature kExtraSafelistedRequestHeadersForOutOfBlinkCors{
+ 
+ // Controls whether Client Hints are guarded by Permissions Policy.
+ const base::Feature kFeaturePolicyForClientHints{
+-    "FeaturePolicyForClientHints", base::FEATURE_ENABLED_BY_DEFAULT};
++    "FeaturePolicyForClientHints", base::FEATURE_DISABLED_BY_DEFAULT};
+ 
+ // Enables the AccessHandle surface for File System Access API's Origin Private
+ // File System. Tracking bug: https://crbug.com/1218431.
+-- 
+2.17.1
+

+ 0 - 234
build/patches/Prevents-non-browser-processes-from-requesting-memory-dumps.patch

@@ -1,234 +0,0 @@
-From: Erik Chen <erikchen@chromium.org>
-Date: Wed, 29 Sep 2021 21:16:47 +0000
-Subject: Prevents non-browser processes from requesting memory dumps.
-
-This CL makes several changes:
-
-(1) Causes the browser to reset non-browser
-mojo::PendingReceiver<Coordinator>. This means that non-browser
-processes will never be able to use the Coordinator interface.
-
-(2) Add CHECKs to existing code to prevent non-browser processes from
-attempting to use the Coordinator interface.
-
-A code audit shows that all Coordinator usages should already only be
-from the browser process.
-
-Note that (2) is important since attempting to use an unbound interface
-will trigger a nullptr dereference, which is undefined behavior.
-
-(cherry picked from commit d9cc471e122e9a2391a68fa7cd72ea50587d8d97)
-
-Bug: 1251787
-Change-Id: Ifbe9610cc0e373edaaa60fad46b447e8bdb3ec04
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3174305
-Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
-Reviewed-by: ssid <ssid@chromium.org>
-Auto-Submit: Erik Chen <erikchen@chromium.org>
-Commit-Queue: Erik Chen <erikchen@chromium.org>
-Cr-Original-Commit-Position: refs/heads/main@{#923693}
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3194811
-Reviewed-by: Avi Drissman <avi@chromium.org>
-Reviewed-by: Krishna Govind <govind@chromium.org>
-Commit-Queue: Krishna Govind <govind@chromium.org>
-Owners-Override: Krishna Govind <govind@chromium.org>
-Cr-Commit-Position: refs/branch-heads/4606@{#1253}
-Cr-Branched-From: 35b0d5a9dc8362adfd44e2614f0d5b7402ef63d0-refs/heads/master@{#911515}
----
- .../browser/browser_child_process_host_impl.cc  |  3 +++
- .../renderer_host/render_process_host_impl.cc   |  3 +++
- .../memory_instrumentation/coordinator_impl.cc  |  3 ++-
- .../client_process_impl.cc                      | 13 +++++++++++--
- .../client_process_impl.h                       |  3 +++
- .../memory_instrumentation.cc                   | 17 ++++++++++++-----
- .../memory_instrumentation.h                    |  9 +++++++--
- 7 files changed, 41 insertions(+), 10 deletions(-)
-
-diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
---- a/content/browser/browser_child_process_host_impl.cc
-+++ b/content/browser/browser_child_process_host_impl.cc
-@@ -708,6 +708,9 @@ void BrowserChildProcessHostImpl::RegisterCoordinatorClient(
-     mojo::PendingReceiver<memory_instrumentation::mojom::Coordinator> receiver,
-     mojo::PendingRemote<memory_instrumentation::mojom::ClientProcess>
-         client_process) {
-+  // Intentionally disallow non-browser processes from getting a Coordinator.
-+  receiver.reset();
-+
-   // The child process may have already terminated by the time this message is
-   // dispatched. We do nothing in that case.
-   if (!IsProcessLaunched())
-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
-@@ -2838,6 +2838,9 @@ void RenderProcessHostImpl::RegisterCoordinatorClient(
-     mojo::PendingReceiver<memory_instrumentation::mojom::Coordinator> receiver,
-     mojo::PendingRemote<memory_instrumentation::mojom::ClientProcess>
-         client_process) {
-+  // Intentionally disallow non-browser processes from getting a Coordinator.
-+  receiver.reset();
-+
-   if (!GetProcess().IsValid()) {
-     // If the process dies before we get this message. we have no valid PID
-     // and there's nothing to register.
-diff --git a/services/resource_coordinator/memory_instrumentation/coordinator_impl.cc b/services/resource_coordinator/memory_instrumentation/coordinator_impl.cc
---- a/services/resource_coordinator/memory_instrumentation/coordinator_impl.cc
-+++ b/services/resource_coordinator/memory_instrumentation/coordinator_impl.cc
-@@ -105,7 +105,8 @@ void CoordinatorImpl::RegisterClientProcess(
-     const absl::optional<std::string>& service_name) {
-   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-   mojo::Remote<mojom::ClientProcess> process(std::move(client_process));
--  coordinator_receivers_.Add(this, std::move(receiver), process_id);
-+  if (receiver.is_valid())
-+    coordinator_receivers_.Add(this, std::move(receiver), process_id);
-   process.set_disconnect_handler(
-       base::BindOnce(&CoordinatorImpl::UnregisterClientProcess,
-                      base::Unretained(this), process_id));
-diff --git a/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.cc b/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.cc
---- a/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.cc
-+++ b/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.cc
-@@ -24,6 +24,11 @@ void ClientProcessImpl::CreateInstance(
-     mojo::PendingReceiver<mojom::ClientProcess> receiver,
-     mojo::PendingRemote<mojom::Coordinator> coordinator,
-     bool is_browser_process) {
-+  // Intentionally disallow non-browser processes from ever holding a
-+  // Coordinator.
-+  if (!is_browser_process)
-+    coordinator.reset();
-+
-   static ClientProcessImpl* instance = nullptr;
-   if (!instance) {
-     instance = new ClientProcessImpl(
-@@ -39,10 +44,12 @@ ClientProcessImpl::ClientProcessImpl(
-     mojo::PendingRemote<mojom::Coordinator> coordinator,
-     bool is_browser_process,
-     bool initialize_memory_instrumentation)
--    : receiver_(this, std::move(receiver)) {
-+    : receiver_(this, std::move(receiver)),
-+      is_browser_process_(is_browser_process) {
-   if (initialize_memory_instrumentation) {
-     // Initialize the public-facing MemoryInstrumentation helper.
--    MemoryInstrumentation::CreateInstance(std::move(coordinator));
-+    MemoryInstrumentation::CreateInstance(std::move(coordinator),
-+                                          is_browser_process);
-   } else {
-     coordinator_.Bind(std::move(coordinator));
-   }
-@@ -110,6 +117,8 @@ void ClientProcessImpl::OnChromeMemoryDumpDone(
- void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback(
-     base::trace_event::MemoryDumpType dump_type,
-     base::trace_event::MemoryDumpLevelOfDetail level_of_detail) {
-+  CHECK(is_browser_process_);
-+
-   if (!task_runner_->RunsTasksInCurrentSequence()) {
-     task_runner_->PostTask(
-         FROM_HERE,
-diff --git a/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.h b/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.h
---- a/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.h
-+++ b/services/resource_coordinator/public/cpp/memory_instrumentation/client_process_impl.h
-@@ -96,6 +96,9 @@ class COMPONENT_EXPORT(RESOURCE_COORDINATOR_PUBLIC_MEMORY_INSTRUMENTATION)
-   mojo::Remote<mojom::Coordinator> coordinator_;
-   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
- 
-+  // Only browser process is allowed to request memory dumps.
-+  const bool is_browser_process_;
-+
-   // TODO(crbug.com/728199): The observer is only used to setup and tear down
-   // MemoryDumpManager in each process. Setting up MemoryDumpManager should
-   // be moved away from TracingObserver.
-diff --git a/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.cc b/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.cc
---- a/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.cc
-+++ b/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.cc
-@@ -21,10 +21,11 @@ void WrapGlobalMemoryDump(
- 
- // static
- void MemoryInstrumentation::CreateInstance(
--    mojo::PendingRemote<memory_instrumentation::mojom::Coordinator>
--        coordinator) {
-+    mojo::PendingRemote<memory_instrumentation::mojom::Coordinator> coordinator,
-+    bool is_browser_process) {
-   DCHECK(!g_instance);
--  g_instance = new MemoryInstrumentation(std::move(coordinator));
-+  g_instance =
-+      new MemoryInstrumentation(std::move(coordinator), is_browser_process);
- }
- 
- // static
-@@ -33,8 +34,10 @@ MemoryInstrumentation* MemoryInstrumentation::GetInstance() {
- }
- 
- MemoryInstrumentation::MemoryInstrumentation(
--    mojo::PendingRemote<memory_instrumentation::mojom::Coordinator> coordinator)
--    : coordinator_(std::move(coordinator)) {}
-+    mojo::PendingRemote<memory_instrumentation::mojom::Coordinator> coordinator,
-+    bool is_browser_process)
-+    : coordinator_(std::move(coordinator)),
-+      is_browser_process_(is_browser_process) {}
- 
- MemoryInstrumentation::~MemoryInstrumentation() {
-   g_instance = nullptr;
-@@ -43,6 +46,7 @@ MemoryInstrumentation::~MemoryInstrumentation() {
- void MemoryInstrumentation::RequestGlobalDump(
-     const std::vector<std::string>& allocator_dump_names,
-     RequestGlobalDumpCallback callback) {
-+  CHECK(is_browser_process_);
-   coordinator_->RequestGlobalMemoryDump(
-       MemoryDumpType::SUMMARY_ONLY, MemoryDumpLevelOfDetail::BACKGROUND,
-       MemoryDumpDeterminism::NONE, allocator_dump_names,
-@@ -52,6 +56,7 @@ void MemoryInstrumentation::RequestGlobalDump(
- void MemoryInstrumentation::RequestPrivateMemoryFootprint(
-     base::ProcessId pid,
-     RequestGlobalDumpCallback callback) {
-+  CHECK(is_browser_process_);
-   coordinator_->RequestPrivateMemoryFootprint(
-       pid, base::BindOnce(&WrapGlobalMemoryDump, std::move(callback)));
- }
-@@ -60,6 +65,7 @@ void MemoryInstrumentation::RequestGlobalDumpForPid(
-     base::ProcessId pid,
-     const std::vector<std::string>& allocator_dump_names,
-     RequestGlobalDumpCallback callback) {
-+  CHECK(is_browser_process_);
-   coordinator_->RequestGlobalMemoryDumpForPid(
-       pid, allocator_dump_names,
-       base::BindOnce(&WrapGlobalMemoryDump, std::move(callback)));
-@@ -70,6 +76,7 @@ void MemoryInstrumentation::RequestGlobalDumpAndAppendToTrace(
-     MemoryDumpLevelOfDetail level_of_detail,
-     MemoryDumpDeterminism determinism,
-     RequestGlobalMemoryDumpAndAppendToTraceCallback callback) {
-+  CHECK(is_browser_process_);
-   coordinator_->RequestGlobalMemoryDumpAndAppendToTrace(
-       dump_type, level_of_detail, determinism, std::move(callback));
- }
-diff --git a/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h b/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h
---- a/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h
-+++ b/services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h
-@@ -34,7 +34,8 @@ class COMPONENT_EXPORT(RESOURCE_COORDINATOR_PUBLIC_MEMORY_INSTRUMENTATION)
- 
-   static void CreateInstance(
-       mojo::PendingRemote<memory_instrumentation::mojom::Coordinator>
--          coordinator);
-+          coordinator,
-+      bool is_browser_process);
-   static MemoryInstrumentation* GetInstance();
- 
-   // Retrieves a Coordinator interface to communicate with the service. This is
-@@ -100,12 +101,16 @@ class COMPONENT_EXPORT(RESOURCE_COORDINATOR_PUBLIC_MEMORY_INSTRUMENTATION)
-  private:
-   explicit MemoryInstrumentation(
-       mojo::PendingRemote<memory_instrumentation::mojom::Coordinator>
--          coordinator);
-+          coordinator,
-+      bool is_browser_process);
-   ~MemoryInstrumentation();
- 
-   const mojo::SharedRemote<memory_instrumentation::mojom::Coordinator>
-       coordinator_;
- 
-+  // Only browser process is allowed to request memory dumps.
-+  const bool is_browser_process_;
-+
-   DISALLOW_COPY_AND_ASSIGN(MemoryInstrumentation);
- };
- 
--- 
-2.17.1
-

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

@@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -529,6 +533,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -525,6 +529,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
        if (request_->Supports(SourceStream::SourceType::TYPE_DEFLATE)) {
          advertised_encoding_names.push_back("deflate");
        }
@@ -70,7 +70,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        if (request()->context()->enable_brotli() &&
            request_->Supports(SourceStream::SourceType::TYPE_BROTLI)) {
-@@ -537,6 +542,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -533,6 +538,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
            advertised_encoding_names.push_back("br");
          }
        }
@@ -78,7 +78,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
        if (!advertised_encoding_names.empty()) {
          // Tell the server what compression formats are supported.
          request_info_.extra_headers.SetHeader(
-@@ -546,7 +552,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -542,7 +548,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

+ 53 - 54
build/patches/Remove-binary-blob-integrations.patch

@@ -127,7 +127,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
-@@ -298,20 +298,10 @@ android_library("chrome_java") {
+@@ -303,20 +303,10 @@ android_library("chrome_java") {
      ":chrome_public_apk_template_resources",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -148,15 +148,15 @@ 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",
-@@ -581,7 +571,6 @@ android_library("chrome_java") {
-     "//third_party/blink/public/mojom:android_mojo_bindings_java",
-     "//third_party/blink/public/mojom:mojom_platform_java",
-     "//third_party/gif_player:gif_player_java",
--    "//third_party/google_android_play_core:com_google_android_play_core_java",
-     "//third_party/metrics_proto:metrics_proto_java",
-     "//ui/android:ui_java",
-     "//ui/base/mojom:mojom_java",
-@@ -874,11 +863,6 @@ junit_binary("chrome_junit_tests") {
+@@ -559,7 +549,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",
+-    "//third_party/android_deps:com_google_android_play_core_java",
+     "//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",
+@@ -883,11 +872,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_java",
      ":chrome_public_android_manifest",
      ":delegate_public_impl_java",
@@ -168,7 +168,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",
-@@ -1179,14 +1163,6 @@ android_library("chrome_test_java") {
+@@ -1194,14 +1178,6 @@ android_library("chrome_test_java") {
      ":chrome_test_util_java",
      ":chrome_test_util_jni",
      ":delegate_public_impl_java",
@@ -183,7 +183,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",
-@@ -2215,7 +2191,6 @@ android_library("browser_java_test_support") {
+@@ -2238,7 +2214,6 @@ android_library("browser_java_test_support") {
    ]
    deps = [
      ":chrome_java",
@@ -191,7 +191,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:jni_java",
-@@ -2360,8 +2335,6 @@ android_library("base_monochrome_module_java") {
+@@ -2383,8 +2358,6 @@ 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",
@@ -200,7 +200,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",
-@@ -2372,8 +2345,6 @@ android_library("base_module_java") {
+@@ -2395,8 +2368,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",
@@ -209,7 +209,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",
-@@ -2400,16 +2371,10 @@ android_library("base_module_java") {
+@@ -2423,16 +2394,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",
@@ -226,15 +226,15 @@ 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",
-@@ -2425,7 +2390,6 @@ android_library("base_module_java") {
+@@ -2445,7 +2410,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",
+-    "//third_party/android_deps:com_google_android_play_core_java",
      "//third_party/androidx:androidx_annotation_annotation_java",
      "//third_party/androidx:androidx_collection_collection_java",
      "//third_party/androidx:androidx_fragment_fragment_java",
--    "//third_party/google_android_play_core:com_google_android_play_core_java",
-     "//ui/android:ui_no_recycler_view_java",
- 
-     # Deps needed for child processes.
-@@ -2444,7 +2408,6 @@ android_library("base_module_java") {
+@@ -2467,7 +2431,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.
@@ -245,7 +245,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -17,7 +17,6 @@ chrome_java_sources = [
+@@ -16,7 +16,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java",
    "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
    "java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java",
@@ -253,7 +253,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",
-@@ -1023,10 +1022,6 @@ chrome_java_sources = [
+@@ -1030,10 +1029,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/searchwidget/SearchBoxDataProvider.java",
    "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
    "java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfShareActivity.java",
@@ -267,7 +267,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -97,21 +97,16 @@ by a child template that "extends" this file.
+@@ -100,21 +100,16 @@ by a child template that "extends" this file.
      <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
      <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
      <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
@@ -289,7 +289,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
      {% block extra_uses_permissions %}
-@@ -745,16 +740,6 @@ by a child template that "extends" this file.
+@@ -752,16 +747,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -306,7 +306,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- This activity is used to restart the main Chrome process.  Should never be exported. -->
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
              android:launchMode="singleInstance"
-@@ -818,15 +803,6 @@ by a child template that "extends" this file.
+@@ -825,15 +810,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -322,7 +322,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <activity
              android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
              android:exported="false"
-@@ -996,26 +972,6 @@ by a child template that "extends" this file.
+@@ -1018,26 +994,6 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
  
@@ -349,7 +349,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Android Notification service listener -->
          <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
              android:exported="false"/>
-@@ -1039,28 +995,10 @@ by a child template that "extends" this file.
+@@ -1061,28 +1017,10 @@ by a child template that "extends" this file.
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
@@ -378,7 +378,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
              android:exported="true"
              tools:ignore="ExportedService" />
-@@ -1261,12 +1199,6 @@ by a child template that "extends" this file.
+@@ -1283,12 +1221,6 @@ by a child template that "extends" this file.
        <meta-data android:name="com.google.ar.core" android:value="optional" />
        {% endif %}
  
@@ -480,7 +480,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
-@@ -201,12 +201,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
+@@ -204,12 +204,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
  
      @Override
      public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
@@ -1338,7 +1338,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
-@@ -6150,8 +6150,6 @@ static_library("browser") {
+@@ -6295,8 +6295,6 @@ static_library("browser") {
        "offline_pages/offliner_helper.h",
        "offline_pages/offliner_user_data.cc",
        "offline_pages/offliner_user_data.h",
@@ -1350,7 +1350,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/android/BUILD.gn
 --- a/chrome/browser/language/android/BUILD.gn
 +++ b/chrome/browser/language/android/BUILD.gn
-@@ -9,14 +9,12 @@ android_library("base_module_java") {
+@@ -9,13 +9,11 @@ android_library("base_module_java") {
    sources = [
      "java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java",
      "java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java",
@@ -1360,11 +1360,10 @@ diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/
      "//base:base_java",
      "//chrome/browser/preferences:java",
      "//components/language/android:language_bridge_java",
+-    "//third_party/android_deps:com_google_android_play_core_java",
      "//third_party/androidx:androidx_annotation_annotation_java",
--    "//third_party/google_android_play_core:com_google_android_play_core_java",
      "//ui/android:ui_no_recycler_view_java",
    ]
- }
 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
@@ -1531,7 +1530,7 @@ diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/c
 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
-@@ -239,8 +239,6 @@ static_library("ui") {
+@@ -241,8 +241,6 @@ static_library("ui") {
      "webui/flags/flags_ui.h",
      "webui/flags/flags_ui_handler.cc",
      "webui/flags/flags_ui_handler.h",
@@ -1540,7 +1539,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
      "webui/internals/internals_ui.cc",
      "webui/internals/internals_ui.h",
      "webui/interstitials/interstitial_ui.cc",
-@@ -460,7 +458,6 @@ static_library("ui") {
+@@ -461,7 +459,6 @@ static_library("ui") {
      "//components/feedback/content",
      "//components/find_in_page",
      "//components/flags_ui",
@@ -1556,10 +1555,10 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/federated_learning/floc_internals_ui.h"
  #include "chrome/browser/ui/webui/flags/flags_ui.h"
 -#include "chrome/browser/ui/webui/gcm_internals_ui.h"
+ #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"
- #include "chrome/browser/ui/webui/invalidations/invalidations_ui.h"
-@@ -599,8 +598,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -604,8 +603,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<FlagsUI>;
    if (url.host_piece() == chrome::kChromeUIFlocInternalsHost)
      return &NewWebUI<FlocInternalsUI>;
@@ -1571,7 +1570,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
-@@ -259,8 +259,6 @@ android_library("chrome_java_test_support") {
+@@ -260,8 +260,6 @@ android_library("chrome_java_test_support") {
    ]
  
    deps = [
@@ -2097,9 +2096,9 @@ diff --git a/components/externalauth/android/BUILD.gn b/components/externalauth/
 -    "$google_play_services_package:google_play_services_base_java",
 -    "$google_play_services_package:google_play_services_basement_java",
      "//base:base_java",
-     "//components/embedder_support/android:browser_context_java",
      "//components/embedder_support/android:util_java",
-@@ -50,7 +48,6 @@ android_library("junit") {
+     "//content/public/android:content_java",
+@@ -49,7 +47,6 @@ android_library("junit") {
  
    deps = [
      ":java",
@@ -3849,19 +3848,19 @@ diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/compo
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -36,7 +36,6 @@ android_library("module_installer_java") {
+@@ -34,7 +34,6 @@ android_library("module_installer_java") {
+   deps = [
      "//base:base_java",
      "//components/crash/android:java",
+-    "//third_party/android_deps:com_google_android_play_core_java",
      "//third_party/androidx:androidx_annotation_annotation_java",
--    "//third_party/google_android_play_core:com_google_android_play_core_java",
    ]
  
-   annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
-@@ -59,7 +58,6 @@ junit_binary("module_installer_junit_tests") {
+@@ -58,7 +57,6 @@ junit_binary("module_installer_junit_tests") {
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
--    "//third_party/google_android_play_core:com_google_android_play_core_java",
+-    "//third_party/android_deps:com_google_android_play_core_java",
      "//third_party/hamcrest:hamcrest_java",
    ]
  }
@@ -3885,7 +3884,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",
-@@ -137,7 +134,6 @@ java_library("junit") {
+@@ -136,7 +133,6 @@ java_library("junit") {
    deps = [
      ":java",
      ":signin_java_test_support",
@@ -3918,7 +3917,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/
 diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
 --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
 +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
-@@ -82,17 +82,7 @@ public class AuthenticatorImpl implements Authenticator {
+@@ -94,17 +94,7 @@ public class AuthenticatorImpl implements Authenticator {
  
          mMakeCredentialCallback = callback;
          mIsOperationPending = true;
@@ -3937,7 +3936,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
      }
  
      @Override
-@@ -105,16 +95,7 @@ public class AuthenticatorImpl implements Authenticator {
+@@ -117,16 +107,7 @@ public class AuthenticatorImpl implements Authenticator {
  
          mGetAssertionCallback = callback;
          mIsOperationPending = true;
@@ -3949,13 +3948,13 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut
 -            return;
 -        }
 -
--        Fido2ApiHandler.getInstance().getAssertion(options, mRenderFrameHost, mOrigin,
+-        Fido2ApiHandler.getInstance().getAssertion(options, mRenderFrameHost, mOrigin, mPayment,
 -                (status, response) -> onSignResponse(status, response), status -> onError(status));
 +        onError(AuthenticatorStatus.NOT_IMPLEMENTED);
      }
  
      @Override
-@@ -133,16 +114,8 @@ public class AuthenticatorImpl implements Authenticator {
+@@ -145,16 +126,8 @@ public class AuthenticatorImpl implements Authenticator {
              return;
          }
  
@@ -4005,7 +4004,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
-@@ -924,7 +924,7 @@ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
+@@ -922,7 +922,7 @@ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
  // Controls whether the WebAuthentication API is enabled:
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuth{"WebAuthentication",
@@ -4017,7 +4016,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
-@@ -2837,10 +2837,6 @@ if (is_android) {
+@@ -2849,10 +2849,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -4031,7 +4030,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
-@@ -433,9 +433,6 @@ if (is_android) {
+@@ -437,9 +437,6 @@ if (is_android) {
        "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java",
      ]
      deps = [

+ 4 - 4
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
-@@ -139,6 +139,8 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics;
+@@ -138,6 +138,8 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics;
  import org.chromium.chrome.browser.metrics.UmaSessionStats;
  import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
  import org.chromium.chrome.browser.ntp.NewTabPageUma;
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
  import org.chromium.chrome.browser.offlinepages.indicator.OfflineIndicatorController;
  import org.chromium.chrome.browser.omaha.UpdateInfoBarController;
-@@ -239,6 +241,8 @@ import org.chromium.ui.widget.Toast;
+@@ -238,6 +240,8 @@ import org.chromium.ui.widget.Toast;
  import org.chromium.url.GURL;
  import org.chromium.webapk.lib.client.WebApkNavigationClient;
  
@@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  
      private boolean mPartnerBrowserRefreshNeeded;
  
-@@ -1452,6 +1457,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1439,6 +1444,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>
+@@ -1749,6 +1759,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          // Defense in depth against the UI being erroneously enabled.
          BookmarkBridge bridge = mBookmarkBridgeSupplier.get();

+ 3 - 3
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
-@@ -113,9 +113,6 @@
+@@ -116,9 +116,6 @@
          <item android:id="@+id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
@@ -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
-@@ -2330,16 +2330,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2316,16 +2316,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
-@@ -516,7 +516,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
+@@ -523,7 +523,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
      @Override
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.

+ 3 - 3
build/patches/Remove-offline-measurement-background-task.patch

@@ -9,15 +9,15 @@ Subject: Remove offline measurement background task
 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
-@@ -61,7 +61,6 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics;
+@@ -60,7 +60,6 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics;
  import org.chromium.chrome.browser.metrics.PackageMetrics;
  import org.chromium.chrome.browser.metrics.WebApkUninstallUmaTracker;
  import org.chromium.chrome.browser.notifications.channels.ChannelsUpdater;
 -import org.chromium.chrome.browser.offlinepages.measurements.OfflineMeasurementsBackgroundTask;
  import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService;
+ import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridgeFactory;
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
- import org.chromium.chrome.browser.photo_picker.DecoderService;
-@@ -410,8 +409,6 @@ public class ProcessInitializationHandler {
+@@ -416,8 +415,6 @@ public class ProcessInitializationHandler {
                  () -> VideoTutorialShareHelper.saveUrlsToSharedPrefs());
          deferredStartupHandler.addDeferredTask(
                  () -> TosDialogBehaviorSharedPrefInvalidator.refreshSharedPreferenceIfTosSkipped());

Dosya farkı çok büyük olduğundan ihmal edildi
+ 181 - 166
build/patches/Remove-signin-and-data-saver-integrations.patch


+ 12 - 12
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
-@@ -3360,6 +3360,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3228,6 +3228,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kUseLookalikesForNavigationSuggestionsDescription,
       kOsAll,
       FEATURE_VALUE_TYPE(net::features::kUseLookalikesForNavigationSuggestions)},
@@ -33,7 +33,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
-@@ -2313,6 +2313,11 @@
+@@ -2291,6 +2291,11 @@
      //  with neural net palm detection.
      "expiry_milestone": 90
    },
@@ -48,9 +48,9 @@ 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
-@@ -3527,6 +3527,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
-     "process to check the Safe Browsing reputation of URLs without calling "
-     "into GmsCore for every URL.";
+@@ -3404,6 +3404,11 @@ const char kScrollCaptureName[] = "Scroll Capture";
+ const char kScrollCaptureDescription[] =
+     "Enables scrolling screenshot capture for web contents.";
  
 +const char kSearchReadyOmniboxName[] = "Search Ready Omnibox";
 +const char kSearchReadyOmniboxDescription[] =
@@ -63,9 +63,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
-@@ -2014,6 +2014,9 @@ extern const char kEnhancedProtectionPromoAndroidDescription[];
- extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
- extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
+@@ -1947,6 +1947,9 @@ extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
+ extern const char kScrollCaptureName[];
+ extern const char kScrollCaptureDescription[];
  
 +extern const char kSearchReadyOmniboxName[];
 +extern const char kSearchReadyOmniboxDescription[];
@@ -76,7 +76,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
-@@ -228,6 +228,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -241,6 +241,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kReachedCodeProfiler,
      &kReaderModeInCCT,
      &kReengagementNotification,
@@ -84,7 +84,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kRelatedSearches,
      &kRelatedSearchesAlternateUx,
      &kRelatedSearchesInBar,
-@@ -647,6 +648,9 @@ const base::Feature kRelatedSearchesSimplifiedUx{
+@@ -680,6 +681,9 @@ const base::Feature kRelatedSearchesSimplifiedUx{
  const base::Feature kRelatedSearchesUi{"RelatedSearchesUi",
                                         base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -97,7 +97,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -114,6 +114,7 @@ extern const base::Feature kRelatedSearchesSimplifiedUx;
+@@ -120,6 +120,7 @@ extern const base::Feature kRelatedSearchesSimplifiedUx;
  extern const base::Feature kRelatedSearchesUi;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
@@ -108,7 +108,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
-@@ -408,6 +408,7 @@ public abstract class ChromeFeatureList {
+@@ -421,6 +421,7 @@ public abstract class ChromeFeatureList {
      public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT =
              "OmniboxAdaptiveSuggestionsCount";
      public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch";

+ 24 - 25
build/patches/Restore-Simplified-NTP-launch.patch

@@ -11,7 +11,7 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
  .../feedback/ChromeFeedbackCollector.java     |  1 +
  .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++
  .../NativePageNavigationDelegateImpl.java     |  4 +-
- .../chrome/browser/ntp/NewTabPageLayout.java  | 31 ++++++++-
+ .../chrome/browser/ntp/NewTabPageLayout.java  | 30 ++++++++-
  .../suggestions/SuggestionsConfig.java        |  4 +-
  .../SuggestionsNavigationDelegate.java        | 17 +++++
  chrome/browser/about_flags.cc                 |  3 +
@@ -22,14 +22,14 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
  .../browser/flags/ChromeFeatureList.java      |  1 +
  components/ntp_snippets/features.cc           |  6 +-
  .../variations/fieldtrial_testing_config.json | 18 +++++
- 18 files changed, 202 insertions(+), 6 deletions(-)
+ 18 files changed, 201 insertions(+), 6 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
-@@ -683,6 +683,7 @@ chrome_java_resources = [
+@@ -685,6 +685,7 @@ chrome_java_resources = [
    "java/res/layout/new_tab_page_multi_feed_header.xml",
    "java/res/layout/new_tab_page_section_tab.xml",
    "java/res/layout/new_tab_page_tile_grid_placeholder.xml",
@@ -40,7 +40,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
-@@ -584,6 +584,7 @@ chrome_java_sources = [
+@@ -588,6 +588,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java",
    "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java",
    "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java",
@@ -207,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/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
-@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer;
+@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer;
  import org.chromium.chrome.browser.explore_sites.ExperimentalExploreSitesSection;
  import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge;
  import org.chromium.chrome.browser.lens.LensEntryPoint;
@@ -215,7 +215,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
  import org.chromium.chrome.browser.lens.LensMetrics;
  import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
  import org.chromium.chrome.browser.native_page.ContextMenuManager;
-@@ -115,6 +116,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -117,6 +118,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
      private UiConfig mUiConfig;
      private CallbackController mCallbackController = new CallbackController();
  
@@ -224,15 +224,15 @@ 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.
-@@ -279,6 +282,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
-         }
+@@ -282,6 +285,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          mNoSearchLogoSpacer = findViewById(R.id.no_search_logo_spacer);
  
+         initializeSearchBoxBackground();
 +        initializeShortcuts();
          initializeSearchBoxTextView();
          initializeVoiceSearchButton();
          initializeLensButton();
-@@ -582,10 +586,17 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -595,10 +599,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() {
@@ -244,15 +244,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
 +            paddingTop = 0;
 +        } else {
 +            // Set a bit more top padding on the tile grid if there is no logo.
-+            paddingTop = getResources().getDimensionPixelSize(shouldShowLogo()
++             paddingTop = getResources().getDimensionPixelSize(shouldShowLogo()
                          ? R.dimen.tile_grid_layout_padding_top
                          : R.dimen.tile_grid_layout_no_logo_padding_top);
 +        }
-+
          mSiteSectionViewHolder.getItemView().setPadding(
                  0, paddingTop, 0, mSiteSectionViewHolder.getItemView().getPaddingBottom());
      }
-@@ -970,6 +981,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -987,6 +997,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          return iphCommandBuilder;
      }
  
@@ -326,7 +325,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
-@@ -4021,6 +4021,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3881,6 +3881,9 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE_AND_VALUE(
           switches::kForceShowUpdateMenuItemCustomSummary,
           "Custom Summary")},
@@ -339,7 +338,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
-@@ -3575,6 +3575,9 @@ const char kSharingHubLinkToggleName[] = "Sharing Hub Link Toggle";
+@@ -3452,6 +3452,9 @@ const char kSharingHubLinkToggleName[] = "Sharing Hub Link Toggle";
  const char kSharingHubLinkToggleDescription[] =
      "Enable the link toggle in the Sharing Hub.";
  
@@ -352,7 +351,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
-@@ -2035,6 +2035,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
+@@ -1968,6 +1968,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
  extern const char kSmartSuggestionForLargeDownloadsName[];
  extern const char kSmartSuggestionForLargeDownloadsDescription[];
  
@@ -365,7 +364,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
-@@ -208,6 +208,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
+@@ -220,6 +220,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
      &kEnhancedProtectionPromoCard,
      &kExperimentsForAgsa,
      &kExploreSites,
@@ -373,7 +372,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kFocusOmniboxInIncognitoTabIntents,
      &kGoogleLensSdkIntent,
      &kHandleMediaIntents,
-@@ -619,6 +620,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
+@@ -652,6 +653,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
  const base::Feature kOfflineMeasurementsBackgroundTask{
      "OfflineMeasurementsBackgroundTask", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -386,21 +385,21 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -102,6 +102,7 @@ extern const base::Feature kNotificationSuspender;
- extern const base::Feature kNewWindowAppMenu;
+@@ -109,6 +109,7 @@ extern const base::Feature kNewWindowAppMenu;
  extern const base::Feature kOfflineIndicatorV2;
  extern const base::Feature kOfflineMeasurementsBackgroundTask;
-+extern const base::Feature kSimplifiedNTP;
  extern const base::Feature kPageAnnotationsService;
++extern const base::Feature kSimplifiedNTP;
  extern const base::Feature kProbabilisticCryptidRenderer;
  extern const base::Feature kQuickActionSearchWidgetAndroid;
+ extern const base::Feature kReachedCodeProfiler;
 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
-@@ -384,6 +384,7 @@ public abstract class ChromeFeatureList {
-     public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI =
-             "LookalikeUrlNavigationSuggestionsUI";
+@@ -396,6 +396,7 @@ public abstract class ChromeFeatureList {
      public static final String MARK_HTTP_AS = "MarkHttpAs";
+     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";
@@ -430,7 +429,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
-@@ -7920,6 +7920,24 @@
+@@ -4059,6 +4059,24 @@
              ]
          }
      ],
@@ -452,7 +451,7 @@ diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variati
 +            ]
 +        }
 +    ],
-     "TabGroupsYourTabsTogether": [
+     "HelpAppLauncherSearch": [
          {
              "platforms": [
 -- 

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

@@ -13,7 +13,7 @@ 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
-@@ -3452,6 +3452,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3320,6 +3320,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableHostedAppShimCreation)},
  #endif  // OS_MAC
  #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-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1134,6 +1134,11 @@
+@@ -1103,6 +1103,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
-@@ -3432,6 +3432,10 @@ const char kReadLaterDescription[] =
+@@ -3299,6 +3299,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
-@@ -1959,6 +1959,9 @@ extern const char kQueryTilesRankTilesDescription[];
+@@ -1887,6 +1887,9 @@ extern const char kQueryTilesRankTilesDescription[];
  extern const char kQueryTilesSwapTrendingName[];
  extern const char kQueryTilesSwapTrendingDescription[];
  

+ 15 - 15
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
-@@ -305,6 +305,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
+@@ -304,6 +304,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
       "single-fullscreen,single-on-top,underlay"},
  };
  
@@ -29,22 +29,22 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = {
      {flags_ui::kGenericExperimentChoiceDefault, "", ""},
      {flag_descriptions::kTouchSelectionStrategyCharacter,
-@@ -3586,6 +3595,9 @@ const FeatureEntry kFeatureEntries[] = {
-          feature_engagement::kIPHDemoMode,
-          feature_engagement::kIPHDemoModeChoiceVariations,
-          "IPH_DemoMode")},
+@@ -3542,6 +3551,9 @@ const FeatureEntry kFeatureEntries[] = {
+     {"enable-use-zoom-for-dsf", flag_descriptions::kEnableUseZoomForDsfName,
+      flag_descriptions::kEnableUseZoomForDsfDescription, kOsAll,
+      MULTI_VALUE_TYPE(kEnableUseZoomForDSFChoices)},
 +    {"num-raster-threads", flag_descriptions::kNumRasterThreadsName,
 +     flag_descriptions::kNumRasterThreadsDescription, kOsAll,
 +     MULTI_VALUE_TYPE(kNumRasterThreadsChoices)},
-     {"disable-threaded-scrolling", flag_descriptions::kThreadedScrollingName,
-      flag_descriptions::kThreadedScrollingDescription, kOsAll,
-      SINGLE_DISABLE_VALUE_TYPE(blink::switches::kDisableThreadedScrolling)},
+     {"enable-subresource-redirect",
+      flag_descriptions::kEnableSubresourceRedirectName,
+      flag_descriptions::kEnableSubresourceRedirectDescription, kOsAll,
 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
-@@ -3830,6 +3830,11 @@
-     "owners": [ "sczs", "thegreenfrog", "bling-flags@google.com" ],
-     "expiry_milestone": 83
+@@ -3828,6 +3828,11 @@
+     "owners": [ "carlosil" ],
+     "expiry_milestone": 92
    },
 +  {
 +    "name": "num-raster-threads",
@@ -52,12 +52,12 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +    "expiry_milestone": -1
 +  },
    {
-     "name": "messages-translate-infobar",
-     "owners": [ "thegreenfrog", "sczs", "bling-flags@google.com" ],
+     "name": "mobile-google-srp",
+     "owners": [ "gambard", "bling-flags@google.com" ],
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1738,6 +1738,14 @@ const char kOmniboxActiveSearchEnginesDescription[] =
+@@ -1666,6 +1666,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
-@@ -1008,6 +1008,13 @@ extern const char kNotificationsSystemFlagDescription[];
+@@ -971,6 +971,13 @@ extern const char kNotificationsSystemFlagDescription[];
  extern const char kOmniboxActiveSearchEnginesName[];
  extern const char kOmniboxActiveSearchEnginesDescription[];
  

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

@@ -45,7 +45,7 @@ Subject: Revert the removal of an option to block autoplay
 diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn
 --- a/components/browser_ui/site_settings/android/BUILD.gn
 +++ b/components/browser_ui/site_settings/android/BUILD.gn
-@@ -159,6 +159,11 @@ android_resources("java_resources") {
+@@ -150,6 +150,11 @@ android_resources("java_resources") {
      "java/res/drawable-xxxhdpi/settings_sensors.png",
      "java/res/drawable-xxxhdpi/settings_storage.png",
      "java/res/drawable-xxxhdpi/web_asset.png",
@@ -218,7 +218,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
-@@ -117,6 +117,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -116,6 +116,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "bluetooth_scanning_permission_list";
              case ContentSettingsType.COOKIES:
                  return "cookies_permission_list";
@@ -227,7 +227,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:
-@@ -494,6 +496,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -482,6 +484,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
  
              if (type == ContentSettingsType.ADS) {
                  setUpAdsPreference(preference);
@@ -236,7 +236,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) {
-@@ -1020,6 +1024,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -949,6 +953,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          }
      }
  
@@ -255,7 +255,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +                    : ContentSettingValues.BLOCK;
 +        }
 +        // Not possible to embargo AUTOPLAY.
-+        setUpListPreference(preference, currentValue, false /* isEmbargoed */);
++        setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */);
 +    }
 +
      private void setUpSoundPreference(Preference preference) {
@@ -350,7 +350,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
 +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
-@@ -447,6 +447,17 @@ static void JNI_WebsitePreferenceBridge_GetOriginsForPermission(
+@@ -448,6 +448,17 @@ static void JNI_WebsitePreferenceBridge_GetOriginsForPermission(
               managedOnly);
  }
  
@@ -368,7 +368,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
  static jboolean JNI_WebsitePreferenceBridge_IsContentSettingsPatternValid(
      JNIEnv* env,
      const JavaParamRef<jstring>& pattern) {
-@@ -813,6 +824,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
+@@ -814,6 +825,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
        case ContentSettingsType::POPUPS:
        case ContentSettingsType::SENSORS:
        case ContentSettingsType::SOUND:
@@ -376,7 +376,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
          value = CONTENT_SETTING_ALLOW;
          break;
        default:
-@@ -893,6 +905,17 @@ static jboolean JNI_WebsitePreferenceBridge_IsContentSettingUserModifiable(
+@@ -894,6 +906,17 @@ static jboolean JNI_WebsitePreferenceBridge_IsContentSettingUserModifiable(
        static_cast<ContentSettingsType>(content_settings_type));
  }
  
@@ -416,7 +416,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -326,7 +326,7 @@ void ContentSettingsRegistry::Init() {
+@@ -313,7 +313,7 @@ void ContentSettingsRegistry::Init() {
             ContentSettingsInfo::PERSISTENT,
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
  
@@ -440,7 +440,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc
 diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc
 --- a/components/content_settings/core/common/content_settings.cc
 +++ b/components/content_settings/core/common/content_settings.cc
-@@ -182,6 +182,7 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -183,6 +183,7 @@ bool RendererContentSettingRules::IsRendererContentSetting(
      ContentSettingsType content_type) {
    return content_type == ContentSettingsType::IMAGES ||
           content_type == ContentSettingsType::JAVASCRIPT ||
@@ -499,7 +499,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
 --- a/components/content_settings/renderer/content_settings_agent_impl.cc
 +++ b/components/content_settings/renderer/content_settings_agent_impl.cc
-@@ -426,6 +426,17 @@ bool ContentSettingsAgentImpl::AllowRunningInsecureContent(
+@@ -423,6 +423,17 @@ bool ContentSettingsAgentImpl::AllowRunningInsecureContent(
    return false;
  }
  
@@ -576,7 +576,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in
 diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp
 --- a/components/page_info_strings.grdp
 +++ b/components/page_info_strings.grdp
-@@ -344,6 +344,9 @@
+@@ -345,6 +345,9 @@
      <message name="IDS_PAGE_INFO_TYPE_SOUND" desc="The label used for the sound permission controls in the Page Info popup.">
        Sound
      </message>

+ 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
-@@ -496,6 +496,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -484,6 +484,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) {
-@@ -823,16 +825,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -810,16 +812,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() {
-@@ -1026,17 +1020,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -977,17 +971,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.
-@@ -1052,22 +1064,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1003,22 +1015,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              setupContentSettingsPreference(preference, null, false);
              return;
          }

+ 13 - 13
build/patches/Add-images-contentsettings.patch → build/patches/Site-setting-for-images.patch

@@ -34,7 +34,7 @@ Subject: Site setting for images
 diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn
 --- a/components/browser_ui/site_settings/android/BUILD.gn
 +++ b/components/browser_ui/site_settings/android/BUILD.gn
-@@ -121,6 +121,7 @@ android_resources("java_resources") {
+@@ -112,6 +112,7 @@ android_resources("java_resources") {
    sources = [
      "java/res/drawable-hdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-hdpi/permission_background_sync.png",
@@ -42,7 +42,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-hdpi/permission_javascript.png",
      "java/res/drawable-hdpi/permission_popups.png",
      "java/res/drawable-hdpi/permission_protected_media.png",
-@@ -129,6 +130,7 @@ android_resources("java_resources") {
+@@ -120,6 +121,7 @@ android_resources("java_resources") {
      "java/res/drawable-hdpi/web_asset.png",
      "java/res/drawable-mdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-mdpi/permission_background_sync.png",
@@ -50,7 +50,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-mdpi/permission_javascript.png",
      "java/res/drawable-mdpi/permission_popups.png",
      "java/res/drawable-mdpi/permission_protected_media.png",
-@@ -137,6 +139,7 @@ android_resources("java_resources") {
+@@ -128,6 +130,7 @@ android_resources("java_resources") {
      "java/res/drawable-mdpi/web_asset.png",
      "java/res/drawable-xhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xhdpi/permission_background_sync.png",
@@ -58,7 +58,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-xhdpi/permission_javascript.png",
      "java/res/drawable-xhdpi/permission_popups.png",
      "java/res/drawable-xhdpi/permission_protected_media.png",
-@@ -145,6 +148,7 @@ android_resources("java_resources") {
+@@ -136,6 +139,7 @@ android_resources("java_resources") {
      "java/res/drawable-xhdpi/web_asset.png",
      "java/res/drawable-xxhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xxhdpi/permission_background_sync.png",
@@ -66,7 +66,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
      "java/res/drawable-xxhdpi/permission_javascript.png",
      "java/res/drawable-xxhdpi/permission_popups.png",
      "java/res/drawable-xxhdpi/permission_protected_media.png",
-@@ -153,6 +157,7 @@ android_resources("java_resources") {
+@@ -144,6 +148,7 @@ android_resources("java_resources") {
      "java/res/drawable-xxhdpi/web_asset.png",
      "java/res/drawable-xxxhdpi/ic_volume_up_grey600_24dp.png",
      "java/res/drawable-xxxhdpi/permission_background_sync.png",
@@ -208,7 +208,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
-@@ -121,6 +121,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -120,6 +120,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "autoplay_permission_list";
              case ContentSettingsType.IDLE_DETECTION:
                  return "idle_detection_permission_list";
@@ -217,7 +217,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:
-@@ -504,6 +506,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -492,6 +494,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  setUpJavascriptPreference(preference);
              } else if (type == ContentSettingsType.COOKIES) {
                  setUpCookiesPreference(preference);
@@ -226,8 +226,8 @@ 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) {
-@@ -1137,6 +1141,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-         }
+@@ -1057,6 +1061,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+         setupContentSettingsPreference(preference, permission, false /* isEmbargoed */);
      }
  
 +    private void setUpImagesPreference(Preference preference) {
@@ -304,7 +304,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +            ContentSettingsType.IMAGES,
              ContentSettingsType.POPUPS,
              ContentSettingsType.ADS,
-             ContentSettingsType.TIMEZONE_OVERRIDE,
+             ContentSettingsType.BACKGROUND_SYNC,
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
@@ -335,7 +335,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
 +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
-@@ -820,6 +820,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
+@@ -821,6 +821,7 @@ static void JNI_WebsitePreferenceBridge_SetContentSettingEnabled(
        case ContentSettingsType::ADS:
        case ContentSettingsType::BACKGROUND_SYNC:
        case ContentSettingsType::COOKIES:
@@ -356,7 +356,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 @@
+@@ -182,6 +185,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>
@@ -369,7 +369,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -144,7 +144,8 @@ void ContentSettingsRegistry::Init() {
+@@ -143,7 +143,8 @@ void ContentSettingsRegistry::Init() {
                                kExtensionScheme),
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
             WebsiteSettingsInfo::SINGLE_ORIGIN_WITH_EMBEDDED_EXCEPTIONS_SCOPE,

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

@@ -3,34 +3,11 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
 Subject: Skip the first run and metrics
 
 ---
- .../chromium/chrome/browser/firstrun/FirstRunStatus.java    | 6 ++----
  .../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(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
-@@ -43,8 +43,7 @@ public class FirstRunStatus {
-      * includes ToS and Sign In pages if necessary.
-      */
-     public static boolean getFirstRunFlowComplete() {
--        return SharedPreferencesManager.getInstance().readBoolean(
--                ChromePreferenceKeys.FIRST_RUN_FLOW_COMPLETE, false);
-+        return true;
-     }
- 
-     /**
-@@ -61,8 +60,7 @@ public class FirstRunStatus {
-     * Checks whether the welcome page should be skipped from the main First Run Experience.
-     */
-     public static boolean shouldSkipWelcomePage() {
--        return SharedPreferencesManager.getInstance().readBoolean(
--                ChromePreferenceKeys.FIRST_RUN_SKIP_WELCOME_PAGE, false);
-+        return true;
-     }
- 
-     /**
 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
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
@@ -66,6 +43,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
  
          Resources resources = getResources();
          NoUnderlineClickableSpan clickableGoogleTermsSpan =
+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
+@@ -43,8 +43,7 @@ public class FirstRunStatus {
+      * includes ToS and Sign In pages if necessary.
+      */
+     public static boolean getFirstRunFlowComplete() {
+-        return SharedPreferencesManager.getInstance().readBoolean(
+-                ChromePreferenceKeys.FIRST_RUN_FLOW_COMPLETE, false);
++        return true;
+     }
+ 
+     /**
+@@ -61,8 +60,7 @@ public class FirstRunStatus {
+      * Checks whether the welcome page should be skipped from the main First Run Experience.
+      */
+     public static boolean shouldSkipWelcomePage() {
+-        return SharedPreferencesManager.getInstance().readBoolean(
+-                ChromePreferenceKeys.FIRST_RUN_SKIP_WELCOME_PAGE, false);
++        return true;
+     }
+ 
+     /**
 -- 
 2.17.1
 

+ 44 - 101
build/patches/Timezone-customization.patch

@@ -12,13 +12,12 @@ See also: https://github.com/bromite/bromite/wiki/TimezoneOverride
  ...ezoneoverride_site_settings_preference.xml |  68 ++++++
  .../res/xml/site_settings_preferences.xml     |   4 +
  .../java/res/xml/website_preferences.xml      |   9 +
- .../ContentSettingsResources.java             |  34 ++-
+ .../ContentSettingsResources.java             |  35 +++-
  .../site_settings/SingleCategorySettings.java |  77 ++++++-
- .../site_settings/SingleWebsiteSettings.java  |  36 +++-
+ .../site_settings/SingleWebsiteSettings.java  |   8 +-
  .../site_settings/SiteSettings.java           |   2 +-
  .../site_settings/SiteSettingsCategory.java   |   9 +-
  .../site_settings/SiteSettingsDelegate.java   |   2 +
- .../site_settings/SiteSettingsUtil.java       |   1 +
  ...imezoneOverrideSiteSettingsPreference.java | 193 ++++++++++++++++++
  .../browser_ui/site_settings/Website.java     |  10 +
  .../WebsitePermissionsFetcher.java            |   3 +
@@ -42,7 +41,7 @@ See also: https://github.com/bromite/bromite/wiki/TimezoneOverride
  .../renderer/content_settings_agent_impl.cc   |  89 ++++++++
  .../renderer/content_settings_agent_impl.h    |   4 +
  .../WebLayerSiteSettingsDelegate.java         |   3 +
- 36 files changed, 724 insertions(+), 18 deletions(-)
+ 35 files changed, 699 insertions(+), 15 deletions(-)
  create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml
  create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml
  create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java
@@ -81,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C
 diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn
 --- a/components/browser_ui/site_settings/android/BUILD.gn
 +++ b/components/browser_ui/site_settings/android/BUILD.gn
-@@ -73,6 +73,7 @@ android_library("java") {
+@@ -64,6 +64,7 @@ android_library("java") {
      "java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java",
      "java/src/org/chromium/components/browser_ui/site_settings/WebsitePreference.java",
      "java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java",
@@ -89,7 +88,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b
    ]
    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
    resources_package = "org.chromium.components.browser_ui.site_settings"
-@@ -173,6 +174,8 @@ android_resources("java_resources") {
+@@ -164,6 +165,8 @@ android_resources("java_resources") {
      "java/res/xml/single_website_preferences.xml",
      "java/res/xml/site_settings_preferences.xml",
      "java/res/xml/website_preferences.xml",
@@ -256,19 +255,20 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/website_pr
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java
-@@ -259,6 +259,11 @@ public class ContentSettingsResources {
+@@ -259,6 +259,12 @@ public class ContentSettingsResources {
                          ContentSettingValues.ASK, ContentSettingValues.BLOCK,
                          R.string.website_settings_category_vr_ask,
                          R.string.website_settings_category_vr_blocked);
++
 +            case ContentSettingsType.TIMEZONE_OVERRIDE:
 +                return new ResourceItem(R.drawable.web_asset, 0, R.string.timezone_override_permission_title,
-+                        ContentSettingValues.ALLOW, ContentSettingValues.BLOCK,
-+                        R.string.website_settings_category_timezone_override_custom,
-+                        R.string.website_settings_category_timezone_override_random);
++                            ContentSettingValues.ALLOW, ContentSettingValues.BLOCK,
++                            R.string.website_settings_category_timezone_override_custom,
++                            R.string.website_settings_category_timezone_override_random);
          }
          assert false; // NOTREACHED
          return null;
-@@ -424,6 +429,23 @@ public class ContentSettingsResources {
+@@ -424,6 +430,23 @@ public class ContentSettingsResources {
          }
      }
  
@@ -292,7 +292,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      /**
       * Returns the string resource id for a content type to show with a permission category.
       * @param enabled Whether the content type is enabled.
-@@ -438,7 +460,10 @@ public class ContentSettingsResources {
+@@ -438,7 +461,10 @@ public class ContentSettingsResources {
       * with a particular website.
       * @param value The ContentSetting for which we want the resource.
       */
@@ -304,7 +304,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          switch (value) {
              case ContentSettingValues.ALLOW:
                  return R.string.website_settings_permissions_allow;
-@@ -527,6 +552,13 @@ public class ContentSettingsResources {
+@@ -527,6 +553,13 @@ public class ContentSettingsResources {
                  return descriptionIDs;
              }
          }
@@ -321,8 +321,8 @@ 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
-@@ -54,6 +54,10 @@ import org.chromium.components.prefs.PrefService;
- import org.chromium.components.user_prefs.UserPrefs;
+@@ -54,6 +54,10 @@ import org.chromium.components.user_prefs.UserPrefs;
+ import org.chromium.content_public.browser.BrowserContextHandle;
  import org.chromium.ui.widget.Toast;
  
 +import android.app.Activity;
@@ -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
-@@ -125,6 +125,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -124,6 +124,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "popup_permission_list";
              case ContentSettingsType.SOUND:
                  return "sound_permission_list";
@@ -529,68 +529,22 @@ 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:
-@@ -903,11 +905,12 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-         }
+@@ -883,11 +885,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+         if (value == null) return;
+         setUpPreferenceCommon(preference, value);
  
++        int content_type = getContentSettingsTypeFromPreferenceKey(preference.getKey());
++
          ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference;
-+        int type = getContentSettingsTypeFromPreferenceKey(preference.getKey());
- 
          switchPreference.setChecked(value == ContentSettingValues.ALLOW);
          switchPreference.setSummary(isEmbargoed
                          ? getString(R.string.automatically_blocked)
 -                        : getString(ContentSettingsResources.getCategorySummary(value)));
-+                        : getString(ContentSettingsResources.getCategorySummary(type, value)));
++                        : getString(ContentSettingsResources.getCategorySummary(content_type, value)));
          switchPreference.setOnPreferenceChangeListener(this);
          @ContentSettingsType
          int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey());
-@@ -925,20 +928,43 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-             @ContentSettingValues @Nullable Integer value, boolean isEmbargoed) {
-         ListPreference listPreference = (ListPreference) preference;
- 
-+        int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey());
-+        boolean requiresTriStateSetting =
-+                WebsitePreferenceBridge.requiresTriStateContentSetting(contentType);
-+        if (requiresTriStateSetting) {
-+            CharSequence[] keys = new String[3];
-+            keys[0] = ContentSetting.toString(ContentSettingValues.ALLOW);
-+            keys[1] = ContentSetting.toString(ContentSettingValues.ASK);
-+            keys[2] = ContentSetting.toString(ContentSettingValues.BLOCK);
-+            int[] descriptionsId = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType);
-+            CharSequence[] descriptions = new String[3];
-+            descriptions[0] = getString(descriptionsId[0]);
-+            descriptions[1] = getString(descriptionsId[1]);
-+            descriptions[2] = getString(descriptionsId[2]);
-+            listPreference.setEntryValues(keys);
-+            listPreference.setEntries(descriptions);
-+            listPreference.setOnPreferenceChangeListener(this);
-+            listPreference.setSummary(
-+                            getString(ContentSettingsResources.getCategorySummary(contentType, value)));
-+            int indexSelected = (value == ContentSettingValues.ASK ? 1 : (value == ContentSettingValues.ALLOW ? 0 : 2));
-+            listPreference.setValueIndex(indexSelected);
-+            return;
-+        }
-+
-         CharSequence[] keys = new String[2];
-         CharSequence[] descriptions = new String[2];
-         keys[0] = ContentSetting.toString(ContentSettingValues.ALLOW);
-         keys[1] = ContentSetting.toString(ContentSettingValues.BLOCK);
-         descriptions[0] =
--                getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.ALLOW));
-+                getString(ContentSettingsResources.getSiteSummary(contentType, ContentSettingValues.ALLOW));
-         descriptions[1] =
--                getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.BLOCK));
-+                getString(ContentSettingsResources.getSiteSummary(contentType, ContentSettingValues.BLOCK));
-         listPreference.setEntryValues(keys);
-         listPreference.setEntries(descriptions);
-         listPreference.setOnPreferenceChangeListener(this);
-         listPreference.setSummary(isEmbargoed
-                         ? getString(R.string.automatically_blocked)
--                        : getString(ContentSettingsResources.getCategorySummary(value)));
-+                        : getString(ContentSettingsResources.getCategorySummary(contentType, value)));
-         // TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are
-         // effectively treating non-ALLOW values as BLOCK.
-         int index = (value == ContentSettingValues.ALLOW ? 0 : 1);
-@@ -1171,7 +1197,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1102,7 +1106,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              preference.setSummary(getDSECategorySummary(permission));
          } else {
              preference.setSummary(
@@ -664,17 +618,6 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +
 +    void launchTimeZoneOverrideHelpAndFeedbackActivity(Activity currentActivity);
  }
-diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsUtil.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsUtil.java
---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsUtil.java
-+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsUtil.java
-@@ -23,6 +23,7 @@ public class SiteSettingsUtil {
-             ContentSettingsType.JAVASCRIPT,
-             ContentSettingsType.POPUPS,
-             ContentSettingsType.ADS,
-+            ContentSettingsType.TIMEZONE_OVERRIDE,
-             ContentSettingsType.BACKGROUND_SYNC,
-             ContentSettingsType.AUTOMATIC_DOWNLOADS,
-             ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER,
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java
 new file mode 100755
 --- /dev/null
@@ -718,8 +661,8 @@ new file mode 100755
 +import androidx.preference.PreferenceViewHolder;
 +import androidx.appcompat.app.AlertDialog;
 +
++import org.chromium.content_public.browser.BrowserContextHandle;
 +import org.chromium.components.content_settings.ContentSettingValues;
-+import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
 +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
 +import org.chromium.components.browser_ui.widget.RadioButtonWithDescription;
 +import org.chromium.components.browser_ui.widget.RadioButtonWithEditText;
@@ -951,7 +894,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
 +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
-@@ -912,3 +912,19 @@ static jboolean JNI_WebsitePreferenceBridge_GetLocationAllowedByPolicy(
+@@ -913,3 +913,19 @@ static jboolean JNI_WebsitePreferenceBridge_GetLocationAllowedByPolicy(
               ->GetDefaultContentSetting(ContentSettingsType::GEOLOCATION,
                                          nullptr) == CONTENT_SETTING_ALLOW;
  }
@@ -984,7 +927,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
  
    <!-- Site settings global toggles -->
  
-@@ -469,6 +472,38 @@
+@@ -460,6 +463,38 @@
      Block sites from playing protected content
    </message>
  
@@ -1064,7 +1007,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
 diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h
 --- a/components/content_settings/core/browser/content_settings_pref_provider.h
 +++ b/components/content_settings/core/browser/content_settings_pref_provider.h
-@@ -63,6 +63,9 @@ class PrefProvider : public UserModifiableProvider {
+@@ -62,6 +62,9 @@ class PrefProvider : public UserModifiableProvider {
  
    ContentSettingsPref* GetPref(ContentSettingsType type) const;
  
@@ -1074,7 +1017,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
   private:
    friend class DeadlockCheckerObserver;  // For testing.
  
-@@ -95,6 +98,8 @@ class PrefProvider : public UserModifiableProvider {
+@@ -94,6 +97,8 @@ class PrefProvider : public UserModifiableProvider {
  
    base::Clock* clock_;
  
@@ -1086,10 +1029,11 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -291,6 +291,18 @@ void ContentSettingsRegistry::Init() {
+@@ -618,6 +618,18 @@ void ContentSettingsRegistry::Init() {
+            ContentSettingsInfo::INHERIT_IN_INCOGNITO,
             ContentSettingsInfo::PERSISTENT,
-            ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
- 
+            ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
++
 +  Register(ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override", CONTENT_SETTING_ALLOW,
 +           WebsiteSettingsInfo::SYNCABLE,
 +           AllowlistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
@@ -1101,10 +1045,9 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
 +           ContentSettingsInfo::INHERIT_IN_INCOGNITO,
 +           ContentSettingsInfo::PERSISTENT,
 +           ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
-+
-   Register(ContentSettingsType::DURABLE_STORAGE, "durable-storage",
-            CONTENT_SETTING_ASK, WebsiteSettingsInfo::UNSYNCABLE,
-            AllowlistedSchemes(),
+ }
+ 
+ void ContentSettingsRegistry::Register(
 diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc
 --- a/components/content_settings/core/browser/content_settings_utils.cc
 +++ b/components/content_settings/core/browser/content_settings_utils.cc
@@ -1156,7 +1099,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
 diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc
 --- a/components/content_settings/core/common/content_settings.cc
 +++ b/components/content_settings/core/common/content_settings.cc
-@@ -184,7 +184,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -185,7 +185,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
           content_type == ContentSettingsType::JAVASCRIPT ||
           content_type == ContentSettingsType::CLIENT_HINTS ||
           content_type == ContentSettingsType::POPUPS ||
@@ -1232,9 +1175,9 @@ diff --git a/components/content_settings/core/common/content_settings_types.h b/
 +  // Content setting for timezone customization functionality.
 +  TIMEZONE_OVERRIDE,
 +
-   // Capture the current tab using getCurrentBrowsingContextMedia().
-   // TODO(crbug.com/1150788): Apply this to getDisplayMedia() as well.
-   // No values are stored for this type, this is solely needed to be able to
+   // Controls access to the getDisplayMedia API when {preferCurrentTab: true}
+   // is specified.
+   // TODO(crbug.com/1150788): Also apply this when getDisplayMedia() is called
 diff --git a/components/content_settings/core/common/pref_names.cc b/components/content_settings/core/common/pref_names.cc
 --- a/components/content_settings/core/common/pref_names.cc
 +++ b/components/content_settings/core/common/pref_names.cc
@@ -1261,7 +1204,7 @@ diff --git a/components/content_settings/core/common/pref_names.h b/components/c
 diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc
 --- a/components/content_settings/renderer/content_settings_agent_impl.cc
 +++ b/components/content_settings/renderer/content_settings_agent_impl.cc
-@@ -9,8 +9,10 @@
+@@ -8,8 +8,10 @@
  
  #include "base/bind.h"
  #include "base/feature_list.h"
@@ -1272,7 +1215,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
  #include "components/content_settings/core/common/content_settings.h"
  #include "components/content_settings/core/common/content_settings.mojom.h"
  #include "components/content_settings/core/common/content_settings_pattern.h"
-@@ -32,6 +34,10 @@
+@@ -31,6 +33,10 @@
  #include "third_party/blink/public/web/web_local_frame.h"
  #include "third_party/blink/public/web/web_local_frame_client.h"
  #include "third_party/blink/public/web/web_view.h"
@@ -1283,7 +1226,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
  #include "url/gurl.h"
  #include "url/origin.h"
  #include "url/url_constants.h"
-@@ -45,6 +51,8 @@ using blink::WebURL;
+@@ -44,6 +50,8 @@ using blink::WebURL;
  using blink::WebView;
  using content::DocumentState;
  
@@ -1292,7 +1235,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
  namespace content_settings {
  namespace {
  
-@@ -366,6 +374,10 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) {
+@@ -363,6 +371,10 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) {
    allow = allow || IsAllowlistedForContentSettings();
  
    cached_script_permissions_[frame] = allow;
@@ -1303,7 +1246,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc
    return allow;
  }
  
-@@ -490,4 +502,81 @@ bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const {
+@@ -487,4 +499,81 @@ bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const {
    return false;
  }
  

+ 12 - 12
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
-@@ -2641,7 +2641,7 @@
+@@ -2624,7 +2624,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",
-@@ -2651,7 +2651,7 @@
+@@ -2634,7 +2634,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
-@@ -698,13 +698,13 @@ const base::Feature kTabEngagementReportingAndroid{
+@@ -731,13 +731,13 @@ const base::Feature kTabEngagementReportingAndroid{
      "TabEngagementReportingAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kTabGroupsAndroid{"TabGroupsAndroid",
@@ -52,15 +52,15 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/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
-@@ -66,7 +66,7 @@ public class CachedFeatureFlags {
-             put(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION, false);
-             put(ChromeFeatureList.STORE_HOURS, false);
-             put(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, true);
--            put(ChromeFeatureList.TAB_GROUPS_ANDROID, true);
-+            put(ChromeFeatureList.TAB_GROUPS_ANDROID, false);
-             put(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID, false);
-             put(ChromeFeatureList.TOOLBAR_USE_HARDWARE_BITMAP_DRAW, false);
-             put(ChromeFeatureList.CLOSE_TAB_SUGGESTIONS, false);
+@@ -68,7 +68,7 @@ public class CachedFeatureFlags {
+                     .put(ChromeFeatureList.PREFETCH_NOTIFICATION_SCHEDULING_INTEGRATION, false)
+                     .put(ChromeFeatureList.STORE_HOURS, false)
+                     .put(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, true)
+-                    .put(ChromeFeatureList.TAB_GROUPS_ANDROID, true)
++                    .put(ChromeFeatureList.TAB_GROUPS_ANDROID, false)
+                     .put(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID, false)
+                     .put(ChromeFeatureList.TOOLBAR_USE_HARDWARE_BITMAP_DRAW, false)
+                     .put(ChromeFeatureList.CLOSE_TAB_SUGGESTIONS, false)
 -- 
 2.17.1
 

+ 5 - 5
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
-@@ -7690,4 +7690,6 @@
+@@ -7754,4 +7754,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
-@@ -1317,4 +1317,37 @@ Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部
+@@ -1358,4 +1358,37 @@ Privacy Sandbox 试用版功能尚处于积极开发阶段,目前只能在部
  <translation id="983192555821071799">关闭所有标签页</translation>
  <translation id="987264212798334818">常规</translation>
  <translation id="996149300115483134">动态卡片上的菜单已关闭</translation>
@@ -67,9 +67,9 @@ 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
-@@ -318,4 +318,17 @@
+@@ -317,4 +317,17 @@
+ <translation id="9162462602695099906">这是一个危险网页</translation>
  <translation id="930525582205581608">移除此网站?</translation>
- <translation id="965817943346481315">屏蔽会展示侵扰性或误导性广告的网站(推荐)</translation>
  <translation id="967624055006145463">已存储的数据</translation>
 -</translationbundle>
 \ No newline at end of file
@@ -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
-@@ -2328,4 +2328,7 @@
+@@ -2345,4 +2345,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
-@@ -127,7 +127,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -129,7 +129,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;
  
-@@ -252,7 +252,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -254,7 +254,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());
          }
-@@ -562,7 +562,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -575,7 +575,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }

+ 2 - 2
build/patches/Use-dummy-DFM-installer.patch

@@ -18,7 +18,7 @@ Subject: Use dummy DFM installer
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -20,13 +20,11 @@ android_library("module_installer_java") {
+@@ -19,13 +19,11 @@ android_library("module_installer_java") {
      "java/src/org/chromium/components/module_installer/logger/Logger.java",
      "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java",
      "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java",
@@ -422,7 +422,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
      }
  
      /**
-@@ -167,7 +140,6 @@ public class SplitAvailabilityLogger {
+@@ -172,7 +145,6 @@ public class SplitAvailabilityLogger {
  
          public InstallTimes(boolean isCached) {
              mIsCached = isCached;

+ 25 - 24
build/patches/User-agent-customization.patch

@@ -25,7 +25,7 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
  .../preferences/ChromePreferenceKeys.java     |   5 +
  .../settings/PrivacyPreferencesManager.java   |   8 +
  .../org/chromium/chrome/browser/tab/Tab.java  |   2 +
- .../browser/tabmodel/TabWindowManager.java    |   3 +
+ .../browser/tabmodel/TabWindowManager.java    |   2 +
  .../tabmodel/TabWindowManagerImpl.java        |  18 ++
  .../strings/android_chrome_strings.grd        |  35 ++++
  chrome/common/pref_names.cc                   |  13 ++
@@ -38,7 +38,7 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
  .../browser/web_contents/web_contents_impl.cc |   4 +
  .../framehost/NavigationControllerImpl.java   |   3 +-
  content/renderer/render_thread_impl.cc        |   1 -
- 31 files changed, 741 insertions(+), 6 deletions(-)
+ 31 files changed, 740 insertions(+), 6 deletions(-)
  create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml
  create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
@@ -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
-@@ -794,4 +794,6 @@ chrome_java_resources = [
-   "java/res/xml/privacy_preferences.xml",
+@@ -798,4 +798,6 @@ chrome_java_resources = [
    "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
-@@ -974,6 +974,7 @@ chrome_java_sources = [
+@@ -981,6 +981,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",
@@ -541,7 +541,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;
  import org.chromium.chrome.browser.WarmupManager;
-@@ -491,6 +495,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -495,6 +499,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
              // Request desktop sites for large screen tablets.
              params.setOverrideUserAgent(calculateUserAgentOverrideOption());
  
@@ -573,7 +573,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
              @TabLoadStatus
              int result = loadUrlInternal(params);
  
-@@ -1494,6 +1523,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1498,6 +1527,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
              if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary();
              mIsBeingRestored = true;
              for (TabObserver observer : mObservers) observer.onRestoreStarted(this);
@@ -584,7 +584,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
          } finally {
              TraceEvent.end("Tab.restoreIfNeeded");
          }
-@@ -1673,6 +1706,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1677,6 +1710,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
                  /* forcedByUser */ false);
      }
  
@@ -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
-@@ -1008,6 +1008,9 @@ public final class ChromePreferenceKeys {
+@@ -1023,6 +1023,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,9 +876,9 @@ 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
-@@ -1105,6 +1108,8 @@ public final class ChromePreferenceKeys {
-                 SHARING_LAST_SHARED_COMPONENT_NAME,
+@@ -1130,6 +1133,8 @@ public final class ChromePreferenceKeys {
                  SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP,
+                 SIGNIN_PROMO_NTP_PROMO_EXPIRED,
                  TWA_DISCLOSURE_SEEN_PACKAGES,
 +                USERAGENT_STICKY_DESKTOP_MODE,
 +                USERAGENT_ALWAYS_DESKTOP_MODE,
@@ -916,18 +916,19 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav
 diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
 +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
-@@ -79,4 +79,7 @@ public interface TabWindowManager {
-      * @return Specified {@link Tab} or {@code null} if the {@link Tab} is not found.
+@@ -89,6 +89,8 @@ public interface TabWindowManager {
       */
      Tab getTabById(int tabId);
-+
+ 
 +    void SetOverrideUserAgentForAllTabs(boolean usingDesktopUserAgent);
 +
- }
+     /**
+      * Finds the {@link TabModelSelector} bound to an Activity instance of a given index.
+      * @param index The index of {@link TabModelSelector} to get.
 diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
 --- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
 +++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
-@@ -128,6 +128,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
+@@ -133,6 +133,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
          return null;
      }
  
@@ -1000,7 +1001,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
-@@ -422,6 +422,19 @@ const char kAllowJavascriptAppleEvents[] =
+@@ -423,6 +423,19 @@ const char kAllowJavascriptAppleEvents[] =
  
  #endif
  
@@ -1023,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
-@@ -1161,6 +1161,14 @@ extern const char kDesktopSharingHubEnabled[];
+@@ -1188,6 +1188,14 @@ extern const char kLensRegionSearchEnabled[];
  extern const char kIncognitoTabHistoryEnabled[];
  #endif
  
@@ -1062,7 +1063,7 @@ 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
-@@ -137,6 +137,13 @@ std::string GetPlatformForUAMetadata() {
+@@ -141,6 +141,13 @@ std::string GetPlatformForUAMetadata() {
  blink::UserAgentMetadata GetUserAgentMetadata() {
    blink::UserAgentMetadata metadata;
  
@@ -1111,9 +1112,9 @@ 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
-@@ -3614,6 +3614,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
- #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
-     switches::kSchedulerBoostUrgent,
+@@ -3582,6 +3582,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+     switches::kLacrosEnablePlatformHevc,
+     switches::kLacrosUseChromeosProtectedMedia,
  #endif
 +    switches::kDesktopModeViewportMetaEnabled,
    };
@@ -1130,7 +1131,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
  #include "base/threading/thread_task_runner_handle.h"
  #include "base/time/time.h"
  #include "base/trace_event/optional_trace_event.h"
-@@ -2625,6 +2626,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
+@@ -2627,6 +2628,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
          !renderer_preferences_.user_agent_override.ua_metadata_override->mobile)
  #endif
        prefs.viewport_meta_enabled = false;
@@ -1163,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
-@@ -1636,7 +1636,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
+@@ -1669,7 +1669,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
  }
  
  void RenderThreadImpl::SetUserAgent(const std::string& user_agent) {

+ 1 - 1
build/patches/ask-permission-to-play-protected-media-by-default.patch

@@ -9,7 +9,7 @@ Subject: ask permission to play protected media by default
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -265,9 +265,7 @@ void ContentSettingsRegistry::Init() {
+@@ -264,9 +264,7 @@ void ContentSettingsRegistry::Init() {
    // On ChromeOS and Windows the default value is always ALLOW.
    const auto protected_media_identifier_setting =
  #if defined(OS_ANDROID)

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

@@ -15,7 +15,7 @@ Make sure that autofill is disabled by default
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
-@@ -516,35 +516,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
+@@ -534,35 +534,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
    return upload_request.SerializeToString(payload);
  }
  
@@ -51,7 +51,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  // Gets HTTP body payload for API POST request.
  bool GetAPIBodyPayload(const std::string& payload,
                         AutofillDownloadManager::RequestType type,
-@@ -782,6 +753,7 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -800,6 +771,7 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    // ID of the resource to add to the API request URL. Nothing will be added if
    // |resource_id| is empty.
    std::string resource_id;
@@ -59,7 +59,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    std::string method = "POST";
  
    if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
-@@ -802,7 +774,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -820,7 +792,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
  
    // Add the query parameter to set the response format to a serialized proto.
    url = net::AppendQueryParameter(url, "alt", "proto");

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor