Переглянути джерело

Merge branch 'master' into enable-user-scripts

Carmelo Messina 4 роки тому
батько
коміт
3d57874444
100 змінених файлів з 2459 додано та 2048 видалено
  1. 23 3
      .github/ISSUE_TEMPLATE/bug_report.md
  2. 24 0
      CHANGELOG.md
  3. 16 4
      README.md
  4. 1 1
      build/RELEASE
  5. 4 6
      build/bromite_patches_list.txt
  6. 19 33
      build/patches/AImageReader-CFI-crash-mitigations.patch
  7. 27 27
      build/patches/AV1-codec-support.patch
  8. 10 10
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  9. 16 16
      build/patches/Add-a-proxy-configuration-page.patch
  10. 22 45
      build/patches/Add-an-always-incognito-mode.patch
  11. 652 92
      build/patches/Add-bookmark-import-export-actions.patch
  12. 5 5
      build/patches/Add-custom-tab-intents-privacy-option.patch
  13. 21 19
      build/patches/Add-exit-menu-item.patch
  14. 5 5
      build/patches/Add-flag-for-save-data-header.patch
  15. 4 4
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  16. 5 5
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  17. 4 4
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  18. 3 3
      build/patches/Add-flag-to-disable-WebGL.patch
  19. 14 14
      build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch
  20. 11 11
      build/patches/Add-history-support-in-incognito-mode.patch
  21. 60 42
      build/patches/Add-menu-item-to-bookmark-all-tabs.patch
  22. 20 17
      build/patches/Add-menu-item-to-view-source.patch
  23. 7 7
      build/patches/Add-option-to-force-tablet-UI.patch
  24. 8 8
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  25. 2 2
      build/patches/Allow-playing-audio-in-background.patch
  26. 1 1
      build/patches/Allow-website-sign-in-without-account-sign-in.patch
  27. 2 2
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  28. 76 282
      build/patches/Automated-domain-substitution.patch
  29. 10 10
      build/patches/Block-gateway-attacks-via-websockets.patch
  30. 27 23
      build/patches/Block-qjz9zk-or-trk-requests.patch
  31. 61 37
      build/patches/Bromite-AdBlockUpdaterService.patch
  32. 1 1
      build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch
  33. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  34. 1 1
      build/patches/Disable-Omaha-update-checks.patch
  35. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  36. 6 6
      build/patches/Disable-fetching-of-all-field-trials.patch
  37. 8 8
      build/patches/Disable-media-router-and-remoting-by-default.patch
  38. 1 1
      build/patches/Disable-metrics-collection-for-NTP-tiles.patch
  39. 1 1
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  40. 13 2
      build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch
  41. 1 1
      build/patches/Disable-plugins-enumeration.patch
  42. 148 145
      build/patches/Disable-safe-browsing.patch
  43. 19 7
      build/patches/Disable-seed-based-field-trials.patch
  44. 1 1
      build/patches/Disable-smart-selection-by-default.patch
  45. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  46. 12 12
      build/patches/Disable-text-fragments-by-default.patch
  47. 1 1
      build/patches/Disable-third-party-cookies-by-default.patch
  48. 3 3
      build/patches/Disable-unified-autoplay-feature.patch
  49. 4 4
      build/patches/Disable-update-scheduler.patch
  50. 8 8
      build/patches/Do-not-compile-QR-code-sharing.patch
  51. 1 1
      build/patches/Do-not-hide-component-extensions.patch
  52. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  53. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  54. 0 23
      build/patches/Enable-app-overflow-menu-icons-by-default.patch
  55. 2 2
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  56. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  57. 0 123
      build/patches/Enable-legacy-TLS-interstitital-warning.patch
  58. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  59. 1 1
      build/patches/Enable-user-agent-freeze-by-default.patch
  60. 2 2
      build/patches/Hardening-against-incognito-mode-detection.patch
  61. 1 1
      build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch
  62. 6 6
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  63. 9 9
      build/patches/Modify-default-preferences.patch
  64. 7 7
      build/patches/Move-some-account-settings-back-to-privacy-settings.patch
  65. 26 26
      build/patches/Multiple-fingerprinting-mitigations.patch
  66. 2 2
      build/patches/Open-YouTube-links-in-Bromite.patch
  67. 55 33
      build/patches/Remove-SMS-integration.patch
  68. 358 209
      build/patches/Remove-binary-blob-integrations.patch
  69. 12 12
      build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch
  70. 8 7
      build/patches/Remove-help-menu-item.patch
  71. 23 0
      build/patches/Remove-offline-measurement-background-task.patch
  72. 223 223
      build/patches/Remove-signin-and-data-saver-integrations.patch
  73. 21 21
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  74. 20 20
      build/patches/Restore-Simplified-NTP-launch.patch
  75. 4 4
      build/patches/Restore-enable-horizontal-tab-switcher-flag.patch
  76. 4 4
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  77. 5 5
      build/patches/Revert-flags-remove-num-raster-threads.patch
  78. 6 6
      build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch
  79. 4 4
      build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch
  80. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  81. 35 35
      build/patches/Timezone-customization.patch
  82. 4 4
      build/patches/Update-i18n-zh_CN-support.patch
  83. 3 3
      build/patches/Use-4-tile-rows-never-show-logo.patch
  84. 121 210
      build/patches/User-agent-customization.patch
  85. 15 12
      build/patches/autofill-disable-autofill-download-manager.patch
  86. 5 5
      build/patches/build-remove-calling-untrusted-hooks.patch
  87. 13 13
      build/patches/disable-AdsBlockedInfoBar.patch
  88. 1 1
      build/patches/disable-autofill-server-communication-by-default.patch
  89. 6 5
      build/patches/first_run-deactivate-autoupdate-globally.patch
  90. 3 3
      build/patches/kill-Auth.patch
  91. 1 1
      build/patches/kill-Location-fall-back-to-system.patch
  92. 1 1
      build/patches/kill-TOS-and-metrics-opt-out.patch
  93. 1 1
      build/patches/kill-Vision.patch
  94. 0 39
      build/patches/ungoogled-chromium-Disable-GCM.patch
  95. 1 1
      build/patches/ungoogled-chromium-Disable-Google-host-detection.patch
  96. 41 1
      build/patches/ungoogled-chromium-Disable-domain-reliability.patch
  97. 3 3
      build/patches/ungoogled-chromium-Disable-profile-avatar.patch
  98. 2 2
      build/patches/ungoogled-chromium-Disable-translate-integration.patch
  99. 1 1
      build/patches/updater-disable-updater-pings.patch
  100. 4 6
      build/patches/webview-Hard-no-to-persistent-histograms.patch

+ 23 - 3
.github/ISSUE_TEMPLATE/bug_report.md

@@ -15,35 +15,55 @@ If instead of a bug report you want to ask a question then please use the GitHub
 
 ### Bromite version
 
-Version: `83.0...`
+Version: `89.0...`
 Arch: `arm` or `arm64` or `x86`
 Android version: (example: `9.0`)
 Device model: (example: `SM-G960UZKABST`)
 
+### Flags
+
+These are the flags changed under `chrome://flags`:
+
+<!-- Report all the blue-highlighted flags here, those are the flags with non-default configuration -->
+
 ### Is this bug about the SystemWebView?
-Yes/No
 
 <!-- No support for SystemWebView installations is provided. -->
 
+Yes/No
+
 ### Is the bug reproducible with latest version?
 
 <!-- Do not report bugs which are not reproducible with latest version. -->
 
+Yes/No
+
 ### Can the bug be reproduced with corresponding Chromium version?
 
 <!--
 Please pick the same version of Chromium as Bromite from here: https://github.com/bromite/chromium/releases
 If the bug is reproducible then it might be a configuration issue or an upstream bug. Upstream bugs can be reported on the [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first.
+
+If the bug is related to functionality that does not exist in Chromium then answer "No".
 -->
 
+Yes/No
+
+### Is this bug happening in an incognito tab?
+Yes/No
+
 ### Allow ads for the site; is the bug caused by the adblocker?
 Yes/No
 
 ### Is the bug a crash?
 
 <!--
-If yes then individuate and post the logcat dump (remove privacy sensitive information, if any), otherwise remove this section.
+If yes then individuate and post the 'adb logcat | grep chromium' dump, otherwise remove this section.
 -->
+Yes, this is the crash dump:
+```
+<paste here logcat dump>
+```
 
 ### Describe the bug
 

+ 24 - 0
CHANGELOG.md

@@ -1,3 +1,27 @@
+# 90.0.4430.74
+* re-added patch for User agent customization (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/1049)
+* fix always-incognito custom tab intents issues (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/1047 and https://github.com/bromite/bromite/issues/1051)
+* prevent Omnibox URL elisions by default
+
+# 90.0.4430.59
+* fix menu items not properly displayed with tab overflow menu regroup (fixes https://github.com/bromite/bromite/issues/963)
+* fix text displayed for menu entry to bookmark all tabs
+* bookmarks import/export: disable SAF by default (fixes https://github.com/bromite/bromite/issues/1039)
+* disable offline measurement background task
+* dropped patch to show warnings for TSLv1.0/v1.1 connections (upstream now disallows them)
+* disable AImageReader by default on Android 9 and below for Qualcomm (fixes https://github.com/bromite/bromite/issues/1005)
+
+# 89.0.4389.117
+* disable AImageReader by default on Android 9 and below for ARM (fixes https://github.com/bromite/bromite/issues/1005)
+* log checksum of AdBlock filters
+
+# 89.0.4389.100
+* enable AImageReader by default (fixes https://github.com/bromite/bromite/issues/1005)
+* fix missing flag for AImageReader
+* move incognito snapshots flag to proper section (fixes https://github.com/bromite/bromite/issues/1006)
+* add missing icon for exit menu
+* implement SAF for bookmarks export functionality (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/831)
+
 # 89.0.4389.92
 * updated zh_CN translations (thanks to @zhmars, https://github.com/bromite/bromite/pull/1000)
 * introduce Alt+D hotkey to focus address bar (fixes https://github.com/bromite/bromite/issues/979)

+ 16 - 4
README.md

@@ -54,6 +54,12 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
 * disable scroll-to-text-fragment
 * reduced referer granularity
 * block gateway attacks via websockets
+* use 64-bit ABI for webview processes
+* make all favicon requests on-demand ([supercookie](https://supercookie.me/) mitigation)
+* enable all network isolation features (`PartitionConnectionsByNetworkIsolationKey`, `PartitionHttpServerPropertiesByNetworkIsolationKey`, `SplitHostCacheByNetworkIsolationKey`, `AppendFrameOriginToNetworkIsolationKey`, `SplitCacheByNetworkIsolationKey`, `UseRegistrableDomainInNetworkIsolationKey`, `PartitionSSLSessionsByNetworkIsolationKey`, `PartitionExpectCTStateByNetworkIsolationKey`, `PartitionDomainReliabilityByNetworkIsolationKey`)
+* ignore enterprise policies that disallow secure DNS
+* ask permission to play protected media
+* disable the DIAL repeating discovery
 
 ## Features not related to privacy
 * import/export bookmarks
@@ -73,8 +79,10 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
 * view source of pages
 * timezone customization
 * sticky desktop mode setting
-* disable video autoplay by default
+* disable video autoplay by default, reintroduce site settings
 * mobile/desktop user agent customization
+* accessibility preference to force tablet UI
+* use Alt+D to focus address bar
 
 You can inspect all functionality/privacy changes by reading the [patches](https://github.com/bromite/bromite/tree/master/build/patches) and/or the [CHANGELOG](./CHANGELOG.md).
 
@@ -86,19 +94,23 @@ Flags which have been retired from upstream Chromium but are still available in
 * `#pull-to-refresh`
 * `#enable-search-ready-omnibox`
 * `#darken-websites-checkbox-in-themes-setting`
-* `#simplified-ntp`
-* `#enable-text-fragment-anchor`
+* `#simplified-ntp`, enabled by default
+* `#enable-text-fragment-anchor`, disabled by default
 * `#num-raster-threads`
+* `#enable-image-reader`, enabled by default
 
 New flags:
 
-* `#enable-incognito-snapshots-in-android-recents`
+* `#fingerprinting-canvas-image-data-noise`, `#fingerprinting-client-rects-noise` and `#fingerprinting-canvas-measuretext-noise`, enabled by default
+* `#enable-incognito-snapshots-in-android-recents`, disabled by default
 * `#max-connections-per-host`
 * `#resume-background-video`
 * `#ipv6-probing`
 * `#disable-webgl`
 * `#enable-device-motion` and `#enable-device-orientation`
 * `#show-legacy-tls-warnings`
+* `#save-data-header`, disabled by default
+* `#export-bookmarks-use-saf`, disabled by default
 
 # Privacy limitations
 

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-89.0.4389.92
+90.0.4430.74

+ 4 - 6
build/bromite_patches_list.txt

@@ -23,7 +23,6 @@ ungoogled-chromium-Disable-translate-integration.patch
 ungoogled-chromium-Disable-profile-avatar.patch
 ungoogled-chromium-Disable-intranet-redirect-detector.patch
 ungoogled-chromium-Disable-Google-host-detection.patch
-ungoogled-chromium-Disable-GCM.patch
 ungoogled-chromium-Disable-Gaia.patch
 ungoogled-chromium-Disable-domain-reliability.patch
 ungoogled-chromium-Disable-Network-Time-Tracker.patch
@@ -54,6 +53,7 @@ Add-flags-to-disable-device-motion-orientation-APIs.patch
 Disable-metrics-on-all-I-O-threads.patch
 Always-respect-async-dns-flag-regardless-of-SDK-version.patch
 Add-flag-to-configure-maximum-connections-per-host.patch
+Do-not-ignore-download-location-prompt-setting.patch
 Add-bookmark-import-export-actions.patch
 Add-an-always-incognito-mode.patch
 Add-custom-tab-intents-privacy-option.patch
@@ -80,7 +80,6 @@ Offer-builtin-autocomplete-for-chrome-flags.patch
 Do-not-grant-notifications-to-default-search-engine.patch
 Add-flag-to-disable-IPv6-probes.patch
 Add-a-proxy-configuration-page.patch
-Do-not-ignore-download-location-prompt-setting.patch
 Disable-previews-by-default.patch
 Use-4-tile-rows-never-show-logo.patch
 Disable-metrics-collection-for-NTP-tiles.patch
@@ -117,7 +116,6 @@ AImageReader-CFI-crash-mitigations.patch
 Update-i18n-zh_CN-support.patch
 Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
 Add-menu-item-to-view-source.patch
-Enable-legacy-TLS-interstitital-warning.patch
 Block-gateway-attacks-via-websockets.patch
 Enable-prefetch-privacy-changes-by-default.patch
 Disable-support-for-RAR-files-inspection.patch
@@ -125,12 +123,11 @@ Add-history-support-in-incognito-mode.patch
 Enable-darken-websites-checkbox-in-themes.patch
 Remove-blocklisted-URLs-upon-bookmark-creation.patch
 Disable-the-DIAL-repeating-discovery.patch
-Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
+Block-qjz9zk-or-trk-requests.patch
 Hardening-against-incognito-mode-detection.patch
 Remove-weblayer-dependency-on-Play-Services.patch
 Timezone-customization.patch
 Move-some-account-settings-back-to-privacy-settings.patch
-User-agent-customization.patch
 Restore-Simplified-NTP-launch.patch
 Revert-the-removal-of-an-option-to-block-autoplay.patch
 Disable-text-fragments-by-default.patch
@@ -142,11 +139,12 @@ Disable-unified-autoplay-feature.patch
 Revert-flags-remove-num-raster-threads.patch
 webview-Hard-no-to-persistent-histograms.patch
 Ignore-enterprise-policies-for-secure-DNS.patch
-Enable-app-overflow-menu-icons-by-default.patch
 Add-menu-item-to-bookmark-all-tabs.patch
 Add-flag-for-save-data-header.patch
 Add-option-to-force-tablet-UI.patch
 Make-all-favicon-requests-on-demand.patch
 Add-Alt-D-hotkey-to-focus-address-bar.patch
+Remove-offline-measurement-background-task.patch
+User-agent-customization.patch
 Automated-domain-substitution.patch
 add-user-scripts.v5.patch

+ 19 - 33
build/patches/AImageReader-CFI-crash-mitigations.patch

@@ -8,22 +8,21 @@ This reverts commit dcd5a39518246eb999f1cc63bf1ec95d93fd5b2f.
 Revert "Remove flags to enable/disable AImageReader."
 This reverts commit 463fa0f2e3b9e418bc26e2c8954463f0b0f76634.
 
-Disable AImageReader for ARM64/P and ARM64/Q
-
 Restore GPU bug blacklist for AImageReader on ARM and Qualcomm CPUs
 
-Restore the AImageReader blacklist for ARM/ARM64/Qualcomm chipsets which causes
+Restore the AImageReader blacklist for ARM/Qualcomm chipsets which causes
 crashes on Android 9 and 10 (at different code locations).
 
 See discussions at:
 * https://github.com/bromite/bromite/issues/445
 * https://github.com/bromite/bromite/issues/814
+* https://github.com/bromite/bromite/issues/1005
 ---
  base/android/android_image_reader_compat.cc |  8 +++++++-
  base/android/android_image_reader_compat.h  |  4 ++++
  chrome/browser/flag-metadata.json           |  2 +-
  gpu/config/gpu_driver_bug_list.json         | 16 ++++++++++++++++
- gpu/config/gpu_finch_features.cc            | 11 ++++++++++-
+ gpu/config/gpu_finch_features.cc            |  5 +++++
  gpu/config/gpu_finch_features.h             |  1 +
  gpu/config/gpu_util.cc                      |  8 ++++++++
  gpu/config/gpu_workaround_list.txt          |  1 +
@@ -31,7 +30,7 @@ See discussions at:
  gpu/ipc/service/stream_texture_android.cc   | 11 ++++++++++-
  media/base/media_switches.cc                |  4 ++++
  media/base/media_switches.h                 |  1 +
- 12 files changed, 68 insertions(+), 4 deletions(-)
+ 12 files changed, 63 insertions(+), 3 deletions(-)
 
 diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc
 --- a/base/android/android_image_reader_compat.cc
@@ -83,19 +82,19 @@ 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
-@@ -1724,7 +1724,7 @@
+@@ -1899,7 +1899,7 @@
    {
-     "name": "enable-heavy-ad-intervention",
-     "owners": [ "johnidel", "jkarlin" ],
+     "name": "enable-image-reader",
+     "owners": [ "vikassoni", "liberato" ],
 -    "expiry_milestone": 90
 +    "expiry_milestone": -1
    },
    {
-     "name": "enable-heuristic-stylus-palm-rejection",
+     "name": "enable-immersive-fullscreen-toolbar",
 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
 --- a/gpu/config/gpu_driver_bug_list.json
 +++ b/gpu/config/gpu_driver_bug_list.json
-@@ -3254,6 +3254,22 @@
+@@ -3236,6 +3236,22 @@
          "dont_delete_source_texture_for_egl_image"
        ]
      },
@@ -110,7 +109,7 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis
 +          "value": "10"
 +        }
 +      },
-+      "gl_vendor": "ARM.*",
++      "gl_vendor": "ARM.*|Qualcomm.*",
 +      "features": [
 +        "disable_aimagereader"
 +      ]
@@ -121,7 +120,7 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis
 diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 --- a/gpu/config/gpu_finch_features.cc
 +++ b/gpu/config/gpu_finch_features.cc
-@@ -38,6 +38,11 @@ bool FieldIsInBlocklist(const char* current_value, std::string blocklist_str) {
+@@ -49,6 +49,11 @@ bool IsDeviceBlocked(const char* field, const std::string& block_list) {
  }  // namespace
  
  #if defined(OS_ANDROID)
@@ -133,19 +132,6 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
  // Used to limit GL version to 2.0 for skia raster on Android.
  const base::Feature kUseGles2ForOopR{"UseGles2ForOopR",
                                       base::FEATURE_DISABLED_BY_DEFAULT};
-@@ -55,7 +60,11 @@ const base::FeatureParam<std::string> kAndroidSurfaceControlBlocklist{
- 
- // Use AImageReader for MediaCodec and MediaPlyer on android.
- const base::Feature kAImageReader{"AImageReader",
--                                  base::FEATURE_ENABLED_BY_DEFAULT};
-+#ifdef ARCH_CPU_ARM64
-+                                             base::FEATURE_DISABLED_BY_DEFAULT};
-+#else
-+                                             base::FEATURE_ENABLED_BY_DEFAULT};
-+#endif
- 
- // If webview-draw-functor-uses-vulkan is set, use vulkan for composite and
- // raster.
 diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
 --- a/gpu/config/gpu_finch_features.h
 +++ b/gpu/config/gpu_finch_features.h
@@ -156,11 +142,11 @@ diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
 +GPU_EXPORT extern const base::Feature kAImageReaderMediaPlayer;
  GPU_EXPORT extern const base::Feature kUseGles2ForOopR;
  GPU_EXPORT extern const base::Feature kAndroidSurfaceControl;
- GPU_EXPORT extern const base::Feature kAImageReader;
+ GPU_EXPORT extern const base::Feature kWebViewSurfaceControl;
 diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
 --- a/gpu/config/gpu_util.cc
 +++ b/gpu/config/gpu_util.cc
-@@ -111,6 +111,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
+@@ -112,6 +112,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
  #if !defined(OS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
@@ -170,7 +156,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -316,6 +319,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -317,6 +320,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] =
          kGpuFeatureStatusBlocklisted;
    }
@@ -191,12 +177,12 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
  disable_accelerated_av1_decode
 +disable_aimagereader
  disable_accelerated_av1_decode_d3d11
+ disable_accelerated_h264_encode
  disable_accelerated_vp8_decode
- disable_accelerated_vp8_encode
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
-@@ -477,6 +477,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -488,6 +488,11 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
      }
    }
  
@@ -219,7 +205,7 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_
  #include "base/android/scoped_hardware_buffer_fence_sync.h"
  #include "base/bind.h"
  #include "base/feature_list.h"
-@@ -48,7 +49,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
+@@ -49,7 +50,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
  }
  
  TextureOwner::Mode GetTextureOwnerMode() {
@@ -239,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
-@@ -604,6 +604,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -620,6 +620,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  const base::Feature kMediaDrmPreprovisioningAtStartup{
      "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -253,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
-@@ -206,6 +206,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
+@@ -210,6 +210,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioning;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioningAtStartup;

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

@@ -33,7 +33,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
        include_dirs = libaom_include_dirs
      }
  
-@@ -184,7 +184,7 @@ if (enable_libaom) {
+@@ -192,7 +192,7 @@ if (enable_libaom) {
        configs += [ "//build/config/compiler:no_chromium_code" ]
        if (current_cpu == "arm") {
          configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
@@ -42,7 +42,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
        }
        configs += [ ":libaom_config" ]
  
-@@ -233,6 +233,8 @@ if (enable_libaom) {
+@@ -242,6 +242,8 @@ if (enable_libaom) {
      if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
          cpu_arch_full == "arm-neon-cpu-detect") {
        deps += [ ":libaom_intrinsics_neon" ]
@@ -54,7 +54,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
 --- a/third_party/libaom/libaom_srcs.gni
 +++ b/third_party/libaom/libaom_srcs.gni
-@@ -616,6 +616,11 @@ aom_mem_sources = [
+@@ -629,6 +629,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
  
@@ -69,7 +69,7 @@ diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs
 diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
-@@ -45,7 +45,7 @@ CONFIG_NN_V2 equ 0
+@@ -46,7 +46,7 @@ CONFIG_NN_V2 equ 0
  CONFIG_NORMAL_TILE_MODE equ 1
  CONFIG_OPTICAL_FLOW_API equ 0
  CONFIG_OS_SUPPORT equ 1
@@ -77,11 +77,11 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
  CONFIG_REALTIME_ONLY equ 1
- CONFIG_RUNTIME_CPU_DETECT equ 1
+ CONFIG_RT_ML_PARTITIONING equ 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -89,11 +89,11 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/a
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
-@@ -45,7 +45,7 @@ CONFIG_NN_V2 equ 0
+@@ -46,7 +46,7 @@ CONFIG_NN_V2 equ 0
  CONFIG_NORMAL_TILE_MODE equ 1
  CONFIG_OPTICAL_FLOW_API equ 0
  CONFIG_OS_SUPPORT equ 1
@@ -101,11 +101,11 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.a
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
  CONFIG_REALTIME_ONLY equ 1
- CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_RT_ML_PARTITIONING equ 0
 diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -113,11 +113,11 @@ diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
-@@ -45,7 +45,7 @@ CONFIG_NN_V2 equ 0
+@@ -46,7 +46,7 @@ CONFIG_NN_V2 equ 0
  CONFIG_NORMAL_TILE_MODE equ 1
  CONFIG_OPTICAL_FLOW_API equ 0
  CONFIG_OS_SUPPORT equ 1
@@ -125,11 +125,11 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
  CONFIG_REALTIME_ONLY equ 1
- CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_RT_ML_PARTITIONING equ 0
 diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/third_party/libaom/source/config/linux/arm/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -137,11 +137,11 @@ diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/th
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
-@@ -45,7 +45,7 @@ CONFIG_NN_V2 equ 0
+@@ -46,7 +46,7 @@ CONFIG_NN_V2 equ 0
  CONFIG_NORMAL_TILE_MODE equ 1
  CONFIG_OPTICAL_FLOW_API equ 0
  CONFIG_OS_SUPPORT equ 1
@@ -149,11 +149,11 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
  CONFIG_REALTIME_ONLY equ 1
- CONFIG_RUNTIME_CPU_DETECT equ 0
+ CONFIG_RT_ML_PARTITIONING equ 0
 diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/arm64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -161,11 +161,11 @@ diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 0
+ #define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.asm b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
-@@ -45,7 +45,7 @@ CONFIG_NN_V2 equ 0
+@@ -46,7 +46,7 @@ CONFIG_NN_V2 equ 0
  CONFIG_NORMAL_TILE_MODE equ 1
  CONFIG_OPTICAL_FLOW_API equ 0
  CONFIG_OS_SUPPORT equ 1
@@ -173,11 +173,11 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.as
 +CONFIG_PIC equ 1
  CONFIG_RD_DEBUG equ 0
  CONFIG_REALTIME_ONLY equ 1
- CONFIG_RUNTIME_CPU_DETECT equ 1
+ CONFIG_RT_ML_PARTITIONING equ 0
 diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h b/third_party/libaom/source/config/linux/generic/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/generic/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/generic/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -185,11 +185,11 @@ diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.asm
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
-@@ -35,7 +35,7 @@
+@@ -36,7 +36,7 @@
  %define CONFIG_NORMAL_TILE_MODE 1
  %define CONFIG_OPTICAL_FLOW_API 0
  %define CONFIG_OS_SUPPORT 1
@@ -197,11 +197,11 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/
 +%define CONFIG_PIC 1
  %define CONFIG_RD_DEBUG 0
  %define CONFIG_REALTIME_ONLY 1
- %define CONFIG_RUNTIME_CPU_DETECT 1
+ %define CONFIG_RT_ML_PARTITIONING 0
 diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/third_party/libaom/source/config/linux/x64/config/aom_config.h
 --- a/third_party/libaom/source/config/linux/x64/config/aom_config.h
 +++ b/third_party/libaom/source/config/linux/x64/config/aom_config.h
-@@ -47,7 +47,7 @@
+@@ -48,7 +48,7 @@
  #define CONFIG_NORMAL_TILE_MODE 1
  #define CONFIG_OPTICAL_FLOW_API 0
  #define CONFIG_OS_SUPPORT 1
@@ -209,7 +209,7 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/th
 +#define CONFIG_PIC 1
  #define CONFIG_RD_DEBUG 0
  #define CONFIG_REALTIME_ONLY 1
- #define CONFIG_RUNTIME_CPU_DETECT 1
+ #define CONFIG_RT_ML_PARTITIONING 0
 -- 
 2.17.1
 

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

@@ -17,23 +17,23 @@ 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
-@@ -5387,6 +5387,12 @@ const FeatureEntry kFeatureEntries[] = {
-      SINGLE_VALUE_TYPE(switches::kEnableGPUServiceLogging)},
+@@ -3100,6 +3100,12 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(media::kDeprecateLowUsageCodecs)},
+ #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
  
- #if !defined(OS_ANDROID)
 +#if defined(OS_ANDROID)
 +    {switches::kEnableIncognitoSnapshotsInAndroidRecents, flag_descriptions::kEnableIncognitoSnapshotsInAndroidRecentsName,
 +     flag_descriptions::kEnableIncognitoSnapshotsInAndroidRecentsDescription, kOsAndroid,
 +     SINGLE_VALUE_TYPE(switches::kEnableIncognitoSnapshotsInAndroidRecents)},
 +#endif
 +
-     {"hardware-media-key-handling",
-      flag_descriptions::kHardwareMediaKeyHandling,
-      flag_descriptions::kHardwareMediaKeyHandlingDescription, kOsDesktop,
+ #if (defined(OS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && !defined(OS_ANDROID)
+     {
+         "enable-accelerated-video-decode",
 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
-@@ -533,6 +533,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
+@@ -589,6 +589,11 @@ const char kEnableAutofillCreditCardAuthenticationDescription[] =
      "authenticator (if available) to verify card ownership when retrieving "
      "credit cards from Google Payments.";
  
@@ -48,7 +48,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -329,6 +329,9 @@ extern const char kEnableAutofillAccountWalletStorageDescription[];
+@@ -362,6 +362,9 @@ extern const char kEnableAutofillAddressSavePromptDescription[];
  
  extern const char kEnableAutofillCreditCardAblationExperimentDisplayName[];
  extern const char kEnableAutofillCreditCardAblationExperimentDescription[];
@@ -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
-@@ -334,6 +334,9 @@ const char kHomePage[]                      = "homepage";
+@@ -326,6 +326,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
-@@ -113,6 +113,7 @@ extern const char kForceFirstRun[];
+@@ -111,6 +111,7 @@ extern const char kForceFirstRun[];
  extern const char kForceStackedTabStripLayout[];
  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
-@@ -51,12 +51,15 @@ public class PrivacySettings
+@@ -54,12 +54,15 @@ public class PrivacySettings
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
      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";
@@ -102,7 +102,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
-@@ -136,6 +136,12 @@
+@@ -162,6 +162,12 @@
          <include name="IDR_VIDEO_PLAYER_JS" file="resources\video_tutorials\video_player.js" type="BINDATA" />
        </if>
  
@@ -182,16 +182,16 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro
 diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -410,6 +410,8 @@
- #include "chrome/browser/media/feeds/media_feeds_service.h"
- #endif
+@@ -156,6 +156,8 @@
+ #include "printing/buildflags/buildflags.h"
+ #include "rlz/buildflags/buildflags.h"
  
 +#include "chrome/browser/net/proxy_service_factory.h"
 +
- namespace {
- 
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-@@ -697,6 +699,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
+ #if BUILDFLAG(ENABLE_BACKGROUND_MODE)
+ #include "chrome/browser/background/background_mode_manager.h"
+ #endif
+@@ -746,6 +748,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
    PluginsResourceService::RegisterPrefs(registry);
  #endif
  
@@ -646,15 +646,15 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -62,6 +62,7 @@
+@@ -52,6 +52,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"
 +#include "chrome/browser/ui/webui/proxy_config_ui.h"
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
- #include "chrome/browser/ui/webui/settings/settings_ui.h"
- #include "chrome/browser/ui/webui/settings/settings_utils.h"
-@@ -545,6 +546,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+ #include "chrome/browser/ui/webui/signin_internals_ui.h"
+ #include "chrome/browser/ui/webui/sync_internals/sync_internals_ui.h"
+@@ -555,6 +556,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -1135,7 +1135,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUIChromeURLsHost[] = "chrome-urls";
  const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
  const char kChromeUIComponentsHost[] = "components";
-@@ -325,6 +327,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -327,6 +329,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
        kChromeUIMobileSetupHost,
        kChromeUIMultiDeviceSetupHost,
        kChromeUINetworkHost,
@@ -1143,7 +1143,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
        kChromeUIOobeHost,
        kChromeUIOSCreditsHost,
        kChromeUIOSSettingsHost,
-@@ -523,6 +526,7 @@ const char* const kChromeHostURLs[] = {
+@@ -539,6 +542,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !BUILDFLAG(IS_CHROMEOS_ASH)
      kChromeUIAppLauncherPageHost,
@@ -1154,7 +1154,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
 diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
 --- a/chrome/common/webui_url_constants.h
 +++ b/chrome/common/webui_url_constants.h
-@@ -117,6 +117,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -120,6 +120,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -14,7 +14,6 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c
  .../chrome/browser/app/ChromeActivity.java    |  4 +
  .../AppMenuPropertiesDelegateImpl.java        |  6 ++
  .../ChromeContextMenuPopulator.java           |  9 ++-
- .../CustomTabIntentDataProvider.java          |  5 +-
  .../browser/init/StartupTabPreloader.java     | 14 +++-
  .../privacy/settings/PrivacySettings.java     |  2 +
  .../browser/tabmodel/ChromeTabCreator.java    | 16 +++-
@@ -22,7 +21,7 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c
  .../webapps/WebappIntentDataProvider.java     | 14 ++++
  .../flags/android/chrome_feature_list.cc      |  2 +-
  .../strings/android_chrome_strings.grd        |  7 ++
- 15 files changed, 172 insertions(+), 9 deletions(-)
+ 14 files changed, 168 insertions(+), 8 deletions(-)
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
@@ -147,7 +146,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;
-@@ -1633,8 +1634,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1651,8 +1652,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -162,7 +161,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
-@@ -88,6 +88,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
+@@ -91,6 +91,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
  import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
  import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
@@ -170,20 +169,20 @@ 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;
-@@ -1590,6 +1591,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1720,6 +1721,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
 +        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
-+            return mIncognitoTabCreator;
++            incognito = true;
 +        }
-         return incognito ? mIncognitoTabCreator : mRegularTabCreator;
+         return mTabCreatorManagerSupplier.get().getTabCreator(incognito);
      }
  
 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
-@@ -539,6 +539,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -557,6 +557,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -199,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
-@@ -29,7 +29,9 @@ import androidx.annotation.VisibleForTesting;
+@@ -30,7 +30,9 @@ import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.supplier.Supplier;
@@ -209,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator.ContextMenuUma.Action;
-@@ -372,7 +374,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -344,7 +346,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
              if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(mParams.getUrl())
                      && UrlUtilities.isAcceptedScheme(mParams.getUrl().getSpec())) {
                  if (mMode == ContextMenuMode.NORMAL) {
@@ -223,28 +222,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
                      if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) {
                          linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB));
                      }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
-@@ -48,6 +48,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
- import org.chromium.components.embedder_support.util.UrlConstants;
- import org.chromium.device.mojom.ScreenOrientationLockType;
- 
-+import org.chromium.base.ContextUtils;
-+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
-+
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.util.ArrayList;
-@@ -781,7 +784,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
- 
-     @Override
-     public boolean isIncognito() {
--        return false;
-+        return ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false);
-     }
- 
-     @Nullable
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
@@ -288,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -39,6 +39,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 {
@@ -296,7 +273,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_SECURE_DNS = "secure_dns";
-@@ -46,6 +47,7 @@ public class PrivacySettings
+@@ -49,6 +50,7 @@ public class PrivacySettings
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
      private static final String[] NEW_PRIVACY_PREFERENCE_ORDER = {PREF_CLEAR_BROWSING_DATA,
@@ -307,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 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
-@@ -40,6 +40,10 @@ import org.chromium.ui.base.PageTransition;
+@@ -41,6 +41,10 @@ import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.url.GURL;
  
@@ -318,7 +295,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  /**
   * This class creates various kinds of new tabs and adds them to the right {@link TabModel}.
   */
-@@ -61,6 +65,7 @@ public class ChromeTabCreator extends TabCreator {
+@@ -69,6 +73,7 @@ public class ChromeTabCreator extends TabCreator {
      private final ChromeActivity mActivity;
      private final StartupTabPreloader mStartupTabPreloader;
      private final boolean mIncognito;
@@ -326,7 +303,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -79,6 +84,10 @@ public class ChromeTabCreator extends TabCreator {
+@@ -87,6 +92,10 @@ public class ChromeTabCreator extends TabCreator {
          mNativeWindow = nativeWindow;
          mTabDelegateFactorySupplier = tabDelegateFactory;
          mIncognito = incognito;
@@ -337,7 +314,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mOverviewNTPCreator = overviewNTPCreator;
          mAsyncTabParamsManager = asyncTabParamsManager;
      }
-@@ -232,6 +241,8 @@ public class ChromeTabCreator extends TabCreator {
+@@ -247,6 +256,8 @@ public class ChromeTabCreator extends TabCreator {
              if (creationState == TabCreationState.LIVE_IN_FOREGROUND && !openInForeground) {
                  creationState = TabCreationState.LIVE_IN_BACKGROUND;
              }
@@ -346,7 +323,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type, creationState);
              return tab;
          } finally {
-@@ -266,6 +277,8 @@ public class ChromeTabCreator extends TabCreator {
+@@ -281,6 +292,8 @@ public class ChromeTabCreator extends TabCreator {
          @TabCreationState
          int creationState = openInForeground ? TabCreationState.LIVE_IN_FOREGROUND
                                               : TabCreationState.LIVE_IN_BACKGROUND;
@@ -355,7 +332,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type, creationState);
          return true;
      }
-@@ -309,7 +322,6 @@ public class ChromeTabCreator extends TabCreator {
+@@ -324,7 +337,6 @@ public class ChromeTabCreator extends TabCreator {
      // TODO(crbug.com/1081924): Clean up the launches from SearchActivity/Chrome.
      public Tab launchUrlFromExternalApp(String url, String referer, String headers, String appId,
              boolean forceNewTab, Intent intent, long intentTimestamp) {
@@ -363,7 +340,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          if (forceNewTab && !isLaunchedFromChrome) {
-@@ -423,6 +435,8 @@ public class ChromeTabCreator extends TabCreator {
+@@ -438,6 +450,8 @@ public class ChromeTabCreator extends TabCreator {
                            .setSerializedCriticalPersistedTabData(serializedCriticalPersistedTabData)
                            .build();
          }
@@ -383,7 +360,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
  import org.chromium.base.Log;
  import org.chromium.base.ObserverList;
  import org.chromium.base.StreamUtil;
-@@ -51,6 +52,8 @@ import org.chromium.components.embedder_support.util.UrlUtilities;
+@@ -52,6 +53,8 @@ import org.chromium.components.embedder_support.util.UrlUtilities;
  import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  
@@ -392,7 +369,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
  import java.io.BufferedInputStream;
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
-@@ -615,6 +618,13 @@ public class TabPersistentStore extends TabPersister {
+@@ -646,6 +649,13 @@ public class TabPersistentStore {
                  }
              }
          }
@@ -454,7 +431,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
-@@ -394,7 +394,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
+@@ -400,7 +400,7 @@ const base::Feature kCCTIncognito{"CCTIncognito",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognitoAvailableToThirdParty{
@@ -466,7 +443,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
-@@ -844,6 +844,13 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -893,6 +893,13 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY" desc="A text for the basic tab explaining browsing history.">
          Clears history and autocompletions in the address bar.
        </message>

Різницю між файлами не показано, бо вона завелика
+ 652 - 92
build/patches/Add-bookmark-import-export-actions.patch


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

@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
  /**
   * Dispatches incoming intents to the appropriate activity based on the current configuration and
   * Intent fired.
-@@ -269,6 +271,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -268,6 +270,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
-@@ -46,10 +46,12 @@ public class PrivacySettings
+@@ -49,10 +49,12 @@ 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";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
-@@ -105,6 +107,10 @@ public class PrivacySettings
+@@ -120,6 +122,10 @@ public class PrivacySettings
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManagerImpl.getInstance().setNetworkPredictionEnabled(
                      (boolean) newValue);
@@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -128,6 +134,11 @@ public class PrivacySettings
+@@ -143,6 +149,11 @@ public class PrivacySettings
              canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
@@ -88,7 +88,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
-@@ -3974,6 +3974,13 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
+@@ -4015,6 +4015,13 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
        <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>

+ 21 - 19
build/patches/Add-exit-menu-item.patch

@@ -4,18 +4,18 @@ Subject: Add exit menu item
 
 Corrected Exit functionality
 ---
- chrome/android/java/res/menu/main_menu.xml                  | 5 +++++
+ chrome/android/java/res/menu/main_menu.xml                  | 6 ++++++
  chrome/android/java/res/menu/main_menu_regroup.xml          | 3 +++
- .../org/chromium/chrome/browser/ChromeTabbedActivity.java   | 3 +++
+ .../org/chromium/chrome/browser/ChromeTabbedActivity.java   | 4 ++++
  .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
  .../chrome/browser/init/ChromeLifetimeController.java       | 6 +++++-
  .../browser/ui/android/strings/android_chrome_strings.grd   | 3 +++
- 6 files changed, 25 insertions(+), 1 deletion(-)
+ 6 files changed, 27 insertions(+), 1 deletion(-)
 
 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
-@@ -119,6 +119,9 @@
+@@ -122,6 +122,9 @@
              android:icon="@drawable/vr_headset" />
          <item android:id="@+id/managed_by_menu_id"
              android:title="@string/managed" />
@@ -25,19 +25,20 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
      </group>
  
      <!-- Items shown only in the tab switcher -->
-@@ -145,6 +148,8 @@
+@@ -148,6 +151,9 @@
          <item android:id="@id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
 +        <item android:id="@+id/exit_id"
-+            android:title="@string/menu_exit" />
++            android:title="@string/menu_exit"
++            android:icon="@drawable/ic_exit_to_app_white_24dp" />
      </group>
  
      <!-- Items shown only in the tab switcher when start surface is enabled -->
 diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
 --- a/chrome/android/java/res/menu/main_menu_regroup.xml
 +++ b/chrome/android/java/res/menu/main_menu_regroup.xml
-@@ -181,6 +181,9 @@
+@@ -184,6 +184,9 @@
              android:icon="@drawable/vr_headset" />
          <item android:id="@+id/managed_by_menu_id"
              android:title="@string/managed" />
@@ -50,15 +51,16 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android
 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
-@@ -58,6 +58,7 @@ import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
- import org.chromium.chrome.browser.IntentHandler.TabOpenType;
- import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
- import org.chromium.chrome.browser.app.ChromeActivity;
+@@ -189,6 +189,8 @@ import java.lang.annotation.RetentionPolicy;
+ import java.util.List;
+ import java.util.Locale;
+ 
 +import org.chromium.chrome.browser.ApplicationLifetime;
- import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
- import org.chromium.chrome.browser.app.tabmodel.ChromeNextTabPolicySupplier;
- import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
-@@ -1821,6 +1822,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
++
+ /**
+  * 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.
+@@ -1852,6 +1854,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          } else if (id == R.id.close_tab) {
              getCurrentTabModel().closeTab(currentTab, true, false, true);
              RecordUserAction.record("MobileTabClosed");
@@ -70,7 +72,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
-@@ -56,6 +56,7 @@ import org.chromium.base.supplier.OneshotSupplierImpl;
+@@ -57,6 +57,7 @@ import org.chromium.base.supplier.UnownedUserDataSupplier;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ActivityTabProvider;
  import org.chromium.chrome.browser.AppHooks;
@@ -78,8 +80,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import org.chromium.chrome.browser.ChromeActivitySessionTracker;
  import org.chromium.chrome.browser.ChromeApplication;
  import org.chromium.chrome.browser.ChromeWindow;
-@@ -1978,6 +1979,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             RecordUserAction.record("MobileMenuSettings");
+@@ -2129,6 +2130,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             return true;
          }
  
 +        if (id == R.id.exit_id) {
@@ -109,7 +111,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
-@@ -2916,6 +2916,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
+@@ -2954,6 +2954,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
        <message name="IDS_MENU_SETTINGS" desc="Menu item for opening browser settings. [CHAR-LIMIT=27]">
          Settings
        </message>

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

@@ -14,7 +14,7 @@ Subject: Add flag for save-data-header
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -4326,6 +4326,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4471,6 +4471,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
-@@ -913,6 +913,10 @@ const char kDisableKeepaliveFetchDescription[] =
+@@ -975,6 +975,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
-@@ -518,6 +518,9 @@ extern const char kDiagnosticsAppDescription[];
+@@ -557,6 +557,9 @@ extern const char kDiagnosticsAppDescription[];
  extern const char kDisableKeepaliveFetchName[];
  extern const char kDisableKeepaliveFetchDescription[];
  
@@ -70,7 +70,7 @@ diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/cont
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
-@@ -150,6 +150,10 @@ const base::FeatureParam<std::string>
+@@ -149,6 +149,10 @@ const base::FeatureParam<std::string>
  const base::Feature kDisableKeepaliveFetch{"DisableKeepaliveFetch",
                                             base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -91,8 +91,8 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp
 +extern const base::Feature kEnableSaveDataHeader;
 +COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kRequestInitiatorSiteLockEnfocement;
+ 
  COMPONENT_EXPORT(NETWORK_CPP)
- extern const base::Feature kCertVerifierService;
 -- 
 2.17.1
 

+ 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
-@@ -816,6 +816,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -865,6 +865,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 ==
-@@ -3656,6 +3661,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3750,6 +3755,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
-@@ -1404,6 +1404,10 @@ const char kMediaHistoryDescription[] =
+@@ -1464,6 +1464,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
-@@ -832,6 +832,9 @@ extern const char kLogJsConsoleMessagesDescription[];
+@@ -868,6 +868,9 @@ extern const char kLogJsConsoleMessagesDescription[];
  extern const char kMediaHistoryName[];
  extern const char kMediaHistoryDescription[];
  

+ 5 - 5
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
-@@ -2635,6 +2635,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2666,6 +2666,10 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kWebRtcRemoteEventLogName,
       flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop,
       FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)},
@@ -27,9 +27,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
-@@ -972,6 +972,11 @@ const char kEnableLoginDetectionName[] = "Enable login detection";
- const char kEnableLoginDetectionDescription[] =
-     "Allow user sign-in to be detected based on heuristics.";
+@@ -1032,6 +1032,11 @@ const char kEnablePciguardUiDescription[] =
+     "Enable toggling Pciguard settings through the Settings App. By default, "
+     "this flag is enabled.";
  
 +const char kResumeBackgroundVideoName[] = "Resume background video.";
 +const char kResumeBackgroundVideoDescription[] =
@@ -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
-@@ -558,6 +558,9 @@ extern const char kEnablePortalsDescription[];
+@@ -594,6 +594,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsCrossOriginName[];
  extern const char kEnablePortalsCrossOriginDescription[];
  

+ 4 - 4
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
-@@ -4604,6 +4604,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4751,6 +4751,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
-@@ -2805,6 +2805,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -2922,6 +2922,10 @@ const char kContextualSearchRankerQueryDescription[] =
  
  const char kContextualSearchSecondTapName[] =
      "Contextual Search second tap triggering";
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -625,6 +625,9 @@ extern const char kEnableWasmThreadsName[];
+@@ -664,6 +664,9 @@ extern const char kEnableWasmThreadsName[];
  extern const char kEnableWasmThreadsDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
-@@ -3369,8 +3370,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3326,8 +3327,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
-@@ -2588,6 +2588,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2619,6 +2619,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAccelerated2dCanvasName,
       flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
@@ -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
-@@ -511,6 +511,10 @@ const char kEnableAudioFocusEnforcementName[] = "Audio Focus Enforcement";
+@@ -562,6 +562,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
-@@ -317,6 +317,9 @@ extern const char kDisallowDocWrittenScriptsUiDescription[];
+@@ -347,6 +347,9 @@ extern const char kDisallowDocWrittenScriptsUiDescription[];
  
  extern const char kEnableAccessibilityObjectModelName[];
  extern const char kEnableAccessibilityObjectModelDescription[];

+ 14 - 14
build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch

@@ -20,7 +20,7 @@ legacy acceleration events.
 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
-@@ -2799,6 +2799,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2856,6 +2856,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
       flag_descriptions::kGpuRasterizationDescription, kOsAll,
       MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
@@ -36,7 +36,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
-@@ -755,6 +755,14 @@ const char kWinrtSensorsImplementationDescription[] =
+@@ -821,6 +821,14 @@ const char kWinrtSensorsImplementationDescription[] =
      "Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
      "sensors";
  
@@ -54,7 +54,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
-@@ -455,6 +455,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
+@@ -494,6 +494,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
  extern const char kWinrtSensorsImplementationName[];
  extern const char kWinrtSensorsImplementationDescription[];
  
@@ -83,7 +83,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -837,6 +837,16 @@ const base::Feature kWebOtpBackendAuto{"WebOtpBackendAuto",
+@@ -886,6 +886,16 @@ const base::Feature kWebOtpBackendAuto{"WebOtpBackendAuto",
  // The JavaScript API for payments on the web.
  const base::Feature kWebPayments{"WebPayments",
                                   base::FEATURE_ENABLED_BY_DEFAULT};
@@ -103,7 +103,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
-@@ -197,6 +197,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrArModule;
+@@ -209,6 +209,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHandInput;
  CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
  CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
  
@@ -116,14 +116,14 @@ 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
 @@ -97,6 +97,8 @@ class WebRuntimeFeatures {
-   BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
-   BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
-   BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
+   BLINK_PLATFORM_EXPORT static void EnableCompositeRelativeKeyframes(
+       bool enable);
+   BLINK_PLATFORM_EXPORT static void EnableCookieDeprecationMessages(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
-   BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
-   BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
-   BLINK_PLATFORM_EXPORT static void EnableDecodeJpeg420ImagesToYUV(bool);
+   BLINK_PLATFORM_EXPORT static void EnableCookiesWithoutSameSiteMustBeSecure(
+       bool);
+   BLINK_PLATFORM_EXPORT static void EnableCanvas2dImageChromium(bool);
 diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
 --- a/third_party/blink/renderer/modules/modules_initializer.cc
 +++ b/third_party/blink/renderer/modules/modules_initializer.cc
@@ -147,8 +147,8 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p
 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
-@@ -175,6 +175,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
-   RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
+@@ -195,6 +195,14 @@ void WebRuntimeFeatures::EnableKeyboardAccessibleTooltip(bool enable) {
+   RuntimeEnabledFeatures::SetKeyboardAccessibleTooltipEnabled(enable);
  }
  
 +void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
@@ -165,7 +165,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
-@@ -1385,6 +1385,14 @@
+@@ -1437,6 +1437,14 @@
        name: "OffscreenCanvasCommit",
        status: "experimental",
      },

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

@@ -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
-@@ -37,12 +37,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;
  
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_SECURE_DNS = "secure_dns";
-@@ -54,6 +57,7 @@ public class PrivacySettings
+@@ -57,6 +60,7 @@ public class PrivacySettings
      private static final String PREF_PROXY_OPTIONS = "proxy";
      private static final String[] NEW_PRIVACY_PREFERENCE_ORDER = {PREF_CLEAR_BROWSING_DATA,
              PREF_ALWAYS_INCOGNITO,
@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
              PREF_CAN_MAKE_PAYMENT, PREF_NETWORK_PREDICTIONS,
              PREF_CLOSE_TABS_ON_EXIT,
              PREF_SECURE_DNS, PREF_DO_NOT_TRACK, PREF_PRIVACY_SANDBOX,
-@@ -103,6 +107,11 @@ public class PrivacySettings
+@@ -118,6 +122,11 @@ public class PrivacySettings
          Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
          secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
  
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          updateSummaries();
      }
  
-@@ -123,6 +132,9 @@ public class PrivacySettings
+@@ -138,6 +147,9 @@ public class PrivacySettings
              SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
              sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
              sharedPreferencesEditor.apply();
@@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -167,6 +179,13 @@ public class PrivacySettings
+@@ -188,6 +200,13 @@ public class PrivacySettings
                  (ChromeSwitchPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
          closeTabsOnExitPref.setOnPreferenceChangeListener(this);
          closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -164,7 +164,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"
-@@ -968,6 +970,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1027,6 +1029,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    variations::VariationsService::RegisterProfilePrefs(registry);
    video_tutorials::RegisterPrefs(registry);
    feed::prefs::RegisterFeedSharedProfilePrefs(registry);
@@ -175,7 +175,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/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
-@@ -868,6 +868,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -917,6 +917,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
          Opens links in incognito tabs when you click on new tab or on a link
        </message>
@@ -191,7 +191,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
-@@ -3155,6 +3155,11 @@ const char kShowCaretBrowsingDialog[] =
+@@ -3152,6 +3152,11 @@ const char kShowCaretBrowsingDialog[] =
  const char kLacrosAllowed[] = "lacros_allowed";
  #endif
  
@@ -206,9 +206,9 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -1116,6 +1116,10 @@ extern const char kCartModuleRemoved[];
- extern const char kCartModuleWelcomeSurfaceShownTimes[];
- #endif
+@@ -1131,6 +1131,10 @@ extern const char kFetchKeepaliveDurationOnShutdown[];
+ 
+ extern const char kSuppressDifferentOriginSubframeJSDialogs[];
  
 +#if defined(OS_ANDROID)
 +extern const char kIncognitoTabHistoryEnabled[];

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

@@ -4,11 +4,11 @@ Subject: Add menu item to bookmark all tabs
 
 ---
  chrome/android/java/res/menu/main_menu.xml    |  7 +++
- .../java/res/menu/main_menu_regroup.xml       |  4 ++
+ .../java/res/menu/main_menu_regroup.xml       |  9 +++
  .../chrome/browser/ChromeTabbedActivity.java  | 26 ++++++++
- .../browser/bookmarks/BookmarkBridge.java     | 62 +++++++++++++++++++
+ .../browser/bookmarks/BookmarkBridge.java     | 61 +++++++++++++++++++
  .../browser/bookmarks/BookmarkUtils.java      |  4 ++
- .../android/bookmarks/bookmark_bridge.cc      | 17 +++++
+ .../android/bookmarks/bookmark_bridge.cc      | 17 ++++++
  .../android/bookmarks/bookmark_bridge.h       |  4 ++
  .../bookmarks/chrome_bookmark_client.cc       |  2 +
  .../strings/android_chrome_strings.grd        |  3 +
@@ -19,7 +19,7 @@ Subject: Add menu item to bookmark all tabs
  components/bookmarks/browser/bookmark_model.h |  7 +++
  components/bookmarks/browser/bookmark_node.cc | 13 ++++
  components/bookmarks/browser/bookmark_node.h  |  5 ++
- 16 files changed, 168 insertions(+), 1 deletion(-)
+ 16 files changed, 172 insertions(+), 1 deletion(-)
 
 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
@@ -29,49 +29,68 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
              android:title="@string/menu_bookmarks"
              android:icon="@drawable/btn_star_filled" />
 +        <item android:id="@+id/bookmark_all_tabs_menu_id"
-+            android:title="@string/accessibility_menu_bookmark"
++            android:title="@string/menu_bookmark_all_tabs"
 +            android:titleCondensed="@string/menu_bookmark_all_tabs"
 +            android:icon="@drawable/ic_folder_blue_24dp" />
          <item android:id="@+id/recent_tabs_menu_id"
              android:title="@string/menu_recent_tabs"
              android:icon="@drawable/devices_black_24dp" />
-@@ -134,6 +138,9 @@
-         <item android:id="@id/new_incognito_tab_menu_id"
-             android:title="@string/menu_new_incognito_tab"
-             android:icon="@drawable/incognito_simple" />
+@@ -145,6 +149,9 @@
+         <item android:id="@+id/menu_group_tabs"
+             android:title="@string/menu_group_tabs"
+             android:icon="@drawable/ic_widgets" />
 +        <item android:id="@+id/bookmark_all_tabs_menu_id"
 +            android:title="@string/menu_bookmark_all_tabs"
 +            android:icon="@drawable/ic_folder_blue_24dp" />
-         <item android:id="@+id/close_all_tabs_menu_id"
-             android:title="@string/menu_close_all_tabs"
-             android:icon="@drawable/btn_close_white" />
+         <item android:id="@+id/track_prices_row_menu_id"
+             android:title="@string/menu_track_prices"
+             android:icon="@drawable/ic_trending_down_black" />
 diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
 --- a/chrome/android/java/res/menu/main_menu_regroup.xml
 +++ b/chrome/android/java/res/menu/main_menu_regroup.xml
-@@ -32,6 +32,10 @@
-                 android:title="@string/accessibility_menu_bookmark"
-                 android:titleCondensed="@string/menu_bookmark"
-                 android:icon="@drawable/btn_star"/>
-+              <item android:id="@+id/bookmark_all_tabs_menu_id"
-+                android:title="@string/accessibility_menu_bookmark"
-+                android:titleCondensed="@string/menu_bookmark_all_tabs"
-+                android:icon="@drawable/ic_folder_blue_24dp" />
-               <item android:id="@+id/offline_page_id"
-                 android:title="@string/download_page"
-                 android:titleCondensed="@string/menu_download"
+@@ -89,6 +89,9 @@
+                     android:icon="@drawable/btn_star" />
+           </menu>
+         </item>
++        <item android:id="@+id/bookmark_all_tabs_menu_id"
++            android:title="@string/menu_bookmark_all_tabs"
++            android:icon="@drawable/ic_folder_blue_24dp" />
+         <item android:id="@+id/recent_tabs_menu_id"
+             android:title="@string/menu_recent_tabs"
+             android:icon="@drawable/devices_black_24dp" />
+@@ -210,6 +213,9 @@
+         <item android:id="@+id/menu_group_tabs"
+             android:title="@string/menu_group_tabs"
+             android:icon="@drawable/ic_widgets" />
++        <item android:id="@+id/bookmark_all_tabs_menu_id"
++            android:title="@string/menu_bookmark_all_tabs"
++            android:icon="@drawable/ic_folder_blue_24dp" />
+         <item android:id="@+id/track_prices_row_menu_id"
+             android:title="@string/menu_track_prices"
+             android:icon="@drawable/ic_trending_down_black" />
+@@ -252,6 +258,9 @@
+         <item android:id="@id/menu_group_tabs"
+             android:title="@string/menu_group_tabs"
+             android:icon="@drawable/ic_widgets" />
++        <item android:id="@+id/bookmark_all_tabs_menu_id"
++            android:title="@string/menu_bookmark_all_tabs"
++            android:icon="@drawable/ic_folder_blue_24dp" />
+         <item android:id="@id/track_prices_row_menu_id"
+             android:title="@string/menu_track_prices"
+             android:icon="@drawable/ic_trending_down_black" />
 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
-@@ -63,6 +63,8 @@ import org.chromium.chrome.browser.ApplicationLifetime;
- import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
- import org.chromium.chrome.browser.app.tabmodel.ChromeNextTabPolicySupplier;
+@@ -66,6 +66,8 @@ import org.chromium.chrome.browser.app.tabmodel.ChromeNextTabPolicySupplier;
+ import org.chromium.chrome.browser.app.tabmodel.TabModelOrchestrator;
  import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
+ import org.chromium.chrome.browser.app.tabmodel.TabbedModeTabModelOrchestrator;
 +import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
 +import org.chromium.chrome.browser.bookmarks.BookmarkModel;
  import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
  import org.chromium.chrome.browser.compositor.CompositorViewHolder;
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
-@@ -1832,6 +1834,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1864,6 +1866,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              // Close both incognito and normal tabs
              getTabModelSelector().closeAllTabs();
              RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -80,7 +99,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();
-@@ -1868,6 +1872,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1899,6 +1903,28 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          mTabModalHandler.onOmniboxFocusChanged(hasFocus);
      }
  
@@ -120,7 +139,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import android.content.Intent;
  import android.content.Context;
  import android.content.pm.PackageManager;
-@@ -18,6 +19,7 @@ import androidx.annotation.Nullable;
+@@ -24,6 +25,7 @@ import androidx.annotation.Nullable;
  import androidx.annotation.VisibleForTesting;
  
  import org.chromium.base.ContextUtils;
@@ -128,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.base.ObserverList;
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.annotations.CalledByNative;
-@@ -26,6 +28,10 @@ import org.chromium.base.metrics.RecordHistogram;
+@@ -32,6 +34,10 @@ import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
  import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.tab.Tab;
@@ -139,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkType;
  import org.chromium.components.url_formatter.SchemeDisplay;
-@@ -46,6 +52,7 @@ import java.util.List;
+@@ -72,6 +78,7 @@ import java.io.File;
   * bookmark model stored in native.
   */
  public class BookmarkBridge {
@@ -147,7 +166,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private final Profile mProfile;
      private boolean mIsDoingExtensiveChanges;
      private long mNativeBookmarkBridge;
-@@ -527,6 +534,16 @@ public class BookmarkBridge {
+@@ -553,6 +560,16 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this);
      }
  
@@ -164,7 +183,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @return Id representing the special "other" folder from bookmark model.
       */
-@@ -896,6 +913,50 @@ public class BookmarkBridge {
+@@ -1099,6 +1116,49 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, title, url);
      }
  
@@ -208,14 +227,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 +        Snackbar snackbar = Snackbar.make(folderName, snackbarController, Snackbar.TYPE_ACTION,
 +                        Snackbar.UMA_BOOKMARK_ADDED)
 +                        .setTemplateText(activity.getString(R.string.bookmark_page_saved_folder));
-+//        snackbar.setSingleLine(false).setAction(activity.getString(R.string.bookmark_item_edit), null);
 +        snackbarManager.showSnackbar(snackbar);
 +    }
 +
      /**
       * @param url The URL of the reading list item.
       * @return The reading list item with the URL, or null if no such reading list item.
-@@ -1137,6 +1198,7 @@ public class BookmarkBridge {
+@@ -1355,6 +1415,7 @@ public class BookmarkBridge {
          void getAllFoldersWithDepths(long nativeBookmarkBridge, BookmarkBridge caller,
                  List<BookmarkId> folderList, List<Integer> depthList);
          BookmarkId getRootFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
@@ -226,7 +244,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
-@@ -472,6 +472,7 @@ public class BookmarkUtils {
+@@ -502,6 +502,7 @@ public class BookmarkUtils {
          List<BookmarkId> topLevelFolders = new ArrayList<>();
          BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId();
          BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId();
@@ -234,7 +252,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          BookmarkId othersNodeId = bookmarkModel.getOtherFolderId();
  
          List<BookmarkId> specialFoldersIds =
-@@ -497,6 +498,9 @@ public class BookmarkUtils {
+@@ -527,6 +528,9 @@ public class BookmarkUtils {
          if (bookmarkModel.isFolderVisible(mobileNodeId)) {
              topLevelFolders.add(mobileNodeId);
          }
@@ -247,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
-@@ -387,6 +387,11 @@ void BookmarkBridge::GetTopLevelFolderIDs(
+@@ -422,6 +422,11 @@ void BookmarkBridge::GetTopLevelFolderIDs(
          top_level_folders.push_back(node.get());
      }
  
@@ -259,7 +277,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
      for (const auto& node : bookmark_model_->bookmark_bar_node()->children()) {
        if (node->is_folder())
          top_level_folders.push_back(node.get());
-@@ -425,6 +430,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
+@@ -460,6 +465,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
    // Vector to temporarily contain all child bookmarks at same level for sorting
    std::vector<const BookmarkNode*> bookmarks = {
        bookmark_model_->mobile_node(),
@@ -267,7 +285,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
        bookmark_model_->bookmark_bar_node(),
        bookmark_model_->other_node(),
    };
-@@ -479,6 +485,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
+@@ -514,6 +520,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
    return folder_id_obj;
  }
  
@@ -288,7 +306,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.h
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
-@@ -109,6 +109,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -110,6 +110,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
        JNIEnv* env,
        const base::android::JavaParamRef<jobject>& obj);
  
@@ -314,7 +332,7 @@ diff --git a/chrome/browser/bookmarks/chrome_bookmark_client.cc b/chrome/browser
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -3002,6 +3002,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
+@@ -3017,6 +3017,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
        <message name="IDS_MENU_TRACK_PRICES" desc="Menu item for tracking prices on tabs. [CHAR-LIMIT=27]">
          Track prices
        </message>

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

@@ -7,11 +7,11 @@ Subject: Add menu item to view source
  chrome/android/java/res/menu/main_menu.xml         |  3 +++
  chrome/android/java/res/menu/main_menu_regroup.xml |  3 +++
  .../chrome/browser/ChromeTabbedActivity.java       |  2 ++
- .../chrome/browser/app/ChromeActivity.java         |  2 ++
+ .../chrome/browser/app/ChromeActivity.java         |  5 +++++
  .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  .../CustomTabAppMenuPropertiesDelegate.java        |  1 +
  .../ui/android/strings/android_chrome_strings.grd  |  3 +++
- 8 files changed, 31 insertions(+)
+ 8 files changed, 34 insertions(+)
 
 diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
 --- a/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -29,7 +29,7 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -91,6 +91,9 @@
+@@ -94,6 +94,9 @@
          <item android:id="@+id/add_to_homescreen_id"
              android:title="@string/menu_add_to_homescreen"
              android:icon="@drawable/ic_add_to_home_screen" />
@@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
 --- a/chrome/android/java/res/menu/main_menu_regroup.xml
 +++ b/chrome/android/java/res/menu/main_menu_regroup.xml
-@@ -142,6 +142,9 @@
+@@ -145,6 +145,9 @@
          <item android:id="@+id/add_to_homescreen_id"
              android:title="@string/menu_add_to_homescreen"
              android:icon="@drawable/ic_add_to_home_screen" />
@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android
 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
-@@ -1850,6 +1850,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1881,6 +1881,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -67,19 +67,22 @@ 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
-@@ -2082,6 +2082,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             } catch (ActivityNotFoundException e) {
-                 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
-             }
-+        } else if (id == R.id.view_source_id) {
+@@ -2287,6 +2287,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             return true;
+         }
+ 
++        if (id == R.id.view_source_id) {
 +            currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
-         } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
-             final boolean reloadOnChange = !currentTab.isNativePage();
-             final boolean usingDesktopUserAgent =
++            return true;
++        }
++
+         if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
+             boolean usingDesktopUserAgent =
+                     currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
 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
-@@ -519,6 +519,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -537,6 +537,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          }
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -87,7 +90,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));
-@@ -932,6 +933,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -950,6 +951,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          }
      }
  
@@ -110,7 +113,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
-@@ -225,6 +225,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+@@ -228,6 +228,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
              updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
              MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id);
              MenuItem openWebApkItem = menu.findItem(R.id.open_webapk_id);
@@ -121,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -332,6 +332,9 @@ CHAR-LIMIT guidelines:
+@@ -344,6 +344,9 @@ CHAR-LIMIT guidelines:
        <message name="IDS_SERVICES_CATEGORY_TITLE" desc="Title for the group of preferences that control non-personalized Google services. This group contains preferences for data that is not tied to user's Google Account.">
          Other Google services
        </message>

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

@@ -78,7 +78,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/top/Too
 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
-@@ -442,6 +442,7 @@ public final class ChromePreferenceKeys {
+@@ -449,6 +449,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";
@@ -100,7 +100,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -1152,6 +1152,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1166,6 +1166,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM" desc="Message for Safe Browsing no protection confirmation button.">
          Turn off
        </message>
@@ -116,7 +116,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/components/BUILD.gn b/components/BUILD.gn
 --- a/components/BUILD.gn
 +++ b/components/BUILD.gn
-@@ -488,7 +488,7 @@ test("components_unittests") {
+@@ -501,7 +501,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.
@@ -125,7 +125,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
      assert_no_deps = [ "//chrome/*" ]
    }
  
-@@ -730,7 +730,7 @@ if (!is_ios && !is_fuchsia) {
+@@ -748,7 +748,7 @@ if (!is_ios && !is_fuchsia) {
  
      # On LaCrOS, tests use ash-chrome as a window manager, thus the dependency.
      # On other platforms, no components should depend on Chrome.
@@ -142,9 +142,9 @@ diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
      "//base:base_java",
      "//base:jni_java",
 +    "//chrome/browser/preferences:java",
-     "//third_party/android_deps:androidx_annotation_annotation_java",
-     "//third_party/android_deps:androidx_appcompat_appcompat_java",
-     "//third_party/android_deps:androidx_appcompat_appcompat_resources_java",
+     "//third_party/androidx:androidx_annotation_annotation_java",
+     "//third_party/androidx:androidx_appcompat_appcompat_java",
+     "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
 diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
 --- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
 +++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java

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

@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1112,8 +1112,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1124,8 +1124,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 +                ContextUtils.getAppSharedPreferences().getBoolean(PREF_CLOSE_TABS_ON_EXIT, false);
              if (noRestoreState) {
                  // Clear the state files because they are inconsistent and useless from now on.
-                 mTabModelSelectorImpl.clearState();
+                 mTabModelOrchestrator.clearState();
 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
@@ -59,7 +59,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -47,9 +50,11 @@ public class PrivacySettings
+@@ -50,9 +53,11 @@ public class PrivacySettings
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
      public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
@@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
              PREF_SECURE_DNS, PREF_DO_NOT_TRACK, PREF_PRIVACY_SANDBOX,
              PREF_ALLOW_CUSTOM_TAB_INTENTS};
  
-@@ -101,7 +106,11 @@ public class PrivacySettings
+@@ -116,7 +121,11 @@ public class PrivacySettings
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
          String key = preference.getKey();
@@ -84,9 +84,9 @@ 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)) {
-@@ -150,6 +159,11 @@ public class PrivacySettings
-         if (secureDnsPref != null && secureDnsPref.isVisible()) {
-             secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext()));
+@@ -171,6 +180,11 @@ public class PrivacySettings
+             privacySandboxPreference.setSummary(
+                     PrivacySandboxSettingsFragment.getStatusString(getContext()));
          }
 +
 +        ChromeSwitchPreference closeTabsOnExitPref =
@@ -99,7 +99,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
-@@ -3724,6 +3724,12 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
+@@ -3765,6 +3765,12 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
        <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/Allow-playing-audio-in-background.patch

@@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
  void WebMediaPlayerImpl::EnabledAudioTracksChanged(
      const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
    DCHECK(main_task_runner_->BelongsToCurrentThread());
-@@ -3528,7 +3534,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3457,7 +3463,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
    // Audio only stream is allowed to play when in background.
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // to move the logic of checking video frames out of that function.
@@ -39,7 +39,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
 diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
 --- a/media/blink/webmediaplayer_impl.h
 +++ b/media/blink/webmediaplayer_impl.h
-@@ -157,6 +157,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -150,6 +150,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
    // True if the loaded media has a playable video/audio track.
    bool HasVideo() const override;
    bool HasAudio() const override;

+ 1 - 1
build/patches/Allow-website-sign-in-without-account-sign-in.patch

@@ -10,7 +10,7 @@ Disable prefs::kSigninAllowedOnNextStartup by default. The setting can be found
 diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
 --- a/chrome/browser/signin/account_consistency_mode_manager.cc
 +++ b/chrome/browser/signin/account_consistency_mode_manager.cc
-@@ -119,7 +119,7 @@ void AccountConsistencyModeManager::RegisterProfilePrefs(
+@@ -118,7 +118,7 @@ void AccountConsistencyModeManager::RegisterProfilePrefs(
  #if BUILDFLAG(ENABLE_DICE_SUPPORT)
    registry->RegisterBooleanPref(kDiceMigrationCompletePref, false);
  #endif

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

@@ -11,7 +11,7 @@ Do not read experiment value for cronet async DNS configuration
 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
-@@ -156,7 +156,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
+@@ -155,7 +155,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
        local_state->GetBoolean(prefs::kNtlmV2Enabled);
  #endif  // defined(OS_POSIX)
  
@@ -23,7 +23,7 @@ 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
-@@ -561,7 +561,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
+@@ -582,7 +582,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
          effective_experimental_options->Remove(it.key(), nullptr);
          continue;
        }

Різницю між файлами не показано, бо вона завелика
+ 76 - 282
build/patches/Automated-domain-substitution.patch


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

@@ -18,15 +18,15 @@ Subject: Block gateway attacks via websockets
 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
-@@ -92,7 +92,7 @@ const base::Feature kBlockCredentialedSubresources{
- //
- // https://wicg.github.io/cors-rfc1918/#integration-fetch
+@@ -107,7 +107,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};
  
- // Use ThreadPriority::DISPLAY for browser UI and IO threads.
- #if defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH)
+ // When both kBlockInsecurePrivateNetworkRequestsForNavigations and
+ // kBlockInsecurePrivateNetworkRequests are enabled, navigations initiated
 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
@@ -41,7 +41,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
-@@ -556,6 +556,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -567,6 +567,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -69,7 +69,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/third_party/blink/renderer/core/loader/frame_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h
-@@ -162,6 +162,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
+@@ -164,6 +164,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
    bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
    std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
        override;
@@ -80,7 +80,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/thir
 diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/third_party/blink/renderer/core/loader/worker_fetch_context.cc
 --- a/third_party/blink/renderer/core/loader/worker_fetch_context.cc
 +++ b/third_party/blink/renderer/core/loader/worker_fetch_context.cc
-@@ -26,6 +26,7 @@
+@@ -24,6 +24,7 @@
  #include "third_party/blink/renderer/platform/loader/fetch/resource_timing_info.h"
  #include "third_party/blink/renderer/platform/loader/fetch/worker_resource_timing_notifier.h"
  #include "third_party/blink/renderer/platform/network/network_state_notifier.h"
@@ -88,7 +88,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  #include "third_party/blink/renderer/platform/supplementable.h"
  #include "third_party/blink/renderer/platform/weborigin/security_policy.h"
-@@ -92,6 +93,24 @@ bool WorkerFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -90,6 +91,24 @@ bool WorkerFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -146,7 +146,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
 diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
 --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
 +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
-@@ -214,6 +214,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
+@@ -213,6 +213,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
      return false;
    }
  

+ 27 - 23
build/patches/Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch → build/patches/Block-qjz9zk-or-trk-requests.patch

@@ -1,7 +1,6 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Wed, 30 Oct 2019 11:50:13 +0100
-Subject: Block all connection requests with 'qjz9zk' in the domain name or
- with a 'trk:' scheme.
+Subject: Block 'qjz9zk' or 'trk:' requests
 
 An info bar is displayed unless the --disable-trkbar command-line flag or the chrome://flag option is used.
 This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs being retrieved'
@@ -9,7 +8,7 @@ This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs
  .../chrome_autocomplete_scheme_classifier.cc  |  1 +
  chrome/browser/history/history_utils.cc       |  1 +
  chrome/browser/ui/singleton_tabs.cc           |  3 +-
- .../omnibox/browser/autocomplete_input.cc     |  7 +++--
+ .../omnibox/browser/autocomplete_input.cc     |  8 ++++-
  components/url_formatter/url_fixer.cc         |  4 +++
  .../child_process_security_policy_impl.cc     |  1 +
  net/BUILD.gn                                  |  2 ++
@@ -20,7 +19,7 @@ This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs
  url/url_constants.cc                          |  1 +
  url/url_constants.h                           |  1 +
  url/url_util.cc                               |  2 ++
- 14 files changed, 87 insertions(+), 3 deletions(-)
+ 14 files changed, 89 insertions(+), 2 deletions(-)
  create mode 100644 net/url_request/trk_protocol_handler.cc
  create mode 100644 net/url_request/trk_protocol_handler.h
 
@@ -62,7 +61,23 @@ diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_t
 diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
 --- a/components/omnibox/browser/autocomplete_input.cc
 +++ b/components/omnibox/browser/autocomplete_input.cc
-@@ -526,7 +526,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
+@@ -81,10 +81,15 @@ void OffsetComponentsExcludingScheme(url::Parsed* parts, int offset) {
+ bool HasScheme(const base::string16& input, const char* scheme) {
+   std::string utf8_input(base::UTF16ToUTF8(input));
+   url::Component view_source_scheme;
++
++  if (url::FindAndCompareScheme(utf8_input, url::kTraceScheme, &view_source_scheme)) {
++    return false;
++  }
+   if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme,
+                                 &view_source_scheme)) {
+     utf8_input.erase(0, view_source_scheme.end() + 1);
+   }
++
+   return url::FindAndCompareScheme(utf8_input, scheme, nullptr);
+ }
+ 
+@@ -552,7 +557,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
    // For the view-source and blob schemes, we should emphasize the host of the
    // URL qualified by the view-source or blob prefix.
    if ((base::LowerCaseEqualsASCII(scheme_str, kViewSourceScheme) ||
@@ -72,21 +87,10 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib
        (static_cast<int>(text.length()) > after_scheme_and_colon)) {
      // Obtain the URL prefixed by view-source or blob and parse it.
      base::string16 real_url(text.substr(after_scheme_and_colon));
-@@ -599,7 +600,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
- bool AutocompleteInput::HasHTTPScheme(const base::string16& input) {
-   std::string utf8_input(base::UTF16ToUTF8(input));
-   url::Component scheme;
--  if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
-+  if (url::FindAndCompareScheme(utf8_input, url::kTraceScheme, &scheme)) {
-+    return false;
-+  } else if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
-     utf8_input.erase(0, scheme.end() + 1);
-   }
-   return url::FindAndCompareScheme(utf8_input, url::kHttpScheme, nullptr);
 diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
 --- a/components/url_formatter/url_fixer.cc
 +++ b/components/url_formatter/url_fixer.cc
-@@ -560,6 +560,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
+@@ -562,6 +562,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
      }
    }
  
@@ -100,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
-@@ -772,6 +772,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
+@@ -793,6 +793,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
  #endif  // BUILDFLAG(ENABLE_WEBSOCKETS)
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kDataScheme);
@@ -111,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
-@@ -1086,6 +1086,8 @@ component("net") {
+@@ -1075,6 +1075,8 @@ component("net") {
        "url_request/report_sender.h",
        "url_request/static_http_user_agent_settings.cc",
        "url_request/static_http_user_agent_settings.h",
@@ -241,10 +245,10 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
 diff --git a/url/url_constants.cc b/url/url_constants.cc
 --- a/url/url_constants.cc
 +++ b/url/url_constants.cc
-@@ -28,6 +28,7 @@ const char kMailToScheme[] = "mailto";
- // See also: https://www.iana.org/assignments/uri-schemes/prov/quic-transport
+@@ -29,6 +29,7 @@ const char kMailToScheme[] = "mailto";
  const char kQuicTransportScheme[] = "quic-transport";
  const char kTelScheme[] = "tel";
+ const char kUrnScheme[] = "urn";
 +const char kTraceScheme[] = "trk";
  const char kWsScheme[] = "ws";
  const char kWssScheme[] = "wss";
@@ -252,10 +256,10 @@ diff --git a/url/url_constants.cc b/url/url_constants.cc
 diff --git a/url/url_constants.h b/url/url_constants.h
 --- a/url/url_constants.h
 +++ b/url/url_constants.h
-@@ -32,6 +32,7 @@ COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[];
- COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
+@@ -33,6 +33,7 @@ COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
  COMPONENT_EXPORT(URL) extern const char kQuicTransportScheme[];
  COMPONENT_EXPORT(URL) extern const char kTelScheme[];
+ COMPONENT_EXPORT(URL) extern const char kUrnScheme[];
 +COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
  COMPONENT_EXPORT(URL) extern const char kWsScheme[];
  COMPONENT_EXPORT(URL) extern const char kWssScheme[];

+ 61 - 37
build/patches/Bromite-AdBlockUpdaterService.patch

@@ -45,8 +45,9 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681)
  .../browser/verified_ruleset_dealer.cc        |   3 +
  .../browser/subresource_filter_features.cc    | 113 +-------
  .../core/common/common_features.cc            |   2 +-
+ .../core/common/indexed_ruleset.cc            |   5 +-
  .../navigation_throttle_runner.cc             |   5 -
- 37 files changed, 1141 insertions(+), 139 deletions(-)
+ 38 files changed, 1145 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
@@ -59,26 +60,26 @@ 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
-@@ -727,6 +727,7 @@ chrome_java_resources = [
+@@ -682,6 +682,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",
-   "java/res/layout/add_languages_main.xml",
 +  "java/res/layout/adblock_editor.xml",
-   "java/res/layout/add_to_homescreen_dialog.xml",
    "java/res/layout/add_to_menu_dialog.xml",
    "java/res/layout/add_to_menu_dialog_item.xml",
-@@ -973,6 +974,7 @@ chrome_java_resources = [
+   "java/res/layout/assistant_voice_search_consent_ui.xml",
+@@ -920,6 +921,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
 +  "java/res/xml/adblock_preferences.xml",
    "java/res/xml/autofill_assistant_preferences.xml",
-   "java/res/xml/autofill_server_profile_preferences.xml",
    "java/res/xml/bookmark_widget_info.xml",
+   "java/res/xml/clear_browsing_data_preferences_tab.xml",
 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
-@@ -1166,6 +1166,8 @@ chrome_java_sources = [
+@@ -1155,6 +1155,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",
@@ -421,7 +422,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -10337,6 +10337,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -10400,6 +10400,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -482,7 +483,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
  namespace extensions {
  class EventRouterForwarder;
  }
-@@ -236,6 +241,7 @@ class BrowserProcess {
+@@ -233,6 +238,7 @@ class BrowserProcess {
  #endif
  
    virtual component_updater::ComponentUpdateService* component_updater() = 0;
@@ -493,7 +494,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -1039,6 +1039,35 @@ BrowserProcessImpl::component_updater() {
+@@ -1024,6 +1024,35 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -532,7 +533,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
 --- a/chrome/browser/browser_process_impl.h
 +++ b/chrome/browser/browser_process_impl.h
-@@ -184,6 +184,7 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -189,6 +189,7 @@ class BrowserProcessImpl : public BrowserProcess,
  #endif
  
    component_updater::ComponentUpdateService* component_updater() override;
@@ -540,7 +541,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
    MediaFileSystemRegistry* media_file_system_registry() override;
    WebRtcLogUploader* webrtc_log_uploader() override;
    network_time::NetworkTimeTracker* network_time_tracker() override;
-@@ -364,6 +365,7 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -369,6 +370,7 @@ class BrowserProcessImpl : public BrowserProcess,
    // to concerns over integrity of data shared between profiles,
    // but some users of component updater only install per-user.
    std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
@@ -551,11 +552,11 @@ 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
-@@ -1605,6 +1605,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1603,6 +1603,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
-     component_updater::RegisterComponentsForUpdate(profile_->IsOffTheRecord(),
-                                                    profile_->GetPrefs());
-+    // force initialisation
+     component_updater::RegisterComponentsForUpdate(
+         profile_->IsOffTheRecord(), profile_->GetPrefs(), profile_->GetPath());
++    // force AdBlock updater initialisation
 +    g_browser_process->adblock_updater();
    }
  
@@ -563,15 +564,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
-@@ -72,7 +72,6 @@
- #include "chrome/browser/hid/chrome_hid_delegate.h"
+@@ -74,7 +74,6 @@
  #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"
-@@ -3986,16 +3985,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3966,16 +3965,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -588,7 +589,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(IS_CHROMEOS_ASH)
    MaybeAddThrottle(
        chromeos::WebTimeLimitNavigationThrottle::MaybeCreateThrottleFor(handle),
-@@ -4102,10 +4091,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4080,10 +4069,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     &throttles);
  #endif
  
@@ -627,7 +628,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
-@@ -258,6 +258,14 @@ public class CachedFeatureFlags {
+@@ -260,6 +260,14 @@ public class CachedFeatureFlags {
                          ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0));
      }
  
@@ -642,7 +643,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.
       */
-@@ -410,5 +418,7 @@ public class CachedFeatureFlags {
+@@ -426,5 +434,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -653,7 +654,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(
+@@ -336,6 +336,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -662,7 +663,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 =
-@@ -401,6 +403,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -400,6 +402,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -712,7 +713,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
-@@ -2179,6 +2179,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2172,6 +2172,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -1477,7 +1478,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
-@@ -529,6 +529,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -582,6 +582,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1498,7 +1499,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
 diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc
 --- a/components/subresource_filter/content/browser/ruleset_service.cc
 +++ b/components/subresource_filter/content/browser/ruleset_service.cc
-@@ -47,9 +47,7 @@ namespace {
+@@ -46,9 +46,7 @@ namespace {
  
  void RecordIndexAndWriteRulesetResult(
      RulesetService::IndexAndWriteRulesetResult result) {
@@ -1509,7 +1510,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
  }
  
  // Implements operations on a `sentinel file`, which is used as a safeguard to
-@@ -228,10 +226,13 @@ RulesetService::RulesetService(
+@@ -227,10 +225,13 @@ RulesetService::RulesetService(
  RulesetService::~RulesetService() {}
  
  void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
@@ -1525,7 +1526,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    // Trying to store a ruleset with the same version for a second time would
    // not only be futile, but would fail on Windows due to "File System
    // Tunneling" as long as the previously stored copy of the rules is still
-@@ -241,13 +242,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
+@@ -240,13 +241,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
    if (most_recently_indexed_version.IsCurrentFormatVersion() &&
        most_recently_indexed_version.content_version ==
            unindexed_ruleset_info.content_version) {
@@ -1542,7 +1543,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      return;
    }
  
-@@ -266,6 +270,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const {
+@@ -265,6 +269,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const {
  IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
      const base::FilePath& indexed_ruleset_base_dir,
      const UnindexedRulesetInfo& unindexed_ruleset_info) {
@@ -1561,7 +1562,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
                                                  base::BlockingType::MAY_BLOCK);
  
-@@ -273,6 +289,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -272,6 +288,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
        unindexed_ruleset_info);
  
    if (!unindexed_ruleset_stream_generator.ruleset_stream()) {
@@ -1569,7 +1570,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_OPENING_UNINDEXED_RULESET);
      return IndexedRulesetVersion();
-@@ -286,6 +303,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -285,6 +302,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
            indexed_ruleset_base_dir, indexed_version);
  
    if (!base::CreateDirectory(indexed_ruleset_version_dir)) {
@@ -1577,7 +1578,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_CREATING_VERSION_DIR);
      return IndexedRulesetVersion();
-@@ -311,6 +329,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -310,6 +328,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
  
    RulesetIndexer indexer;
    if (!(*g_index_ruleset_func)(&unindexed_ruleset_stream_generator, &indexer)) {
@@ -1585,7 +1586,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
      RecordIndexAndWriteRulesetResult(
          IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET);
      return IndexedRulesetVersion();
-@@ -331,6 +350,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
+@@ -330,6 +349,8 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
    if (result != IndexAndWriteRulesetResult::SUCCESS)
      return IndexedRulesetVersion();
  
@@ -1594,7 +1595,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    DCHECK(indexed_version.IsValid());
    return indexed_version;
  }
-@@ -455,6 +476,7 @@ void RulesetService::IndexAndStoreRuleset(
+@@ -454,6 +475,7 @@ void RulesetService::IndexAndStoreRuleset(
  void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback,
                                        const IndexedRulesetVersion& version) {
    DCHECK(!result_callback.is_null());
@@ -1602,7 +1603,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
    if (!version.IsValid())
      return;
    version.SaveToPrefs(local_state_);
-@@ -467,7 +489,6 @@ void RulesetService::OpenAndPublishRuleset(
+@@ -466,7 +488,6 @@ void RulesetService::OpenAndPublishRuleset(
        IndexedRulesetLocator::GetRulesetDataFilePath(
            IndexedRulesetLocator::GetSubdirectoryPathForVersion(
                indexed_ruleset_base_dir_, version));
@@ -1827,10 +1828,33 @@ diff --git a/components/subresource_filter/core/common/common_features.cc b/comp
 +const base::Feature kAdTagging{"AdTagging", base::FEATURE_DISABLED_BY_DEFAULT};
  
  }  // namespace subresource_filter
+diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/components/subresource_filter/core/common/indexed_ruleset.cc
+--- a/components/subresource_filter/core/common/indexed_ruleset.cc
++++ b/components/subresource_filter/core/common/indexed_ruleset.cc
+@@ -5,6 +5,7 @@
+ #include "components/subresource_filter/core/common/indexed_ruleset.h"
+ 
+ #include "base/check.h"
++#include "base/logging.h"
+ #include "base/metrics/histogram_macros.h"
+ #include "base/trace_event/trace_event.h"
+ #include "components/subresource_filter/core/common/first_party_origin.h"
+@@ -34,8 +35,10 @@ VerifyStatus GetVerifyStatus(const uint8_t* buffer,
+   // least once.  The verifier detects a subset of the errors detected by the
+   // checksum, and is unneeded once expected_checksum is consistently nonzero.
+   flatbuffers::Verifier verifier(buffer, size);
++  int local_checksum = LocalGetChecksum(buffer, size);
++  LOG(INFO) << "GetVerifyStatus: expected checksum = 0x" << std::hex << expected_checksum << ", local checksum = 0x" << std::hex << local_checksum;
+   if (expected_checksum != 0 &&
+-      expected_checksum != LocalGetChecksum(buffer, size)) {
++      expected_checksum != local_checksum) {
+     return flat::VerifyIndexedRulesetBuffer(verifier)
+                ? VerifyStatus::kChecksumFailVerifierPass
+                : VerifyStatus::kChecksumFailVerifierFail;
 diff --git a/content/browser/renderer_host/navigation_throttle_runner.cc b/content/browser/renderer_host/navigation_throttle_runner.cc
 --- a/content/browser/renderer_host/navigation_throttle_runner.cc
 +++ b/content/browser/renderer_host/navigation_throttle_runner.cc
-@@ -134,11 +134,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
+@@ -171,11 +171,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
    AddThrottle(HttpErrorNavigationThrottle::MaybeCreateThrottleFor(*request));
  
    AddThrottle(BackForwardCacheThrottle::MaybeCreateThrottleFor(request));

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

@@ -12,7 +12,7 @@ See also: https://github.com/bromite/bromite/issues/553
 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
-@@ -461,12 +461,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -462,12 +462,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
            port_config.enable_nonproxied_udp = false;
            break;
          case DEFAULT:

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

+ 1 - 1
build/patches/Disable-Omaha-update-checks.patch

@@ -11,7 +11,7 @@ Do not consider Jelly Bean unsupported
 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
-@@ -159,7 +159,7 @@ public class OmahaBase {
+@@ -158,7 +158,7 @@ public class OmahaBase {
  
      /** See {@link #sIsDisabled}. */
      static boolean isDisabled() {

+ 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
-@@ -491,7 +491,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -523,7 +523,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;
              }
-@@ -526,8 +526,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
+@@ -558,8 +558,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

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

@@ -10,7 +10,7 @@ Subject: Disable fetching of all field trials
 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
-@@ -122,9 +122,7 @@ public abstract class ChromeFeatureList {
+@@ -123,9 +123,7 @@ public abstract class ChromeFeatureList {
       *   the specified parameter does not exist.
       */
      public static String getFieldTrialParamByFeature(String featureName, String paramName) {
@@ -21,7 +21,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      }
  
      /**
-@@ -141,10 +139,7 @@ public abstract class ChromeFeatureList {
+@@ -142,10 +140,7 @@ public abstract class ChromeFeatureList {
       */
      public static int getFieldTrialParamByFeatureAsInt(
              String featureName, String paramName, int defaultValue) {
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      }
  
      /**
-@@ -161,10 +156,7 @@ public abstract class ChromeFeatureList {
+@@ -162,10 +157,7 @@ public abstract class ChromeFeatureList {
       */
      public static double getFieldTrialParamByFeatureAsDouble(
              String featureName, String paramName, double defaultValue) {
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      }
  
      /**
-@@ -181,10 +173,7 @@ public abstract class ChromeFeatureList {
+@@ -196,10 +188,7 @@ public abstract class ChromeFeatureList {
       */
      public static boolean getFieldTrialParamByFeatureAsBoolean(
              String featureName, String paramName, boolean defaultValue) {
@@ -56,11 +56,11 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 +        return defaultValue;
      }
  
-     /** Alphabetical: */
+     /* Alphabetical: */
 diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 --- a/components/variations/service/variations_service.cc
 +++ b/components/variations/service/variations_service.cc
-@@ -239,17 +239,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -240,17 +240,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
  // Variations seed fetching is only enabled in official Chrome builds, if a URL
  // is specified on the command line, and for testing.
  bool IsFetchingEnabled() {

+ 8 - 8
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
-@@ -53,16 +53,6 @@ const base::Feature kAllowAllSitesToInitiateMirroring{
-     "AllowAllSitesToInitiateMirroring", base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -50,16 +50,6 @@ const base::Feature kCastToMeetingFromCastDialog{
+     "CastToMeetingFromCastDialog", base::FEATURE_DISABLED_BY_DEFAULT};
  #endif  // !defined(OS_ANDROID)
  
 -#if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
@@ -26,10 +26,10 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
 -#endif  // defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
 -
  bool MediaRouterEnabled(content::BrowserContext* context) {
- #if !defined(OFFICIAL_BUILD) && !defined(OS_ANDROID)
+ #if !defined(OS_ANDROID)
    if (!base::FeatureList::IsEnabled(kMediaRouter))
-@@ -70,7 +60,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
- #endif  // !defined(OFFICIAL_BUILD) && !defined(OS_ANDROID)
+@@ -67,7 +57,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+ #endif  // !defined(OS_ANDROID)
  
  #if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
 -  static base::NoDestructor<base::flat_map<content::BrowserContext*, bool>>
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
        stored_pref_values;
  
    // If the Media Router was already enabled or disabled for |context|, then it
-@@ -91,7 +81,8 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+@@ -88,7 +78,8 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
  
    // The component extension cannot be loaded in guest sessions.
    // TODO(crbug.com/756243): Figure out why.
@@ -50,7 +50,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -327,7 +327,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -323,7 +323,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        media_router::prefs::kMediaRouterEnableCloudServices, false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(
@@ -62,7 +62,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
-@@ -455,7 +455,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -448,7 +448,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

+ 1 - 1
build/patches/Disable-metrics-collection-for-NTP-tiles.patch

@@ -75,7 +75,7 @@ diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
      "most_visited_sites.cc",
      "most_visited_sites.h",
      "ntp_tile.cc",
-@@ -85,7 +83,6 @@ source_set("unit_tests") {
+@@ -84,7 +82,6 @@ source_set("unit_tests") {
      "custom_links_manager_impl_unittest.cc",
      "custom_links_store_unittest.cc",
      "icon_cacher_impl_unittest.cc",

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

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

@@ -5,9 +5,20 @@ Subject: Disable omission of URL elements in Omnibox
 Disable all omissions because they are used throughout the code without
 a corresponding user option to individually disable their usage.
 ---
- components/url_formatter/url_formatter.cc | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ .../toolbar/chrome_location_bar_model_delegate.cc  |  2 +-
+ components/url_formatter/url_formatter.cc          | 14 +++++++-------
+ 2 files changed, 8 insertions(+), 8 deletions(-)
 
+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
+@@ -263,5 +263,5 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
+ // static
+ void ChromeLocationBarModelDelegate::RegisterProfilePrefs(
+     user_prefs::PrefRegistrySyncable* registry) {
+-  registry->RegisterBooleanPref(omnibox::kPreventUrlElisionsInOmnibox, false);
++  registry->RegisterBooleanPref(omnibox::kPreventUrlElisionsInOmnibox, true);
+ }
 diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
 --- a/components/url_formatter/url_formatter.cc
 +++ b/components/url_formatter/url_formatter.cc

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

Різницю між файлами не показано, бо вона завелика
+ 148 - 145
build/patches/Disable-safe-browsing.patch


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

@@ -3,23 +3,35 @@ Date: Tue, 25 Dec 2018 16:19:51 -0500
 Subject: Disable seed-based field trials
 
 ---
- components/variations/service/variations_field_trial_creator.cc | 2 ++
- 1 file changed, 2 insertions(+)
+ .../variations/service/variations_field_trial_creator.cc      | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
 
 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
-@@ -524,8 +524,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -517,8 +517,8 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+   // instance is set.
+   feature_list->RegisterExtraFeatureOverrides(extra_overrides);
+ 
+-  bool used_testing_config = false;
+ #if BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
++  bool used_testing_config = false;
+   if (!command_line->HasSwitch(switches::kDisableFieldTrialTestingConfig) &&
+       !command_line->HasSwitch(::switches::kForceFieldTrials) &&
+       !command_line->HasSwitch(switches::kVariationsServerURL)) {
+@@ -532,10 +532,12 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+   }
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
    bool used_seed = false;
-   if (!used_testing_config) {
 +#if defined(FIELDTRIAL_SEED_ENABLED)
-     used_seed = CreateTrialsFromSeed(*low_entropy_provider, feature_list.get(),
-                                      safe_seed_manager);
-+#endif
+   if (!used_testing_config) {
+     used_seed = CreateTrialsFromSeed(low_entropy_provider.get(),
+                                      feature_list.get(), safe_seed_manager);
    }
++#endif  // BUILDFLAG(FIELDTRIAL_SEED_ENABLED)
  
    platform_field_trials->SetupFeatureControllingFieldTrials(
+       used_seed, low_entropy_provider.get(), feature_list.get());
 -- 
 2.17.1
 

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

@@ -15,7 +15,7 @@ leak information through the TextClassifier set by OEM, if any
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -502,7 +502,7 @@ const base::Feature kDownloadProgressInfoBar{"DownloadProgressInfoBar",
+@@ -518,7 +518,7 @@ const base::Feature kDownloadProgressInfoBar{"DownloadProgressInfoBar",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kDownloadFileProvider{"DownloadFileProvider",

+ 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
-@@ -626,7 +626,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
+@@ -662,7 +662,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
-@@ -636,7 +636,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
+@@ -672,7 +672,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/features/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",

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

@@ -17,7 +17,7 @@ Revert "[Text Fragment] Unflag fragment directive removal."
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -5164,6 +5164,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5282,6 +5282,7 @@ const FeatureEntry kFeatureEntries[] = {
           kHappinessTrackingSurveysForDesktopDevToolsIssuesCookiesSameSiteDescription,
       kOsDesktop,
       FEATURE_VALUE_TYPE(
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -2586,7 +2586,7 @@
+@@ -2755,7 +2755,7 @@
    {
      "name": "ev-details-in-page-info",
      "owners": [ "cthomp" ],
@@ -53,17 +53,17 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
 @@ -273,6 +273,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
-     {wf::EnableBackgroundFetch, features::kBackgroundFetch},
-     {wf::EnableForcedColors, features::kForcedColors},
-     {wf::EnableFractionalScrollOffsets, features::kFractionalScrollOffsets},
+     {wf::EnableMouseSubframeNoImplicitCapture,
+      features::kMouseSubframeNoImplicitCapture},
+     {wf::EnableNeverSlowMode, features::kNeverSlowMode},
 +    // will set the TextFragmentIdentifiers runtime feature
- #if defined(OS_ANDROID)
-     {wf::EnableGetDisplayMedia, features::kUserMediaScreenCapturing},
- #endif
+     {wf::EnableNotificationContentImage, features::kNotificationContentImage,
+      kSetOnlyIfOverridden},
+     {wf::EnableParseUrlProtocolHandler,
 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
-@@ -301,7 +301,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
+@@ -309,7 +309,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
-@@ -4384,6 +4384,10 @@ void Document::SetURL(const KURL& url) {
+@@ -4324,6 +4324,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();
-@@ -4397,6 +4401,7 @@ void Document::SetURL(const KURL& url) {
+@@ -4337,6 +4341,7 @@ void Document::SetURL(const KURL& url) {
      else
        new_url.SetFragmentIdentifier(fragment.Substring(0, start_pos));
    }
@@ -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
-@@ -1973,8 +1973,7 @@
+@@ -2020,8 +2020,7 @@
      },
      {
        name: "TextFragmentIdentifiers",

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

@@ -10,7 +10,7 @@ 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
-@@ -591,7 +591,7 @@ void RegisterProfilePrefsForMigration(
+@@ -632,7 +632,7 @@ void RegisterProfilePrefsForMigration(
  
    registry->RegisterDictionaryPref(kObservedSessionTime);
  

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

@@ -9,15 +9,15 @@ 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
-@@ -448,7 +448,7 @@ const base::Feature kUseR16Texture{"use-r16-texture",
+@@ -453,7 +453,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",
 -                                     base::FEATURE_ENABLED_BY_DEFAULT};
 +                                     base::FEATURE_DISABLED_BY_DEFAULT};
  
- #if (defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
- // Enable vaapi video decoding on linux. This is already enabled by default on
+ // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is
+ // complete.
 -- 
 2.17.1
 

+ 4 - 4
build/patches/Disable-update-scheduler.patch

@@ -3,12 +3,12 @@ Date: Sat, 27 Oct 2018 17:54:01 +0200
 Subject: Disable update scheduler
 
 ---
- .../chrome/browser/component_updater/UpdateScheduler.java     | 4 +---
+ .../components/component_updater/UpdateScheduler.java         | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
+diff --git a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
+--- a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
++++ b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
 @@ -34,9 +34,7 @@ public class UpdateScheduler {
  
      @CalledByNative

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

@@ -10,7 +10,7 @@ Subject: Do not compile QR code sharing
 diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
 +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
-@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.profiles.Profile;
+@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.share.ChromeShareExtras;
  import org.chromium.chrome.browser.share.link_to_text.LinkToTextCoordinator;
  import org.chromium.chrome.browser.share.long_screenshots.LongScreenshotsCoordinator;
@@ -18,8 +18,8 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s
  import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator;
  import org.chromium.chrome.browser.share.send_tab_to_self.SendTabToSelfCoordinator;
  import org.chromium.chrome.browser.share.share_sheet.ShareSheetPropertyModelBuilder.ContentType;
-@@ -240,10 +239,6 @@ class ChromeProvidedSharingOptionsProvider {
-                 && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_HIGHLIGHTS_ANDROID)) {
+@@ -241,10 +240,6 @@ class ChromeProvidedSharingOptionsProvider {
+                         ChromeFeatureList.PREEMPTIVE_LINK_TO_TEXT_GENERATION)) {
              mOrderedFirstPartyOptions.add(createHighlightsFirstPartyOption());
          }
 -        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s
          if (UserPrefs.get(Profile.getLastUsedRegularProfile()).getBoolean(Pref.PRINTING_ENABLED)) {
              mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption());
          }
-@@ -390,18 +385,6 @@ class ChromeProvidedSharingOptionsProvider {
+@@ -391,18 +386,6 @@ class ChromeProvidedSharingOptionsProvider {
                  .build();
      }
  
@@ -51,10 +51,10 @@ 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
-@@ -16,24 +16,6 @@ share_java_sources = [
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/LongScreenshotsEntry.java",
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/LongScreenshotsTabService.java",
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/LongScreenshotsTabServiceFactory.java",
+@@ -19,24 +19,6 @@ share_java_sources = [
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/long_screenshots/bitmap_generation/LongScreenshotsEntry.java",
+   "//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/qrcode/QRCodeGenerationRequest.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeCoordinator.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialog.java",

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

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

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

@@ -9,7 +9,7 @@ Subject: Do not store passwords by default
 diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
 --- a/components/password_manager/core/browser/password_manager.cc
 +++ b/components/password_manager/core/browser/password_manager.cc
-@@ -207,10 +207,10 @@ FormData SimplifiedFormDataFromFormStructure(
+@@ -208,10 +208,10 @@ FormData SimplifiedFormDataFromFormStructure(
  void PasswordManager::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

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

+ 0 - 23
build/patches/Enable-app-overflow-menu-icons-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Thu, 18 Feb 2021 22:10:11 +0100
-Subject: Enable app overflow menu icons by default
-
----
- chrome/browser/flags/android/chrome_feature_list.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-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
-@@ -647,7 +647,7 @@ const base::Feature kTabToGTSAnimation{"TabToGTSAnimation",
-                                        base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kTabbedAppOverflowMenuIcons{
--    "TabbedAppOverflowMenuIcons", base::FEATURE_DISABLED_BY_DEFAULT};
-+    "TabbedAppOverflowMenuIcons", base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kTabbedAppOverflowMenuRegroup{
-     "TabbedAppOverflowMenuRegroup", base::FEATURE_DISABLED_BY_DEFAULT};
--- 
-2.17.1
-

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

@@ -11,7 +11,7 @@ Unexpire #darken-websites-checkbox-in-themes-setting
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -976,7 +976,7 @@
+@@ -1099,7 +1099,7 @@
    {
      "name": "disable-keepalive-fetch",
      "owners": [ "yhirano" ],
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -490,7 +490,7 @@ const base::Feature kContextualSearchTranslations{
+@@ -506,7 +506,7 @@ const base::Feature kContextualSearchTranslations{
      "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kDarkenWebsitesCheckboxInThemesSetting{

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

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

+ 0 - 123
build/patches/Enable-legacy-TLS-interstitital-warning.patch

@@ -1,123 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Fri, 17 Jul 2020 09:28:36 +0200
-Subject: Enable legacy TLS interstitital warning
-
-Expose show-legacy-tls-warnings flag on Android as well
----
- chrome/browser/about_flags.cc                 |  2 --
- chrome/browser/ssl/tls_deprecation_config.cc  | 22 +------------------
- components/security_state/core/features.cc    |  2 +-
- .../network/legacy_tls_config_distributor.cc  | 21 +-----------------
- services/network/ssl_config_service_mojo.cc   |  7 ++----
- 5 files changed, 5 insertions(+), 49 deletions(-)
-
-diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
---- a/chrome/browser/about_flags.cc
-+++ b/chrome/browser/about_flags.cc
-@@ -6167,11 +6167,9 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kElasticOverscrollWin)},
- #endif
- 
--#if !defined(OS_ANDROID)
-     {"show-legacy-tls-warnings", flag_descriptions::kLegacyTLSWarningsName,
-      flag_descriptions::kLegacyTLSWarningsDescription, kOsDesktop,
-      FEATURE_VALUE_TYPE(security_state::features::kLegacyTLSWarnings)},
--#endif
- 
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-     {"enable-assistant-aec", flag_descriptions::kEnableGoogleAssistantAecName,
-diff --git a/chrome/browser/ssl/tls_deprecation_config.cc b/chrome/browser/ssl/tls_deprecation_config.cc
---- a/chrome/browser/ssl/tls_deprecation_config.cc
-+++ b/chrome/browser/ssl/tls_deprecation_config.cc
-@@ -58,27 +58,7 @@ void SetRemoteTLSDeprecationConfig(const std::string& binary_config) {
- }
- 
- bool ShouldSuppressLegacyTLSWarning(const GURL& url) {
--  if (!url.has_host() || !url.SchemeIsCryptographic())
--    return false;
--
--  auto* proto = TLSDeprecationConfigSingleton::GetInstance().GetProto();
--  // If the config is not yet loaded, we err on the side of not showing warnings
--  // for any sites.
--  if (!proto)
--    return true;
--
--  // Convert bytes from crypto::SHA256 so we can compare to the proto contents.
--  std::string host_hash_bytes = crypto::SHA256HashString(url.host_piece());
--  std::string host_hash = base::ToLowerASCII(
--      base::HexEncode(host_hash_bytes.c_str(), host_hash_bytes.size()));
--  const auto& control_site_hashes = proto->control_site_hashes();
--
--  // Perform binary search on the sorted list of control site hashes to check
--  // if the input URL's hostname is included.
--  auto lower = std::lower_bound(control_site_hashes.begin(),
--                                control_site_hashes.end(), host_hash);
--
--  return lower != control_site_hashes.end() && *lower == host_hash;
-+  return false;
- }
- 
- void ResetTLSDeprecationConfigForTesting() {
-diff --git a/components/security_state/core/features.cc b/components/security_state/core/features.cc
---- a/components/security_state/core/features.cc
-+++ b/components/security_state/core/features.cc
-@@ -8,7 +8,7 @@ namespace security_state {
- namespace features {
- 
- const base::Feature kLegacyTLSWarnings{"LegacyTLSWarnings",
--                                       base::FEATURE_DISABLED_BY_DEFAULT};
-+                                       base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kSafetyTipUI{"SafetyTip", base::FEATURE_ENABLED_BY_DEFAULT};
- 
-diff --git a/services/network/legacy_tls_config_distributor.cc b/services/network/legacy_tls_config_distributor.cc
---- a/services/network/legacy_tls_config_distributor.cc
-+++ b/services/network/legacy_tls_config_distributor.cc
-@@ -51,26 +51,7 @@ scoped_refptr<LegacyTLSExperimentConfig> LegacyTLSExperimentConfig::Parse(
- 
- bool LegacyTLSExperimentConfig::ShouldSuppressLegacyTLSWarning(
-     const std::string& hostname) const {
--  // Match on eTLD+1 rather than full hostname (to account for subdomains and
--  // redirects). If no registrable domain is found, default to using the
--  // hostname as-is.
--  auto domain = net::registry_controlled_domains::GetDomainAndRegistry(
--      hostname, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
--  if (domain.empty())
--    domain = hostname;
--
--  // Convert bytes from crypto::SHA256 so we can compare to the proto contents.
--  std::string host_hash_bytes = crypto::SHA256HashString(domain);
--  std::string host_hash = base::ToLowerASCII(
--      base::HexEncode(host_hash_bytes.data(), host_hash_bytes.size()));
--  const auto& control_site_hashes = proto_.control_site_hashes();
--
--  // Perform binary search on the sorted list of control site hashes to check
--  // if the input URL's hostname is included.
--  auto lower = std::lower_bound(control_site_hashes.begin(),
--                                control_site_hashes.end(), host_hash);
--
--  return lower != control_site_hashes.end() && *lower == host_hash;
-+  return false;
- }
- 
- LegacyTLSConfigDistributor::LegacyTLSConfigDistributor() = default;
-diff --git a/services/network/ssl_config_service_mojo.cc b/services/network/ssl_config_service_mojo.cc
---- a/services/network/ssl_config_service_mojo.cc
-+++ b/services/network/ssl_config_service_mojo.cc
-@@ -120,11 +120,8 @@ bool SSLConfigServiceMojo::CanShareConnectionWithClientCerts(
- 
- bool SSLConfigServiceMojo::ShouldSuppressLegacyTLSWarning(
-     const std::string& hostname) const {
--  // If the config is not yet loaded, we err on the side of not showing warnings
--  // for any sites.
--  if (!legacy_tls_config_)
--    return true;
--  return legacy_tls_config_->ShouldSuppressLegacyTLSWarning(hostname);
-+  // never suppress any warning
-+  return false;
- }
- 
- void SSLConfigServiceMojo::OnNewCRLSet(scoped_refptr<net::CRLSet> crl_set) {
--- 
-2.17.1
-

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

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

@@ -9,7 +9,7 @@ Subject: Enable user-agent freeze by default
 diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
 --- a/third_party/blink/common/features.cc
 +++ b/third_party/blink/common/features.cc
-@@ -53,7 +53,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
+@@ -56,7 +56,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
  
  // Freezes the user-agent as part of https://github.com/WICG/ua-client-hints.
  const base::Feature kFreezeUserAgent{"FreezeUserAgent",

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

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

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

@@ -11,7 +11,7 @@ Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment
 diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
 --- a/components/omnibox/browser/autocomplete_result.cc
 +++ b/components/omnibox/browser/autocomplete_result.cc
-@@ -68,7 +68,8 @@ struct MatchGURLHash {
+@@ -69,7 +69,8 @@ struct MatchGURLHash {
  // static
  size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
  #if (defined(OS_ANDROID))

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

@@ -21,7 +21,7 @@ Send a random key press to circumvent idle status detection
 diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/renderer/core/dom/build.gni
 --- a/third_party/blink/renderer/core/dom/build.gni
 +++ b/third_party/blink/renderer/core/dom/build.gni
-@@ -165,6 +165,8 @@ blink_core_sources_dom = [
+@@ -167,6 +167,8 @@ blink_core_sources_dom = [
    "global_event_handlers.h",
    "icon_url.cc",
    "icon_url.h",
@@ -33,7 +33,7 @@ diff --git a/third_party/blink/renderer/core/dom/build.gni b/third_party/blink/r
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -273,6 +273,7 @@
+@@ -275,6 +275,7 @@
  #include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h"
  #include "third_party/blink/renderer/core/page/scrolling/scroll_state_callback.h"
  #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
@@ -41,7 +41,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
  #include "third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h"
  #include "third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h"
-@@ -338,6 +339,8 @@
+@@ -340,6 +341,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h"
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  
@@ -50,7 +50,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  static WeakDocumentSet& liveDocumentSet();
-@@ -6896,6 +6899,61 @@ void Document::setAllowDeclarativeShadowRoots(bool val) {
+@@ -6850,6 +6853,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);
-@@ -6948,6 +7006,10 @@ void Document::FinishedParsing() {
+@@ -6902,6 +6960,10 @@ void Document::FinishedParsing() {
  
      frame->Loader().FinishedParsing();
  
@@ -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
-@@ -1695,6 +1695,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1721,6 +1721,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  

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

@@ -20,7 +20,7 @@ Subject: Modify default preferences
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
-@@ -360,7 +360,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -362,7 +362,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
  #endif
@@ -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
-@@ -1364,7 +1364,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1264,7 +1264,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -68,7 +68,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -248,7 +248,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -247,7 +247,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -121,7 +121,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -990,10 +990,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -975,10 +975,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -133,9 +133,9 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
    }
  
-@@ -1576,8 +1573,8 @@ void AutofillManager::Reset() {
+@@ -1556,8 +1553,8 @@ void AutofillManager::Reset() {
    credit_card_access_manager_ = std::make_unique<CreditCardAccessManager>(
-       driver(), client_, personal_data_, credit_card_form_event_logger_.get());
+       driver(), client(), personal_data_, credit_card_form_event_logger_.get());
  
 -  has_logged_autofill_enabled_ = false;
 -  has_logged_address_suggestions_count_ = false;
@@ -159,7 +159,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
 diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
 --- a/components/bookmarks/browser/bookmark_utils.cc
 +++ b/components/bookmarks/browser/bookmark_utils.cc
-@@ -442,12 +442,12 @@ bool DoesBookmarkContainWords(const base::string16& title,
+@@ -441,12 +441,12 @@ bool DoesBookmarkContainWords(const base::string16& title,
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kShowBookmarkBar,
@@ -173,11 +173,11 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
 +      false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(
-       prefs::kShowManagedBookmarksInBookmarkBar,
+       prefs::kShowReadingListInBookmarkBar, true,
 diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc
 --- a/components/safe_browsing/core/common/safe_browsing_prefs.cc
 +++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc
-@@ -192,9 +192,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -196,9 +196,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(

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

@@ -39,7 +39,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,6 +39,13 @@ import org.chromium.ui.text.SpanApplier;
+@@ -42,6 +42,13 @@ import org.chromium.ui.text.SpanApplier;
  
  import org.chromium.base.Log;
  
@@ -53,7 +53,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.
   */
-@@ -55,6 +62,13 @@ public class PrivacySettings
+@@ -58,6 +65,13 @@ public class PrivacySettings
      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";
      private static final String PREF_PROXY_OPTIONS = "proxy";
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String[] NEW_PRIVACY_PREFERENCE_ORDER = {PREF_CLEAR_BROWSING_DATA,
              PREF_ALWAYS_INCOGNITO,
              PREF_INCOGNITO_TAB_HISTORY_ENABLED,
-@@ -62,11 +76,19 @@ public class PrivacySettings
+@@ -65,11 +79,19 @@ public class PrivacySettings
              PREF_CLOSE_TABS_ON_EXIT,
              PREF_SECURE_DNS, PREF_DO_NOT_TRACK, PREF_PRIVACY_SANDBOX,
              PREF_ALLOW_CUSTOM_TAB_INTENTS,
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          PrivacyPreferencesManagerImpl privacyPrefManager =
-@@ -93,6 +115,29 @@ public class PrivacySettings
+@@ -108,6 +130,29 @@ public class PrivacySettings
  
          mManagedPreferenceDelegate = createManagedPreferenceDelegate();
  
@@ -118,7 +118,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);
-@@ -125,6 +170,11 @@ public class PrivacySettings
+@@ -140,6 +185,11 @@ public class PrivacySettings
          } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
              UserPrefs.get(Profile.getLastUsedRegularProfile())
                      .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -130,7 +130,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);
-@@ -140,6 +190,16 @@ public class PrivacySettings
+@@ -155,6 +205,16 @@ public class PrivacySettings
          return true;
      }
  
@@ -147,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onResume() {
          super.onResume();
-@@ -150,7 +210,7 @@ public class PrivacySettings
+@@ -165,7 +225,7 @@ public class PrivacySettings
       * Updates the summaries for several preferences.
       */
      public void updateSummaries() {

+ 26 - 26
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
-@@ -2301,6 +2301,7 @@ static_library("browser") {
+@@ -2311,6 +2311,7 @@ static_library("browser") {
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/serial:switches",
      "//services/device/public/cpp/usb",
@@ -67,7 +67,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -171,6 +171,7 @@
+@@ -173,6 +173,7 @@
  #include "services/media_session/public/cpp/features.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "storage/browser/quota/quota_features.h"
  #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
  #include "third_party/blink/public/common/features.h"
-@@ -2643,6 +2644,18 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2674,6 +2675,18 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
       flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
       SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
@@ -97,7 +97,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
-@@ -219,6 +219,7 @@ source_set("browser") {
+@@ -218,6 +218,7 @@ source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -108,7 +108,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
-@@ -214,6 +214,7 @@
+@@ -212,6 +212,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"
@@ -116,7 +116,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"
-@@ -3184,6 +3185,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3248,6 +3249,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisableBreakpad,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -129,7 +129,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
 diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 --- a/content/child/BUILD.gn
 +++ b/content/child/BUILD.gn
-@@ -103,6 +103,7 @@ target(link_target_type, "child") {
+@@ -104,6 +104,7 @@ target(link_target_type, "child") {
      "//third_party/blink/public/common",
      "//third_party/blink/public/strings",
      "//third_party/ced",
@@ -149,7 +149,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #if defined(OS_ANDROID)
  #include "base/android/build_info.h"
  #endif
-@@ -540,6 +542,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -545,6 +547,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    // They're moved here to distinguish them from actual base checks
    WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
  
@@ -166,7 +166,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -199,6 +199,9 @@ class WebRuntimeFeatures {
+@@ -209,6 +209,9 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetCurrentBrowsingContextMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
@@ -179,7 +179,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 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
-@@ -42,6 +42,7 @@
+@@ -43,6 +43,7 @@
  #include "base/macros.h"
  #include "base/metrics/histogram_functions.h"
  #include "base/optional.h"
@@ -187,7 +187,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/scroll_snap_data.h"
-@@ -2433,6 +2434,23 @@ void Document::UpdateStyleAndLayoutTree() {
+@@ -2389,6 +2390,23 @@ void Document::UpdateStyleAndLayoutTreeForThisDocument() {
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this);
  #endif
@@ -214,7 +214,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
-@@ -442,6 +442,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -444,6 +444,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -225,7 +225,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;
-@@ -1970,6 +1974,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -2001,6 +2005,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -238,7 +238,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
-@@ -2057,6 +2057,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2075,6 +2075,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -250,14 +250,14 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -2074,6 +2079,9 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -2092,6 +2097,9 @@ FloatRect Element::GetBoundingClientRectNoLifecycleUpdate() const {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
 +  if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
 +    result.Scale(GetDocument().GetNoiseFactorX(), GetDocument().GetNoiseFactorY());
 +  }
-   return DOMRect::FromFloatRect(result);
+   return result;
  }
  
 diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
@@ -332,7 +332,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_
 diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
 +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
-@@ -26,6 +26,7 @@
+@@ -22,6 +22,7 @@
  #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"
@@ -340,7 +340,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_c
  
  namespace blink {
  
-@@ -1772,6 +1773,12 @@ ImageData* BaseRenderingContext2D::getImageDataInternal(
+@@ -1978,6 +1979,12 @@ 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
-@@ -974,9 +974,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -964,9 +964,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    else
      direction = ToTextDirection(GetState().GetDirection(), canvas());
  
@@ -372,11 +372,11 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
 +  return text_metrics;
  }
  
- void CanvasRenderingContext2D::DrawTextInternal(
+ void CanvasRenderingContext2D::fillFormattedText(
 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
-@@ -1602,7 +1602,9 @@ component("platform") {
+@@ -1615,7 +1615,9 @@ component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -387,9 +387,9 @@ 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",
-@@ -1666,6 +1668,7 @@ component("platform") {
+@@ -1681,6 +1683,7 @@ component("platform") {
+     "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
-     "//third_party/blink/renderer/platform/wtf:buildflags",
      "//third_party/ced",
 +    "//third_party/ungoogled:switches",
      "//third_party/emoji-segmenter",
@@ -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
-@@ -643,4 +643,16 @@ void WebRuntimeFeatures::EnableCSSColorSchemeUARendering(bool enable) {
+@@ -671,4 +671,16 @@ void WebRuntimeFeatures::EnableCSSColorSchemeUARendering(bool enable) {
    RuntimeEnabledFeatures::SetCSSColorSchemeUARenderingEnabled(enable);
  }
  
@@ -461,7 +461,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  namespace blink {
  
  scoped_refptr<StaticBitmapImage> StaticBitmapImage::Create(
-@@ -79,4 +84,154 @@ void StaticBitmapImage::DrawHelper(
+@@ -81,4 +86,154 @@ void StaticBitmapImage::DrawHelper(
                          WebCoreClampingModeToSkiaRectConstraint(clamp_mode));
  }
  
@@ -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
-@@ -863,6 +863,15 @@
+@@ -919,6 +919,15 @@
        name: "FeaturePolicyReporting",
        status: "experimental"
      },

+ 2 - 2
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
-@@ -571,6 +571,7 @@ public class ExternalNavigationHandler {
+@@ -572,6 +572,7 @@ public class ExternalNavigationHandler {
              startActivity(intent, false, mDelegate);
              return OverrideUrlLoadingResult.forExternalIntent();
          }
@@ -17,7 +17,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component
      }
  
      private static void loadUrlWithReferrer(
-@@ -1229,6 +1230,13 @@ public class ExternalNavigationHandler {
+@@ -1230,6 +1231,13 @@ public class ExternalNavigationHandler {
                      OverrideUrlLoadingAsyncActionType.UI_GATING_BROWSER_NAVIGATION);
          }
  

+ 55 - 33
build/patches/Remove-SMS-integration.patch

@@ -3,16 +3,42 @@ Date: Sun, 3 Nov 2019 08:22:29 +0100
 Subject: Remove SMS integration
 
 ---
- .../content/browser/sms/SmsProviderGms.java   |  9 +---
+ .../content/browser/sms/SmsProviderGms.java   | 21 +--------
  .../browser/sms/SmsUserConsentReceiver.java   | 46 ++-----------------
- .../browser/sms/SmsVerificationReceiver.java  | 41 ++++-------------
+ .../browser/sms/SmsVerificationReceiver.java  | 37 ++++-----------
  .../content/browser/sms/Wrappers.java         | 28 +----------
- 4 files changed, 14 insertions(+), 110 deletions(-)
+ 4 files changed, 16 insertions(+), 116 deletions(-)
 
 diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java
 --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java
-@@ -123,13 +123,6 @@ public class SmsProviderGms {
+@@ -4,9 +4,6 @@
+ 
+ package org.chromium.content.browser.sms;
+ 
+-import com.google.android.gms.common.ConnectionResult;
+-import com.google.android.gms.common.GoogleApiAvailability;
+-
+ import org.chromium.base.ContextUtils;
+ import org.chromium.base.Log;
+ import org.chromium.base.annotations.CalledByNative;
+@@ -47,15 +44,6 @@ public class SmsProviderGms {
+ 
+         mContext = new Wrappers.WebOTPServiceContext(ContextUtils.getApplicationContext(), this);
+ 
+-        boolean isVerificationBackendAvailable =
+-                GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
+-                        mContext, MIN_GMS_VERSION_NUMBER_WITH_CODE_BROWSER_BACKEND)
+-                == ConnectionResult.SUCCESS;
+-        if (isVerificationBackendAvailable
+-                && (mBackend == GmsBackend.AUTO || mBackend == GmsBackend.VERIFICATION)) {
+-            mVerificationReceiver = new SmsVerificationReceiver(this, mContext);
+-        }
+-
+         if (mBackend == GmsBackend.AUTO || mBackend == GmsBackend.USER_CONSENT) {
+             mUserConsentReceiver = new SmsUserConsentReceiver(this, mContext);
+         }
+@@ -133,13 +121,6 @@ public class SmsProviderGms {
      }
  
      public Wrappers.SmsRetrieverClientWrapper getClient() {
@@ -26,7 +52,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
          return mClient;
      }
  
-@@ -151,4 +144,4 @@ public class SmsProviderGms {
+@@ -161,4 +142,4 @@ public class SmsProviderGms {
          void onCancel(long nativeSmsProviderGms);
          void onNotAvailable(long nativeSmsProviderGms);
      }
@@ -50,7 +76,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
  import org.chromium.base.Log;
  import org.chromium.ui.base.WindowAndroid;
  
-@@ -34,28 +27,11 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -34,29 +27,12 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
          mDestroyed = false;
          mProvider = provider;
          mContext = context;
@@ -73,13 +99,14 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
      }
  
      public void destroy() {
+         if (mDestroyed) return;
          if (DEBUG) Log.d(TAG, "Destroying SmsUserConsentReceiver.");
          mDestroyed = true;
 -        mContext.unregisterReceiver(this);
      }
  
      @Override
-@@ -66,7 +42,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -67,7 +43,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
              return;
          }
  
@@ -88,7 +115,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
              return;
          }
  
-@@ -100,28 +76,14 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -101,28 +77,14 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
                  if (DEBUG) Log.d(TAG, "Timeout");
                  mProvider.onTimeout();
                  break;
@@ -140,17 +167,10 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
  import org.chromium.base.Log;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.ui.base.WindowAndroid;
-@@ -54,35 +44,18 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
-         mDestroyed = false;
-         mProvider = provider;
-         mContext = context;
--
--        // A broadcast receiver is registered upon the creation of this class which happens when the
--        // SMS Retriever API or SMS Browser Code API is used for the first time since chrome last
--        // restarted (which, on android, happens frequently). The broadcast receiver is fairly
--        // lightweight (e.g. it responds quickly without much computation). If this broadcast
--        // receiver becomes more heavyweight, we should make this registration expire after the SMS
--        // message is received.
+@@ -61,27 +51,18 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
+         // lightweight (e.g. it responds quickly without much computation). If this broadcast
+         // receiver becomes more heavyweight, we should make this registration expire after the SMS
+         // message is received.
 -        if (DEBUG) Log.i(TAG, "Registering intent filters.");
 -        IntentFilter filter = new IntentFilter();
 -        filter.addAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION);
@@ -163,21 +183,22 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
      }
  
      public void destroy() {
+-        if (mDestroyed) return;
++        /*if (mDestroyed) return;
          if (DEBUG) Log.d(TAG, "Destroying SmsVerificationReceiver.");
          mDestroyed = true;
 -        mContext.unregisterReceiver(this);
++        mContext.unregisterReceiver(this); */
      }
  
      @Override
      public void onReceive(Context context, Intent intent) {
-         if (DEBUG) Log.d(TAG, "Received something!");
+-        if (DEBUG) Log.d(TAG, "Received something!");
++        /*if (DEBUG) Log.d(TAG, "Received something!");
  
--        if (mDestroyed) {
-+        /*if (mDestroyed) {
+         if (mDestroyed) {
              return;
-         }
- 
-@@ -113,7 +86,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
+@@ -114,7 +95,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
                  if (DEBUG) Log.d(TAG, "Timeout");
                  mProvider.onTimeout();
                  break;
@@ -186,7 +207,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
      }
  
      public void onPermissionDone(WindowAndroid window, int resultCode) {
-@@ -133,7 +106,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
+@@ -134,7 +115,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
       * task.
       */
      public void onRetrieverTaskFailure(WindowAndroid window, Exception e) {
@@ -195,23 +216,24 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
          BackendAvailability availability = BackendAvailability.AVAILABLE;
          ApiException exception = (ApiException) e;
          if (exception.getStatusCode() == SmsRetrieverStatusCodes.API_NOT_CONNECTED) {
-@@ -175,18 +148,20 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
+@@ -176,11 +157,12 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
          } else {
              Log.w(TAG, "Unexpected exception", e);
          }
 -        reportBackendAvailability(availability);
-+        reportBackendAvailability(availability);*/
++        reportBackendAvailability(availability); */
 +        Log.w(TAG, "Unexpected exception", e);
      }
  
      public void listen(WindowAndroid window) {
 -        Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient();
-+        /*Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient();
++        /* Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient();
          Task<Void> task = client.startSmsCodeBrowserRetriever();
  
-         task.addOnSuccessListener(
-                 unused -> { this.reportBackendAvailability(BackendAvailability.AVAILABLE); });
-         task.addOnFailureListener((Exception e) -> { this.onRetrieverTaskFailure(window, e); });
+         task.addOnSuccessListener(unused -> {
+@@ -192,7 +174,8 @@ public class SmsVerificationReceiver extends BroadcastReceiver {
+             mProvider.destoryVerificationReceiver();
+         });
  
 -        if (DEBUG) Log.d(TAG, "Installed task");
 +        if (DEBUG) Log.d(TAG, "Installed task"); */
@@ -267,7 +289,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wr
      }
  
      /**
-@@ -77,12 +57,6 @@ class Wrappers {
+@@ -83,12 +63,6 @@ class Wrappers {
  
          @Override
          public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {

Різницю між файлами не показано, бо вона завелика
+ 358 - 209
build/patches/Remove-binary-blob-integrations.patch


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

@@ -9,16 +9,16 @@ 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
-@@ -136,6 +136,8 @@ import org.chromium.chrome.browser.profiles.Profile;
- import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
- import org.chromium.chrome.browser.share.ShareDelegate;
- import org.chromium.chrome.browser.share.ShareDelegateImpl;
+@@ -136,6 +136,8 @@ import org.chromium.chrome.browser.page_info.ChromePageInfoControllerDelegate;
+ import org.chromium.chrome.browser.page_info.ChromePermissionParamsListBuilderDelegate;
+ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
+ import org.chromium.chrome.browser.preferences.Pref;
 +import org.chromium.chrome.browser.suggestions.SuggestionsDependencyFactory;
 +import org.chromium.chrome.browser.suggestions.mostvisited.MostVisitedSites;
- import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
- import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tab.TabHidingType;
-@@ -208,6 +210,8 @@ import org.chromium.url.GURL;
+ import org.chromium.chrome.browser.printing.TabPrinter;
+ import org.chromium.chrome.browser.profiles.Profile;
+ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
+@@ -223,6 +225,8 @@ import org.chromium.url.GURL;
  import org.chromium.url.Origin;
  import org.chromium.webapk.lib.client.WebApkNavigationClient;
  
@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  import java.util.ArrayList;
  import java.util.List;
  import java.util.function.Consumer;
-@@ -252,6 +256,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -275,6 +279,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
      private UmaSessionStats mUmaSessionStats;
      private ContextReporter mContextReporter;
@@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
  
      private boolean mPartnerBrowserRefreshNeeded;
  
-@@ -1243,6 +1248,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1320,6 +1325,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              mCompositorViewHolder = null;
          }
  
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
          onDestroyInternal();
  
          if (mDidAddPolicyChangeListener) {
-@@ -1491,6 +1501,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1597,6 +1607,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          // Defense in depth against the UI being erroneously enabled.
          BookmarkBridge bridge = mBookmarkBridgeSupplier.get();
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 +            mMostVisitedSites =
 +                SuggestionsDependencyFactory.getInstance().createMostVisitedSites(Profile.getLastUsedRegularProfile());
 +        }
-+        mMostVisitedSites.removeBlocklistedUrl(new GURL(tabToBookmark.getOriginalUrl()));
++        mMostVisitedSites.removeBlocklistedUrl(tabToBookmark.getOriginalUrl());	
 +
          if (bridge == null || !bridge.isEditBookmarksEnabled()) {
              assert false;

+ 8 - 7
build/patches/Remove-help-menu-item.patch

@@ -3,25 +3,26 @@ Date: Wed, 27 Jun 2018 01:32:28 +0200
 Subject: Remove help menu item
 
 ---
- chrome/android/java/res/menu/main_menu.xml               | 2 --
+ chrome/android/java/res/menu/main_menu.xml               | 3 ---
  .../org/chromium/chrome/browser/KeyboardShortcuts.java   | 3 ---
  .../org/chromium/chrome/browser/app/ChromeActivity.java  | 9 ---------
  .../chrome/browser/customtabs/BaseCustomTabActivity.java | 2 +-
  .../browser/directactions/MenuDirectActionHandler.java   | 2 --
- 5 files changed, 1 insertion(+), 17 deletions(-)
+ 5 files changed, 1 insertion(+), 18 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
-@@ -111,8 +111,6 @@
+@@ -114,9 +114,6 @@
          <item android:id="@+id/preferences_id"
              android:title="@string/menu_settings"
              android:icon="@drawable/settings_cog" />
 -        <item android:id="@+id/help_id"
 -            android:title="@string/menu_help"
-             android:icon="@drawable/help_outline" />
+-            android:icon="@drawable/help_outline" />
          <item android:id="@+id/enter_vr_id"
              android:title="@string/enter_vr"
+             android:icon="@drawable/vr_headset" />
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
@@ -38,13 +39,13 @@ 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
-@@ -1991,15 +1991,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2142,15 +2142,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
 -        if (id == R.id.help_id) {
 -            String url = currentTab != null ? currentTab.getUrlString() : "";
--            Profile profile = mTabModelSelector.isIncognitoSelected()
+-            Profile profile = getTabModelSelector().isIncognitoSelected()
 -                    ? Profile.getLastUsedRegularProfile().getPrimaryOTRProfile()
 -                    : Profile.getLastUsedRegularProfile();
 -            startHelpAndFeedback(url, "MobileMenuFeedback", profile);
@@ -57,7 +58,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
-@@ -482,7 +482,7 @@ public abstract class BaseCustomTabActivity extends ChromeActivity<BaseCustomTab
+@@ -497,7 +497,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.

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

@@ -0,0 +1,23 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Sat, 3 Apr 2021 23:07:41 +0200
+Subject: Remove offline measurement background task
+
+---
+ .../chrome/browser/init/ProcessInitializationHandler.java       | 2 --
+ 1 file changed, 2 deletions(-)
+
+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
+@@ -418,8 +418,6 @@ public class ProcessInitializationHandler {
+                 () -> VideoTutorialShareHelper.saveUrlsToSharedPrefs());
+         deferredStartupHandler.addDeferredTask(
+                 () -> TosDialogBehaviorSharedPrefInvalidator.refreshSharedPreferenceIfTosSkipped());
+-        deferredStartupHandler.addDeferredTask(
+-                () -> OfflineMeasurementsBackgroundTask.maybeScheduleTaskAndReportMetrics());
+         deferredStartupHandler.addDeferredTask(() -> QueryTileUtils.isQueryTilesEnabledOnNTP());
+     }
+ 
+-- 
+2.17.1
+

Різницю між файлами не показано, бо вона завелика
+ 223 - 223
build/patches/Remove-signin-and-data-saver-integrations.patch


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

@@ -20,27 +20,27 @@ Disable search-ready omnibox by default
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
-@@ -68,6 +68,7 @@ class DropdownItemViewInfoListBuilder {
-     private int mDropdownHeight;
+@@ -66,6 +66,7 @@ class DropdownItemViewInfoListBuilder {
      private boolean mEnableAdaptiveSuggestionsCount;
+     private boolean mEnableNativeVoiceSuggestProvider;
      private boolean mBuiltListHasFullyConcealedElements;
 +    private EditUrlSuggestionProcessor mEditUrlSuggestionProcessor;
  
-     DropdownItemViewInfoListBuilder(AutocompleteController controller) {
-         mPriorityOrderedSuggestionProcessors = new ArrayList<>();
-@@ -98,8 +99,9 @@ class DropdownItemViewInfoListBuilder {
+     DropdownItemViewInfoListBuilder(
+             AutocompleteController controller, @NonNull Supplier<Tab> tabSupplier) {
+@@ -96,8 +97,9 @@ class DropdownItemViewInfoListBuilder {
          final Supplier<BookmarkBridge> bookmarkSupplier = () -> mBookmarkBridge;
  
          mHeaderProcessor = new HeaderProcessor(context, host, delegate);
 -        registerSuggestionProcessor(new EditUrlSuggestionProcessor(
--                context, host, delegate, iconBridgeSupplier, tabSupplier, shareSupplier));
+-                context, host, delegate, iconBridgeSupplier, mActivityTabSupplier, shareSupplier));
 +        mEditUrlSuggestionProcessor = new EditUrlSuggestionProcessor(
-+                context, host, delegate, iconBridgeSupplier, tabSupplier, shareSupplier);
++                context, host, delegate, iconBridgeSupplier, mActivityTabSupplier, shareSupplier);
 +        registerSuggestionProcessor(mEditUrlSuggestionProcessor);
          registerSuggestionProcessor(
                  new AnswerSuggestionProcessor(context, host, textProvider, imageFetcherSupplier));
          registerSuggestionProcessor(
-@@ -235,6 +237,10 @@ class DropdownItemViewInfoListBuilder {
+@@ -224,6 +226,10 @@ class DropdownItemViewInfoListBuilder {
  
      /** Signals that native initialization has completed. */
      void onNativeInitialized() {
@@ -50,11 +50,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest
 +
          mEnableAdaptiveSuggestionsCount =
                  ChromeFeatureList.isEnabled(ChromeFeatureList.OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT);
- 
+         mEnableNativeVoiceSuggestProvider = ChromeFeatureList.isEnabled(
 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
-@@ -3182,6 +3182,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3255,6 +3255,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -67,7 +67,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
-@@ -2034,6 +2034,11 @@
+@@ -2161,6 +2161,11 @@
      //  with neural net palm detection.
      "expiry_milestone": 90
    },
@@ -82,7 +82,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
-@@ -3184,6 +3184,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
+@@ -3325,6 +3325,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
      "process to check the Safe Browsing reputation of URLs without calling "
      "into GmsCore for every URL.";
  
@@ -97,7 +97,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
-@@ -1837,6 +1837,9 @@ extern const char kSafeBrowsingSectionUiAndroidDescription[];
+@@ -1920,6 +1920,9 @@ extern const char kSafeBrowsingSectionUiAndroidDescription[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  
@@ -110,17 +110,17 @@ 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
-@@ -206,6 +206,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
+@@ -211,6 +211,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kReachedCodeProfiler,
      &kReaderModeInCCT,
      &kReengagementNotification,
 +    &kSearchReadyOmniboxFeature,
      &kRelatedSearches,
+     &kRelatedSearchesUi,
      &kSearchEnginePromoExistingDevice,
-     &kSearchEnginePromoNewDevice,
-@@ -586,6 +587,9 @@ const base::Feature kReengagementNotification{
- const base::Feature kRelatedSearches{"RelatedSearches",
-                                      base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -602,6 +603,9 @@ const base::Feature kRelatedSearches{"RelatedSearches",
+ const base::Feature kRelatedSearchesUi{"RelatedSearchesUi",
+                                        base::FEATURE_DISABLED_BY_DEFAULT};
  
 +const base::Feature kSearchReadyOmniboxFeature{
 +    "SearchReadyOmnibox", base::FEATURE_DISABLED_BY_DEFAULT};
@@ -131,8 +131,8 @@ 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
-@@ -104,6 +104,7 @@ extern const base::Feature kReaderModeInCCT;
- extern const base::Feature kRelatedSearches;
+@@ -106,6 +106,7 @@ extern const base::Feature kRelatedSearches;
+ extern const base::Feature kRelatedSearchesUi;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
 +extern const base::Feature kSearchReadyOmniboxFeature;
@@ -142,7 +142,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
-@@ -356,6 +356,7 @@ public abstract class ChromeFeatureList {
+@@ -374,6 +374,7 @@ public abstract class ChromeFeatureList {
      public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT =
              "OmniboxAdaptiveSuggestionsCount";
      public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch";

+ 20 - 20
build/patches/Restore-Simplified-NTP-launch.patch

@@ -28,7 +28,7 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
 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
-@@ -854,6 +854,7 @@ chrome_java_resources = [
+@@ -809,6 +809,7 @@ chrome_java_resources = [
    "java/res/layout/new_tab_page_snippets_expandable_header.xml",
    "java/res/layout/new_tab_page_snippets_expandable_header_with_menu.xml",
    "java/res/layout/new_tab_page_tile_grid_placeholder.xml",
@@ -39,7 +39,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
-@@ -590,6 +590,7 @@ chrome_java_sources = [
+@@ -591,6 +591,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",
@@ -191,15 +191,15 @@ new file mode 100644
 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
-@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer;
- import org.chromium.chrome.browser.explore_sites.ExperimentalExploreSitesSection;
- import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge;
+@@ -38,6 +38,7 @@ import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge;
  import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
+ import org.chromium.chrome.browser.lens.LensEntryPoint;
+ import org.chromium.chrome.browser.lens.LensFeature;
 +import org.chromium.chrome.browser.flags.ChromeFeatureList;
  import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
  import org.chromium.chrome.browser.native_page.ContextMenuManager;
  import org.chromium.chrome.browser.ntp.LogoBridge.Logo;
-@@ -104,6 +105,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -108,6 +109,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
      private UiConfig mUiConfig;
      private CallbackController mCallbackController = new CallbackController();
  
@@ -208,15 +208,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.
-@@ -270,6 +273,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -281,6 +284,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          }
          mNoSearchLogoSpacer = findViewById(R.id.no_search_logo_spacer);
  
 +        initializeShortcuts();
          initializeSearchBoxTextView();
          initializeVoiceSearchButton();
-         initializeLayoutChangeListener();
-@@ -558,10 +562,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+         initializeLensButton();
+@@ -594,10 +598,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() {
@@ -235,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          mSiteSectionViewHolder.itemView.setPadding(
                  0, paddingTop, 0, mSiteSectionViewHolder.itemView.getPaddingBottom());
      }
-@@ -952,6 +962,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -1011,6 +1021,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          return iphCommandBuilder;
      }
  
@@ -306,7 +306,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
-@@ -3728,6 +3728,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3831,6 +3831,9 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE_AND_VALUE(
           switches::kForceShowUpdateMenuItemCustomSummary,
           "Custom Summary")},
@@ -319,7 +319,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
-@@ -3227,6 +3227,9 @@ const char kStartSurfaceAndroidDescription[] =
+@@ -3364,6 +3364,9 @@ const char kStartSurfaceAndroidDescription[] =
      "Enable showing the start surface when launching Chrome via the "
      "launcher.";
  
@@ -332,7 +332,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
-@@ -1861,6 +1861,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
+@@ -1944,6 +1944,9 @@ extern const char kSiteIsolationForPasswordSitesDescription[];
  extern const char kSmartSuggestionForLargeDownloadsName[];
  extern const char kSmartSuggestionForLargeDownloadsDescription[];
  
@@ -345,15 +345,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -187,6 +187,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
-     &kEnhancedProtectionPromoCard,
+@@ -193,6 +193,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kEphemeralTabUsingBottomSheet,
+     &kExperimentsForAgsa,
      &kExploreSites,
 +    &kSimplifiedNTP,
      &kFocusOmniboxInIncognitoTabIntents,
-     &kGPayAppDynamicUpdate,
      &kHandleMediaIntents,
-@@ -566,6 +567,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
+     &kHomepagePromoCard,
+@@ -579,6 +580,9 @@ const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2",
  const base::Feature kOfflineMeasurementsBackgroundTask{
      "OfflineMeasurementsBackgroundTask", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -366,7 +366,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
-@@ -96,6 +96,7 @@ extern const base::Feature kNotificationSuspender;
+@@ -97,6 +97,7 @@ extern const base::Feature kNotificationSuspender;
  extern const base::Feature kOfflineIndicatorV2;
  extern const base::Feature kOfflineMeasurementsBackgroundTask;
  extern const base::Feature kOmniboxSpareRenderer;
@@ -377,7 +377,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
-@@ -334,6 +334,7 @@ public abstract class ChromeFeatureList {
+@@ -352,6 +352,7 @@ public abstract class ChromeFeatureList {
      public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI =
              "LookalikeUrlNavigationSuggestionsUI";
      public static final String MARK_HTTP_AS = "MarkHttpAs";
@@ -410,7 +410,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
-@@ -6821,6 +6821,24 @@
+@@ -6917,6 +6917,24 @@
              ]
          }
      ],

+ 4 - 4
build/patches/Restore-enable-horizontal-tab-switcher-flag.patch

@@ -9,15 +9,15 @@ Subject: Restore enable-horizontal-tab-switcher flag
 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
-@@ -1757,7 +1757,7 @@
+@@ -1889,7 +1889,7 @@
    {
-     "name": "enable-horizontal-tab-switcher",
-     "owners": [ "memex-team@google.com" ],
+     "name": "enable-hosted-app-quit-notification",
+     "owners": [ "ccameron" ],
 -    "expiry_milestone": 77
 +    "expiry_milestone": -1
    },
    {
-     "name": "enable-hosted-app-quit-notification",
+     "name": "enable-hostname-setting",
 -- 
 2.17.1
 

+ 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
-@@ -3207,6 +3207,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3280,6 +3280,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
  #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
-@@ -968,6 +968,11 @@
+@@ -1091,6 +1091,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
-@@ -3112,6 +3112,10 @@ const char kReadLaterDescription[] =
+@@ -3241,6 +3241,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
-@@ -1799,6 +1799,9 @@ extern const char kQueryTilesMoreTrendingDescription[];
+@@ -1876,6 +1876,9 @@ extern const char kQueryTilesMoreTrendingDescription[];
  extern const char kQueryTilesSwapTrendingName[];
  extern const char kQueryTilesSwapTrendingDescription[];
  

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

@@ -13,7 +13,7 @@ This reverts commit 2a51528a1737e9038f7f96f29403032a6a845a25.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -297,6 +297,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
+@@ -298,6 +298,15 @@ const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
       "single-fullscreen,single-on-top,underlay"},
  };
  
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = {
      {flags_ui::kGenericExperimentChoiceDefault, "", ""},
      {flag_descriptions::kTouchSelectionStrategyCharacter,
-@@ -3295,6 +3304,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3378,6 +3387,9 @@ const FeatureEntry kFeatureEntries[] = {
           feature_engagement::kIPHDemoMode,
           feature_engagement::kIPHDemoModeChoiceVariations,
           "IPH_DemoMode")},
@@ -42,7 +42,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
-@@ -3360,6 +3360,11 @@
+@@ -3560,6 +3560,11 @@
      ],
      "expiry_milestone": 95
    },
@@ -57,7 +57,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1523,6 +1523,14 @@ const char kUseMultiloginEndpointName[] = "Use Multilogin endpoint.";
+@@ -1601,6 +1601,14 @@ const char kUseMultiloginEndpointName[] = "Use Multilogin endpoint.";
  const char kUseMultiloginEndpointDescription[] =
      "Use Gaia OAuth multilogin for identity consistency.";
  
@@ -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
-@@ -911,6 +911,13 @@ extern const char kNotificationsNativeFlagDescription[];
+@@ -959,6 +959,13 @@ extern const char kNotificationsSystemFlagDescription[];
  extern const char kUseMultiloginEndpointName[];
  extern const char kUseMultiloginEndpointDescription[];
  

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

@@ -182,7 +182,7 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_setti
 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
-@@ -111,6 +111,10 @@ public class ContentSettingsResources {
+@@ -113,6 +113,10 @@ public class ContentSettingsResources {
                      new ResourceItem(R.drawable.infobar_downloading,
                              R.string.automatic_downloads_permission_title, ContentSettingValues.ASK,
                              ContentSettingValues.BLOCK, R.string.website_settings_category_ask, 0));
@@ -217,7 +217,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
-@@ -128,6 +128,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -134,6 +134,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "bluetooth_scanning_permission_list";
              case ContentSettingsType.COOKIES:
                  return "cookies_permission_list";
@@ -226,7 +226,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.IDLE_DETECTION:
                  return "idle_detection_permission_list";
              case ContentSettingsType.JAVASCRIPT:
-@@ -471,6 +473,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -524,6 +526,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
  
              if (type == ContentSettingsType.ADS) {
                  setUpAdsPreference(preference);
@@ -235,7 +235,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              } else if (type == ContentSettingsType.SOUND) {
                  setUpSoundPreference(preference);
              } else if (type == ContentSettingsType.JAVASCRIPT) {
-@@ -982,6 +986,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1046,6 +1050,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          }
      }
  
@@ -439,7 +439,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
-@@ -179,6 +179,7 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -178,6 +178,7 @@ bool RendererContentSettingRules::IsRendererContentSetting(
      ContentSettingsType content_type) {
    return content_type == ContentSettingsType::IMAGES ||
           content_type == ContentSettingsType::JAVASCRIPT ||
@@ -575,7 +575,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
-@@ -278,6 +278,9 @@
+@@ -321,6 +321,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
-@@ -472,6 +472,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -525,6 +525,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) {
-@@ -787,16 +789,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -848,16 +850,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() {
-@@ -987,17 +981,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1051,17 +1045,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.
-@@ -1013,22 +1025,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1077,22 +1089,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              setupContentSettingsPreference(preference, null, false);
              return;
          }

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

@@ -16,7 +16,7 @@ higher memory/cache usage but not by the full 2-3%.
 diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -294,16 +294,12 @@ config("compiler") {
+@@ -302,16 +302,12 @@ config("compiler") {
          cflags += [ "-fstack-protector" ]
        }
      } else if ((is_posix && !is_chromeos_ash && !is_nacl) || is_fuchsia) {

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

@@ -49,7 +49,7 @@ See also: https://github.com/bromite/bromite/wiki/TimezoneOverride
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java
-@@ -40,6 +40,10 @@ import org.chromium.content_public.common.ContentSwitches;
+@@ -41,6 +41,10 @@ import org.chromium.content_public.common.ContentSwitches;
  
  import java.util.Set;
  
@@ -60,9 +60,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C
  /**
   * A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic.
   */
-@@ -252,4 +256,16 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
+@@ -253,4 +257,16 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate {
+             mPrivacySandboxController.dismissSnackbar();
          }
-         mPrivacySandboxController.dismissSnackbar();
      }
 +
 +    // open wiki page for documentation about the timezone override feature
@@ -255,7 +255,7 @@ 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
-@@ -227,6 +227,11 @@ public class ContentSettingsResources {
+@@ -231,6 +231,11 @@ public class ContentSettingsResources {
                              ContentSettingValues.ASK, ContentSettingValues.BLOCK,
                              R.string.website_settings_category_vr_ask,
                              R.string.website_settings_category_vr_blocked));
@@ -267,7 +267,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              sResourceInfo = localMap;
          }
          return sResourceInfo;
-@@ -355,6 +360,23 @@ public class ContentSettingsResources {
+@@ -365,6 +370,23 @@ public class ContentSettingsResources {
          }
      }
  
@@ -291,7 +291,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.
-@@ -369,7 +391,10 @@ public class ContentSettingsResources {
+@@ -379,7 +401,10 @@ public class ContentSettingsResources {
       * with a particular website.
       * @param value The ContentSetting for which we want the resource.
       */
@@ -303,7 +303,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;
-@@ -458,6 +483,13 @@ public class ContentSettingsResources {
+@@ -468,6 +493,13 @@ public class ContentSettingsResources {
                  return descriptionIDs;
              }
          }
@@ -507,7 +507,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          CharSequence[] descriptions = new String[2];
          descriptions[0] =
 -                getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.ALLOW));
-+                getString(ContentSettingsResources.getSiteSummary(contentSettingsType, 
++                getString(ContentSettingsResources.getSiteSummary(contentSettingsType,
 +                                                                  ContentSettingValues.ALLOW));
          descriptions[1] =
 -                getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.BLOCK));
@@ -519,7 +519,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
-@@ -97,6 +97,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -103,6 +103,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              ContentSettingsType.JAVASCRIPT,
              ContentSettingsType.POPUPS,
              ContentSettingsType.ADS,
@@ -527,7 +527,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              ContentSettingsType.BACKGROUND_SYNC,
              ContentSettingsType.AUTOMATIC_DOWNLOADS,
              ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER,
-@@ -135,6 +136,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -141,6 +142,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                  return "popup_permission_list";
              case ContentSettingsType.SOUND:
                  return "sound_permission_list";
@@ -536,7 +536,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
              case ContentSettingsType.AR:
                  return "ar_permission_list";
              case ContentSettingsType.MEDIASTREAM_CAMERA:
-@@ -867,11 +870,12 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -928,11 +931,12 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          }
  
          ChromeSwitchPreference switchPreference = (ChromeSwitchPreference) preference;
@@ -548,9 +548,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 -                        : getString(ContentSettingsResources.getCategorySummary(value)));
 +                        : getString(ContentSettingsResources.getCategorySummary(type, value)));
          switchPreference.setOnPreferenceChangeListener(this);
-     }
- 
-@@ -884,20 +888,43 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+         @ContentSettingsType
+         int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey());
+@@ -950,20 +954,43 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              @ContentSettingValues @Nullable Integer value, boolean isEmbargoed) {
          ListPreference listPreference = (ListPreference) preference;
  
@@ -597,14 +597,14 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          // 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);
-@@ -1132,7 +1159,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -1196,7 +1223,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              preference.setSummary(getDSECategorySummary(permission));
          } else {
              preference.setSummary(
 -                    getString(ContentSettingsResources.getCategorySummary(permission)));
 +                    getString(ContentSettingsResources.getCategorySummary(type, permission)));
          }
-         preference.setIcon(getContentSettingsIcon(type, permission, true));
+         preference.setIcon(getContentSettingsIcon(type, permission));
  
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java
@@ -1022,27 +1022,27 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
 diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
 --- a/components/content_settings/core/browser/content_settings_pref_provider.cc
 +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
-@@ -107,6 +107,8 @@ void PrefProvider::RegisterProfilePrefs(
-   registry->RegisterDictionaryPref(kDeprecatedNativeFileSystemReadGuardPref);
-   registry->RegisterDictionaryPref(kDeprecatedNativeFileSystemWriteGuardPref);
- #endif  // !defined(OS_ANDROID)
-+
-+  registry->RegisterStringPref(prefs::kContentSettingsCustomTimezone, std::string());
- }
- 
- PrefProvider::PrefProvider(PrefService* prefs,
-@@ -163,6 +165,10 @@ PrefProvider::PrefProvider(PrefService* prefs,
-                             num_exceptions);
+@@ -78,6 +78,8 @@ void PrefProvider::RegisterProfilePrefs(
+                                      info->GetPrefRegistrationFlags());
    }
  
++  registry->RegisterStringPref(prefs::kContentSettingsCustomTimezone, std::string());
++
+   // Obsolete prefs ----------------------------------------------------------
+ 
+   // These prefs have been removed, but need to be registered so they can
+@@ -157,6 +159,10 @@ PrefProvider::PrefProvider(PrefService* prefs,
+     event_args->set_number_of_exceptions(
+         num_exceptions);  // PrefProvider::PrefProvider.
+   });
++
 +  custom_timezone_ =
 +    prefs_->GetString(
 +          prefs::kContentSettingsCustomTimezone);
-+
-   TRACE_EVENT_END1("startup", "PrefProvider::PrefProvider",
-                    "NumberOfExceptions", num_exceptions);
  }
-@@ -318,4 +324,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) {
+ 
+ PrefProvider::~PrefProvider() {
+@@ -284,4 +290,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) {
    clock_ = clock;
  }
  
@@ -1152,7 +1152,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
-@@ -94,6 +94,7 @@ constexpr HistogramValue kHistogramValue[] = {
+@@ -93,6 +93,7 @@ constexpr HistogramValue kHistogramValue[] = {
      {ContentSettingsType::PERMISSION_AUTOREVOCATION_DATA, 72},
      {ContentSettingsType::FILE_SYSTEM_LAST_PICKED_DIRECTORY, 73},
      {ContentSettingsType::DISPLAY_CAPTURE, 74},
@@ -1160,7 +1160,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo
  };
  
  }  // namespace
-@@ -180,7 +181,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
+@@ -179,7 +180,8 @@ bool RendererContentSettingRules::IsRendererContentSetting(
           content_type == ContentSettingsType::JAVASCRIPT ||
           content_type == ContentSettingsType::CLIENT_HINTS ||
           content_type == ContentSettingsType::POPUPS ||
@@ -1242,7 +1242,7 @@ diff --git a/components/content_settings/core/common/content_settings_types.h b/
 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
-@@ -128,4 +128,7 @@ const char kQuietNotificationPermissionUiEnablingMethod[] =
+@@ -134,4 +134,7 @@ const char kQuietNotificationPermissionUiDisabledTime[] =
  const char kNotificationsVibrateEnabled[] = "notifications.vibrate_enabled";
  #endif
  
@@ -1253,7 +1253,7 @@ diff --git a/components/content_settings/core/common/pref_names.cc b/components/
 diff --git a/components/content_settings/core/common/pref_names.h b/components/content_settings/core/common/pref_names.h
 --- a/components/content_settings/core/common/pref_names.h
 +++ b/components/content_settings/core/common/pref_names.h
-@@ -71,6 +71,8 @@ extern const char kQuietNotificationPermissionUiEnablingMethod[];
+@@ -72,6 +72,8 @@ extern const char kQuietNotificationPermissionUiDisabledTime[];
  extern const char kNotificationsVibrateEnabled[];
  #endif
  

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

@@ -12,7 +12,7 @@ Subject: Update i18n zh_CN support
 diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
 --- a/chrome/app/resources/generated_resources_zh-CN.xtb
 +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
-@@ -7278,4 +7278,6 @@
+@@ -7317,4 +7317,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
-@@ -1198,4 +1198,35 @@
+@@ -1230,4 +1230,35 @@
  <translation id="983192555821071799">关闭所有标签页</translation>
  <translation id="987264212798334818">常规</translation>
  <translation id="996149300115483134">动态卡片上的菜单已关闭</translation>
@@ -65,7 +65,7 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
 +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
-@@ -307,4 +307,17 @@
+@@ -310,4 +310,17 @@
  <translation id="913657688200966289">在 <ph name="BEGIN_LINK" />Android 设置<ph name="END_LINK" />中为 <ph name="APP_NAME" /> 开启这些权限。</translation>
  <translation id="965817943346481315">屏蔽会展示侵扰性或误导性广告的网站(推荐)</translation>
  <translation id="967624055006145463">已存储的数据</translation>
@@ -88,7 +88,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
-@@ -2102,4 +2102,7 @@
+@@ -2123,4 +2123,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
-@@ -116,7 +116,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -120,7 +120,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;
  
-@@ -243,7 +243,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());
          }
-@@ -538,7 +538,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -574,7 +574,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }

+ 121 - 210
build/patches/User-agent-customization.patch

@@ -1,5 +1,5 @@
 From: uazo <uazo@users.noreply.github.com>
-Date: Mon, 26 Oct 2020 16:50:15 +0000
+Date: Fri, 9 Apr 2021 20:09:08 +0000
 Subject: User agent customization
 
 Add flag to always view the desktop site for all websites
@@ -11,36 +11,34 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
  base/base_switches.h                          |   2 +
  chrome/android/chrome_java_resources.gni      |   2 +
  chrome/android/chrome_java_sources.gni        |   1 +
- .../layout/custom_useragent_preferences.xml   | 108 ++++++++++
+ .../layout/custom_useragent_preferences.xml   | 106 ++++++++++
  .../android/java/res/xml/main_preferences.xml |   5 +
  .../java/res/xml/useragent_preferences.xml    |  31 +++
- .../chrome/browser/app/ChromeActivity.java    |  21 +-
  .../init/ChromeBrowserInitializer.java        |   3 +
  .../PrivacyPreferencesManagerImpl.java        |  42 ++++
- .../settings/UserAgentPreferences.java        | 185 ++++++++++++++++++
- .../chromium/chrome/browser/tab/TabImpl.java  |  83 +++++++-
+ .../settings/UserAgentPreferences.java        | 188 ++++++++++++++++++
+ .../chromium/chrome/browser/tab/TabImpl.java  |  71 +++++++
+ .../chromium/chrome/browser/tab/TabUtils.java |  18 +-
  .../browser/android/content/content_utils.cc  |  28 +++
  .../preferences/browser_prefs_android.cc      |   7 +
- .../privacy_preferences_manager_impl.cc       | 114 +++++++++++
- chrome/browser/android/tab_android.cc         |   5 +-
- chrome/browser/android/tab_android.h          |   3 +-
- .../browser/chrome_content_browser_client.cc  |   8 +
+ .../privacy_preferences_manager_impl.cc       | 118 +++++++++++
  .../preferences/ChromePreferenceKeys.java     |   7 +-
  .../settings/PrivacyPreferencesManager.java   |   8 +
  .../org/chromium/chrome/browser/tab/Tab.java  |   2 +
- .../browser/tabmodel/TabWindowManager.java    |   8 +
+ .../browser/tabmodel/TabWindowManager.java    |   3 +
  .../tabmodel/TabWindowManagerImpl.java        |  18 ++
  .../strings/android_chrome_strings.grd        |  35 ++++
  chrome/common/pref_names.cc                   |  13 ++
  chrome/common/pref_names.h                    |   8 +
- .../widget/RadioButtonWithEditText.java       |  11 ++
+ .../widget/RadioButtonWithEditText.java       |  11 +
+ .../embedder_support/user_agent_utils.cc      |   7 +
  .../navigation_controller_android.cc          |   6 +-
  .../navigation_controller_android.h           |   3 +-
  .../renderer_host/render_process_host_impl.cc |   1 +
- .../browser/web_contents/web_contents_impl.cc |   4 +-
+ .../browser/web_contents/web_contents_impl.cc |   6 +
  .../framehost/NavigationControllerImpl.java   |   6 +-
  content/renderer/render_thread_impl.cc        |   1 -
- 33 files changed, 767 insertions(+), 14 deletions(-)
+ 31 files changed, 749 insertions(+), 10 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
@@ -48,8 +46,8 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin
 diff --git a/base/base_switches.cc b/base/base_switches.cc
 --- a/base/base_switches.cc
 +++ b/base/base_switches.cc
-@@ -164,6 +164,8 @@ const char kForceFieldTrialParams[] = "force-fieldtrial-params";
- const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count";
+@@ -169,6 +169,8 @@ const char kEnableThreadInstructionCount[] = "enable-thread-instruction-count";
+ extern const char kEnableCrashpad[] = "enable-crashpad";
  #endif
  
 +const char kDesktopModeViewportMetaEnabled[] = "dm-viewport-meta-enabled";
@@ -60,7 +58,7 @@ diff --git a/base/base_switches.cc b/base/base_switches.cc
 diff --git a/base/base_switches.h b/base/base_switches.h
 --- a/base/base_switches.h
 +++ b/base/base_switches.h
-@@ -66,6 +66,8 @@ extern const char kEnableThreadInstructionCount[];
+@@ -70,6 +70,8 @@ extern const char kEnableCrashpad[];
  extern const char kSchedulerBoostUrgent[];
  #endif
  
@@ -72,7 +70,7 @@ 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
-@@ -998,4 +998,6 @@ chrome_java_resources = [
+@@ -946,4 +946,6 @@ chrome_java_resources = [
    "java/res/xml/sync_and_services_preferences.xml",
    "java/res/xml/theme_preferences.xml",
    "java/res/xml/tracing_preferences.xml",
@@ -82,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
-@@ -1155,6 +1155,7 @@ chrome_java_sources = [
+@@ -1145,6 +1145,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",
@@ -94,7 +92,7 @@ diff --git a/chrome/android/java/res/layout/custom_useragent_preferences.xml b/c
 new file mode 100644
 --- /dev/null
 +++ b/chrome/android/java/res/layout/custom_useragent_preferences.xml
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,106 @@
 +<?xml version="1.0" encoding="utf-8"?>
 +<!--
 +    This file is part of Bromite.
@@ -118,8 +116,6 @@ new file mode 100644
 +<ScrollView
 +    xmlns:android="http://schemas.android.com/apk/res/android"
 +    xmlns:app="http://schemas.android.com/apk/res-auto"
-+    android:layout_weight="0"
-+    android:gravity="top"
 +    android:layout_width="match_parent"
 +    android:layout_height="wrap_content">
 +
@@ -254,65 +250,18 @@ new file mode 100644
 +        android:summaryOff="@string/option_desktop_flag_off" />
 +
 +</PreferenceScreen>
-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
-@@ -72,6 +72,7 @@ import org.chromium.chrome.browser.app.flags.ChromeCachedFlags;
- import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory;
- import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController;
- import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
-+import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
- import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
- import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
- import org.chromium.chrome.browser.bookmarks.BookmarkModel;
-@@ -209,6 +210,13 @@ import org.chromium.ui.widget.Toast;
- import org.chromium.url.GURL;
- import org.chromium.url.Origin;
- import org.chromium.webapk.lib.client.WebApkNavigationClient;
-+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
-+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
-+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
-+
-+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
-+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
-+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
- 
- import org.chromium.url.GURL;
- 
-@@ -2102,11 +2110,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-         } else if (id == R.id.view_source_id) {
-             currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
-         } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
--            final boolean reloadOnChange = !currentTab.isNativePage();
-             final boolean usingDesktopUserAgent =
-                     currentTab.getWebContents().getNavigationController().getUseDesktopUserAgent();
--            currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent(
--                    !usingDesktopUserAgent, reloadOnChange);
-+            SharedPreferencesManager.getInstance().writeBoolean(
-+                ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, !usingDesktopUserAgent);
-+
-+            final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
-+                    ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
-+            if (stickyDesktopModeEnabled) {
-+                TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(!usingDesktopUserAgent);
-+            } else {
-+                currentTab.SetOverrideUserAgent(!usingDesktopUserAgent);
-+            }
-             RecordUserAction.record("MobileMenuRequestDesktopSite");
-         } else if (id == R.id.reader_mode_prefs_id) {
-             DomDistillerUIUtils.openSettings(currentTab.getWebContents());
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
-@@ -47,6 +47,7 @@ import org.chromium.content_public.browser.SpeechRecognition;
+@@ -44,6 +44,7 @@ import org.chromium.content_public.browser.DeviceUtils;
+ import org.chromium.content_public.browser.SpeechRecognition;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  import org.chromium.net.NetworkChangeNotifier;
- import org.chromium.ui.resources.ResourceExtractor;
 +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
  
  import java.io.File;
  import java.util.ArrayList;
-@@ -322,11 +323,13 @@ public class ChromeBrowserInitializer {
+@@ -305,11 +306,13 @@ public class ChromeBrowserInitializer {
  
                          @Override
                          public void onSuccess() {
@@ -388,7 +337,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAg
 new file mode 100644
 --- /dev/null
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
-@@ -0,0 +1,185 @@
+@@ -0,0 +1,188 @@
 +/*
 +    This file is part of Bromite.
 +
@@ -476,6 +425,9 @@ new file mode 100644
 +    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
 +            @Nullable Bundle savedInstanceState) {
 +        LinearLayout viewGroup = (LinearLayout) super.onCreateView(inflater, container, savedInstanceState);
++        LinearLayout.LayoutParams params =
++            new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
++        viewGroup.setLayoutParams(params);
 +        ScrollView view = (ScrollView) inflater.inflate(R.layout.custom_useragent_preferences, viewGroup, false);
 +        viewGroup.addView(view);
 +
@@ -577,28 +529,21 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
-@@ -61,6 +61,18 @@ import org.chromium.ui.base.WindowAndroid;
+@@ -64,6 +64,11 @@ import org.chromium.ui.base.WindowAndroid;
  import org.chromium.ui.util.ColorUtils;
  import org.chromium.url.GURL;
  import org.chromium.url.Origin;
 +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 +import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
-+import org.chromium.content_public.browser.navigation_controller.UserAgentOverrideOption;
-+import org.chromium.content_public.browser.NavigationController;
-+import org.chromium.components.embedder_support.util.UrlUtilities;
-+import org.chromium.components.url_formatter.UrlFormatter;
-+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
-+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
-+import org.chromium.content_public.browser.navigation_controller.UserAgentOverrideOption;
 +import org.chromium.content_public.browser.NavigationController;
 +import org.chromium.components.embedder_support.util.UrlUtilities;
 +import org.chromium.components.url_formatter.UrlFormatter;
  
  /**
   * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}.
-@@ -481,6 +493,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
-                 throw new RuntimeException("Tab.loadUrl called when no native side exists");
-             }
+@@ -492,6 +497,31 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+             // Request desktop sites for large screen tablets.
+             params.setOverrideUserAgent(calculateUserAgentOverrideOption());
  
 +            final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
 +                ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
@@ -628,34 +573,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
              // We load the URL from the tab rather than directly from the ContentView so the tab has
              // a chance of using a prerenderer page is any.
              int loadType = TabImplJni.get().loadUrl(mNativeTabAndroid, params.getUrl(),
-@@ -493,7 +530,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
-                     params.getReferrer() != null ? params.getReferrer().getPolicy() : 0,
-                     params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(),
-                     params.getHasUserGesture(), params.getShouldClearHistoryList(),
--                    params.getInputStartTimestamp(), params.getIntentReceivedTimestamp());
-+                    params.getInputStartTimestamp(), params.getIntentReceivedTimestamp(),
-+                    params.getUserAgentOverrideOption());
- 
-             for (TabObserver observer : mObservers) {
-                 observer.onLoadUrl(this, params, loadType);
-@@ -1477,6 +1515,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+@@ -1507,6 +1537,10 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
              if (mWebContents != null) mWebContents.getNavigationController().loadIfNecessary();
              mIsBeingRestored = true;
              for (TabObserver observer : mObservers) observer.onRestoreStarted(this);
-+
 +            if(overrideUserAgentWhenUnFrozen != UserAgentOverrideOption.INHERIT) {
-+                SetOverrideUserAgent(overrideUserAgentWhenUnFrozen == (int)UserAgentOverrideOption.TRUE ? true : false);
++                SetOverrideUserAgent(overrideUserAgentWhenUnFrozen == (int)UserAgentOverrideOption.TRUE ? true : false,
++                    /*forcedByUser*/ true);
 +            }
          } finally {
              TraceEvent.end("Tab.restoreIfNeeded");
          }
-@@ -1596,6 +1638,42 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
-         }
+@@ -1674,6 +1708,43 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
+                 /* forcedByUser */ false);
      }
  
 +    int overrideUserAgentWhenUnFrozen = (int)UserAgentOverrideOption.INHERIT;
 +
-+    public void SetOverrideUserAgent(boolean usingDesktopUserAgent) {
++    public void SetOverrideUserAgent(boolean usingDesktopUserAgent, boolean forcedByUser) {
 +        WebContents webContents = this.getWebContents();
 +        overrideUserAgentWhenUnFrozen = UserAgentOverrideOption.INHERIT;
 +
@@ -669,11 +604,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
 +        }
 +
 +        if (webContents != null) {
-+            ContentUtils.setUserAgentOverride(webContents);
++            ContentUtils.setUserAgentOverride(webContents, /*forcedByUser*/ true);
 +
 +            NavigationController navigationController = webContents.getNavigationController();
 +            navigationController.setUseDesktopUserAgent(
 +                usingDesktopUserAgent, !this.isNativePage());
++            if (forcedByUser) this.setUserForcedUserAgent();
 +        }
 +        else if (this.getPendingLoadParams() != null) {
 +            if (usingDesktopUserAgent) {
@@ -692,22 +628,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
      @NativeMethods
      interface Natives {
          TabImpl fromWebContents(WebContents webContents);
-@@ -1615,7 +1693,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
-                 ResourceRequestBody postData, int transition, String referrerUrl,
-                 int referrerPolicy, boolean isRendererInitiated, boolean shoulReplaceCurrentEntry,
-                 boolean hasUserGesture, boolean shouldClearHistoryList, long inputStartTimestamp,
--                long intentReceivedTimestamp);
-+                long intentReceivedTimestamp,
-+                int userAgentOverrideOption);
-         void setActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, String title);
-         void loadOriginalImage(long nativeTabAndroid);
-         void setAddApi2TransitionToFutureNavigations(long nativeTabAndroid, boolean shouldAdd);
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.java
+@@ -20,6 +20,10 @@ import org.chromium.content_public.browser.WebContents;
+ import org.chromium.ui.base.WindowAndroid;
+ import org.chromium.ui.display.DisplayAndroidManager;
+ 
++import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
++import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
++import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
++
+ /**
+  * Collection of utility methods that operates on Tab.
+  */
+@@ -82,10 +86,16 @@ public class TabUtils {
+      * @param forcedByUser Whether this was triggered by users action.
+      */
+     public static void switchUserAgent(Tab tab, boolean switchToDesktop, boolean forcedByUser) {
+-        final boolean reloadOnChange = !tab.isNativePage();
+-        tab.getWebContents().getNavigationController().setUseDesktopUserAgent(
+-                switchToDesktop, reloadOnChange);
+-        if (forcedByUser) ((TabImpl) tab).setUserForcedUserAgent();
++        SharedPreferencesManager.getInstance().writeBoolean(
++            ChromePreferenceKeys.USERAGENT_ALWAYS_DESKTOP_MODE, switchToDesktop);
++
++        final boolean stickyDesktopModeEnabled = SharedPreferencesManager.getInstance().readBoolean(
++                ChromePreferenceKeys.USERAGENT_STICKY_DESKTOP_MODE, false);
++        if (stickyDesktopModeEnabled) {
++            TabWindowManagerSingleton.getInstance().SetOverrideUserAgentForAllTabs(switchToDesktop);
++        } else {
++            tab.SetOverrideUserAgent(switchToDesktop, forcedByUser);
++        }
+     }
+ 
+     /**
 diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/android/content/content_utils.cc
 --- a/chrome/browser/android/content/content_utils.cc
 +++ b/chrome/browser/android/content/content_utils.cc
 @@ -8,6 +8,20 @@
- #include "components/embedder_support/android/util/user_agent_utils.h"
  #include "components/version_info/version_info.h"
+ #include "content/public/browser/web_contents.h"
  
 +#include "base/android/jni_android.h"
 +#include "base/android/scoped_java_ref.h"
@@ -725,11 +686,11 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an
 +
  static base::android::ScopedJavaLocalRef<jstring>
  JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) {
-   return base::android::ConvertUTF8ToJavaString(env, GetUserAgent());
-@@ -16,6 +30,20 @@ JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) {
- static void JNI_ContentUtils_SetUserAgentOverride(
+   return base::android::ConvertUTF8ToJavaString(
+@@ -18,6 +32,20 @@ static void JNI_ContentUtils_SetUserAgentOverride(
      JNIEnv* env,
-     const base::android::JavaParamRef<jobject>& jweb_contents) {
+     const base::android::JavaParamRef<jobject>& jweb_contents,
+     jboolean j_override_in_new_tabs) {
 +  bool enabled =
 +    g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentDesktopModeEnabled);
 +
@@ -746,7 +707,7 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an
 +
    content::WebContents* web_contents =
        content::WebContents::FromJavaWebContents(jweb_contents);
-   embedder_support::SetDesktopUserAgentOverride(web_contents,
+   embedder_support::SetDesktopUserAgentOverride(
 diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrome/browser/android/preferences/browser_prefs_android.cc
 --- a/chrome/browser/android/preferences/browser_prefs_android.cc
 +++ b/chrome/browser/android/preferences/browser_prefs_android.cc
@@ -772,7 +733,7 @@ diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrom
 diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
 --- a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
 +++ b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc
-@@ -12,6 +12,26 @@
+@@ -12,6 +12,30 @@
  #include "components/metrics/metrics_pref_names.h"
  #include "components/prefs/pref_service.h"
  
@@ -783,6 +744,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
 +#include "content/common/renderer.mojom.h"
 +#include "chrome/browser/chrome_content_browser_client.h"
 +
++#include "components/embedder_support/content_settings_utils.h"
++#include "components/embedder_support/switches.h"
++#include "components/embedder_support/user_agent_utils.h"
++
 +#include "base/android/jni_android.h"
 +#include "base/android/jni_array.h"
 +#include "base/android/jni_string.h"
@@ -799,7 +764,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
  namespace {
  
  PrefService* GetPrefService() {
-@@ -67,3 +87,97 @@ static void JNI_PrivacyPreferencesManagerImpl_SetNetworkPredictionEnabled(
+@@ -67,3 +91,97 @@ static void JNI_PrivacyPreferencesManagerImpl_SetNetworkPredictionEnabled(
        enabled ? chrome_browser_net::NETWORK_PREDICTION_WIFI_ONLY
                : chrome_browser_net::NETWORK_PREDICTION_NEVER);
  }
@@ -814,10 +779,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
 +
 +  base::CommandLine* parsed_command_line =
 +      base::CommandLine::ForCurrentProcess();
-+  parsed_command_line->RemoveSwitch(switches::kUserAgent);
++  parsed_command_line->RemoveSwitch(embedder_support::kUserAgent);
 +  if (!ua.empty()) {
 +    if (overrideUserAgentEnabled) {
-+      parsed_command_line->AppendSwitchASCII(switches::kUserAgent, ua);
++      parsed_command_line->AppendSwitchASCII(embedder_support::kUserAgent, ua);
 +    }
 +
 +    for (auto iter = content::RenderProcessHost::AllHostsIterator(); !iter.IsAtEnd();
@@ -897,71 +862,10 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl
 +                                              enabled);
 +  UpdateOverrideUserAgent();
 +}
-\ No newline at end of file
-diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
---- a/chrome/browser/android/tab_android.cc
-+++ b/chrome/browser/android/tab_android.cc
-@@ -373,7 +373,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(
-     jboolean has_user_gesture,
-     jboolean should_clear_history_list,
-     jlong input_start_timestamp,
--    jlong intent_received_timestamp) {
-+    jlong intent_received_timestamp,
-+    jint user_agent_override_option) {
-   if (!web_contents())
-     return PAGE_LOAD_FAILED;
- 
-@@ -430,6 +431,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(
-       load_params.input_start =
-           base::TimeTicks::FromUptimeMillis(intent_received_timestamp);
-     }
-+    load_params.override_user_agent = static_cast<NavigationController::UserAgentOverrideOption>(
-+      user_agent_override_option);
-     web_contents()->GetController().LoadURLWithParams(load_params);
-   }
-   return DEFAULT_PAGE_LOAD;
-diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
---- a/chrome/browser/android/tab_android.h
-+++ b/chrome/browser/android/tab_android.h
-@@ -167,7 +167,8 @@ class TabAndroid : public base::SupportsUserData {
-       jboolean has_user_gesture,
-       jboolean should_clear_history_list,
-       jlong omnibox_input_received_timestamp,
--      jlong intent_received_timestamp);
-+      jlong intent_received_timestamp,
-+      jint user_agent_override_option);
-   void SetActiveNavigationEntryTitleForUrl(
-       JNIEnv* env,
-       const base::android::JavaParamRef<jstring>& jurl,
-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
-@@ -1286,6 +1286,13 @@ std::string GetPlatformForUAMetadata() {
- blink::UserAgentMetadata GetUserAgentMetadata() {
-   blink::UserAgentMetadata metadata;
- 
-+  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
-+  if (command_line->HasSwitch(switches::kUserAgent)) {
-+    std::string ua = command_line->GetSwitchValueASCII(switches::kUserAgent);
-+
-+    return metadata;
-+  }
-+
-   metadata.brand_version_list = GetBrandVersionList();
-   metadata.full_version = version_info::GetVersionNumber();
-   metadata.platform = GetPlatformForUAMetadata();
-@@ -2379,6 +2386,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
-             switches::kDisableTargetBlankImpliesNoOpener);
-       }
- 
-+
- #if defined(OS_ANDROID)
-       // Communicating to content/ for BackForwardCache.
-       if (prefs->HasPrefPath(policy::policy_prefs::kBackForwardCacheEnabled) &&
 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
-@@ -826,6 +826,9 @@ public final class ChromePreferenceKeys {
+@@ -881,6 +881,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*");
  
@@ -971,7 +875,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
      /**
       * These values are currently used as SharedPreferences keys, along with the keys in
       * {@link GrandfatheredChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys
-@@ -887,7 +890,9 @@ public final class ChromePreferenceKeys {
+@@ -954,7 +957,9 @@ public final class ChromePreferenceKeys {
                  SETTINGS_SAFETY_CHECK_RUN_COUNTER,
                  SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP,
                  TWA_DISCLOSURE_SEEN_PACKAGES,
@@ -1005,7 +909,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav
       */
      void setIsTabStateDirty(boolean isTabStateDirty);
  
-+    void SetOverrideUserAgent(boolean usingDesktopUserAgent);
++    void SetOverrideUserAgent(boolean usingDesktopUserAgent, boolean forcedByUser);
 +
      /**
       * If set to true, any future navigations in the tab automatically get
@@ -1013,19 +917,7 @@ 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
-@@ -10,6 +10,11 @@ import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tabmodel.NextTabPolicy.NextTabPolicySupplier;
- import org.chromium.ui.base.WindowAndroid;
- 
-+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
-+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
-+
-+import java.util.List;
-+
- /**
-  * Manages multiple {@link TabModelSelector} instances, each owned by different {@link Activity}s.
-  *
-@@ -76,4 +81,7 @@ public interface TabWindowManager {
+@@ -79,4 +79,7 @@ public interface TabWindowManager {
       * @return Specified {@link Tab} or {@code null} if the {@link Tab} is not found.
       */
      Tab getTabById(int tabId);
@@ -1036,7 +928,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
 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
-@@ -119,6 +119,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
+@@ -128,6 +128,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
          return null;
      }
  
@@ -1051,7 +943,7 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro
 +
 +                    for (int tabIdex = 0; tabIdex < model.getCount(); tabIdex++) {
 +                        Tab theTab = model.getTabAt(tabIdex);
-+                        theTab.SetOverrideUserAgent(usingDesktopUserAgent);
++                        theTab.SetOverrideUserAgent(usingDesktopUserAgent, /*forcedByUser*/ true);
 +                    }
 +                }
 +            }
@@ -1109,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
-@@ -418,6 +418,19 @@ const char kAllowJavascriptAppleEvents[] =
+@@ -417,6 +417,19 @@ const char kAllowJavascriptAppleEvents[] =
  
  #endif
  
@@ -1132,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
-@@ -1120,6 +1120,14 @@ extern const char kCartModuleWelcomeSurfaceShownTimes[];
+@@ -1135,6 +1135,14 @@ extern const char kSuppressDifferentOriginSubframeJSDialogs[];
  extern const char kIncognitoTabHistoryEnabled[];
  #endif
  
@@ -1168,6 +1060,23 @@ 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
+@@ -134,6 +134,13 @@ std::string GetPlatformForUAMetadata() {
+ blink::UserAgentMetadata GetUserAgentMetadata() {
+   blink::UserAgentMetadata metadata;
+ 
++  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
++  if (command_line->HasSwitch(kUserAgent)) {
++    std::string ua = command_line->GetSwitchValueASCII(kUserAgent);
++
++    return metadata;
++  }
++
+   metadata.brand_version_list = GetBrandVersionList();
+   metadata.full_version = version_info::GetVersionNumber();
+   metadata.platform = GetPlatformForUAMetadata();
 diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/content/browser/renderer_host/navigation_controller_android.cc
 --- a/content/browser/renderer_host/navigation_controller_android.cc
 +++ b/content/browser/renderer_host/navigation_controller_android.cc
@@ -1207,7 +1116,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con
 diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -3366,6 +3366,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3430,6 +3430,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
  #if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
      switches::kSchedulerBoostUrgent,
  #endif
@@ -1226,16 +1135,18 @@ 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"
-@@ -2447,7 +2448,8 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
-   prefs.threaded_scrolling_enabled =
-       !command_line.HasSwitch(blink::switches::kDisableThreadedScrolling);
+@@ -2510,6 +2511,11 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() {
+       prefs.viewport_meta_enabled = false;
+   }
  
--  if (IsOverridingUserAgent())
 +  if (IsOverridingUserAgent() &&
-+      !command_line.HasSwitch(switches::kDesktopModeViewportMetaEnabled))
-     prefs.viewport_meta_enabled = false;
- 
++      !command_line.HasSwitch(switches::kDesktopModeViewportMetaEnabled)) {
++    prefs.viewport_meta_enabled = false;
++  }
++
    prefs.main_frame_resizes_are_orientation_changes =
+       command_line.HasSwitch(switches::kMainFrameResizesAreOrientationChanges);
+ 
 diff --git a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java
@@ -1262,7 +1173,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
-@@ -1673,7 +1673,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
+@@ -1636,7 +1636,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) {
  }
  
  void RenderThreadImpl::SetUserAgent(const std::string& user_agent) {

+ 15 - 12
build/patches/autofill-disable-autofill-download-manager.patch

@@ -5,8 +5,8 @@ Subject: autofill: disable autofill download manager
 Disables the autofill download manager (trk:158).
 ---
  .../core/browser/autofill_download_manager.cc | 61 +++----------------
- .../autofill/core/browser/autofill_handler.cc | 17 ------
- 2 files changed, 7 insertions(+), 71 deletions(-)
+ .../autofill/core/browser/autofill_handler.cc | 20 ------
+ 2 files changed, 7 insertions(+), 74 deletions(-)
 
 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
@@ -55,7 +55,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,
-@@ -769,6 +739,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
+@@ -774,6 +744,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
  
  std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
      const FormRequestData& request_data) const {
@@ -63,7 +63,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    std::string method("POST");
    std::string query_str;
  
-@@ -791,36 +762,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -796,36 +767,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    GURL url = autofill_server_url_
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .ReplaceComponents(replacements);
@@ -109,7 +109,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
 diff --git a/components/autofill/core/browser/autofill_handler.cc b/components/autofill/core/browser/autofill_handler.cc
 --- a/components/autofill/core/browser/autofill_handler.cc
 +++ b/components/autofill/core/browser/autofill_handler.cc
-@@ -57,19 +57,6 @@ bool CachedFormNeedsUpdate(const FormData& live_form,
+@@ -61,19 +61,6 @@ bool CachedFormNeedsUpdate(const FormData& live_form,
    return false;
  }
  
@@ -129,17 +129,20 @@ diff --git a/components/autofill/core/browser/autofill_handler.cc b/components/a
  }  // namespace
  
  using base::TimeTicks;
-@@ -110,10 +97,6 @@ AutofillHandler::AutofillHandler(
-     : driver_(driver),
-       log_manager_(log_manager),
+@@ -135,13 +122,6 @@ AutofillHandler::AutofillHandler(
+       log_manager_(client ? client->GetLogManager() : nullptr),
+       form_interactions_ukm_logger_(CreateFormInteractionsUkmLogger()),
        is_rich_query_enabled_(IsRichQueryEnabled(channel)) {
 -  if (enable_download_manager == ENABLE_AUTOFILL_DOWNLOAD_MANAGER) {
 -    download_manager_ = std::make_unique<AutofillDownloadManager>(
--        driver, this, GetAPIKeyForUrl(channel), log_manager);
+-        driver, this, GetAPIKeyForUrl(channel),
+-        AutofillDownloadManager::IsRawMetadataUploadingEnabled(
+-            IsRawMetadataUploadingEnabled(channel)),
+-        log_manager_);
 -  }
- }
- 
- AutofillHandler::~AutofillHandler() = default;
+   if (client) {
+     translate::TranslateDriver* translate_driver = client->GetTranslateDriver();
+     if (translate_driver) {
 -- 
 2.17.1
 

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

@@ -11,7 +11,7 @@ sysroot.
 diff --git a/DEPS b/DEPS
 --- a/DEPS
 +++ b/DEPS
-@@ -93,7 +93,7 @@ vars = {
+@@ -94,7 +94,7 @@ vars = {
  
    # Check out and download nacl by default. This can be disabled e.g. with
    # custom_vars.
@@ -20,7 +20,7 @@ diff --git a/DEPS b/DEPS
  
    # By default, do not check out src-internal. This can be overridden e.g. with
    # custom_vars.
-@@ -124,8 +124,8 @@ vars = {
+@@ -125,8 +125,8 @@ vars = {
    # support for other platforms may be added in the future.
    'checkout_openxr' : 'checkout_win',
  
@@ -31,7 +31,7 @@ diff --git a/DEPS b/DEPS
  
    # By default bot checkouts the WPR archive files only when this
    # flag is set True.
-@@ -4204,49 +4204,6 @@ hooks = [
+@@ -3584,49 +3584,6 @@ hooks = [
          'sync', '--extract',
      ],
    },
@@ -81,7 +81,7 @@ diff --git a/DEPS b/DEPS
    {
      # Case-insensitivity for the Win SDK. Must run before win_toolchain below.
      'name': 'ciopfs_linux',
-@@ -4377,18 +4334,6 @@ hooks = [
+@@ -3757,18 +3714,6 @@ hooks = [
                  '-s', 'src/buildtools/mac/clang-format.sha1',
      ],
    },
@@ -100,7 +100,7 @@ diff --git a/DEPS b/DEPS
    # Pull rc binaries using checked-in hashes.
    {
      'name': 'rc_win',
-@@ -4414,29 +4359,6 @@ hooks = [
+@@ -3794,29 +3739,6 @@ hooks = [
                  '-s', 'src/build/toolchain/win/rc/mac/rc.sha1',
      ],
    },

+ 13 - 13
build/patches/disable-AdsBlockedInfoBar.patch

@@ -9,17 +9,17 @@ Subject: disable AdsBlockedInfoBar
 diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
 --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
 +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
-@@ -11,7 +11,6 @@
- #include "base/metrics/histogram_macros.h"
+@@ -6,7 +6,6 @@
+ 
  #include "build/build_config.h"
  #include "chrome/browser/browser_process.h"
 -#include "chrome/browser/infobars/infobar_service.h"
  #include "chrome/browser/profiles/profile.h"
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h"
-@@ -33,10 +32,6 @@
- #include "content/public/browser/web_contents.h"
- #include "services/metrics/public/cpp/ukm_source_id.h"
+@@ -15,10 +14,6 @@
+ #include "components/subresource_filter/content/browser/profile_interaction_manager.h"
+ #include "components/subresource_filter/content/browser/ruleset_service.h"
  
 -#if defined(OS_ANDROID)
 -#include "components/subresource_filter/android/ads_blocked_infobar_delegate.h"
@@ -28,18 +28,18 @@ diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.
  ChromeSubresourceFilterClient::ChromeSubresourceFilterClient(
      content::WebContents* web_contents)
      : web_contents_(web_contents) {
-@@ -126,11 +121,6 @@ ChromeSubresourceFilterClient::GetProfileInteractionManager() {
+@@ -48,11 +43,6 @@ void ChromeSubresourceFilterClient::
  }
  
- void ChromeSubresourceFilterClient::ShowUI(const GURL& url) {
+ void ChromeSubresourceFilterClient::ShowNotification() {
 -#if defined(OS_ANDROID)
--  InfoBarService* infobar_service =
--      InfoBarService::FromWebContents(web_contents_);
--  subresource_filter::AdsBlockedInfobarDelegate::Create(infobar_service);
+-    InfoBarService* infobar_service =
+-        InfoBarService::FromWebContents(web_contents_);
+-    subresource_filter::AdsBlockedInfobarDelegate::Create(infobar_service);
 -#endif
-   // TODO(https://crbug.com/1103176): Plumb the actual frame reference here
-   // (it comes  from
-   // ContentSubresourceFilterThrottleManager::DidDisallowFirstSubresource, which
+ }
+ 
+ const scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager>
 -- 
 2.17.1
 

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

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

+ 6 - 5
build/patches/first_run-deactivate-autoupdate-globally.patch

@@ -9,17 +9,18 @@ sounds meh (wrong provider, after all).
 Also, there is no tunable in chrome://settings (or similar) yet to
 turn it back on.
 ---
- chrome/browser/extensions/extension_system_impl.cc | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ chrome/browser/extensions/extension_system_impl.cc | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
 
 diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
 --- a/chrome/browser/extensions/extension_system_impl.cc
 +++ b/chrome/browser/extensions/extension_system_impl.cc
-@@ -207,8 +207,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
-   // ExtensionService depends on RuntimeData.
-   runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
+@@ -208,9 +208,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
  
+   // TODO(https://crbug.com/1125475): Enable Extensions for Ephemeral Guest
+   // profiles.
 -  bool autoupdate_enabled = !profile_->IsGuestSession() &&
+-                            !profile_->IsEphemeralGuestProfile() &&
 -                            !profile_->IsSystemProfile();
 +  bool autoupdate_enabled = false;
  #if BUILDFLAG(IS_CHROMEOS_ASH)

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

@@ -6,9 +6,9 @@ Subject: kill Auth
  .../signin/SystemAccountManagerDelegate.java  | 56 ++-----------------
  1 file changed, 4 insertions(+), 52 deletions(-)
 
-diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
---- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
-+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+--- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
++++ b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 @@ -26,9 +26,6 @@ import android.os.SystemClock;
  
  import androidx.annotation.Nullable;

+ 1 - 1
build/patches/kill-Location-fall-back-to-system.patch

@@ -10,7 +10,7 @@ Subject: kill Location, fall back to system
 diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
 --- a/services/device/geolocation/BUILD.gn
 +++ b/services/device/geolocation/BUILD.gn
-@@ -152,7 +152,6 @@ if (is_android) {
+@@ -153,7 +153,6 @@ if (is_android) {
        "android/java/src/org/chromium/device/geolocation/LocationProviderAdapter.java",
        "android/java/src/org/chromium/device/geolocation/LocationProviderAndroid.java",
        "android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java",

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

@@ -31,7 +31,7 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
 diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
 --- a/chrome/android/java/res/values/dimens.xml
 +++ b/chrome/android/java/res/values/dimens.xml
-@@ -145,7 +145,6 @@
+@@ -141,7 +141,6 @@
      <dimen name="fre_image_bottom_margin">36dp</dimen>
      <dimen name="fre_image_height">120dp</dimen>
      <dimen name="fre_tos_image_height">110dp</dimen>

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

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

+ 0 - 39
build/patches/ungoogled-chromium-Disable-GCM.patch

@@ -1,39 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Mon, 12 Feb 2018 21:37:10 +0100
-Subject: ungoogled-chromium: Disable GCM
-
-Disable Google Cloud Messaging (GCM) client
----
- components/gcm_driver/gcm_client_impl.cc | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
---- a/components/gcm_driver/gcm_client_impl.cc
-+++ b/components/gcm_driver/gcm_client_impl.cc
-@@ -464,6 +464,7 @@ void GCMClientImpl::StartGCM() {
-   device_checkin_info_.Reset();
-   StartCheckin();
- }
-+  return;
- 
- void GCMClientImpl::InitializeMCSClient() {
-   DCHECK(network_connection_tracker_);
-@@ -661,6 +662,7 @@ void GCMClientImpl::AddHeartbeatInterval(const std::string& scope,
-                                          int interval_ms) {
-   DCHECK(io_task_runner_->RunsTasksInCurrentSequence());
-   DCHECK(mcs_client_);
-+  return;
-   mcs_client_->AddHeartbeatInterval(scope, interval_ms);
- }
- 
-@@ -735,6 +737,7 @@ void GCMClientImpl::OnCheckinCompleted(
-     }
- 
-     last_checkin_time_ = clock_->Now();
-+  return;
-     gcm_store_->SetLastCheckinInfo(
-         last_checkin_time_, device_checkin_info_.last_checkin_accounts,
-         base::BindOnce(&GCMClientImpl::SetLastCheckinInfoCallback,
--- 
-2.17.1
-

+ 1 - 1
build/patches/ungoogled-chromium-Disable-Google-host-detection.patch

@@ -352,7 +352,7 @@ diff --git a/components/search_engines/template_url.cc b/components/search_engin
 diff --git a/net/base/url_util.cc b/net/base/url_util.cc
 --- a/net/base/url_util.cc
 +++ b/net/base/url_util.cc
-@@ -430,27 +430,6 @@ bool HasGoogleHost(const GURL& url) {
+@@ -431,27 +431,6 @@ bool HasGoogleHost(const GURL& url) {
  }
  
  bool IsGoogleHost(base::StringPiece host) {

+ 41 - 1
build/patches/ungoogled-chromium-Disable-domain-reliability.patch

@@ -3,14 +3,54 @@ Date: Sat, 25 Aug 2018 22:58:52 +0200
 Subject: ungoogled-chromium: Disable domain reliability
 
 ---
+ .../domain_reliability/service_factory.cc     |  24 +-
  components/domain_reliability/BUILD.gn        |  42 +-
  .../domain_reliability/bake_in_configs.py     |   2 +-
  .../domain_reliability/context_manager.cc     |  22 +-
  .../domain_reliability/google_configs.cc      | 611 ------------------
  .../domain_reliability/google_configs.h       |   8 +-
  components/domain_reliability/uploader.cc     |   2 +-
- 6 files changed, 23 insertions(+), 664 deletions(-)
+ 7 files changed, 24 insertions(+), 687 deletions(-)
 
+diff --git a/chrome/browser/domain_reliability/service_factory.cc b/chrome/browser/domain_reliability/service_factory.cc
+--- a/chrome/browser/domain_reliability/service_factory.cc
++++ b/chrome/browser/domain_reliability/service_factory.cc
+@@ -11,34 +11,12 @@
+ 
+ namespace domain_reliability {
+ 
+-namespace {
+-
+-// If Domain Reliability is enabled in the absence of a flag or field trial.
+-const bool kDefaultEnabled = true;
+-
+-// The name and value of the field trial to turn Domain Reliability on.
+-const char kFieldTrialName[] = "DomRel-Enable";
+-const char kFieldTrialValueEnable[] = "enable";
+-
+-}  // namespace
+-
+ // Identifies Chrome as the source of Domain Reliability uploads it sends.
+ const char DomainReliabilityServiceFactory::kUploadReporterString[] = "chrome";
+ 
+ // static
+ bool DomainReliabilityServiceFactory::ShouldCreateService() {
+-  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+-  if (command_line->HasSwitch(switches::kDisableDomainReliability))
+-    return false;
+-  if (command_line->HasSwitch(switches::kEnableDomainReliability))
+-    return true;
+-  if (!ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled())
+-    return false;
+-  if (base::FieldTrialList::TrialExists(kFieldTrialName)) {
+-    std::string value = base::FieldTrialList::FindFullName(kFieldTrialName);
+-    return (value == kFieldTrialValueEnable);
+-  }
+-  return kDefaultEnabled;
++  return false;
+ }
+ 
+ }  // namespace domain_reliability
 diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliability/BUILD.gn
 --- a/components/domain_reliability/BUILD.gn
 +++ b/components/domain_reliability/BUILD.gn

+ 3 - 3
build/patches/ungoogled-chromium-Disable-profile-avatar.patch

@@ -11,7 +11,7 @@ Added some Bromite-specific further improvements
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -1455,8 +1455,6 @@ static_library("browser") {
+@@ -1433,8 +1433,6 @@ static_library("browser") {
      "profiles/profile_attributes_entry.h",
      "profiles/profile_attributes_storage.cc",
      "profiles/profile_attributes_storage.h",
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
 --- a/chrome/browser/profiles/profile_attributes_entry.cc
 +++ b/chrome/browser/profiles/profile_attributes_entry.cc
-@@ -286,12 +286,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const {
+@@ -284,12 +284,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const {
  gfx::Image ProfileAttributesEntry::GetAvatarIcon(
      int size_for_placeholder_avatar,
      bool use_high_res_file) const {
@@ -33,9 +33,9 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse
 -      return *image;
 -  }
 -
+ #if !defined(OS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
    // TODO(crbug.com/1100835): After launch, remove the treatment of placeholder
    // avatars from GetHighResAvatar() and from any other places.
-   if (ShouldShowGenericColoredAvatar(GetAvatarIconIndex())) {
 -- 
 2.17.1
 

+ 2 - 2
build/patches/ungoogled-chromium-Disable-translate-integration.patch

@@ -138,7 +138,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/language/settin
 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
-@@ -1184,9 +1184,6 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1224,9 +1224,6 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_LANGUAGES_LIST_DESCRIPTION" desc="Description on the Languages settings screen. Appears above a list of one or more languages that the user selects, to tell Chrome which languages they prefer to use to read website content.">
          Websites will show text in your preferred language, when possible.
        </message>
@@ -151,7 +151,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
 --- a/components/translate/core/browser/translate_manager.cc
 +++ b/components/translate/core/browser/translate_manager.cc
-@@ -855,8 +855,9 @@ void TranslateManager::FilterIsTranslatePossible(
+@@ -889,8 +889,9 @@ void TranslateManager::FilterIsTranslatePossible(
          ->LogAutofillAssistantDeferredTriggerDecision();
    }
  

+ 1 - 1
build/patches/updater-disable-updater-pings.patch

@@ -57,7 +57,7 @@ diff --git a/components/component_updater/configurator_impl.h b/components/compo
    const bool pings_enabled_;
 -  const bool require_encryption_;
    const GURL url_source_override_;
-   const int initial_delay_;
+   const double initial_delay_;
  
 -- 
 2.17.1

+ 4 - 6
build/patches/webview-Hard-no-to-persistent-histograms.patch

@@ -10,22 +10,20 @@ Subject: webview: Hard no to persistent histograms
 * These were guarded by a feature check before
   https://chromium.googlesource.com/chromium/src/+/b86102f2a243
 ---
- android_webview/browser/aw_field_trials.cc | 7 -------
- 1 file changed, 7 deletions(-)
+ android_webview/browser/aw_field_trials.cc | 5 -----
+ 1 file changed, 5 deletions(-)
 
 diff --git a/android_webview/browser/aw_field_trials.cc b/android_webview/browser/aw_field_trials.cc
 --- a/android_webview/browser/aw_field_trials.cc
 +++ b/android_webview/browser/aw_field_trials.cc
-@@ -11,11 +11,4 @@
+@@ -11,9 +11,4 @@
  #include "components/metrics/persistent_histograms.h"
  
  void AwFieldTrials::SetupFieldTrials() {
--  // https://crbug.com/1093420: enable for persistent metrics.
 -  // Persistent histograms must be enabled as soon as possible.
 -  base::FilePath metrics_dir;
 -  if (base::PathService::Get(base::DIR_ANDROID_APP_DATA, &metrics_dir)) {
--    InstantiatePersistentHistograms(metrics_dir,
--                                    /*default_local_memory=*/true);
+-    InstantiatePersistentHistograms(metrics_dir);
 -  }
  }
 -- 

Деякі файли не було показано, через те що забагато файлів було змінено