Ver código fonte

Release 85.0.4183.82

csagan5 5 anos atrás
pai
commit
46985eced7
100 arquivos alterados com 1537 adições e 1576 exclusões
  1. 7 0
      CHANGELOG.md
  2. 3 1
      README.md
  3. 1 1
      build/RELEASE
  4. 6 5
      build/bromite_patches_list.txt
  5. 1 0
      build/chromium_patches_list.txt
  6. 1 1
      build/patches/AV1-codec-support.patch
  7. 4 4
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  8. 9 9
      build/patches/Add-a-proxy-configuration-page.patch
  9. 30 27
      build/patches/Add-an-always-incognito-mode.patch
  10. 9 9
      build/patches/Add-bookmark-import-export-actions.patch
  11. 10 10
      build/patches/Add-custom-tab-intents-privacy-option.patch
  12. 7 16
      build/patches/Add-exit-menu-item.patch
  13. 4 4
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  14. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  15. 7 7
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  16. 3 3
      build/patches/Add-flag-to-disable-WebGL.patch
  17. 10 10
      build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch
  18. 19 42
      build/patches/Add-history-support-in-incognito-mode.patch
  19. 6 6
      build/patches/Add-menu-item-to-view-source.patch
  20. 22 20
      build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch
  21. 16 16
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  22. 20 18
      build/patches/Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
  23. 4 4
      build/patches/Allow-playing-audio-in-background.patch
  24. 1 1
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  25. 167 163
      build/patches/Automated-domain-substitution.patch
  26. 6 6
      build/patches/Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
  27. 9 9
      build/patches/Block-gateway-attacks-via-websockets.patch
  28. 26 18
      build/patches/Bromite-AdBlockUpdaterService.patch
  29. 2 2
      build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch
  30. 1 1
      build/patches/Disable-AImageReader-for-ARM64-P-and-ARM64-Q.patch
  31. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  32. 1 1
      build/patches/Disable-NTP-remote-suggestions-by-default.patch
  33. 1 1
      build/patches/Disable-Omaha-update-checks.patch
  34. 3 3
      build/patches/Disable-all-promo-dialogs.patch
  35. 3 3
      build/patches/Disable-feeds-support-by-default.patch
  36. 2 2
      build/patches/Disable-media-router-and-remoting-by-default.patch
  37. 2 2
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  38. 1 1
      build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch
  39. 1 1
      build/patches/Disable-plugins-enumeration.patch
  40. 59 44
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  41. 9 9
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  42. 172 160
      build/patches/Disable-safe-browsing.patch
  43. 36 0
      build/patches/Disable-scroll-to-text-fragment.patch
  44. 1 1
      build/patches/Disable-seed-based-field-trials.patch
  45. 1 1
      build/patches/Disable-smart-selection-by-default.patch
  46. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  47. 1 1
      build/patches/Disable-sync-services-menu-entry.patch
  48. 2 9
      build/patches/Disable-update-scheduler.patch
  49. 38 75
      build/patches/Do-not-compile-QR-code-sharing.patch
  50. 1 14
      build/patches/Do-not-grant-notifications-to-default-search-engine.patch
  51. 29 86
      build/patches/Do-not-ignore-download-location-prompt-setting.patch
  52. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  53. 10 6
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  54. 0 23
      build/patches/Enable-changing-default-downloads-storage-location-by-default.patch
  55. 37 0
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  56. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  57. 9 4
      build/patches/Enable-improved-cookie-controls-by-default.patch
  58. 2 2
      build/patches/Enable-legacy-TLS-interstitital-warning.patch
  59. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  60. 1 1
      build/patches/Enable-reduced-referrer-granularity-by-default.patch
  61. 1 1
      build/patches/Enable-user-agent-freeze-by-default.patch
  62. 2 2
      build/patches/Hide-passwords-manager-link.patch
  63. 7 7
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  64. 6 6
      build/patches/Modify-default-preferences.patch
  65. 27 27
      build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
  66. 1 1
      build/patches/Never-send-any-crash-upload-data.patch
  67. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  68. 2 2
      build/patches/Open-YouTube-links-in-Bromite.patch
  69. 7 7
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
  70. 33 50
      build/patches/Remove-EV-certificates.patch
  71. 57 0
      build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch
  72. 23 45
      build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch
  73. 3 4
      build/patches/Remove-dependency-on-com.google.android.gcm.patch
  74. 6 18
      build/patches/Remove-dependency-on-com.google.android.gms.auth.patch
  75. 23 13
      build/patches/Remove-dependency-on-com.google.android.gms.cast.patch
  76. 4 4
      build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
  77. 11 3
      build/patches/Remove-dependency-on-com.google.android.play.patch
  78. 57 41
      build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch
  79. 1 1
      build/patches/Remove-dependency-on-flags-places-and-stats.patch
  80. 6 6
      build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch
  81. 3 3
      build/patches/Remove-google_services_gcm.patch
  82. 2 2
      build/patches/Remove-help-menu-item.patch
  83. 82 79
      build/patches/Remove-signin-and-data-saver-integrations.patch
  84. 1 1
      build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch
  85. 1 1
      build/patches/Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch
  86. 51 41
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  87. 4 4
      build/patches/Restore-classic-new-tab-page.patch
  88. 0 34
      build/patches/Restore-duet-flags.patch
  89. 1 1
      build/patches/Restore-enable-horizontal-tab-switcher-flag.patch
  90. 2 2
      build/patches/Revert-Remove-flags-to-enable-disable-AImageReader.patch
  91. 121 205
      build/patches/Revert-Remove-pre-unified-consent-code.patch
  92. 4 4
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  93. 8 8
      build/patches/Revert-gpu-android-Remove-setup-for-disabling-AImageReader.patch
  94. 59 0
      build/patches/Rollback-dav1d-upgrades-that-break-x86.patch
  95. 57 51
      build/patches/Session-only-cookies-support.patch
  96. 13 21
      build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch
  97. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  98. 2 2
      build/patches/Update-i18n-zh_CN-support.patch
  99. 3 3
      build/patches/Use-4-tile-rows-never-show-logo.patch
  100. 1 1
      build/patches/Use-dummy-DFM-installer.patch

+ 7 - 0
CHANGELOG.md

@@ -1,3 +1,10 @@
+# 85.0.4183.82
+* disable scroll-to-text-fragment
+* remove NTP blocklisted URLs when adding an URL as bookmark
+* removed duet flags
+* unexpire `#darken-websites-checkbox-in-themes-setting` flag
+* rollback dav1d upgrade which breaks x86
+
 # 84.0.4147.132
 * fix exit menu item not always working (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/673)
 * session-only cookies site settings option (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/142)

+ 3 - 1
README.md

@@ -51,6 +51,7 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
 * use frozen User-Agent to conceal real model and browser version
 * privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
 * security enhancement patches from [GrapheneOS](https://github.com/GrapheneOS) project
+* disable scroll-to-text-fragment
 
 ## Features not related to privacy
 * import/export bookmarks
@@ -64,6 +65,7 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
 * allow changing default download storage location
 * do not ignore save prompt for users without SD cards
 * disable articles and increase number of icons on new tab page
+* adding an URL as bookmark will clear its blocked status for the NTP tiles
 
 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).
 
@@ -74,7 +76,7 @@ Flags which have been retired from upstream Chromium but are still available in
 * `#enable-horizontal-tab-switcher`
 * `#pull-to-refresh`
 * `#enable-search-ready-omnibox`
-* `#enable-chrome-duet` and `#enable-duet-tabstrip-integration`
+* `#darken-websites-checkbox-in-themes-setting`
 
 New flags:
 

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-84.0.4147.132
+85.0.4183.82

+ 6 - 5
build/bromite_patches_list.txt

@@ -98,11 +98,10 @@ 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
-Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
+Enable-SPPI-for-devices-with-enough-memory.patch
 prefs-disable-signinallowed-by-default.patch
 prefs-always-prompt-for-download-directory-by-default.patch
 Disable-offline-pages-in-the-downloads-home-to-be-opened-in-CCT-by-default.patch
-Enable-changing-default-downloads-storage-location-by-default.patch
 disable-payment-support-by-default.patch
 disable-background-sync-by-default.patch
 disable-sensors-access-site-setting-by-default.patch
@@ -114,7 +113,6 @@ Add-option-to-configure-the-ad-blocker-filters-URL.patch
 Replace-DoH-probe-domain-with-RIPE-domain.patch
 Increase-number-of-autocomplete-matches-from-5-to-10.patch
 Disable-HEAD-requests-for-single-word-Omnibar-searches.patch
-Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
 Disable-some-signed-exchange-features.patch
 Add-flag-to-disable-WebGL.patch
 Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
@@ -129,7 +127,6 @@ Restore-enable-horizontal-tab-switcher-flag.patch
 Disable-DRM-media-origin-IDs-preprovisioning.patch
 Disable-smart-selection-by-default.patch
 Enable-user-agent-freeze-by-default.patch
-show-download-prompt-again-by-default.patch
 disable-browser-autologin-by-default.patch
 Revert-gpu-android-Remove-setup-for-disabling-AImageReader.patch
 Revert-Remove-flags-to-enable-disable-AImageReader.patch
@@ -142,9 +139,13 @@ Enable-legacy-TLS-interstitital-warning.patch
 Block-gateway-attacks-via-websockets.patch
 Enable-prefetch-privacy-changes-by-default.patch
 Enable-reduced-referrer-granularity-by-default.patch
-Restore-duet-flags.patch
 Disable-support-for-RAR-files-inspection.patch
 Enable-improved-cookie-controls-by-default.patch
 Session-only-cookies-support.patch
 Add-history-support-in-incognito-mode.patch
+Enable-darken-websites-checkbox-in-themes.patch
+Remove-blocklisted-URLs-upon-bookmark-creation.patch
+Disable-scroll-to-text-fragment.patch
+Rollback-dav1d-upgrades-that-break-x86.patch
+Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
 Automated-domain-substitution.patch

+ 1 - 0
build/chromium_patches_list.txt

@@ -4,3 +4,4 @@ Switch-to-fstack-protector-strong.patch
 Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
 Disable-password-reuse-detection-on-android.patch
 Disable-feeds-support-by-default.patch
+Rollback-dav1d-upgrades-that-break-x86.patch

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

@@ -73,7 +73,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
-@@ -641,6 +641,11 @@ aom_mem_sources = [
+@@ -656,6 +656,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
  

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

@@ -17,7 +17,7 @@ See also:
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -4441,6 +4441,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4499,6 +4499,12 @@ const FeatureEntry kFeatureEntries[] = {
       kOsAll,
       FEATURE_VALUE_TYPE(features::kEnableAmbientAuthenticationInIncognito)},
  
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -483,6 +483,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] =
+@@ -515,6 +515,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] =
      "Enables ambient authentication in Incognito mode. This flag may be "
      "overriden by policies.";
  
@@ -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
-@@ -301,6 +301,9 @@ extern const char kEnableAccessibilityObjectModelDescription[];
+@@ -316,6 +316,9 @@ extern const char kEnableAccessibilityObjectModelDescription[];
  extern const char kEnableAmbientAuthenticationInIncognitoName[];
  extern const char kEnableAmbientAuthenticationInIncognitoDescription[];
  
@@ -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
-@@ -338,6 +338,9 @@ const char kHomePage[]                      = "homepage";
+@@ -339,6 +339,9 @@ const char kHomePage[]                      = "homepage";
  // Causes the browser to launch directly in incognito mode.
  const char kIncognito[]                     = "incognito";
  

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

@@ -53,7 +53,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
  
-+    <org.chromium.chrome.browser.settings.HyperlinkPreference
++    <org.chromium.chrome.browser.about_settings.HyperlinkPreference
 +        android:key="proxy"
 +        android:title="@string/proxy_title"
 +        app:url="@string/proxy_url" />
@@ -63,7 +63,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -239,6 +239,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -245,6 +245,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<base::string16> builtins_to_provide;
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
@@ -76,7 +76,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
 @@ -111,6 +111,12 @@
-         <include name="IDR_OFFLINE_INTERNALS_BROWSER_PROXY_JS" file="resources\offline_pages\offline_internals_browser_proxy.js" type="BINDATA" compress="gzip" />
+         <include name="IDR_OFFLINE_INTERNALS_BROWSER_PROXY_JS" file="resources\offline_pages\offline_internals_browser_proxy.js" type="BINDATA" />
        </if>
  
 +      <!-- Bromite Proxy Configuration UI -->
@@ -509,7 +509,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -263,6 +263,8 @@ static_library("ui") {
+@@ -253,6 +253,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -521,7 +521,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -60,6 +60,7 @@
+@@ -62,6 +62,7 @@
  #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
  #include "chrome/browser/ui/webui/policy_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
@@ -529,7 +529,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -452,6 +453,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -464,6 +465,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -979,7 +979,7 @@ new file mode 100644
 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
-@@ -33,6 +33,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
+@@ -32,6 +32,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
  const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
  const char kChromeUIChromeSigninHost[] = "chrome-signin";
  const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
@@ -996,7 +996,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
        kChromeUIOobeHost,
        kChromeUIOSCreditsHost,
        kChromeUIOSSettingsHost,
-@@ -469,6 +472,7 @@ const char* const kChromeHostURLs[] = {
+@@ -480,6 +483,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
@@ -1007,7 +1007,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
-@@ -116,6 +116,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -108,6 +108,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
-@@ -1517,6 +1518,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1509,6 +1510,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -161,7 +161,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;
-@@ -1644,8 +1645,9 @@ public class ChromeTabbedActivity
+@@ -1664,8 +1665,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -172,11 +172,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 +                && savedInstanceState.getBoolean("is_incognito_selected", false));
          int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
  
-         mTabModelSelectorImpl =
+         NextTabPolicySupplier nextTabPolicySupplier =
 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
-@@ -297,6 +297,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -296,6 +296,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -192,7 +192,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
-@@ -25,7 +25,9 @@ import org.chromium.base.annotations.CalledByNative;
+@@ -27,7 +27,9 @@ import org.chromium.base.annotations.CalledByNative;
  import org.chromium.base.annotations.NativeMethods;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.supplier.Supplier;
@@ -202,7 +202,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.externalauth.ExternalAuthUtils;
-@@ -375,7 +377,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -399,7 +401,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
              if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(params.getUrl())
                      && UrlUtilities.isAcceptedScheme(params.getUrl())) {
                  if (mMode == ContextMenuMode.NORMAL) {
@@ -228,7 +228,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.ArrayList;
-@@ -401,6 +404,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
+@@ -409,6 +412,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
      // TODO(https://crbug.com/1023759): Remove this function and enable
      // incognito CCT request for all apps.
      private boolean isValidIncognitoIntent(Intent intent) {
@@ -251,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
  /**
   * This class attempts to preload the tab if the url is known from the intent when the profile
   * is created. This is done to improve startup latency.
-@@ -174,9 +177,11 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
+@@ -187,9 +190,11 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
          Intent intent = mIntentSupplier.get();
          GURL url = UrlFormatter.fixupUrl(getUrlFromIntent(intent));
  
@@ -265,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
  
          mLoadUrlParams = new LoadUrlParams(url.getValidSpecOrEmpty());
          String referrer = IntentHandler.getReferrerUrlIncludingExtraHeaders(intent);
-@@ -190,7 +195,7 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
+@@ -203,7 +208,7 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
          // Create a detached tab, but don't add it to the tab model yet. We'll do that
          // later if the loadUrlParams etc... match.
          mTab = TabBuilder.createLiveTab(false)
@@ -277,7 +277,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/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
-@@ -38,6 +38,10 @@ import org.chromium.ui.base.PageTransition;
+@@ -39,6 +39,10 @@ import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.url.GURL;
  
@@ -288,7 +288,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}.
   */
-@@ -56,6 +60,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -59,6 +63,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
      private final ChromeActivity mActivity;
      private final StartupTabPreloader mStartupTabPreloader;
      private final boolean mIncognito;
@@ -296,7 +296,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -73,6 +78,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -76,6 +81,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          mNativeWindow = nativeWindow;
          mTabDelegateFactorySupplier = tabDelegateFactory;
          mIncognito = incognito;
@@ -307,7 +307,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mOverviewNTPCreator = overviewNTPCreator;
      }
  
-@@ -225,6 +234,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -228,6 +237,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
              if (creationState == TabCreationState.LIVE_IN_FOREGROUND && !openInForeground) {
                  creationState = TabCreationState.LIVE_IN_BACKGROUND;
              }
@@ -316,7 +316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type, creationState);
              return tab;
          } finally {
-@@ -259,6 +270,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -262,6 +273,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          @TabCreationState
          int creationState = openInForeground ? TabCreationState.LIVE_IN_FOREGROUND
                                               : TabCreationState.LIVE_IN_BACKGROUND;
@@ -325,7 +325,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type, creationState);
          return true;
      }
-@@ -302,7 +315,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -305,7 +318,6 @@ public class ChromeTabCreator extends TabCreatorManager.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) {
@@ -333,19 +333,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          if (forceNewTab && !isLaunchedFromChrome) {
-@@ -404,6 +416,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -412,6 +424,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+                           .setTabState(state)
                            .build();
          }
-         assert state.isIncognito() == mIncognito;
 +        if (mExtraLogic != null)
 +            tab.addObserver(mExtraLogic);
-         mTabModel.addTab(tab, index, launchType, creationState);
-         return tab;
-     }
+ 
+         if (state.isIncognito() != mIncognito) {
+             throw new IllegalStateException("Incognito state mismatch. TabState: "
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
-@@ -246,6 +246,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
+@@ -248,6 +248,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
          if (mTabStateInitialized) return;
          mTabStateInitialized = true;
          for (TabModelSelectorObserver listener : mObservers) listener.onTabStateInitialized();
@@ -364,7 +364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
-@@ -45,6 +45,8 @@ import org.chromium.components.embedder_support.util.UrlConstants;
+@@ -47,6 +47,8 @@ import org.chromium.components.embedder_support.util.UrlConstants;
  import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  
@@ -373,7 +373,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;
-@@ -601,6 +603,13 @@ public class TabPersistentStore extends TabPersister {
+@@ -599,6 +601,13 @@ public class TabPersistentStore extends TabPersister {
              }
          }
  
@@ -385,12 +385,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
 +        }
 +
          TabModel model = mTabModelSelector.getModel(isIncognito);
-         SparseIntArray restoredTabs = isIncognito ? mIncognitoTabsRestored : mNormalTabsRestored;
-         int restoredIndex = 0;
+ 
+         if (model.isIncognito() != isIncognito) {
 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
-@@ -339,7 +339,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
+@@ -333,7 +333,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognito{"CCTIncognito",
@@ -402,7 +402,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
-@@ -724,6 +724,13 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -773,6 +773,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>
@@ -416,3 +416,6 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY_SIGNED_IN" desc="A text explaining other forms of activity for signed in users.">
          Clears history and autocompletions in the address bar. Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK">&lt;link&gt;</ph>myactivity.google.com<ph name="END_LINK">&lt;/link&gt;</ph>.
        </message>
+-- 
+2.17.1
+

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

@@ -327,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -176,6 +176,10 @@ static_library("browser") {
+@@ -182,6 +182,10 @@ static_library("browser") {
      "bitmap_fetcher/bitmap_fetcher_service.h",
      "bitmap_fetcher/bitmap_fetcher_service_factory.cc",
      "bitmap_fetcher/bitmap_fetcher_service_factory.h",
@@ -338,16 +338,16 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "bluetooth/bluetooth_chooser_context.cc",
      "bluetooth/bluetooth_chooser_context.h",
      "bluetooth/bluetooth_chooser_context_factory.cc",
-@@ -3144,8 +3148,6 @@ static_library("browser") {
+@@ -3048,8 +3052,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
 -      "bookmarks/bookmark_html_writer.cc",
 -      "bookmarks/bookmark_html_writer.h",
-       "certificate_viewer.h",
-       "chrome_browser_field_trials_desktop.cc",
-       "chrome_browser_field_trials_desktop.h",
-@@ -3282,8 +3284,6 @@ static_library("browser") {
+       "browsing_data/access_context_audit_database.cc",
+       "browsing_data/access_context_audit_database.h",
+       "browsing_data/access_context_audit_service.cc",
+@@ -3189,8 +3191,6 @@ static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -457,7 +457,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  }
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -513,6 +583,153 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -520,6 +590,153 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
  }
  
@@ -752,7 +752,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -417,6 +417,9 @@ static_library("common") {
+@@ -415,6 +415,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -774,7 +774,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/edge_database_reader_win.cc",
-@@ -170,6 +168,11 @@ static_library("utility") {
+@@ -172,6 +170,11 @@ static_library("utility") {
      }
    }
  

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

@@ -35,13 +35,13 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 +        android:title="@string/allow_custom_tab_intents_title"
 +        android:summary="@string/allow_custom_tab_intents_summary"
 +        android:defaultValue="false" />
-     <Preference
-         android:key="clear_browsing_data"
-         android:title="@string/clear_browsing_data_title"
+     <org.chromium.components.browser_ui.settings.ChromeBasePreference
+         android:key="secure_dns"
+         android:title="@string/settings_secure_dns_title"
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
-@@ -52,6 +52,8 @@ import org.chromium.ui.widget.Toast;
+@@ -54,6 +54,8 @@ import org.chromium.url.Origin;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  
@@ -50,7 +50,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.
-@@ -240,6 +242,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -243,6 +245,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -62,7 +62,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
-@@ -45,6 +45,8 @@ public class PrivacySettings
+@@ -51,6 +51,8 @@ public class PrivacySettings
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
@@ -70,8 +70,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-         SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
-@@ -80,6 +82,10 @@ public class PrivacySettings
+         PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
+@@ -91,6 +93,10 @@ public class PrivacySettings
                      Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
          }
-@@ -115,6 +121,11 @@ public class PrivacySettings
+@@ -126,6 +132,11 @@ public class PrivacySettings
                      prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
@@ -97,7 +97,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
-@@ -3449,6 +3449,13 @@ Only you can see what your camera is looking at. The site can't see your camera'
+@@ -3585,6 +3585,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_NEAR_OOM_REDUCTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can be reloaded.">
           Show original
        </message>

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

@@ -4,11 +4,11 @@ Subject: Add exit menu item
 
 Corrected Exit functionality
 ---
- chrome/android/java/res/menu/main_menu.xml                 | 4 ++++
- .../src/org/chromium/chrome/browser/ChromeActivity.java    | 7 +++++++
- .../chrome/browser/init/ChromeLifetimeController.java      | 6 +++++-
- .../browser/ui/android/strings/android_chrome_strings.grd  | 3 +++
- 4 files changed, 19 insertions(+), 1 deletion(-)
+ chrome/android/java/res/menu/main_menu.xml                  | 4 ++++
+ .../src/org/chromium/chrome/browser/ChromeActivity.java     | 5 +++++
+ .../chrome/browser/init/ChromeLifetimeController.java       | 6 +++++-
+ .../browser/ui/android/strings/android_chrome_strings.grd   | 3 +++
+ 4 files changed, 17 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
@@ -34,7 +34,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1920,6 +1920,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1896,6 +1896,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              RecordUserAction.record("MobileMenuSettings");
          }
  
@@ -46,15 +46,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
          if (id == R.id.update_menu_id) {
              UpdateMenuItemHelper.getInstance().onMenuItemClicked(this);
              return true;
-@@ -1996,6 +2001,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             AddToHomescreenCoordinator.showForAppMenu(
-                     this, getWindowAndroid(), getModalDialogManager(), currentTab.getWebContents());
-             RecordUserAction.record("MobileMenuAddToHomescreen");
-+        } else if (id == R.id.exit_id) {
-+            ApplicationLifetime.terminate(false);
-         } else if (id == R.id.open_webapk_id) {
-             Context context = ContextUtils.getApplicationContext();
-             String packageName =
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
@@ -74,7 +65,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
-@@ -2413,6 +2413,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -2551,6 +2551,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_SETTINGS" desc="Menu item for opening browser settings. [CHAR-LIMIT=27]">
          Settings
        </message>

+ 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
-@@ -740,6 +740,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -701,6 +701,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 ==
-@@ -2928,6 +2933,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2953,6 +2958,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
-@@ -1227,6 +1227,10 @@ const char kMediaHistoryDescription[] =
+@@ -1298,6 +1298,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
-@@ -738,6 +738,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
+@@ -770,6 +770,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
  extern const char kMediaHistoryName[];
  extern const char kMediaHistoryDescription[];
  

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

@@ -13,7 +13,7 @@ Disable it by default on Android as it is everywhere else
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2143,6 +2143,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2146,6 +2146,10 @@ const FeatureEntry kFeatureEntries[] = {
       kOsAura,
       FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashWhenMouseEnter)},
  #endif  // USE_AURA
@@ -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
-@@ -853,6 +853,11 @@ const char kMemlogStackModeNative[] = "Native";
+@@ -912,6 +912,11 @@ const char kMemlogStackModeNative[] = "Native";
  const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
  const char kMemlogStackModePseudo[] = "Trace events";
  
@@ -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
-@@ -495,6 +495,9 @@ extern const char kEnablePortalsDescription[];
+@@ -518,6 +518,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsCrossOriginName[];
  extern const char kEnablePortalsCrossOriginDescription[];
  
@@ -67,7 +67,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 +   base::FEATURE_DISABLED_BY_DEFAULT
  };
  
- // Enable Media Capabilities with finch-parameters.
+ // When enabled, MediaCapabilities will check with GPU Video Accelerator
 -- 
 2.17.1
 

+ 7 - 7
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
-@@ -3713,6 +3713,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3770,6 +3770,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
  #endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
  
@@ -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
-@@ -2437,6 +2437,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -2561,6 +2561,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
-@@ -561,6 +561,9 @@ extern const char kEnableWasmThreadsName[];
+@@ -584,6 +584,9 @@ extern const char kEnableWasmThreadsName[];
  extern const char kEnableWasmThreadsDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -101,7 +101,7 @@ diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/compon
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
-@@ -92,6 +92,7 @@
+@@ -93,6 +93,7 @@
  #include "net/log/net_log_event_type.h"
  #include "net/log/net_log_source.h"
  #include "net/log/net_log_source_type.h"
@@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
-@@ -3585,8 +3586,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3583,8 +3584,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {
@@ -128,7 +128,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 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
-@@ -52,6 +52,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -47,6 +47,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT};
  const base::Feature kThrottleDelayable{"ThrottleDelayable",
                                         base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -142,7 +142,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
 diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
 --- a/services/network/public/cpp/features.h
 +++ b/services/network/public/cpp/features.h
-@@ -21,6 +21,8 @@ extern const base::Feature kNetworkErrorLogging;
+@@ -19,6 +19,8 @@ extern const base::Feature kNetworkErrorLogging;
  COMPONENT_EXPORT(NETWORK_CPP)
  extern const base::Feature kNetworkService;
  COMPONENT_EXPORT(NETWORK_CPP)

+ 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
-@@ -1972,6 +1972,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1975,6 +1975,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
-@@ -452,6 +452,10 @@ const char kDeviceDiscoveryNotificationsName[] =
+@@ -484,6 +484,10 @@ const char kDeviceDiscoveryNotificationsName[] =
  const char kDeviceDiscoveryNotificationsDescription[] =
      "Device discovery notifications on local network.";
  
@@ -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
-@@ -286,6 +286,9 @@ extern const char kDebugShortcutsDescription[];
+@@ -301,6 +301,9 @@ extern const char kDebugShortcutsDescription[];
  extern const char kDeviceDiscoveryNotificationsName[];
  extern const char kDeviceDiscoveryNotificationsDescription[];
  

+ 10 - 10
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
-@@ -2196,6 +2196,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2199,6 +2199,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
-@@ -674,6 +674,14 @@ const char kWinrtSensorsImplementationDescription[] =
+@@ -705,6 +705,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
-@@ -407,6 +407,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
+@@ -422,6 +422,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
  extern const char kWinrtSensorsImplementationName[];
  extern const char kWinrtSensorsImplementationDescription[];
  
@@ -70,9 +70,9 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -88,6 +88,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -92,6 +92,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
        command_line.HasSwitch(
-           switches::kEnableGpuMemoryBufferCompositorResources) &&
+           blink::switches::kEnableGpuMemoryBufferCompositorResources) &&
        !command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
 +  WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
 +  WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
@@ -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
-@@ -804,6 +804,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
+@@ -801,6 +801,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
  // TODO(rouslan): Remove this.
  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
-@@ -176,6 +176,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
+@@ -175,6 +175,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
  CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
  CONTENT_EXPORT extern const base::Feature kWebXrPermissionsApi;
  
@@ -115,7 +115,7 @@ diff --git a/content/public/common/content_features.h b/content/public/common/co
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -98,6 +98,8 @@ class WebRuntimeFeatures {
+@@ -99,6 +99,8 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
    BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
    BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
@@ -147,7 +147,7 @@ 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
-@@ -179,6 +179,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
+@@ -189,6 +189,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
    RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(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
-@@ -1244,6 +1244,14 @@
+@@ -1256,6 +1256,14 @@
        name: "OffscreenCanvasCommit",
        status: "experimental",
      },

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

@@ -5,7 +5,6 @@ Subject: Add history support in incognito mode
 ---
  .../java/res/xml/privacy_preferences.xml       |  5 +++++
  .../privacy/settings/PrivacySettings.java      | 18 ++++++++++++++++++
- chrome/browser/android/preferences/prefs.h     |  2 ++
  chrome/browser/history/history_tab_helper.cc   | 16 ++++++++++++++++
  chrome/browser/history/history_tab_helper.h    |  4 ++++
  chrome/browser/prefs/browser_prefs.cc          |  2 ++
@@ -13,10 +12,9 @@ Subject: Add history support in incognito mode
  .../translations/android_chrome_strings_it.xtb |  2 ++
  chrome/common/pref_names.cc                    |  5 +++++
  chrome/common/pref_names.h                     |  4 ++++
- 10 files changed, 64 insertions(+)
+ 9 files changed, 62 insertions(+)
  mode change 100644 => 100755 chrome/android/java/res/xml/privacy_preferences.xml
  mode change 100644 => 100755 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
- mode change 100644 => 100755 chrome/browser/android/preferences/prefs.h
  mode change 100644 => 100755 chrome/browser/history/history_tab_helper.cc
  mode change 100644 => 100755 chrome/browser/history/history_tab_helper.h
  mode change 100644 => 100755 chrome/browser/prefs/browser_prefs.cc
@@ -30,9 +28,9 @@ old mode 100644
 new mode 100755
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -34,6 +34,11 @@
-         android:title="@string/always_incognito_title"
-         android:summary="@string/always_incognito_summary"
+@@ -39,6 +39,11 @@
+         android:title="@string/close_tabs_on_exit_title"
+         android:summary="@string/close_tabs_on_exit_summary"
          android:defaultValue="false" />
 +    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
 +        android:key="incognito_history_enabled"
@@ -47,16 +45,16 @@ old mode 100644
 new mode 100755
 --- 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
-@@ -34,6 +34,8 @@ import org.chromium.components.browser_ui.settings.SettingsUtils;
- import org.chromium.ui.text.NoUnderlineClickableSpan;
- import org.chromium.ui.text.SpanApplier;
+@@ -38,6 +38,8 @@ import org.chromium.ui.text.SpanApplier;
+ 
+ import java.util.List;
  
 +import org.chromium.base.Log;
 +
  /**
   * Fragment to keep track of the all the privacy related preferences.
   */
-@@ -49,6 +51,7 @@ public class PrivacySettings
+@@ -55,6 +57,7 @@ public class PrivacySettings
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
      public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
@@ -64,7 +62,7 @@ new mode 100755
  
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-@@ -74,6 +77,11 @@ public class PrivacySettings
+@@ -85,6 +88,11 @@ public class PrivacySettings
          searchSuggestionsPref.setOnPreferenceChangeListener(this);
          searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
@@ -76,7 +74,7 @@ new mode 100755
          updateSummaries();
      }
  
-@@ -95,6 +103,9 @@ public class PrivacySettings
+@@ -106,6 +114,9 @@ public class PrivacySettings
              SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
              sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
              sharedPreferencesEditor.apply();
@@ -86,7 +84,7 @@ new mode 100755
          }
  
          return true;
-@@ -144,6 +155,13 @@ public class PrivacySettings
+@@ -180,6 +191,13 @@ public class PrivacySettings
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
          closeTabsOnExitPref.setOnPreferenceChangeListener(this);
          closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -100,27 +98,6 @@ new mode 100755
      }
  
      private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
-diff --git a/chrome/browser/android/preferences/prefs.h b/chrome/browser/android/preferences/prefs.h
-old mode 100644
-new mode 100755
---- a/chrome/browser/android/preferences/prefs.h
-+++ b/chrome/browser/android/preferences/prefs.h
-@@ -67,6 +67,7 @@ enum Pref {
-   HOME_PAGE,
-   AUTOFILL_CREDIT_CARD_FIDO_AUTH_ENABLED,
-   ENABLE_QUIET_NOTIFICATION_PERMISSION_UI,
-+  INCOGNITO_TAB_HISTORY_ENABLED,
-   // PREF_NUM_PREFS must be the last entry.
-   PREF_NUM_PREFS
- };
-@@ -115,6 +116,7 @@ const char* const kPrefsExposedToJava[] = {
-     prefs::kHomePage,
-     autofill::prefs::kAutofillCreditCardFidoAuthEnabled,
-     prefs::kEnableQuietNotificationPermissionUi,
-+    prefs::kIncognitoTabHistoryEnabled,
- };
- 
- #endif  // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
 diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc
 old mode 100644
 new mode 100755
@@ -136,7 +113,7 @@ new mode 100755
  #else
  #include "chrome/browser/ui/browser.h"
  #include "chrome/browser/ui/browser_finder.h"
-@@ -240,6 +243,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
+@@ -242,6 +245,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
  history::HistoryService* HistoryTabHelper::GetHistoryService() {
    Profile* profile =
        Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -150,7 +127,7 @@ new mode 100755
    if (profile->IsOffTheRecord())
      return NULL;
  
-@@ -247,6 +257,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
+@@ -249,6 +259,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
        profile, ServiceAccessType::IMPLICIT_ACCESS);
  }
  
@@ -191,7 +168,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -232,6 +232,7 @@
+@@ -233,6 +233,7 @@
  #include "components/ntp_tiles/popular_sites_impl.h"
  #include "components/permissions/contexts/geolocation_permission_context_android.h"
  #include "components/query_tiles/tile_service_prefs.h"
@@ -199,7 +176,7 @@ new mode 100755
  #if BUILDFLAG(ENABLE_FEED_IN_CHROME)
  #include "components/feed/core/common/pref_names.h"
  #endif  // BUILDFLAG(ENABLE_FEED_IN_CHROME)
-@@ -978,6 +979,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -999,6 +1000,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
    variations::VariationsService::RegisterProfilePrefs(registry);
    feed::prefs::RegisterFeedSharedProfilePrefs(registry);
@@ -212,7 +189,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -745,6 +745,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -794,6 +794,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>
@@ -230,7 +207,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-@@ -1017,4 +1017,6 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
+@@ -1062,4 +1062,6 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
  <translation id="666268767214822976">Utilizza un servizio di previsione per visualizzare query correlate e siti web popolari durante la digitazione nella barra degli indirizzi</translation>
  <translation id="8283853025636624853">Sincronizzazione con <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
  <translation id="8981454092730389528">Gestione attività di Google</translation>
@@ -242,7 +219,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -2996,4 +2996,9 @@ const char kMediaFeedsSafeSearchEnabled[] = "media_feeds_safe_search_enabled";
+@@ -3038,4 +3038,9 @@ const char kMediaFeedsSafeSearchEnabled[] = "media_feeds_safe_search_enabled";
  // TODO(enne): Remove this once AppCache has been removed.
  const char kAppCacheForceEnabled[] = "app_cache_force_enabled";
  
@@ -257,7 +234,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -1064,6 +1064,10 @@ extern const char kMediaFeedsSafeSearchEnabled[];
+@@ -1074,6 +1074,10 @@ extern const char kMediaFeedsSafeSearchEnabled[];
  
  extern const char kAppCacheForceEnabled[];
  

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

@@ -40,7 +40,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2010,6 +2010,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1984,6 +1984,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              } catch (ActivityNotFoundException e) {
                  Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
              }
@@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 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
-@@ -1838,6 +1838,8 @@ public class ChromeTabbedActivity
+@@ -1866,6 +1866,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -64,7 +64,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/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
-@@ -288,6 +288,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -287,6 +287,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
                          isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -72,7 +72,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));
-@@ -625,6 +626,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -622,6 +623,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          }
      }
  
@@ -95,7 +95,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
-@@ -214,6 +214,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+@@ -220,6 +220,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
              }
  
              updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
@@ -106,7 +106,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
-@@ -309,6 +309,9 @@ CHAR-LIMIT guidelines:
+@@ -307,6 +307,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>

+ 22 - 20
build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch

@@ -5,7 +5,7 @@ Subject: Add option to configure the ad blocker filters URL
 ---
  chrome/android/chrome_java_resources.gni      |  2 +
  chrome/android/chrome_java_sources.gni        |  2 +
- .../java/res/layout/adblock_editor.xml        | 65 +++++++++++++
+ .../java/res/layout/adblock_editor.xml        | 67 ++++++++++++++
  chrome/android/java/res/values/values.xml     |  2 +
  .../java/res/xml/adblock_preferences.xml      | 25 +++++
  .../android/java/res/xml/main_preferences.xml |  5 +
@@ -21,7 +21,7 @@ Subject: Add option to configure the ad blocker filters URL
  chrome/common/pref_names.h                    |  1 +
  .../adblock_updater_service.cc                |  6 +-
  .../adblock_updater_service.h                 |  3 +-
- 18 files changed, 311 insertions(+), 5 deletions(-)
+ 18 files changed, 313 insertions(+), 5 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
@@ -30,7 +30,7 @@ Subject: Add option to configure the ad blocker filters URL
 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
-@@ -885,6 +885,7 @@ chrome_java_resources = [
+@@ -815,6 +815,7 @@ chrome_java_resources = [
    "java/res/layout/account_picker_new_account_row_legacy.xml",
    "java/res/layout/account_picker_row.xml",
    "java/res/layout/account_picker_row_legacy.xml",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
    "java/res/layout/add_languages_main.xml",
    "java/res/layout/add_to_homescreen_dialog.xml",
    "java/res/layout/auto_sign_in_first_run_dialog.xml",
-@@ -1175,6 +1176,7 @@ chrome_java_resources = [
+@@ -1102,6 +1103,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -49,7 +49,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
-@@ -1321,6 +1321,8 @@ chrome_java_sources = [
+@@ -1318,6 +1318,8 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java",
@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/
 new file mode 100644
 --- /dev/null
 +++ b/chrome/android/java/res/layout/adblock_editor.xml
-@@ -0,0 +1,65 @@
+@@ -0,0 +1,67 @@
 +<?xml version="1.0" encoding="utf-8"?>
 +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
 +     Use of this source code is governed by a BSD-style license that can be
@@ -89,7 +89,9 @@ new file mode 100644
 +
 +            <com.google.android.material.textfield.TextInputLayout
 +                android:id="@+id/adblock_url"
-+                style="@style/PreferenceScreenLayout"
++                android:paddingTop="16dp"
++                android:paddingStart="@dimen/pref_autofill_content_spacing"
++                android:paddingEnd="@dimen/pref_autofill_content_spacing"
 +                android:layout_width="match_parent"
 +                android:layout_height="wrap_content" >
 +                <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
@@ -159,7 +161,7 @@ new file mode 100644
 +        android:summaryOn="@string/text_on"
 +        android:summaryOff="@string/text_off" />
 +
-+    <org.chromium.chrome.browser.settings.HyperlinkPreference
++    <org.chromium.chrome.browser.about_settings.HyperlinkPreference
 +        android:key="adblock_help"
 +        android:title="@string/adblock_help"
 +        app:url="@string/adblock_help_url" />
@@ -173,9 +175,9 @@ new file mode 100644
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -55,6 +55,11 @@
+@@ -61,6 +61,11 @@
          android:key="privacy"
-         android:order="12"
+         android:order="14"
          android:title="@string/prefs_privacy"/>
 +    <Preference
 +        android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
@@ -351,7 +353,7 @@ new file mode 100644
 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
-@@ -9806,6 +9806,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -9883,6 +9883,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -371,7 +373,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
 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
-@@ -1066,7 +1066,8 @@ BrowserProcessImpl::adblock_updater() {
+@@ -1075,7 +1075,8 @@ BrowserProcessImpl::adblock_updater() {
    adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
            g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
            std::move(scheduler),
@@ -402,8 +404,8 @@ 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
-@@ -250,6 +250,14 @@ public class CachedFeatureFlags {
-                 ChromeFeatureList.isEnabled(ChromeFeatureList.REACHED_CODE_PROFILER));
+@@ -253,6 +253,14 @@ public class CachedFeatureFlags {
+                         ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0));
      }
  
 +     public static void setAdBlockFiltersURL(String url) {
@@ -417,7 +419,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.
       */
-@@ -402,5 +410,7 @@ public class CachedFeatureFlags {
+@@ -405,5 +413,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -428,7 +430,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
-@@ -328,6 +328,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -331,6 +331,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -437,7 +439,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 =
-@@ -389,6 +391,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -392,6 +394,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -449,7 +451,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 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
-@@ -1825,6 +1825,20 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -1958,6 +1958,20 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Work profile
        </message>
  
@@ -473,7 +475,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
-@@ -2043,6 +2043,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2069,6 +2069,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -486,7 +488,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -31,6 +31,7 @@ extern const char kDownloadRestrictions[];
+@@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
  extern const char kForceEphemeralProfiles[];
  extern const char kHomePageIsNewTabPage[];
  extern const char kHomePage[];

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

@@ -26,9 +26,9 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -34,6 +34,11 @@
-         android:title="@string/allow_custom_tab_intents_title"
-         android:summary="@string/allow_custom_tab_intents_summary"
+@@ -25,6 +25,11 @@
+         android:title="@string/always_incognito_title"
+         android:summary="@string/always_incognito_summary"
          android:defaultValue="false" />
 +    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
 +        android:key="close_tabs_on_exit"
@@ -36,12 +36,12 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 +        android:summary="@string/close_tabs_on_exit_summary"
 +        android:defaultValue="false" />
      <Preference
-         android:key="clear_browsing_data"
-         android:title="@string/clear_browsing_data_title"
+         android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
+         android:key="do_not_track"
 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
-@@ -1173,8 +1173,10 @@ public class ChromeTabbedActivity
+@@ -1182,8 +1182,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -72,15 +72,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.base.BuildInfo;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -40,6 +42,7 @@ public class PrivacySettings
+@@ -41,6 +43,7 @@ import java.util.List;
+  */
+ public class PrivacySettings
+         extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
++    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
      private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
      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_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
-     private static final String PREF_DO_NOT_TRACK = "do_not_track";
-     private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
- 
-@@ -88,6 +91,10 @@ public class PrivacySettings
+@@ -99,6 +102,10 @@ public class PrivacySettings
              sharedPreferencesEditor.apply();
          } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -91,9 +91,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -132,6 +139,11 @@ public class PrivacySettings
-                             ? R.string.text_on
-                             : R.string.text_off);
+@@ -168,6 +175,11 @@ public class PrivacySettings
+                         String.format("%s - %s", getString(R.string.text_on), serverName));
+             }
          }
 +
 +        ChromeBaseCheckBoxPreference closeTabsOnExitPref =
@@ -106,7 +106,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
-@@ -3196,6 +3196,12 @@ Only you can see what your camera is looking at. The site can't see your camera'
+@@ -3334,6 +3334,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
          IMAGE
        </message>

+ 20 - 18
build/patches/Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch

@@ -5,7 +5,7 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
 ---
  chrome/android/chrome_java_resources.gni      |  2 +
  chrome/android/chrome_java_sources.gni        |  2 +
- chrome/android/java/res/layout/doh_editor.xml | 65 +++++++++++++
+ chrome/android/java/res/layout/doh_editor.xml | 67 ++++++++++++++
  chrome/android/java/res/values/values.xml     |  2 +
  .../android/java/res/xml/doh_preferences.xml  | 25 +++++
  .../java/res/xml/privacy_preferences.xml      |  5 +
@@ -17,7 +17,7 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
  .../net/stub_resolver_config_reader.cc        | 36 ++------
  .../strings/android_chrome_strings.grd        | 11 +++
  chrome/common/chrome_features.cc              |  4 +-
- 14 files changed, 322 insertions(+), 31 deletions(-)
+ 14 files changed, 324 insertions(+), 31 deletions(-)
  create mode 100644 chrome/android/java/res/layout/doh_editor.xml
  create mode 100644 chrome/android/java/res/xml/doh_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
@@ -26,15 +26,15 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
 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
-@@ -954,6 +954,7 @@ chrome_java_resources = [
+@@ -881,6 +881,7 @@ chrome_java_resources = [
+   "java/res/layout/date_view.xml",
+   "java/res/layout/default_search_engine_first_run_fragment.xml",
    "java/res/layout/device_item_list.xml",
++  "java/res/layout/doh_editor.xml",
    "java/res/layout/distilled_page_font_family_spinner.xml",
    "java/res/layout/distilled_page_prefs_view.xml",
-+  "java/res/layout/doh_editor.xml",
-   "java/res/layout/edit_url_suggestion_layout.xml",
    "java/res/layout/editable_option_editor_footer.xml",
-   "java/res/layout/editable_option_editor_icons.xml",
-@@ -1185,6 +1186,7 @@ chrome_java_resources = [
+@@ -1112,6 +1113,7 @@ chrome_java_resources = [
    "java/res/xml/data_reduction_preferences.xml",
    "java/res/xml/data_reduction_preferences_off_lite_mode.xml",
    "java/res/xml/developer_preferences.xml",
@@ -45,7 +45,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
-@@ -1374,6 +1374,8 @@ chrome_java_sources = [
+@@ -1373,6 +1373,8 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
    "java/src/org/chromium/chrome/browser/send_tab_to_self/DevicePickerBottomSheetAdapter.java",
    "java/src/org/chromium/chrome/browser/send_tab_to_self/DevicePickerBottomSheetContent.java",
@@ -58,7 +58,7 @@ diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java
 new file mode 100644
 --- /dev/null
 +++ b/chrome/android/java/res/layout/doh_editor.xml
-@@ -0,0 +1,65 @@
+@@ -0,0 +1,67 @@
 +<?xml version="1.0" encoding="utf-8"?>
 +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
 +     Use of this source code is governed by a BSD-style license that can be
@@ -85,7 +85,9 @@ new file mode 100644
 +
 +            <com.google.android.material.textfield.TextInputLayout
 +                android:id="@+id/doh_url"
-+                style="@style/PreferenceScreenLayout"
++                android:paddingTop="16dp"
++                android:paddingStart="@dimen/pref_autofill_content_spacing"
++                android:paddingEnd="@dimen/pref_autofill_content_spacing"
 +                android:layout_width="match_parent"
 +                android:layout_height="wrap_content" >
 +                <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
@@ -155,7 +157,7 @@ new file mode 100644
 +        android:summaryOn="@string/text_on"
 +        android:summaryOff="@string/text_off" />
 +
-+    <org.chromium.chrome.browser.settings.HyperlinkPreference
++    <org.chromium.chrome.browser.about_settings.HyperlinkPreference
 +        android:key="doh_help"
 +        android:title="@string/doh_help"
 +        app:url="@string/doh_help_url" />
@@ -340,7 +342,7 @@ new file mode 100644
 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
-@@ -6912,6 +6912,12 @@ the Bookmarks menu.">
+@@ -6977,6 +6977,12 @@ the Bookmarks menu.">
        </if>
  
        <if expr="is_android">
@@ -395,7 +397,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
-@@ -127,6 +127,26 @@ public class CachedFeatureFlags {
+@@ -128,6 +128,26 @@ public class CachedFeatureFlags {
      private static Map<String, String> sOverridesTestFeatures;
      private static String sReachedCodeProfilerTrialGroup;
  
@@ -422,7 +424,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      /**
       * Checks if a cached feature flag is enabled.
       *
-@@ -409,6 +429,10 @@ public class CachedFeatureFlags {
+@@ -412,6 +432,10 @@ public class CachedFeatureFlags {
  
      @NativeMethods
      interface Natives {
@@ -436,7 +438,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc
 --- a/chrome/browser/net/stub_resolver_config_reader.cc
 +++ b/chrome/browser/net/stub_resolver_config_reader.cc
-@@ -140,28 +140,6 @@ StubResolverConfigReader::StubResolverConfigReader(PrefService* local_state,
+@@ -141,28 +141,6 @@ StubResolverConfigReader::StubResolverConfigReader(PrefService* local_state,
          base::Value(SecureDnsConfig::ModeToString(default_secure_dns_mode)));
      local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsTemplates,
                                        base::Value(default_doh_templates));
@@ -465,7 +467,7 @@ diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/
    }
  
    pref_change_registrar_.Add(prefs::kBuiltInDnsClientEnabled, pref_callback);
-@@ -323,21 +301,21 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration(
+@@ -346,21 +324,21 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration(
      parental_controls_checked_ = true;
    }
  
@@ -497,7 +499,7 @@ diff --git a/chrome/browser/net/stub_resolver_config_reader.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
-@@ -580,6 +580,17 @@ CHAR-LIMIT guidelines:
+@@ -590,6 +590,17 @@ CHAR-LIMIT guidelines:
          Chrome Passwords
        </message>
  
@@ -518,7 +520,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 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
-@@ -281,12 +281,12 @@ const base::Feature kDefaultWebAppInstallation{
+@@ -281,12 +281,12 @@ const base::Feature kDesktopPWAsRunOnOsLogin{"DesktopPWAsRunOnOsLogin",
  
  // Enable DNS over HTTPS (DoH).
  const base::Feature kDnsOverHttps{"DnsOverHttps",

+ 4 - 4
build/patches/Allow-playing-audio-in-background.patch

@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -1031,6 +1031,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -1053,6 +1053,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
    return pipeline_metadata_.has_audio;
  }
  
@@ -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());
-@@ -3458,7 +3464,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3469,7 +3475,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.
@@ -35,11 +35,11 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
 +  if (!HasVideoNonEmptySize())
      return false;
  
-   if (!is_background_video_playback_enabled_)
+   if (using_media_player_renderer_ &&
 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
-@@ -151,6 +151,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -153,6 +153,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/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
-@@ -148,7 +148,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
+@@ -150,7 +150,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
        local_state->GetBoolean(prefs::kNtlmV2Enabled);
  #endif  // defined(OS_POSIX)
  

Diferenças do arquivo suprimidas por serem muito extensas
+ 167 - 163
build/patches/Automated-domain-substitution.patch


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

@@ -62,7 +62,7 @@ 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
-@@ -487,7 +487,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
+@@ -488,7 +488,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,7 +72,7 @@ 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));
-@@ -560,7 +561,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
+@@ -561,7 +562,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;
@@ -100,7 +100,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
-@@ -632,6 +632,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
+@@ -634,6 +634,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
  #endif  // BUILDFLAG(ENABLE_WEBSOCKETS)
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kDataScheme);
@@ -111,7 +111,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
-@@ -1081,6 +1081,8 @@ component("net") {
+@@ -1083,6 +1083,8 @@ component("net") {
        "url_request/report_sender.h",
        "url_request/static_http_user_agent_settings.cc",
        "url_request/static_http_user_agent_settings.h",
@@ -232,7 +232,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_job_factory_impl.h"
-@@ -603,6 +604,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -602,6 +603,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }
@@ -274,7 +274,7 @@ diff --git a/url/url_util.cc b/url/url_util.cc
        // Yes, file URLs can have a hostname, so file URLs should be handled as
        // "standard". File URLs never have a port as specified by the SchemeType
        // field.  Unlike other SCHEME_WITH_HOST schemes, the 'host' in a file
-@@ -71,6 +72,7 @@ struct SchemeRegistry {
+@@ -77,6 +78,7 @@ struct SchemeRegistry {
        kAboutScheme,
        kJavaScriptScheme,
        kDataScheme,

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

@@ -18,7 +18,7 @@ Subject: Block gateway attacks via websockets
 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
-@@ -122,7 +122,7 @@ const base::Feature kCrossOriginEmbedderPolicy{
+@@ -123,7 +123,7 @@ const base::Feature kCrossOriginEmbedderPolicy{
  //
  // https://wicg.github.io/cors-rfc1918/#integration-fetch
  const base::Feature kBlockNonSecureExternalRequests{
@@ -30,7 +30,7 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
 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
-@@ -64,6 +64,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
+@@ -65,6 +65,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
    virtual PreviewsResourceLoadingHints* GetPreviewsResourceLoadingHints()
        const = 0;
    virtual bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const = 0;
@@ -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
-@@ -763,6 +763,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -755,6 +755,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -69,14 +69,14 @@ 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
-@@ -149,6 +149,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext {
+@@ -150,6 +150,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext {
    bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
    std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
        override;
 +  bool ShouldBlockGateWayAttacks(network::mojom::IPAddressSpace requestor_space, const KURL&) const override;
    bool ShouldBlockFetchByMixedContentCheck(
        mojom::blink::RequestContextType request_context,
-       ResourceRequest::RedirectStatus redirect_status,
+       const base::Optional<ResourceRequest::RedirectInfo>& redirect_info,
 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
@@ -123,11 +123,11 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/thi
 +  bool ShouldBlockGateWayAttacks(network::mojom::IPAddressSpace requestor_space, const KURL&) const override;
    bool ShouldBlockFetchByMixedContentCheck(
        mojom::blink::RequestContextType request_context,
-       ResourceRequest::RedirectStatus redirect_status,
+       const base::Optional<ResourceRequest::RedirectInfo>& redirect_info,
 diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
 --- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
 +++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
-@@ -105,24 +105,22 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
+@@ -106,24 +106,22 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
  
  bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
                                 const KURL& request_url) {
@@ -171,7 +171,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
-@@ -216,6 +216,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
+@@ -233,6 +233,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
      return false;
    }
  
@@ -200,7 +200,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
 +  }
 +
    if (!execution_context->GetContentSecurityPolicyForWorld()
-            ->AllowConnectToSource(url_)) {
+            ->AllowConnectToSource(url_, url_, RedirectStatus::kNoRedirect)) {
      state_ = kClosed;
 @@ -135,6 +144,24 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect(
    return ConnectResult::kSuccess;

+ 26 - 18
build/patches/Bromite-AdBlockUpdaterService.patch

@@ -23,11 +23,11 @@ Download filters by checking Last-Modified header first
  .../content/browser/ruleset_service.h         |   7 +-
  .../content/browser/ruleset_version.cc        |   1 +
  .../content/browser/ruleset_version.h         |   5 +
- .../browser/verified_ruleset_dealer.cc        |   2 +
+ .../browser/verified_ruleset_dealer.cc        |   3 +
  .../browser/subresource_filter_features.cc    | 113 +-------
  .../core/common/common_features.cc            |   2 +-
  .../frame_host/navigation_throttle_runner.cc  |   5 -
- 20 files changed, 808 insertions(+), 138 deletions(-)
+ 20 files changed, 809 insertions(+), 138 deletions(-)
  create mode 100644 components/component_updater/adblock_updater_service.cc
  create mode 100644 components/component_updater/adblock_updater_service.h
  create mode 100644 components/component_updater/download_filters_task.cc
@@ -36,7 +36,7 @@ Download filters by checking Last-Modified header first
 diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
 --- a/chrome/browser/after_startup_task_utils.cc
 +++ b/chrome/browser/after_startup_task_utils.cc
-@@ -37,6 +37,8 @@
+@@ -36,6 +36,8 @@
  #include "ui/views/linux_ui/linux_ui.h"
  #endif
  
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s
  using content::BrowserThread;
  using content::WebContents;
  using content::WebContentsObserver;
-@@ -137,6 +139,9 @@ void SetBrowserStartupIsComplete() {
+@@ -136,6 +138,9 @@ void SetBrowserStartupIsComplete() {
    g_after_startup_tasks.Get().clear();
    g_after_startup_tasks.Get().shrink_to_fit();
  
@@ -66,7 +66,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
  
  class BackgroundModeManager;
  class BrowserProcessPlatformPart;
-@@ -59,6 +60,10 @@ class ComponentUpdateService;
+@@ -63,6 +64,10 @@ class ComponentUpdateService;
  class SupervisedUserWhitelistInstaller;
  }
  
@@ -77,7 +77,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
  namespace extensions {
  class EventRouterForwarder;
  }
-@@ -230,6 +235,8 @@ class BrowserProcess {
+@@ -238,6 +243,8 @@ class BrowserProcess {
  
    virtual component_updater::ComponentUpdateService* component_updater() = 0;
  
@@ -89,7 +89,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
-@@ -1043,6 +1043,34 @@ BrowserProcessImpl::component_updater() {
+@@ -1052,6 +1052,34 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -127,7 +127,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
-@@ -180,6 +180,7 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -181,6 +181,7 @@ class BrowserProcessImpl : public BrowserProcess,
  #endif
  
    component_updater::ComponentUpdateService* component_updater() override;
@@ -135,7 +135,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
  #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
    component_updater::SupervisedUserWhitelistInstaller*
    supervised_user_whitelist_installer() override;
-@@ -363,6 +364,8 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -368,6 +369,8 @@ class BrowserProcessImpl : public BrowserProcess,
    // but some users of component updater only install per-user.
    std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
  
@@ -147,7 +147,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
 diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
 --- a/chrome/browser/chrome_browser_main.cc
 +++ b/chrome/browser/chrome_browser_main.cc
-@@ -1553,6 +1553,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1570,6 +1570,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
      component_updater::RegisterComponentsForUpdate(profile_->IsOffTheRecord(),
                                                     profile_->GetPrefs());
@@ -159,7 +159,7 @@ 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
-@@ -65,7 +65,6 @@
+@@ -64,7 +64,6 @@
  #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/interstitials/enterprise_util.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
@@ -167,15 +167,15 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/media/router/media_router_feature.h"
  #include "chrome/browser/media/router/presentation/presentation_service_delegate_impl.h"
  #include "chrome/browser/media/router/presentation/receiver_presentation_service_delegate_impl.h"
-@@ -215,7 +214,6 @@
- #include "components/language/core/browser/pref_names.h"
+@@ -216,7 +215,6 @@
  #include "components/metrics/client_info.h"
+ #include "components/metrics_services_manager/metrics_services_manager.h"
  #include "components/net_log/chrome_net_log.h"
 -#include "components/page_load_metrics/browser/metrics_navigation_throttle.h"
  #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
- #include "components/page_load_metrics/browser/page_load_metrics_util.h"
  #include "components/payments/content/payment_request_display_manager.h"
-@@ -3871,16 +3869,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+ #include "components/performance_manager/embedder/performance_manager_registry.h"
+@@ -3899,16 +3897,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -192,7 +192,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(ENABLE_PLUGINS)
    MaybeAddThrottle(FlashDownloadInterception::MaybeCreateThrottleFor(handle),
                     &throttles);
-@@ -3993,10 +3981,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4021,10 +4009,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     &throttles);
  #endif
  
@@ -949,7 +949,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
-@@ -364,6 +364,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -375,6 +375,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1142,7 +1142,15 @@ diff --git a/components/subresource_filter/content/browser/ruleset_version.h b/c
 diff --git a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
 --- a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
 +++ b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
-@@ -36,6 +36,8 @@ base::File VerifiedRulesetDealer::OpenAndSetRulesetFile(
+@@ -11,6 +11,7 @@
+ #include "base/check.h"
+ #include "base/files/file.h"
+ #include "base/location.h"
++#include "base/logging.h"
+ #include "base/metrics/histogram_macros.h"
+ #include "base/notreached.h"
+ #include "base/task_runner_util.h"
+@@ -36,6 +37,8 @@ base::File VerifiedRulesetDealer::OpenAndSetRulesetFile(
    TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
                 "VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
                 file.IsValid());

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

@@ -13,7 +13,7 @@ See also: https://github.com/bromite/bromite/issues/553
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -83,8 +83,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -87,8 +87,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
                                  false);
  #endif
    // TODO(guoweis): Remove next 2 options at M50.
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 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
-@@ -434,12 +434,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -421,12 +421,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
            port_config.enable_nonproxied_udp = false;
            break;
          case DEFAULT:

+ 1 - 1
build/patches/Disable-AImageReader-for-ARM64-P-and-ARM64-Q.patch

@@ -25,7 +25,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 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
-@@ -527,7 +527,11 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
+@@ -544,7 +544,11 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
  
  // Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
  const base::Feature kAImageReaderVideoOutput{"AImageReaderVideoOutput",

+ 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
-@@ -516,7 +516,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -533,7 +533,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-NTP-remote-suggestions-by-default.patch

@@ -10,7 +10,7 @@ Subject: Disable NTP remote suggestions by default
 diff --git a/components/feed/core/shared_prefs/pref_names.cc b/components/feed/core/shared_prefs/pref_names.cc
 --- a/components/feed/core/shared_prefs/pref_names.cc
 +++ b/components/feed/core/shared_prefs/pref_names.cc
-@@ -16,8 +16,8 @@ const char kEnableSnippets[] = "ntp_snippets.enable";
+@@ -19,8 +19,8 @@ const char kEnableSnippets[] = "ntp_snippets.enable";
  const char kArticlesListVisible[] = "ntp_snippets.list_visible";
  
  void RegisterFeedSharedProfilePrefs(PrefRegistrySimple* registry) {

+ 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
-@@ -142,7 +142,7 @@ public class OmahaBase {
+@@ -157,7 +157,7 @@ public class OmahaBase {
  
      /** See {@link #sIsDisabled}. */
      static boolean isDisabled() {

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

@@ -9,16 +9,16 @@ 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
-@@ -293,7 +293,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -307,7 +307,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
       * displayed.
       */
-     private boolean triggerPromo() {
+     private boolean triggerPromo(boolean intentWithEffect) {
 -        try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) {
 +        /*try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) {
              SharedPreferencesManager preferenceManager = SharedPreferencesManager.getInstance();
              // Promos can only be shown when we start with ACTION_MAIN intent and
              // after FRE is complete. Native initialization can finish before the FRE flow is
-@@ -324,8 +324,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -338,8 +338,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

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

@@ -15,9 +15,9 @@ diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature
  const base::Feature kInterestFeedContentSuggestions{
 -    "InterestFeedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "InterestFeedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
- 
- const base::FeatureParam<std::string> kDisableTriggerTypes{
-     &kInterestFeedContentSuggestions, "disable_trigger_types", ""};
+ // InterestFeedV2 takes precedence over InterestFeedContentSuggestions.
+ const base::Feature kInterestFeedV2{"InterestFeedV2",
+                                     base::FEATURE_DISABLED_BY_DEFAULT};
 -- 
 2.17.1
 

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

@@ -40,7 +40,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
-@@ -330,7 +330,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -345,7 +345,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kMediaRouterFirstRunFlowAcknowledged,
        false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
@@ -52,7 +52,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
-@@ -410,7 +410,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -412,7 +412,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

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

@@ -10,7 +10,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
-@@ -943,7 +943,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -944,7 +944,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // defined(OS_CHROMEOS)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
@@ -22,7 +22,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
 --- a/chrome/browser/profiles/profile_io_data.cc
 +++ b/chrome/browser/profiles/profile_io_data.cc
-@@ -46,8 +46,6 @@
+@@ -45,8 +45,6 @@
  #include "components/content_settings/core/browser/host_content_settings_map.h"
  #include "components/cookie_config/cookie_store_util.h"
  #include "components/dom_distiller/core/url_constants.h"

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

@@ -11,7 +11,7 @@ a corresponding user option to individually disable their usage.
 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
-@@ -462,13 +462,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
+@@ -479,13 +479,13 @@ ComponentResult IDNToUnicodeOneComponent(
  }  // namespace
  
  const FormatUrlType kFormatUrlOmitNothing = 0;

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

+ 59 - 44
build/patches/Disable-promos-displayed-in-bookmarks-manager.patch

@@ -7,16 +7,16 @@ bookmarks, never reach signin thresholds.
 ---
  chrome/android/chrome_java_resources.gni      |   1 -
  ...rsonalized_signin_promo_view_bookmarks.xml |  30 -----
- .../bookmarks/BookmarkItemsAdapter.java       |  25 +---
- .../bookmarks/BookmarkPromoHeader.java        | 110 +-----------------
+ .../bookmarks/BookmarkItemsAdapter.java       |  30 +----
+ .../bookmarks/BookmarkPromoHeader.java        | 125 +-----------------
  .../browser/signin/SigninPromoController.java |  19 +--
- 5 files changed, 5 insertions(+), 180 deletions(-)
+ 5 files changed, 5 insertions(+), 200 deletions(-)
  delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
 
 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
-@@ -1050,7 +1050,6 @@ chrome_java_resources = [
+@@ -977,7 +977,6 @@ chrome_java_resources = [
    "java/res/layout/payment_request_spinny.xml",
    "java/res/layout/payments_request_editor_textview.xml",
    "java/res/layout/personalized_signin_promo_view_body.xml",
@@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.sync.ProfileSyncService;
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkType;
-@@ -62,7 +61,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -63,7 +62,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
      // ViewType.PERSONALIZED_SIGNIN_PROMO, ViewType.SYNC_PROMO, or ViewType.INVALID_PROMO
      private int mPromoHeaderType = ViewType.INVALID_PROMO;
      private BookmarkDelegate mDelegate;
@@ -79,11 +79,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private String mSearchText;
      private BookmarkId mCurrentFolder;
      private ProfileSyncService mProfileSyncService;
-@@ -187,9 +185,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
- 
-         switch (viewType) {
+@@ -190,9 +188,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
--                return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
+                 // fall through
+             case ViewType.PERSONALIZED_SYNC_PROMO:
+-                return mPromoHeaderManager.createPersonalizedSigninAndSyncPromoHolder(parent);
 +                return null;
              case ViewType.SYNC_PROMO:
 -                return mPromoHeaderManager.createSyncPromoHolder(parent);
@@ -91,24 +91,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
              case ViewType.FOLDER:
                  return createViewHolderHelper(parent, R.layout.bookmark_folder_row);
              case ViewType.BOOKMARK:
-@@ -203,8 +201,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -206,11 +204,7 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
      @Override
      public void onBindViewHolder(ViewHolder holder, int position) {
          if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
 -            PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
 -            mPromoHeaderManager.setupPersonalizedSigninPromo(view);
+         } else if (holder.getItemViewType() == ViewType.PERSONALIZED_SYNC_PROMO) {
+-            PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
+-            mPromoHeaderManager.setupPersonalizedSyncPromo(view);
          } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
              BookmarkRow row = ((BookmarkRow) holder.itemView);
              BookmarkId id = getIdByPosition(position);
-@@ -231,7 +227,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
-     public void onViewRecycled(ViewHolder holder) {
-         switch (holder.getItemViewType()) {
+@@ -239,7 +233,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
+                 // fall through
+             case ViewType.PERSONALIZED_SYNC_PROMO:
 -                mPromoHeaderManager.detachPersonalizePromoView();
                  break;
              default:
                  // Other view holders don't have special recycling code.
-@@ -257,7 +252,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -265,7 +258,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              updateHeader(!topLevelFoldersShowing());
          };
  
@@ -116,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          populateTopLevelFoldersList();
  
          mElements = new ArrayList<>();
-@@ -273,7 +267,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -281,7 +273,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
          mDelegate.getModel().removeObserver(mBookmarkModelObserver);
          mDelegate.getSelectionDelegate().removeObserver(this);
          mDelegate = null;
@@ -124,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          mProfileSyncService.removeSyncStateChangedListener(this);
      }
  
-@@ -399,20 +392,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -407,23 +398,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              return;
          } else if (currentUIState == BookmarkUIState.STATE_SEARCHING) {
              mPromoHeaderType = ViewType.INVALID_PROMO;
@@ -136,6 +139,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -                case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
 -                    mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO;
 -                    break;
+-                case BookmarkPromoHeader.PromoState.PROMO_SYNC_PERSONALIZED:
+-                    mPromoHeaderType = ViewType.PERSONALIZED_SYNC_PROMO;
+-                    break;
 -                case BookmarkPromoHeader.PromoState.PROMO_SYNC:
 -                    mPromoHeaderType = ViewType.SYNC_PROMO;
 -                    break;
@@ -148,7 +154,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/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
-@@ -20,18 +20,12 @@ import org.chromium.chrome.R;
+@@ -21,15 +21,9 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
  import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
  import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
  import org.chromium.chrome.browser.signin.IdentityServicesProvider;
@@ -159,15 +165,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.signin.SigninPromoController;
 -import org.chromium.chrome.browser.signin.SigninPromoUtil;
  import org.chromium.chrome.browser.signin.SyncPromoView;
+-import org.chromium.chrome.browser.sync.AndroidSyncSettings;
+-import org.chromium.chrome.browser.sync.AndroidSyncSettings.AndroidSyncSettingsObserver;
  import org.chromium.components.signin.AccountManagerFacadeProvider;
  import org.chromium.components.signin.AccountsChangeObserver;
- import org.chromium.components.signin.metrics.SigninAccessPoint;
--import org.chromium.components.sync.AndroidSyncSettings;
--import org.chromium.components.sync.AndroidSyncSettings.AndroidSyncSettingsObserver;
- import org.chromium.content_public.browser.UiThreadTaskTraits;
- 
- import java.lang.annotation.Retention;
-@@ -41,7 +35,7 @@ import java.lang.annotation.RetentionPolicy;
+ import org.chromium.components.signin.base.CoreAccountInfo;
+@@ -44,7 +38,7 @@ import java.lang.annotation.RetentionPolicy;
   * Class that manages all the logic and UI behind the signin promo header in the bookmark
   * content UI. The header is shown only on certain situations, (e.g., not signed in).
   */
@@ -176,34 +179,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
                                       ProfileDataCache.Observer, AccountsChangeObserver {
      /**
       * Specifies the various states in which the Bookmarks promo can be.
-@@ -60,7 +54,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -65,7 +59,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      private static @Nullable @PromoState Integer sPromoStateForTests;
  
      private final Context mContext;
 -    private final SigninManager mSignInManager;
      private final Runnable mPromoHeaderChangeAction;
  
-     private final @Nullable ProfileDataCache mProfileDataCache;
-@@ -75,8 +68,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+     private @Nullable ProfileDataCache mProfileDataCache;
+@@ -80,11 +73,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          mContext = context;
          mPromoHeaderChangeAction = promoHeaderChangeAction;
  
 -        AndroidSyncSettings.get().registerObserver(this);
 -
-         if (SigninPromoController.hasNotReachedImpressionLimit(
-                     SigninAccessPoint.BOOKMARK_MANAGER)) {
-             int imageSize =
-@@ -90,9 +81,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
-             mSigninPromoController = null;
-         }
- 
 -        mSignInManager = IdentityServicesProvider.get().getSigninManager();
 -        mSignInManager.addSignInStateObserver(this);
 -
          mPromoState = calculatePromoState();
          if (mPromoState == PromoState.PROMO_SYNC) {
              SharedPreferencesManager.getInstance().incrementInt(
-@@ -104,15 +92,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -110,15 +98,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
       * Clean ups the class. Must be called once done using this class.
       */
      void destroy() {
@@ -219,7 +215,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      /**
-@@ -123,18 +107,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -129,18 +113,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return mPromoState;
      }
  
@@ -227,7 +223,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -     * @return Personalized signin promo header {@link ViewHolder} instance that can be used with
 -     *         {@link RecyclerView}.
 -     */
--    ViewHolder createPersonalizedSigninPromoHolder(ViewGroup parent) {
+-    ViewHolder createPersonalizedSigninAndSyncPromoHolder(ViewGroup parent) {
 -        View view = LayoutInflater.from(mContext).inflate(
 -                R.layout.personalized_signin_promo_view_bookmarks, parent, false);
 -
@@ -238,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @return Sync promo header {@link ViewHolder} instance that can be used with
       *         {@link RecyclerView}.
-@@ -146,49 +118,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -152,56 +124,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return new ViewHolder(view) {};
      }
  
@@ -251,6 +247,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -                this::setPersonalizedSigninPromoDeclined);
 -    }
 -
+-    void setupPersonalizedSyncPromo(PersonalizedSigninPromoView view) {
+-        setupPersonalizedSigninPromo(view);
+-        view.getStatusMessage().setVisibility(View.VISIBLE);
+-        view.getChooseAccountButton().setVisibility(View.GONE);
+-        view.getSigninButton().setText(R.string.sync_promo_turn_on_sync);
+-    }
+-
 -    /**
 -     * Detaches the previously configured {@link PersonalizedSigninPromoView}.
 -     */
@@ -264,7 +267,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -    private void setPersonalizedSigninPromoDeclined() {
 -        SharedPreferencesManager.getInstance().writeBoolean(
 -                ChromePreferenceKeys.SIGNIN_PROMO_PERSONALIZED_DECLINED, true);
--        mPromoState = calculatePromoState();
+-        updatePromoState();
 -        triggerPromoUpdate();
 -    }
 -
@@ -289,7 +292,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      private @PromoState int calculatePromoState() {
-@@ -196,48 +130,9 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -209,30 +136,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
              return sPromoStateForTests;
          }
  
@@ -298,6 +301,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -        }
 -
 -        if (!mSignInManager.getIdentityManager().hasPrimaryAccount()) {
+-            if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)) {
+-                CoreAccountInfo primaryAccount =
+-                        mSignInManager.getIdentityManager().getPrimaryAccountInfo(
+-                                ConsentLevel.NOT_REQUIRED);
+-                if (primaryAccount != null && !wasPersonalizedSigninPromoDeclined()) {
+-                    return PromoState.PROMO_SYNC_PERSONALIZED;
+-                }
+-            }
 -            return shouldShowBookmarkSigninPromo() ? PromoState.PROMO_SIGNIN_PERSONALIZED
 -                                                   : PromoState.PROMO_NONE;
 -        }
@@ -312,12 +323,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          return PromoState.PROMO_NONE;
      }
  
+@@ -254,29 +157,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+         mProfileDataCache.addObserver(this);
+     }
+ 
 -    // AndroidSyncSettingsObserver implementation.
 -    @Override
 -    public void androidSyncSettingsChanged() {
 -        // AndroidSyncSettings calls this method from non-UI threads.
 -        PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
--            mPromoState = calculatePromoState();
+-            updatePromoState();
 -            triggerPromoUpdate();
 -        });
 -    }
@@ -325,20 +340,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -    // SignInStateObserver implementation.
 -    @Override
 -    public void onSignedIn() {
--        mPromoState = calculatePromoState();
+-        updatePromoState();
 -        triggerPromoUpdate();
 -    }
 -
 -    @Override
 -    public void onSignedOut() {
--        mPromoState = calculatePromoState();
+-        updatePromoState();
 -        triggerPromoUpdate();
 -    }
 -
      // ProfileDataCache.Observer implementation.
      @Override
      public void onProfileDataUpdated(String accountId) {
-@@ -251,7 +146,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -290,7 +170,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      }
  
      private void triggerPromoUpdate() {

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

@@ -12,15 +12,15 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -303,7 +303,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
- }
- 
- std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {
--  return "style-src 'self' https://fonts.googleapis.com;";
-+  return "style-src 'self';";
- }
- 
- std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() {
+@@ -337,7 +337,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+ std::string DomDistillerViewerSource::GetContentSecurityPolicy(
+     network::mojom::CSPDirectiveName directive) {
+   if (directive == network::mojom::CSPDirectiveName::StyleSrc) {
+-    return "style-src 'self' https://fonts.googleapis.com;";
++    return "style-src 'self';";
+   } else if (directive == network::mojom::CSPDirectiveName::ChildSrc) {
+     return "child-src *;";
+   }
 diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
 --- a/components/dom_distiller/core/html/preview.html
 +++ b/components/dom_distiller/core/html/preview.html

Diferenças do arquivo suprimidas por serem muito extensas
+ 172 - 160
build/patches/Disable-safe-browsing.patch


+ 36 - 0
build/patches/Disable-scroll-to-text-fragment.patch

@@ -0,0 +1,36 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Sat, 22 Aug 2020 12:46:20 +0200
+Subject: Disable scroll-to-text-fragment
+
+---
+ chrome/browser/ui/prefs/prefs_tab_helper.cc | 2 +-
+ content/child/runtime_features.cc           | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc
+--- a/chrome/browser/ui/prefs/prefs_tab_helper.cc
++++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc
+@@ -357,7 +357,7 @@ void PrefsTabHelper::RegisterProfilePrefs(
+       prefs::kEnableReferrers,
+       !base::FeatureList::IsEnabled(features::kNoReferrers));
+   registry->RegisterBooleanPref(prefs::kEnableEncryptedMedia, true);
+-  registry->RegisterBooleanPref(prefs::kScrollToTextFragmentEnabled, true);
++  registry->RegisterBooleanPref(prefs::kScrollToTextFragmentEnabled, false);
+ #if defined(OS_ANDROID)
+   registry->RegisterDoublePref(prefs::kWebKitFontScaleFactor, 1.0);
+   registry->RegisterBooleanPref(prefs::kWebKitForceEnableZoom,
+diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
+--- a/content/child/runtime_features.cc
++++ b/content/child/runtime_features.cc
+@@ -461,7 +461,7 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) {
+       {wrf::EnableWebGPU, switches::kEnableUnsafeWebGPU, true},
+       {wrf::EnablePresentationAPI, switches::kDisablePresentationAPI, false},
+       {wrf::EnableTextFragmentAnchor, switches::kDisableScrollToTextFragment,
+-       false},
++       true},
+       {wrf::EnableRemotePlaybackAPI, switches::kDisableRemotePlaybackAPI,
+        false},
+       {wrf::EnableTimerThrottlingForBackgroundTabs,
+-- 
+2.17.1
+

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

@@ -9,7 +9,7 @@ Subject: Disable seed-based field trials
 diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
 --- a/components/variations/service/variations_field_trial_creator.cc
 +++ b/components/variations/service/variations_field_trial_creator.cc
-@@ -560,8 +560,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -536,8 +536,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
    bool used_seed = false;
    if (!used_testing_config) {

+ 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
-@@ -382,7 +382,7 @@ const base::Feature kChromeSharingHubV15{"ChromeSharingHubV15",
+@@ -376,7 +376,7 @@ const base::Feature kChromeSharingHubV15{"ChromeSharingHubV15",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kChromeSmartSelection{"ChromeSmartSelection",

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

+ 1 - 1
build/patches/Disable-sync-services-menu-entry.patch

@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -29,12 +29,4 @@
+@@ -33,12 +33,4 @@
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />

+ 2 - 9
build/patches/Disable-update-scheduler.patch

@@ -3,8 +3,8 @@ Date: Sat, 27 Oct 2018 17:54:01 +0200
 Subject: Disable update scheduler
 
 ---
- .../chrome/browser/component_updater/UpdateScheduler.java  | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
+ .../chrome/browser/component_updater/UpdateScheduler.java    | 5 +----
+ 1 file changed, 1 insertion(+), 4 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
@@ -21,13 +21,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updat
      }
  
      /* package */ void onStartTaskBeforeNativeLoaded(TaskFinishedCallback callback) {
-@@ -112,4 +109,4 @@ public class UpdateScheduler {
-         void onStartTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
-         void onStopTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
-     }
--}
-\ No newline at end of file
-+}
 -- 
 2.17.1
 

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

@@ -3,17 +3,15 @@ Date: Thu, 27 Feb 2020 23:23:59 +0100
 Subject: Do not compile QR code sharing
 
 ---
- chrome/android/java/AndroidManifest.xml       | 16 ---------------
- .../ChromeProvidedSharingOptionsProvider.java | 20 +------------------
- .../browser/share/ShareDelegateImpl.java      |  5 -----
- .../browser/share/ShareSheetCoordinator.java  |  5 +----
- chrome/browser/share/android/java_sources.gni | 19 ------------------
- 5 files changed, 2 insertions(+), 63 deletions(-)
+ chrome/android/java/AndroidManifest.xml       | 16 ------------
+ .../ChromeProvidedSharingOptionsProvider.java | 25 -------------------
+ chrome/browser/share/android/java_sources.gni | 18 -------------
+ 3 files changed, 59 deletions(-)
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -755,22 +755,6 @@ by a child template that "extends" this file.
+@@ -729,22 +729,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -36,23 +34,34 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
  
          <activity
              android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
-@@ -17,7 +17,6 @@ import org.chromium.chrome.R;
- import org.chromium.chrome.browser.ActivityTabProvider;
- import org.chromium.chrome.browser.printing.TabPrinter;
+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
+@@ -22,7 +22,6 @@ import org.chromium.chrome.browser.preferences.Pref;
+ import org.chromium.chrome.browser.preferences.PrefServiceBridge;
  import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
+ import org.chromium.chrome.browser.share.ChromeShareExtras;
 -import org.chromium.chrome.browser.share.qrcode.QrCodeCoordinator;
  import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator;
+ import org.chromium.chrome.browser.share.share_sheet.ShareSheetPropertyModelBuilder.ContentType;
  import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
-@@ -141,23 +140,6 @@ class ChromeProvidedSharingOptionsProvider {
-                 /*isFirstParty=*/true);
+@@ -145,10 +144,6 @@ class ChromeProvidedSharingOptionsProvider {
+             mOrderedFirstPartyOptions.add(createCopyTextFirstPartyOption());
+         }
+         mOrderedFirstPartyOptions.add(createSendTabToSelfFirstPartyOption());
+-        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)
+-                && !mTabProvider.get().getWebContents().isIncognito()) {
+-            mOrderedFirstPartyOptions.add(createQrCodeFirstPartyOption());
+-        }
+         if (mPrefServiceBridge.getBoolean(Pref.PRINTING_ENABLED)) {
+             mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption());
+         }
+@@ -261,26 +256,6 @@ class ChromeProvidedSharingOptionsProvider {
+                         ContentType.IMAGE));
      }
  
--    PropertyModel createQrCodePropertyModel() {
--        return ShareSheetPropertyModelBuilder.createPropertyModel(
+-    private FirstPartyOption createQrCodeFirstPartyOption() {
+-        PropertyModel propertyModel = ShareSheetPropertyModelBuilder.createPropertyModel(
 -                AppCompatResources.getDrawable(mActivity, R.drawable.qr_code),
 -                mActivity.getResources().getString(R.string.qr_code_share_icon_label),
 -                (currentActivity)
@@ -62,77 +71,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ChromePro
 -                            "Sharing.SharingHubAndroid.TimeToShare",
 -                            System.currentTimeMillis() - mShareStartTime);
 -                    mBottomSheetController.hideContent(mBottomSheetContent, true);
--                    QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity);
+-                    QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity, mUrl);
 -                    qrCodeCoordinator.show();
 -                },
 -                /*isFirstParty=*/true);
+-        return new FirstPartyOption(propertyModel,
+-                Arrays.asList(ContentType.LINK_PAGE_VISIBLE, ContentType.LINK_PAGE_NOT_VISIBLE,
+-                        ContentType.IMAGE));
 -    }
 -
-     PropertyModel createPrintingPropertyModel() {
-         return ShareSheetPropertyModelBuilder.createPropertyModel(
+     private FirstPartyOption createPrintingFirstPartyOption() {
+         PropertyModel propertyModel = ShareSheetPropertyModelBuilder.createPropertyModel(
                  AppCompatResources.getDrawable(mActivity, R.drawable.sharing_print),
-@@ -177,4 +159,4 @@ class ChromeProvidedSharingOptionsProvider {
-                 },
-                 /*isFirstParty=*/true);
-     }
--}
-\ No newline at end of file
-+}
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
-@@ -21,7 +21,6 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
- import org.chromium.chrome.browser.preferences.PrefServiceBridge;
- import org.chromium.chrome.browser.printing.PrintShareActivity;
- import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
--import org.chromium.chrome.browser.share.qrcode.QrCodeShareActivity;
- import org.chromium.chrome.browser.tab.SadTab;
- import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tab.TabImpl;
-@@ -103,10 +102,6 @@ public class ShareDelegateImpl implements ShareDelegate {
-             classesToEnable.add(SendTabToSelfShareActivity.class);
-         }
- 
--        if (QrCodeShareActivity.featureIsAvailable()) {
--            classesToEnable.add(QrCodeShareActivity.class);
--        }
--
-         if (!classesToEnable.isEmpty()) {
-             OptionalShareTargetsManager.getInstance().enableOptionalShareActivities(activity,
-                     classesToEnable, () -> triggerShare(currentTab, shareDirectly, isIncognito));
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
-@@ -81,9 +81,6 @@ class ShareSheetCoordinator {
-         }
-         models.add(chromeProvidedSharingOptionsProvider.createCopyLinkPropertyModel());
-         models.add(chromeProvidedSharingOptionsProvider.createSendTabToSelfPropertyModel());
--        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)) {
--            models.add(chromeProvidedSharingOptionsProvider.createQrCodePropertyModel());
--        }
-         if (mPrefServiceBridge.getBoolean(Pref.PRINTING_ENABLED)) {
-             models.add(chromeProvidedSharingOptionsProvider.createPrintingPropertyModel());
-         }
-@@ -111,4 +108,4 @@ class ShareSheetCoordinator {
- 
-         return models;
-     }
--}
-\ No newline at end of file
-+}
 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
-@@ -8,24 +8,5 @@ share_java_sources = [
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/SaveImageNotificationManager.java",
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ShareImageFileUtils.java",
+@@ -8,24 +8,6 @@ share_java_sources = [
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/BitmapDownloadRequest.java",
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/BitmapUriRequest.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/clipboard/ClipboardImageFileProvider.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",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialogTab.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodePageAdapter.java",
--  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeShareActivity.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/TabLayoutPageListener.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreview.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/scan_tab/CameraPreviewOverlay.java",
@@ -147,7 +109,8 @@ diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/shar
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewBinder.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/share_tab/QrCodeShareViewProperties.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotCoordinator.java",
- ]
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotShareSheetCoordinator.java",
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/screenshot/ScreenshotShareSheetDialog.java",
 -- 
 2.17.1
 

+ 1 - 14
build/patches/Do-not-grant-notifications-to-default-search-engine.patch

@@ -5,8 +5,7 @@ Subject: Do not grant notifications to default search engine
 Block gelocation by default instead of granting it for non-enterprise use cases (almost the totality of users)
 ---
  .../search_permissions_service.cc             | 20 ++++++-------------
- chrome/common/chrome_features.cc              |  2 +-
- 2 files changed, 7 insertions(+), 15 deletions(-)
+ 1 file changed, 6 insertions(+), 14 deletions(-)
 
 diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
 --- a/chrome/browser/android/search_permissions/search_permissions_service.cc
@@ -60,18 +59,6 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
      }
  
      // Update the content setting with the auto-grants for the DSE.
-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
-@@ -308,7 +308,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsDisabledProvidersParam{
- #if defined(OS_ANDROID)
- // Enable changing default downloads storage location on Android.
- const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
--                                             base::FEATURE_ENABLED_BY_DEFAULT};
-+                                             base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- 
- // Disables ambient authentication in incognito mode.
 -- 
 2.17.1
 

+ 29 - 86
build/patches/Do-not-ignore-download-location-prompt-setting.patch

@@ -5,66 +5,34 @@ Subject: Do not ignore download location prompt setting
 Upstream has decided that it works as intended (https://bugs.chromium.org/p/chromium/issues/detail?id=916606)
 but users would like to decide where to save a file even when there is no SD card available;
 do not skip the prompt in such cases.
+
+Do not tick "Don't show again" by default
 ---
- .../DownloadLocationDialogBridge.java         | 72 ++++++-------------
- 1 file changed, 21 insertions(+), 51 deletions(-)
+ .../dialogs/DownloadLocationCustomView.java         |  4 ----
+ .../dialogs/DownloadLocationDialogCoordinator.java  | 13 -------------
+ 2 files changed, 17 deletions(-)
 
-diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
---- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
-+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
-@@ -33,9 +33,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
-     private PropertyModel mDialogModel;
-     private DownloadLocationCustomView mCustomView;
-     private ModalDialogManager mModalDialogManager;
--    private long mTotalBytes;
--    private @DownloadLocationDialogType int mDialogType;
--    private String mSuggestedPath;
-     private Context mContext;
- 
-     private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
-@@ -68,12 +65,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
- 
-         mModalDialogManager = ((ModalDialogManagerHolder) activity).getModalDialogManager();
-         mContext = activity;
--        mTotalBytes = totalBytes;
--        mDialogType = dialogType;
--        mSuggestedPath = suggestedPath;
+diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
++++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+@@ -63,10 +63,6 @@ public class DownloadLocationCustomView
+             CharSequence title) {
+         mDialogType = dialogType;
  
--        DownloadDirectoryProvider.getInstance().getAllDirectoriesOptions(
--                (ArrayList<DirectoryOption> dirs) -> { onDirectoryOptionsRetrieved(dirs); });
-+        // Already showing the dialog.
-+        if (mDialogModel != null) return;
-+
-+        // Actually show the dialog.
-+        mCustomView = (DownloadLocationCustomView) LayoutInflater.from(mContext).inflate(
-+                R.layout.download_location_dialog, null);
-+        mCustomView.initialize(dialogType, new File(suggestedPath));
-+
-+        Resources resources = mContext.getResources();
-+        mDialogModel =
-+                new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
-+                        .with(ModalDialogProperties.CONTROLLER, this)
-+                        .with(ModalDialogProperties.TITLE, getTitle(totalBytes, dialogType))
-+                        .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
-+                        .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
-+                                R.string.duplicate_download_infobar_download_button)
-+                        .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
-+                                R.string.cancel)
-+                        .build();
-+
-+        mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
-     }
+-        // Automatically check "don't show again" the first time the user is seeing the dialog.
+-        boolean isInitial = DownloadDialogBridge.getPromptForDownloadAndroid()
+-                == DownloadPromptStatus.SHOW_INITIAL;
+-        mDontShowAgain.setChecked(isInitial);
+         mDontShowAgain.setOnCheckedChangeListener(this);
  
-     @Override
-@@ -106,49 +119,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
-         mCustomView = null;
-     }
- 
--    /**
--     * Called after retrieved the download directory options.
--     * @param dirs An list of available download directories.
--     */
--    private void onDirectoryOptionsRetrieved(ArrayList<DirectoryOption> dirs) {
+         mFileName.setText(suggestedPath.getName());
+diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
+--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
++++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
+@@ -120,19 +120,6 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties.
+      * @param dirs An list of available download directories.
+      */
+     private void onDirectoryOptionsRetrieved(ArrayList<DirectoryOption> dirs) {
 -        // If there is only one directory available, don't show the default dialog, and set the
 -        // download directory to default. Dialog will still show for other types of dialogs, like
 -        // name conflict or disk error.
@@ -72,40 +40,15 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
 -            final DirectoryOption dir = dirs.get(0);
 -            if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) {
 -                assert (!TextUtils.isEmpty(dir.location));
--                setDownloadAndSaveFileDefaultDirectory(dir.location);
--                DownloadLocationDialogBridgeJni.get().onComplete(
--                        mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,
--                        mSuggestedPath);
+-                DownloadDialogBridge.setDownloadAndSaveFileDefaultDirectory(dir.location);
+-                mController.onDownloadLocationDialogComplete(mSuggestedPath);
 -            }
 -            return;
 -        }
 -
--        // Already showing the dialog.
--        if (mDialogModel != null) return;
--
--        // Actually show the dialog.
--        mCustomView = (DownloadLocationCustomView) LayoutInflater.from(mContext).inflate(
--                R.layout.download_location_dialog, null);
--        mCustomView.initialize(mDialogType, new File(mSuggestedPath));
--
--        Resources resources = mContext.getResources();
--        mDialogModel =
--                new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
--                        .with(ModalDialogProperties.CONTROLLER, this)
--                        .with(ModalDialogProperties.TITLE, getTitle(mTotalBytes, mDialogType))
--                        .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
--                        .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
--                                R.string.duplicate_download_infobar_download_button)
--                        .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
--                                R.string.cancel)
--                        .build();
--
--        mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
--    }
--
-     private String getTitle(long totalBytes, @DownloadLocationDialogType int dialogType) {
-         switch (dialogType) {
-             case DownloadLocationDialogType.LOCATION_FULL:
+         // Already showing the dialog.
+         if (mDialogModel != null) return;
+ 
 -- 
 2.17.1
 

+ 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
-@@ -200,10 +200,10 @@ FormData SimplifiedFormDataFromFormStructure(
+@@ -206,10 +206,10 @@ FormData SimplifiedFormDataFromFormStructure(
  void PasswordManager::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

+ 10 - 6
build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch → build/patches/Enable-SPPI-for-devices-with-enough-memory.patch

@@ -1,15 +1,16 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Sun, 17 Mar 2019 19:09:00 +0100
-Subject: Enable site per process isolation for devices with enough memory
+Subject: Enable SPPI for devices with enough memory
 
 ---
- chrome/common/chrome_features.cc | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
+ chrome/common/chrome_features.cc      | 4 ----
+ components/site_isolation/features.cc | 2 +-
+ 2 files changed, 1 insertion(+), 5 deletions(-)
 
 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
-@@ -620,11 +620,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
+@@ -637,11 +637,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
  // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
    "site-per-process",
@@ -20,8 +21,11 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 -#endif
  };
  
- // Controls a mode for dynamically process-isolating sites where the user has
-@@ -654,7 +650,7 @@ const base::Feature kSiteIsolationForPasswordSites {
+ #if defined(OS_CHROMEOS)
+diff --git a/components/site_isolation/features.cc b/components/site_isolation/features.cc
+--- a/components/site_isolation/features.cc
++++ b/components/site_isolation/features.cc
+@@ -36,7 +36,7 @@ const base::Feature kSiteIsolationForPasswordSites {
  // base::SysInfo::AmountOfPhysicalMemoryMB().
  const base::Feature kSitePerProcessOnlyForHighMemoryClients{
      "site-per-process-only-for-high-memory-clients",

+ 0 - 23
build/patches/Enable-changing-default-downloads-storage-location-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Thu, 30 May 2019 03:42:06 +0200
-Subject: Enable changing default downloads storage location by default
-
----
- chrome/common/chrome_features.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-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
-@@ -308,7 +308,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsDisabledProvidersParam{
- #if defined(OS_ANDROID)
- // Enable changing default downloads storage location on Android.
- const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
--                                             base::FEATURE_DISABLED_BY_DEFAULT};
-+                                             base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- 
- // Disables ambient authentication in incognito mode.
--- 
-2.17.1
-

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

@@ -0,0 +1,37 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Thu, 20 Aug 2020 20:15:34 +0200
+Subject: Enable darken websites checkbox in themes
+
+Unexpire #darken-websites-checkbox-in-themes-setting
+---
+ chrome/browser/flag-metadata.json                   | 2 +-
+ chrome/browser/flags/android/chrome_feature_list.cc | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
+--- a/chrome/browser/flag-metadata.json
++++ b/chrome/browser/flag-metadata.json
+@@ -783,7 +783,7 @@
+   {
+     "name": "darken-websites-checkbox-in-themes-setting",
+     "owners": [ "lazzzis@google.com", "twellington" ],
+-    "expiry_milestone": 83
++    "expiry_milestone": -1
+   },
+   {
+     "name": "data-saver-server-previews",
+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
+@@ -432,7 +432,7 @@ const base::Feature kContextualSearchTranslations{
+     "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT};
+ 
+ const base::Feature kDarkenWebsitesCheckboxInThemesSetting{
+-    "DarkenWebsitesCheckboxInThemesSetting", base::FEATURE_DISABLED_BY_DEFAULT};
++    "DarkenWebsitesCheckboxInThemesSetting", base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+ const base::Feature kDirectActions{"DirectActions",
+                                    base::FEATURE_ENABLED_BY_DEFAULT};
+-- 
+2.17.1
+

+ 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
-@@ -282,6 +282,10 @@ config("compiler") {
+@@ -288,6 +288,10 @@ config("compiler") {
        }
      }
  

+ 9 - 4
build/patches/Enable-improved-cookie-controls-by-default.patch

@@ -18,15 +18,20 @@ diff --git a/components/content_settings/core/common/features.cc b/components/co
  
  // Default setting for improved cookie controls.
  const base::FeatureParam<bool> kImprovedCookieControlsDefaultInIncognito{
-@@ -20,5 +20,5 @@ const base::FeatureParam<bool> kImprovedCookieControlsDefaultInIncognito{
+@@ -20,10 +20,10 @@ const base::FeatureParam<bool> kImprovedCookieControlsDefaultInIncognito{
  // Enables an improved UI for existing third-party cookie blocking users.
  const base::Feature kImprovedCookieControlsForThirdPartyCookieBlocking{
      "ImprovedCookieControlsForThirdPartyCookieBlocking",
 -    base::FEATURE_DISABLED_BY_DEFAULT};
--}
-\ No newline at end of file
 +    base::FEATURE_ENABLED_BY_DEFAULT};
-+}
+ 
+ const base::Feature kDisallowWildcardsInPluginContentSettings{
+     "DisallowWildcardsInPluginContentSettings",
+     base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+-}  // namespace content_settings
+\ No newline at end of file
++}  // namespace content_settings
 -- 
 2.17.1
 

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

@@ -15,7 +15,7 @@ Expose show-legacy-tls-warnings flag on Android as well
 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
-@@ -5273,11 +5273,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5366,11 +5366,9 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kElasticOverscrollWin)},
  #endif
  
@@ -74,7 +74,7 @@ diff --git a/components/security_state/core/features.cc b/components/security_st
 diff --git a/net/base/features.cc b/net/base/features.cc
 --- a/net/base/features.cc
 +++ b/net/base/features.cc
-@@ -120,7 +120,7 @@ const base::Feature kTurnOffStreamingMediaCaching{
+@@ -153,7 +153,7 @@ const base::Feature kTurnOffStreamingMediaCaching{
      "TurnOffStreamingMediaCaching", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kLegacyTLSEnforced{"LegacyTLSEnforced",

+ 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
-@@ -242,7 +242,7 @@ const base::Feature kWebComponentsV0Enabled{"WebComponentsV0Enabled",
+@@ -283,7 +283,7 @@ const base::Feature kFontAccess{"FontAccess",
  // Prefetch request properties are updated to be privacy-preserving. See
  // crbug.com/988956.
  const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges",

+ 1 - 1
build/patches/Enable-reduced-referrer-granularity-by-default.patch

@@ -9,7 +9,7 @@ Subject: Enable reduced-referrer-granularity by default
 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
-@@ -464,7 +464,7 @@ const base::Feature kProactivelySwapBrowsingInstance{
+@@ -456,7 +456,7 @@ const base::Feature kProactivelySwapBrowsingInstance{
  // Reduce the amount of information in the default 'referer' header for
  // cross-origin requests.
  const base::Feature kReducedReferrerGranularity{

+ 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
-@@ -47,7 +47,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
+@@ -52,7 +52,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/Hide-passwords-manager-link.patch

@@ -9,7 +9,7 @@ Subject: Hide passwords manager link
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
-@@ -277,7 +277,7 @@ public class PasswordSettings
+@@ -284,7 +284,7 @@ public class PasswordSettings
              return;
          }
  
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
  
          PreferenceGroup passwordParent;
          if (mSearchQuery == null) {
-@@ -353,7 +353,7 @@ public class PasswordSettings
+@@ -360,7 +360,7 @@ public class PasswordSettings
              return;
          }
  

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

@@ -33,7 +33,7 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
 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
-@@ -263,6 +263,7 @@
+@@ -264,6 +264,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/top_document_root_scroller_controller.h"
-@@ -327,6 +328,8 @@
+@@ -328,6 +329,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,9 +50,9 @@ 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();
-@@ -6794,6 +6797,61 @@ void SetOriginTrialFreezePolicy(
- 
- }  // namespace
+@@ -6803,6 +6806,61 @@ void Document::MarkFirstPaint() {
+   MaybeExecuteDelayedAsyncScripts();
+ }
  
 +void Document::injectScripts() {
 +  // determine whether this is a search results page
@@ -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);
-@@ -6846,6 +6904,10 @@ void Document::FinishedParsing() {
+@@ -6858,6 +6916,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
-@@ -1722,6 +1722,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1692,6 +1692,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  

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

@@ -34,7 +34,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
-@@ -1259,7 +1259,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1277,7 +1277,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -70,7 +70,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
-@@ -247,7 +247,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -262,7 +262,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -94,7 +94,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -67,11 +67,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -71,11 +71,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
    registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
    registry->RegisterBooleanPref(
@@ -149,7 +149,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
-@@ -924,10 +924,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -948,10 +948,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -161,7 +161,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
    }
  
-@@ -1569,8 +1566,8 @@ void AutofillManager::Reset() {
+@@ -1587,8 +1584,8 @@ void AutofillManager::Reset() {
  #if defined(OS_ANDROID) || defined(OS_IOS)
    autofill_assistant_.Reset();
  #endif
@@ -205,7 +205,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
 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
-@@ -199,9 +199,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -189,9 +189,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(

+ 27 - 27
build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.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
-@@ -2214,6 +2214,7 @@ static_library("browser") {
+@@ -2098,6 +2098,7 @@ static_library("browser") {
      "//services/data_decoder/public/cpp",
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/usb",
@@ -68,14 +68,14 @@ 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
 @@ -164,6 +164,7 @@
+ #include "services/network/public/cpp/features.h"
+ #include "services/network/public/cpp/network_switches.h"
+ #include "services/service_manager/sandbox/features.h"
++#include "third_party/ungoogled/ungoogled_switches.h"
+ #include "services/service_manager/sandbox/switches.h"
  #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
  #include "third_party/blink/public/common/features.h"
- #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
-+#include "third_party/ungoogled/ungoogled_switches.h"
- #include "third_party/leveldatabase/leveldb_features.h"
- #include "ui/accessibility/accessibility_features.h"
- #include "ui/accessibility/accessibility_switches.h"
-@@ -2014,12 +2015,24 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2017,12 +2018,24 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
       flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
       SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
@@ -103,7 +103,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
-@@ -211,6 +211,7 @@ jumbo_source_set("browser") {
+@@ -216,6 +216,7 @@ jumbo_source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -114,7 +114,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
-@@ -226,6 +226,7 @@
+@@ -223,6 +223,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"
@@ -122,7 +122,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"
-@@ -3258,6 +3259,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3292,6 +3293,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisablePreferCompositingToLCDText,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -131,7 +131,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
 +    switches::kFingerprintingCanvasImageDataNoise,
      switches::kDisableFrameRateLimit,
      switches::kDisableGpuMemoryBufferVideoFrames,
-     switches::kDisableImageAnimationResync,
+     switches::kDisableHistogramCustomizer,
 diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 --- a/content/child/BUILD.gn
 +++ b/content/child/BUILD.gn
@@ -151,10 +151,10 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #include "services/network/public/cpp/network_switches.h"
  #include "third_party/blink/public/common/features.h"
 +#include "third_party/ungoogled/ungoogled_switches.h"
+ #include "third_party/blink/public/common/switches.h"
  #include "third_party/blink/public/platform/web_runtime_features.h"
  #include "ui/accessibility/accessibility_features.h"
- #include "ui/base/ui_base_features.h"
-@@ -521,6 +522,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -535,6 +536,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    // They're moved here to distinguish them from actual base checks
    WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
  
@@ -171,7 +171,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
-@@ -217,6 +217,9 @@ class WebRuntimeFeatures {
+@@ -223,6 +223,9 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
@@ -192,7 +192,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"
-@@ -2623,6 +2624,23 @@ void Document::UpdateStyleAndLayoutTree() {
+@@ -2513,6 +2514,23 @@ void Document::UpdateStyleAndLayoutTree() {
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this);
  #endif
@@ -219,7 +219,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
-@@ -476,6 +476,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -451,6 +451,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -230,7 +230,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    String visibilityState() const;
    bool IsPageVisible() const;
    bool hidden() const;
-@@ -2001,6 +2005,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1974,6 +1978,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -243,7 +243,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
-@@ -2022,6 +2022,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2031,6 +2031,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -255,7 +255,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -2039,6 +2044,9 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -2048,6 +2053,9 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -297,7 +297,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
 diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
 --- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
 +++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
-@@ -54,6 +54,24 @@ TextMetrics::TextMetrics(const Font& font,
+@@ -55,6 +55,24 @@ TextMetrics::TextMetrics(const Font& font,
    Update(font, direction, baseline, align, text);
  }
  
@@ -327,7 +327,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_
 +++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
 @@ -64,6 +64,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
  
-   void Trace(Visitor*) override;
+   void Trace(Visitor*) const override;
  
 +  void Shuffle(const double factor);
 +
@@ -337,7 +337,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/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
-@@ -815,9 +815,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -835,9 +835,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    else
      direction = ToTextDirection(GetState().GetDirection(), canvas());
  
@@ -357,7 +357,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1547,7 +1547,9 @@ jumbo_component("platform") {
+@@ -1552,7 +1552,9 @@ jumbo_component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -368,7 +368,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
  
    public_deps = [
      ":blink_platform_public_deps",
-@@ -1588,6 +1590,7 @@ jumbo_component("platform") {
+@@ -1593,6 +1595,7 @@ jumbo_component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -379,8 +379,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -675,4 +675,16 @@ void WebRuntimeFeatures::EnableVideoWakeLockOptimisationHiddenMuted(
-       enable);
+@@ -709,4 +709,16 @@ void WebRuntimeFeatures::EnableContentIndex(bool enable) {
+   RuntimeEnabledFeatures::SetContentIndexEnabled(enable);
  }
  
 +void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
@@ -624,7 +624,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
-@@ -760,6 +760,15 @@
+@@ -752,6 +752,15 @@
        origin_trial_feature_name: "FeaturePolicyReporting",
        status: "experimental"
      },

+ 1 - 1
build/patches/Never-send-any-crash-upload-data.patch

@@ -9,7 +9,7 @@ Subject: Never send any crash upload data
 diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
 --- a/chrome/browser/tracing/crash_service_uploader.cc
 +++ b/chrome/browser/tracing/crash_service_uploader.cc
-@@ -127,14 +127,16 @@ void TraceCrashServiceUploader::DoUpload(
+@@ -126,14 +126,16 @@ void TraceCrashServiceUploader::DoUpload(
      UploadDoneCallback done_callback) {
    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
  

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

@@ -9,7 +9,7 @@ Subject: Offer builtin autocomplete for chrome://flags
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -237,6 +237,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
+@@ -243,6 +243,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
  std::vector<base::string16>
  ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<base::string16> builtins_to_provide;

+ 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
-@@ -429,6 +429,7 @@ public class ExternalNavigationHandler {
+@@ -493,6 +493,7 @@ public class ExternalNavigationHandler {
              startActivity(intent, false, mDelegate);
              return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT;
          }
@@ -17,7 +17,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component
      }
  
      private static void loadUrlWithReferrer(
-@@ -966,6 +967,13 @@ public class ExternalNavigationHandler {
+@@ -1060,6 +1061,13 @@ public class ExternalNavigationHandler {
              return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
          }
  

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

@@ -27,7 +27,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -420,7 +420,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -419,7 +419,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      // Disable secure DNS for any DoH server hostname lookups to avoid deadlock.
      request_->SetDisableSecureDns(true);
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
@@ -39,15 +39,15 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
 --- a/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
-@@ -279,6 +279,7 @@ void URLRequestHttpJob::Start() {
+@@ -331,6 +331,7 @@ void URLRequestHttpJob::Start() {
    // plugin could set a referrer although sending the referrer is inhibited.
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
  
 +  if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
-   // Our consumer should have made sure that this is a safe referrer. See for
-   // instance WebCore::FrameLoader::HideReferrer.
+   // Our consumer should have made sure that this is a safe referrer (e.g. via
+   // URLRequestJob::ComputeReferrerForPolicy).
    if (referrer.is_valid()) {
-@@ -294,11 +295,14 @@ void URLRequestHttpJob::Start() {
+@@ -338,11 +339,14 @@ void URLRequestHttpJob::Start() {
      request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
                                            referer_value);
    }
@@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -488,10 +492,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -532,10 +536,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
      } else {
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        bool advertise_brotli = false;
@@ -79,7 +79,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
          }
        }
  
-@@ -509,7 +515,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -553,7 +559,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

+ 33 - 50
build/patches/Remove-EV-certificates.patch

@@ -7,41 +7,42 @@ certificates. The web of trust is considered a failure in itself, so
 do not give users a false sense of extra security with EV certs.
 Instead, let them appear just like regular ones.
 ---
- net/cert/ev_root_ca_metadata.cc | 13 +++++++++----
- net/cert/ev_root_ca_metadata.h  |  6 ++----
- 2 files changed, 11 insertions(+), 8 deletions(-)
+ net/cert/ev_root_ca_metadata.cc | 19 ++++++++++++++++++-
+ net/cert/ev_root_ca_metadata.h  |  4 +---
+ 2 files changed, 19 insertions(+), 4 deletions(-)
 
 diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
 --- a/net/cert/ev_root_ca_metadata.cc
 +++ b/net/cert/ev_root_ca_metadata.cc
-@@ -4,7 +4,7 @@
+@@ -44,6 +44,16 @@ static const EVMetadata kEvRootCaMetadata[] = {
+     // AC Camerfirma S.A. Chambers of Commerce Root - 2008
+     // https://www.camerfirma.com
+     {
++  // need some dummy thing to make compiler happy, because
++  // arraysize() is implemented as a convoluted template rather than
++  // the traditional sizeof(x)/sizeof(*x)
++  { { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
++        0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
++    {
++      "0",
++    }
++  },
++#if 0
+         {{0x06, 0x3e, 0x4a, 0xfa, 0xc4, 0x91, 0xdf, 0xd3, 0x32, 0xf3, 0x08,
+           0x9b, 0x85, 0x42, 0xe9, 0x46, 0x17, 0xd8, 0x93, 0xd7, 0xfe, 0x94,
+           0x4e, 0x10, 0xa7, 0x93, 0x7e, 0xe2, 0x9d, 0x96, 0x93, 0xc0}},
+@@ -590,7 +600,9 @@ static const EVMetadata kEvRootCaMetadata[] = {
+           0xd2, 0x09, 0xb7, 0x37, 0xcb, 0xe2, 0xc1, 0x8c, 0xfb, 0x2c, 0x10,
+           0xc0, 0xff, 0x0b, 0xcf, 0x0d, 0x32, 0x86, 0xfc, 0x1a, 0xa2}},
+         {"2.16.840.1.114404.1.1.2.4.1", ""},
+-    }};
++    }
++#endif
++};
  
- #include "net/cert/ev_root_ca_metadata.h"
- 
--#if defined(USE_NSS_CERTS)
-+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
- #include <cert.h>
- #include <pkcs11n.h>
- #include <secerr.h>
-@@ -19,7 +19,7 @@
- #include "base/logging.h"
- #include "base/strings/string_piece.h"
- #include "net/der/input.h"
--#if defined(USE_NSS_CERTS)
-+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
- #include "crypto/nss_util.h"
- #elif defined(PLATFORM_USES_CHROMIUM_EV_METADATA) || defined(OS_WIN)
- #include "third_party/boringssl/src/include/openssl/bytestring.h"
-@@ -763,7 +763,7 @@ EVRootCAMetadata* EVRootCAMetadata::GetInstance() {
-   return g_ev_root_ca_metadata.Pointer();
- }
- 
--#if defined(USE_NSS_CERTS)
-+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
- 
- namespace {
- // Converts a DER-encoded OID (without leading tag and length) to a SECOidTag.
-@@ -1045,6 +1045,11 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) {
+ #endif  // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
+ }  // namespace
+@@ -779,6 +791,11 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) {
  // metadata.
  //
  
@@ -53,19 +54,10 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
  bool EVRootCAMetadata::IsEVPolicyOID(PolicyOID policy_oid) const {
    LOG(WARNING) << "Not implemented";
    return false;
-@@ -1084,7 +1089,7 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) {
- 
- EVRootCAMetadata::EVRootCAMetadata() {
- // Constructs the object from the raw metadata in kEvRootCaMetadata.
--#if defined(USE_NSS_CERTS)
-+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
-   crypto::EnsureNSSInit();
- 
-   for (const auto& ev_root : kEvRootCaMetadata) {
 diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h
 --- a/net/cert/ev_root_ca_metadata.h
 +++ b/net/cert/ev_root_ca_metadata.h
-@@ -24,7 +24,7 @@
+@@ -20,7 +20,7 @@
      defined(OS_FUCHSIA)
  // When not defined, the EVRootCAMetadata singleton is a dumb placeholder
  // implementation that will fail all EV lookup operations.
@@ -74,7 +66,7 @@ diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h
  #endif
  
  namespace base {
-@@ -68,12 +68,10 @@ class NET_EXPORT_PRIVATE EVRootCAMetadata {
+@@ -62,12 +62,10 @@ class NET_EXPORT_PRIVATE EVRootCAMetadata {
    bool HasEVPolicyOIDGivenBytes(const SHA256HashValue& fingerprint,
                                  const der::Input& policy_oid) const;
  
@@ -87,15 +79,6 @@ diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h
  
    // AddEVCA adds an EV CA to the list of known EV CAs with the given policy.
    // |policy| is expressed as a string of dotted numbers. It returns true on
-@@ -90,7 +88,7 @@ class NET_EXPORT_PRIVATE EVRootCAMetadata {
-   EVRootCAMetadata();
-   ~EVRootCAMetadata();
- 
--#if defined(USE_NSS_CERTS)
-+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
-   using PolicyOIDMap = std::map<SHA256HashValue, std::vector<PolicyOID>>;
- 
-   // RegisterOID registers |policy|, a policy OID in dotted string form, and
 -- 
 2.17.1
 

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

@@ -0,0 +1,57 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Fri, 21 Aug 2020 22:39:23 +0200
+Subject: Remove blocklisted URLs upon bookmark creation
+
+---
+ .../chromium/chrome/browser/ChromeActivity.java   | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+@@ -123,6 +123,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
+ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
+ import org.chromium.chrome.browser.share.ShareDelegate;
+ import org.chromium.chrome.browser.share.ShareDelegateImpl;
++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.TabDelegateFactory;
+@@ -228,6 +230,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+     private TabContentManager mTabContentManager;
+     private UmaSessionStats mUmaSessionStats;
+     private ContextReporter mContextReporter;
++    private MostVisitedSites mMostVisitedSites;
+ 
+     private boolean mPartnerBrowserRefreshNeeded;
+ 
+@@ -1203,6 +1206,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             mCompositorViewHolder = null;
+         }
+ 
++        if (mMostVisitedSites != null) {
++                mMostVisitedSites.destroy();
++                mMostVisitedSites = null;
++        }
++
+         onDestroyInternal();
+ 
+         if (mDidAddPolicyChangeListener) {
+@@ -1437,6 +1445,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             return;
+         }
+ 
++	// remove blocklisted URL from most visited sites
++	if (mMostVisitedSites == null) {
++            mMostVisitedSites =
++                SuggestionsDependencyFactory.getInstance().createMostVisitedSites(Profile.getLastUsedRegularProfile());
++        }
++        mMostVisitedSites.removeBlacklistedUrl(tabToBookmark.getOriginalUrl());
++
+         // Note we get user bookmark ID over just a bookmark ID here: Managed bookmarks can't be
+         // edited. If the current URL is only bookmarked by managed bookmarks, this will return
+         // INVALID_ID, so the code below will fall back on adding a new bookmark instead.
+-- 
+2.17.1
+

+ 23 - 45
build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch

@@ -25,18 +25,17 @@ Subject: Remove dependency on auth, signin, dynamic and tasks
  content/test/BUILD.gn                         |  3 -
  device/BUILD.gn                               |  2 -
  remoting/android/client_java_tmpl.gni         |  3 -
- services/BUILD.gn                             |  4 -
+ services/BUILD.gn                             |  2 -
  services/device/geolocation/BUILD.gn          |  2 -
  services/shape_detection/BUILD.gn             |  2 -
  third_party/android_deps/BUILD.gn             | 41 ----------
  third_party/cacheinvalidation/BUILD.gn        |  1 -
- third_party/robolectric/BUILD.gn              |  2 -
- 28 files changed, 16 insertions(+), 276 deletions(-)
+ 27 files changed, 16 insertions(+), 272 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -275,9 +275,6 @@ android_library("chrome_java") {
+@@ -272,9 +272,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -46,7 +45,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:jni_java",
      "//chrome/android/features/keyboard_accessory:public_java",
-@@ -704,8 +701,6 @@ junit_binary("chrome_junit_tests") {
+@@ -717,8 +714,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_app_java_resources",
      ":chrome_java",
      ":partner_location_descriptor_proto_java",
@@ -55,7 +54,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -818,9 +813,6 @@ android_library("chrome_test_java") {
+@@ -895,9 +890,6 @@ android_library("chrome_test_java") {
      ":chrome_test_util_java",
      ":native_java_unittests_java",
      ":partner_location_descriptor_proto_java",
@@ -104,7 +103,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -772,15 +772,6 @@ by a child template that "extends" this file.
+@@ -746,15 +746,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -133,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
  import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.annotations.CalledByNative;
-@@ -324,16 +321,7 @@ public abstract class AppHooks {
+@@ -304,16 +301,7 @@ public abstract class AppHooks {
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       */
      public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
@@ -212,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
  import org.chromium.base.CommandLine;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
-@@ -158,9 +155,7 @@ public class ExternalAuthUtils {
+@@ -168,9 +165,7 @@ public class ExternalAuthUtils {
       *         when it is updating.
       */
      public boolean isGooglePlayServicesMissing(final Context context) {
@@ -223,7 +222,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
      }
  
      /**
-@@ -182,7 +177,6 @@ public class ExternalAuthUtils {
+@@ -192,7 +187,6 @@ public class ExternalAuthUtils {
  
          Context context = ContextUtils.getApplicationContext();
          final int resultCode = checkGooglePlayServicesAvailable(context);
@@ -231,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
          // resultCode is some kind of error.
          Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
          if (isUserRecoverableError(resultCode)) {
-@@ -252,7 +246,7 @@ public class ExternalAuthUtils {
+@@ -262,7 +256,7 @@ public class ExternalAuthUtils {
      protected int checkGooglePlayServicesAvailable(final Context context) {
          // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
          try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
@@ -240,7 +239,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
          }
      }
  
-@@ -264,7 +258,7 @@ public class ExternalAuthUtils {
+@@ -274,7 +268,7 @@ public class ExternalAuthUtils {
       * @return true If the code represents a user-recoverable error
       */
      protected boolean isUserRecoverableError(final int errorCode) {
@@ -249,7 +248,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
      }
  
      /**
-@@ -274,6 +268,6 @@ public class ExternalAuthUtils {
+@@ -284,6 +278,6 @@ public class ExternalAuthUtils {
       * @return a textual description of the error code
       */
      protected String describeError(final int errorCode) {
@@ -561,7 +560,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
 diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 --- a/chrome/test/android/BUILD.gn
 +++ b/chrome/test/android/BUILD.gn
-@@ -197,8 +197,6 @@ android_library("chrome_java_test_support") {
+@@ -239,8 +239,6 @@ android_library("chrome_java_test_support") {
      "javatests/src/org/chromium/chrome/test/util/browser/webapps/WebappTestPage.java",
    ]
    deps = [
@@ -573,10 +572,10 @@ diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
 --- a/components/background_task_scheduler/BUILD.gn
 +++ b/components/background_task_scheduler/BUILD.gn
-@@ -118,10 +118,6 @@ if (is_android) {
-     ]
+@@ -119,10 +119,6 @@ if (is_android) {
  
      deps = [
+       ":background_task_scheduler_task_ids_java",
 -      "$google_play_services_package:google_play_services_auth_base_java",
 -      "$google_play_services_package:google_play_services_base_java",
 -      "$google_play_services_package:google_play_services_basement_java",
@@ -642,7 +641,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
-@@ -75,9 +75,6 @@ action("generate_sandboxed_service_srcjar") {
+@@ -72,9 +72,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") {
  android_library("content_java") {
    deps = [
      ":content_java_resources",
@@ -655,7 +654,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2428,9 +2428,6 @@ if (is_android) {
+@@ -2515,9 +2515,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -668,7 +667,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -384,8 +384,6 @@ if (is_android) {
+@@ -393,8 +393,6 @@ if (is_android) {
    junit_binary("device_junit_tests") {
      sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      deps = [
@@ -693,16 +692,7 @@ diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_jav
 diff --git a/services/BUILD.gn b/services/BUILD.gn
 --- a/services/BUILD.gn
 +++ b/services/BUILD.gn
-@@ -103,8 +103,6 @@ if (is_android) {
-       "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
-     ]
-     deps = [
--      "$google_play_services_package:google_play_services_base_java",
--      "$google_play_services_package:google_play_services_basement_java",
-       "//base:base_java",
-       "//base:base_java_test_support",
-       "//base:base_junit_test_support",
-@@ -132,8 +130,6 @@ if (is_android) {
+@@ -131,8 +131,6 @@ if (is_android) {
        "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
      ]
      deps = [
@@ -738,8 +728,8 @@ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -971,37 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
-   skip_jetify = true
+@@ -995,37 +995,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+   ]
  }
  
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -776,7 +766,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_gcm_java") {
    aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
-@@ -1020,16 +989,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1044,16 +1013,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  
@@ -792,7 +782,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
 -
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
-   aar_path = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
+   aar_path =
 diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
 --- a/third_party/cacheinvalidation/BUILD.gn
 +++ b/third_party/cacheinvalidation/BUILD.gn
@@ -804,18 +794,6 @@ diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidat
        "//base:base_java",
        "//third_party/android_protobuf:protobuf_nano_javalib",
      ]
-diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
---- a/third_party/robolectric/BUILD.gn
-+++ b/third_party/robolectric/BUILD.gn
-@@ -1162,8 +1162,6 @@ java_library("shadows_play_services_java") {
-     ":robolectric_shadowapi_java",
-     ":robolectric_utils_java",
-     ":shadows_core_java",
--    "$google_play_services_package:google_play_services_base_java",
--    "$google_play_services_package:google_play_services_basement_java",
-     "//third_party/android_deps:android_support_v4_java",
-     "//third_party/android_deps:com_android_support_support_annotations_java",
-     "//third_party/android_deps:com_android_support_support_fragment_java",
 -- 
 2.17.1
 

+ 3 - 4
build/patches/Remove-dependency-on-com.google.android.gcm.patch

@@ -3,21 +3,20 @@ Date: Sat, 2 Nov 2019 09:29:52 +0100
 Subject: Remove dependency on com.google.android.gcm
 
 ---
- third_party/android_sdk/BUILD.gn              |  4 ---
+ third_party/android_sdk/BUILD.gn              |  3 --
  .../client/android2/AndroidManifest.xml       | 35 -------------------
  .../AndroidMessageReceiverService.java        | 17 ---------
  .../channel/AndroidMessageSenderService.java  |  3 +-
- 4 files changed, 1 insertion(+), 58 deletions(-)
+ 4 files changed, 1 insertion(+), 57 deletions(-)
 
 diff --git a/third_party/android_sdk/BUILD.gn b/third_party/android_sdk/BUILD.gn
 --- a/third_party/android_sdk/BUILD.gn
 +++ b/third_party/android_sdk/BUILD.gn
-@@ -64,8 +64,4 @@ if (enable_java_templates) {
+@@ -63,7 +63,4 @@ if (enable_java_templates) {
      testonly = true
      sources = [ "//third_party/android_sdk/public/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
    }
 -  android_java_prebuilt("android_gcm_java") {
--    skip_jetify = true
 -    jar_path = "//third_party/android_sdk/public/extras/google/gcm/gcm-client/dist/gcm.jar"
 -  }
  }

+ 6 - 18
build/patches/Remove-dependency-on-com.google.android.gms.auth.patch

@@ -9,13 +9,12 @@ Subject: Remove dependency on com.google.android.gms.auth
  content/public/android/BUILD.gn               |  1 -
  content/test/BUILD.gn                         |  1 -
  third_party/android_deps/BUILD.gn             | 47 -------------------
- third_party/robolectric/BUILD.gn              |  1 -
- 7 files changed, 2 insertions(+), 72 deletions(-)
+ 6 files changed, 2 insertions(+), 71 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -275,7 +275,6 @@ android_library("chrome_java") {
+@@ -272,7 +272,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -83,7 +82,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
-@@ -75,7 +75,6 @@ action("generate_sandboxed_service_srcjar") {
+@@ -72,7 +72,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") {
  android_library("content_java") {
    deps = [
      ":content_java_resources",
@@ -94,7 +93,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2428,7 +2428,6 @@ if (is_android) {
+@@ -2515,7 +2515,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -105,8 +104,8 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -971,53 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
-   skip_jetify = true
+@@ -996,53 +996,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+   ]
  }
  
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -159,17 +158,6 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_base_java") {
    aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.0.0.aar"
-diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
---- a/third_party/robolectric/BUILD.gn
-+++ b/third_party/robolectric/BUILD.gn
-@@ -1162,7 +1162,6 @@ java_library("shadows_play_services_java") {
-     ":robolectric_shadowapi_java",
-     ":robolectric_utils_java",
-     ":shadows_core_java",
--    "$google_play_services_package:google_play_services_auth_base_java",
-     "$google_play_services_package:google_play_services_base_java",
-     "$google_play_services_package:google_play_services_basement_java",
-     "//third_party/android_deps:android_support_v4_java",
 -- 
 2.17.1
 

+ 23 - 13
build/patches/Remove-dependency-on-com.google.android.gms.cast.patch

@@ -4,7 +4,7 @@ Subject: Remove dependency on com.google.android.gms.cast
 
 ---
  chrome/android/BUILD.gn                       |   7 --
- chrome/android/features/media_router/BUILD.gn |   2 -
+ chrome/android/features/media_router/BUILD.gn |   5 -
  .../browser/media/router/CastSessionUtil.java |  35 ------
  .../browser/media/router/MediaSink.java       |  44 +-------
  .../media/router/MediaStatusBridge.java       |  40 ++-----
@@ -27,12 +27,12 @@ Subject: Remove dependency on com.google.android.gms.cast
  .../modules/chrome_feature_modules.gni        |   3 -
  chrome/test/android/cast_emulator/BUILD.gn    |   1 -
  third_party/android_deps/BUILD.gn             |  39 -------
- 24 files changed, 29 insertions(+), 811 deletions(-)
+ 24 files changed, 29 insertions(+), 814 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -277,14 +277,11 @@ android_library("chrome_java") {
+@@ -274,14 +274,11 @@ android_library("chrome_java") {
      ":usage_stats_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -47,7 +47,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/android/modules/image_editor/provider:java",
      "//chrome/android/modules/image_editor/public:java",
      "//chrome/android/modules/stack_unwinder/provider:java",
-@@ -709,8 +706,6 @@ junit_binary("chrome_junit_tests") {
+@@ -722,8 +719,6 @@ junit_binary("chrome_junit_tests") {
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -56,7 +56,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -825,8 +820,6 @@ android_library("chrome_test_java") {
+@@ -902,8 +897,6 @@ android_library("chrome_test_java") {
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -77,6 +77,16 @@ diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/feat
      "//base:base_java",
      "//base:jni_java",
      "//chrome/android:chrome_java",
+@@ -123,9 +121,6 @@ junit_binary("media_router_junit_tests") {
+ 
+   deps = [
+     ":java",
+-    "$google_play_services_package:google_play_services_basement_java",
+-    "$google_play_services_package:google_play_services_cast_framework_java",
+-    "$google_play_services_package:google_play_services_cast_java",
+     "//base:base_java",
+     "//base:base_java_test_support",
+     "//base:base_junit_test_support",
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/CastSessionUtil.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/CastSessionUtil.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/CastSessionUtil.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/CastSessionUtil.java
@@ -87,7 +97,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -import com.google.android.gms.cast.CastDevice;
 -import com.google.android.gms.cast.RemoteMediaPlayer;
 -
- import org.chromium.chrome.browser.media.ui.MediaNotificationInfo;
+ import org.chromium.components.browser_ui.media.MediaNotificationInfo;
  import org.chromium.services.media_session.MediaMetadata;
  
 @@ -18,36 +15,4 @@ public class CastSessionUtil {
@@ -372,9 +382,9 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -import com.google.android.gms.cast.MediaStatus;
 -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
 -
- import org.chromium.chrome.browser.media.ui.MediaNotificationInfo;
- import org.chromium.chrome.browser.media.ui.MediaNotificationListener;
  import org.chromium.chrome.browser.media.ui.MediaNotificationManager;
+ import org.chromium.chrome.media.router.R;
+ import org.chromium.components.browser_ui.media.MediaNotificationInfo;
 @@ -59,20 +55,6 @@ public abstract class BaseNotificationController
      public void onStatusUpdated() {
          if (mNotificationBuilder == null) return;
@@ -1455,7 +1465,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Note: All activities directly or indirectly derived from ChromeActivity
               must specify android:hardwareAccelerated="false".
  
-@@ -698,16 +692,6 @@ by a child template that "extends" this file.
+@@ -672,16 +666,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -1472,7 +1482,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- This activity is used to restart the main Chrome process.  Should never be exported. -->
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
              android:launchMode="singleInstance"
-@@ -1136,18 +1120,6 @@ by a child template that "extends" this file.
+@@ -1094,18 +1078,6 @@ by a child template that "extends" this file.
          {% endif %}
  
          {% block extra_application_definitions %}
@@ -1494,7 +1504,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
-@@ -36,7 +36,6 @@ import org.chromium.chrome.browser.profiles.Profile;
+@@ -35,7 +35,6 @@ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  import org.chromium.chrome.browser.settings.SettingsLauncher;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
@@ -1502,7 +1512,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
  import org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference;
  import org.chromium.components.browser_ui.settings.ChromeBasePreference;
  import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
-@@ -495,19 +494,6 @@ public class PasswordSettings
+@@ -509,19 +508,6 @@ public class PasswordSettings
      }
  
      private void displaySecurityKeyLink() {
@@ -1556,7 +1566,7 @@ diff --git a/chrome/test/android/cast_emulator/BUILD.gn b/chrome/test/android/ca
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1002,45 +1002,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
+@@ -1026,45 +1026,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
  }
  

+ 4 - 4
build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch

@@ -24,7 +24,7 @@ The snippets are already disabled in native codes, this will disable it on Java
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -280,7 +280,6 @@ android_library("chrome_java") {
+@@ -277,7 +277,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -833,7 +832,6 @@ android_library("chrome_test_java") {
+@@ -910,7 +909,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -40,7 +40,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -1678,7 +1676,6 @@ android_library("browser_java_test_support") {
+@@ -1808,7 +1806,6 @@ android_library("browser_java_test_support") {
    ]
    deps = [
      ":chrome_java",
@@ -161,7 +161,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/Ch
 diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
 --- a/components/background_task_scheduler/BUILD.gn
 +++ b/components/background_task_scheduler/BUILD.gn
-@@ -121,7 +121,6 @@ if (is_android) {
+@@ -122,7 +122,6 @@ if (is_android) {
        "$google_play_services_package:google_play_services_auth_base_java",
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",

+ 11 - 3
build/patches/Remove-dependency-on-com.google.android.play.patch

@@ -7,14 +7,14 @@ Subject: Remove dependency on com.google.android.play
  .../inline/FakeAppUpdateManagerWrapper.java   |  60 +----
  .../inline/InlineUpdateControllerFactory.java |  16 --
  .../inline/PlayInlineUpdateController.java    | 226 +-----------------
- components/module_installer/android/BUILD.gn  |   1 -
+ components/module_installer/android/BUILD.gn  |   2 -
  third_party/google_android_play_core/BUILD.gn |   5 -
- 6 files changed, 3 insertions(+), 306 deletions(-)
+ 6 files changed, 3 insertions(+), 307 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -454,7 +454,6 @@ android_library("chrome_java") {
+@@ -471,7 +471,6 @@ android_library("chrome_java") {
      "//third_party/cacheinvalidation:cacheinvalidation_javalib",
      "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
      "//third_party/gif_player:gif_player_java",
@@ -479,6 +479,14 @@ diff --git a/components/module_installer/android/BUILD.gn b/components/module_in
    ]
  
    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+@@ -59,7 +58,6 @@ junit_binary("module_installer_junit_tests") {
+     "//base:base_java",
+     "//base:base_java_test_support",
+     "//base:base_junit_test_support",
+-    "//third_party/google_android_play_core:com_google_android_play_core_java",
+     "//third_party/hamcrest:hamcrest_java",
+   ]
+ }
 diff --git a/third_party/google_android_play_core/BUILD.gn b/third_party/google_android_play_core/BUILD.gn
 --- a/third_party/google_android_play_core/BUILD.gn
 +++ b/third_party/google_android_play_core/BUILD.gn

+ 57 - 41
build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch

@@ -5,7 +5,6 @@ Subject: Remove dependency on fido, iid, instantapps, location
 ---
  chrome/android/BUILD.gn                       |   5 -
  chrome/android/chrome_java_sources.gni        |   3 -
- .../org/chromium/chrome/browser/AppHooks.java |   9 --
  .../ExternalNavigationDelegateImpl.java       |   8 +-
  .../instantapps/InstantAppsHandler.java       |  56 ----------
  .../browser/webauth/AuthenticatorImpl.java    |  29 +----
@@ -13,17 +12,18 @@ Subject: Remove dependency on fido, iid, instantapps, location
  .../instance_id/InstanceIDWithSubtype.java    |  28 +----
  content/public/common/content_features.cc     |   2 +-
  device/BUILD.gn                               |   1 -
+ services/BUILD.gn                             |   3 -
  services/device/geolocation/BUILD.gn          |   1 -
  .../geolocation/LocationProviderGmsCore.java  | 103 +-----------------
- third_party/android_deps/BUILD.gn             |  60 ----------
+ third_party/android_deps/BUILD.gn             |  75 -------------
  third_party/cacheinvalidation/BUILD.gn        |   1 -
  .../android2/AndroidManifestUpdatedGcm.xml    |   3 -
- 15 files changed, 15 insertions(+), 296 deletions(-)
+ 15 files changed, 15 insertions(+), 305 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -279,8 +279,6 @@ android_library("chrome_java") {
+@@ -276,8 +276,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:jni_java",
-@@ -713,7 +711,6 @@ junit_binary("chrome_junit_tests") {
+@@ -726,7 +724,6 @@ junit_binary("chrome_junit_tests") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -40,7 +40,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -830,8 +827,6 @@ android_library("chrome_test_java") {
+@@ -907,8 +904,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -52,46 +52,20 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -1780,9 +1780,6 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/webapps/dependency_injection/WebappActivityModule.java",
+@@ -1755,9 +1755,6 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewDelegate.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
 -  "java/src/org/chromium/chrome/browser/webauth/Fido2ApiHandler.java",
 -  "java/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequest.java",
 -  "java/src/org/chromium/chrome/browser/webauth/Fido2Helper.java",
    "java/src/org/chromium/chrome/browser/webauth/HandlerResponseCallback.java",
-   "java/src/org/chromium/chrome/browser/webshare/BlobReceiver.java",
-   "java/src/org/chromium/chrome/browser/webshare/ShareServiceImpl.java",
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
-@@ -47,7 +47,6 @@ import org.chromium.chrome.browser.sync.TrustedVaultClient;
- import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.usage_stats.DigitalWellbeingClient;
- import org.chromium.chrome.browser.webapps.GooglePlayWebApkInstallDelegate;
--import org.chromium.chrome.browser.webauth.Fido2ApiHandler;
- import org.chromium.chrome.browser.xsurface.ProcessScope;
- import org.chromium.chrome.browser.xsurface.SurfaceDependencyProvider;
- import org.chromium.components.browser_ui.widget.FeatureHighlightProvider;
-@@ -298,14 +297,6 @@ public abstract class AppHooks {
-         return new FeedbackSourceProvider() {};
-     }
- 
--    /**
--     * @return a new {@link Fido2ApiHandler} instance.
--     */
--    public Fido2ApiHandler createFido2ApiHandler() {
--        // TODO(nsatragno): remove after cleaning up Fido2ApiHandlerInternal.
--        return new Fido2ApiHandler();
--    }
--
-     /**
-      * @return A new {@link FeatureHighlightProvider}.
-      */
+   "java/src/org/chromium/chrome/browser/webshare/ShareServiceImplementationFactory.java",
+   "java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java",
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
-@@ -279,12 +279,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
+@@ -282,12 +282,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
  
      @Override
      public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
@@ -373,7 +347,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
 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
-@@ -753,7 +753,7 @@ const base::Feature kWebContentsOcclusion {
+@@ -750,7 +750,7 @@ const base::Feature kWebContentsOcclusion {
  // Controls whether the WebAuthentication API is enabled:
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuth{"WebAuthentication",
@@ -385,10 +359,23 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -386,7 +386,6 @@ if (is_android) {
+@@ -395,7 +395,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
+-      "$google_play_services_package:google_play_services_location_java",
+       "//base:base_java",
+       "//base:base_java_test_support",
+       "//base:base_junit_test_support",
+diff --git a/services/BUILD.gn b/services/BUILD.gn
+--- a/services/BUILD.gn
++++ b/services/BUILD.gn
+@@ -103,9 +103,6 @@ if (is_android) {
+       "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
+     ]
+     deps = [
+-      "$google_play_services_package:google_play_services_base_java",
+-      "$google_play_services_package:google_play_services_basement_java",
 -      "$google_play_services_package:google_play_services_location_java",
        "//base:base_java",
        "//base:base_java_test_support",
@@ -557,7 +544,15 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1041,20 +1041,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
+@@ -52,7 +52,6 @@ java_group("robolectric_all_java") {
+     ":org_robolectric_shadowapi_java",
+     ":org_robolectric_shadows_framework_java",
+     ":org_robolectric_shadows_multidex_java",
+-    ":org_robolectric_shadows_playservices_java",
+     ":org_robolectric_utils_java",
+     ":org_robolectric_utils_reflector_java",
+     "//third_party/robolectric:android-all-10-robolectric-5803371_java",
+@@ -1066,20 +1065,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
    strip_resources = !is_java_debug
  }
  
@@ -578,7 +573,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_gcm_java") {
    aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
-@@ -1073,52 +1059,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1098,52 +1083,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  
@@ -631,6 +626,27 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_tasks_java") {
    aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.0.0.aar"
+@@ -1454,20 +1393,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") {
+   bypass_platform_checks = true
+ }
+ 
+-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+-java_prebuilt("org_robolectric_shadows_playservices_java") {
+-  jar_path =
+-      "libs/org_robolectric_shadows_playservices/shadows-playservices-4.3.1.jar"
+-  output_name = "org_robolectric_shadows_playservices"
+-  enable_bytecode_checks = false
+-  testonly = true
+-  deps = [
+-    ":com_google_guava_guava_java",
+-    ":org_robolectric_annotations_java",
+-  ]
+-  bypass_platform_checks = true
+-}
+-
+ # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+ java_prebuilt("org_robolectric_utils_java") {
+   jar_path = "libs/org_robolectric_utils/utils-4.3.1.jar"
 diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
 --- a/third_party/cacheinvalidation/BUILD.gn
 +++ b/third_party/cacheinvalidation/BUILD.gn

+ 1 - 1
build/patches/Remove-dependency-on-flags-places-and-stats.patch

@@ -9,7 +9,7 @@ Subject: Remove dependency on flags, places and stats
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -2026,37 +2026,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
+@@ -2102,37 +2102,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
    visibility = [ ":*" ]
  }
  

+ 6 - 6
build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch

@@ -15,16 +15,16 @@ Subject: Remove dependency on vision, clearcut and phenotype
 diff --git a/services/BUILD.gn b/services/BUILD.gn
 --- a/services/BUILD.gn
 +++ b/services/BUILD.gn
-@@ -105,8 +105,6 @@ if (is_android) {
-     deps = [
+@@ -106,8 +106,6 @@ if (is_android) {
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
+       "$google_play_services_package:google_play_services_location_java",
 -      "$google_play_services_package:google_play_services_vision_common_java",
 -      "$google_play_services_package:google_play_services_vision_java",
        "//base:base_java",
        "//base:base_java_test_support",
        "//base:base_junit_test_support",
-@@ -136,8 +134,6 @@ if (is_android) {
+@@ -138,8 +136,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -494,7 +494,7 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1129,36 +1129,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
+@@ -1154,36 +1154,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
    strip_drawables = true
  }
  
@@ -530,8 +530,8 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
 -
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
-   aar_path = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
-@@ -2056,62 +2026,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
+   aar_path =
+@@ -2132,62 +2102,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
    visibility = [ ":*" ]
  }
  

+ 3 - 3
build/patches/Remove-google_services_gcm.patch

@@ -9,8 +9,8 @@ Subject: Remove google_services_gcm
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -971,24 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
-   skip_jetify = true
+@@ -995,24 +995,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+   ]
  }
  
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -33,7 +33,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
 -
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
-   aar_path = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
+   aar_path =
 -- 
 2.17.1
 

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

@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1932,15 +1932,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1908,15 +1908,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
@@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
 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
-@@ -459,7 +459,7 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
+@@ -533,7 +533,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.

+ 82 - 79
build/patches/Remove-signin-and-data-saver-integrations.patch

@@ -24,11 +24,11 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../privacy/settings/PrivacySettings.java     |  6 --
  .../chrome/browser/settings/MainSettings.java | 90 +------------------
  .../chrome/browser/signin/SigninManager.java  | 59 ++----------
+ .../browser/sync/AndroidSyncSettings.java     | 24 +----
  .../settings/SyncAndServicesSettings.java     |  8 --
  .../android/signin/signin_manager_android.cc  |  1 -
  .../strings/android_chrome_strings.grd        | 15 ----
  .../signin/SystemAccountManagerDelegate.java  | 38 +-------
- .../components/sync/AndroidSyncSettings.java  | 24 +----
  .../net/HttpNegotiateAuthenticator.java       | 88 +-----------------
  .../chromoting/base/OAuthTokenFetcher.java    |  2 -
  15 files changed, 25 insertions(+), 409 deletions(-)
@@ -36,7 +36,7 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -1267,8 +1267,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1364,8 +1364,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% block extra_uses_permissions %}
      {% endblock %}
  
-@@ -896,16 +888,6 @@ by a child template that "extends" this file.
+@@ -870,16 +862,6 @@ by a child template that "extends" this file.
                  android:resource="@xml/file_paths" />
          </provider>
  
@@ -99,7 +99,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Broadcast receiver that will be notified of account changes -->
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
              <intent-filter>
-@@ -1013,16 +995,6 @@ by a child template that "extends" this file.
+@@ -987,16 +969,6 @@ by a child template that "extends" this file.
          <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
              android:exported="false"/>
  
@@ -135,14 +135,14 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
      <PreferenceCategory
          android:key="basics_section"
          android:order="3"
-@@ -79,11 +70,6 @@
+@@ -85,11 +76,6 @@
          android:key="languages"
-         android:order="15"
+         android:order="17"
          android:title="@string/language_settings"/>
 -    <org.chromium.components.browser_ui.settings.ChromeBasePreference
 -        android:fragment="org.chromium.chrome.browser.datareduction.settings.DataReductionPreferenceFragment"
 -        android:key="data_reduction"
--        android:order="16"
+-        android:order="18"
 -        android:title="@string/data_reduction_title_lite_mode"/>
      <org.chromium.components.browser_ui.settings.ChromeBasePreference
          android:fragment="org.chromium.chrome.browser.download.settings.DownloadSettings"
@@ -169,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      @Nullable
      private ChromeFullscreenManager mFullscreenManager;
  
-@@ -875,28 +870,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -868,28 +863,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private void createContextReporterIfNeeded() {
          if (!mStarted) return; // Sync state reporting should work only in started state.
          if (mContextReporter != null || getActivityTab() == null) return;
@@ -198,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      }
  
      @Override
-@@ -962,13 +935,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -955,13 +928,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
              GSAAccountChangeListener.getInstance().disconnect();
          }
@@ -215,7 +215,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
-@@ -54,10 +54,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
+@@ -56,10 +56,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          SettingsUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
          getActivity().setTitle(R.string.data_reduction_title_lite_mode);
@@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/s
  
          setHasOptionsMenu(true);
  
-@@ -161,21 +161,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
+@@ -175,21 +175,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
       * Returns summary string.
       */
      public static String generateSummary(Resources resources) {
@@ -256,19 +256,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/s
 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
-@@ -42,9 +42,6 @@ public class PrivacySettings
-     private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
+@@ -47,9 +47,6 @@ public class PrivacySettings
+     private static final String PREF_SECURE_DNS = "secure_dns";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
 -    private static final String PREF_SYNC_AND_SERVICES_LINK_DIVIDER =
 -            "sync_and_services_link_divider";
 -    private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
+     private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
- 
-@@ -67,9 +64,6 @@ public class PrivacySettings
-         networkPredictionPref.setOnPreferenceChangeListener(this);
-         networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+@@ -78,9 +75,6 @@ public class PrivacySettings
+         Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
+         secureDnsPref.setVisible(privacyPrefManager.isDnsOverHttpsUiEnabled());
  
 -        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
 -        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
@@ -299,7 +299,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
  import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
  import org.chromium.chrome.browser.tracing.settings.DeveloperSettings;
  import org.chromium.components.browser_ui.settings.ChromeBasePreference;
-@@ -45,23 +39,17 @@ import java.util.Map;
+@@ -45,18 +39,13 @@ import java.util.Map;
   * The main settings screen, shown when the user first opens Settings.
   */
  public class MainSettings extends PreferenceFragmentCompat
@@ -313,10 +313,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      public static final String PREF_PASSWORDS = "passwords";
      public static final String PREF_HOMEPAGE = "homepage";
      public static final String PREF_UI_THEME = "ui_theme";
+     public static final String PREF_PRIVACY = "privacy";
+     public static final String PREF_SAFETY_CHECK = "safety_check";
 -    public static final String PREF_DATA_REDUCTION = "data_reduction";
      public static final String PREF_NOTIFICATIONS = "notifications";
      public static final String PREF_DOWNLOADS = "downloads";
      public static final String PREF_DEVELOPER = "developer";
+@@ -67,7 +56,6 @@ public class MainSettings extends PreferenceFragmentCompat
  
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
@@ -324,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
  
      public MainSettings() {
          setHasOptionsMenu(true);
-@@ -84,35 +72,16 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -90,35 +78,16 @@ public class MainSettings extends PreferenceFragmentCompat
      @Override
      public void onDestroy() {
          super.onDestroy();
@@ -360,8 +363,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      }
  
      @Override
-@@ -125,12 +94,9 @@ public class MainSettings extends PreferenceFragmentCompat
-         SettingsUtils.addPreferencesFromResource(this, R.xml.main_preferences);
+@@ -146,12 +115,9 @@ public class MainSettings extends PreferenceFragmentCompat
+ 
          cachePreferences();
  
 -        mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
@@ -373,7 +376,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
  
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              // If we are on Android O+ the Notifications preference should lead to the Android
-@@ -176,7 +142,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -202,7 +168,6 @@ public class MainSettings extends PreferenceFragmentCompat
              Preference preference = getPreferenceScreen().getPreference(index);
              mAllPreferences.put(preference.getKey(), preference);
          }
@@ -381,7 +384,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      }
  
      private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -185,13 +150,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -211,13 +176,6 @@ public class MainSettings extends PreferenceFragmentCompat
      }
  
      private void updatePreferences() {
@@ -395,7 +398,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
          updateSearchEnginePreference();
  
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
-@@ -208,10 +166,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -234,10 +192,6 @@ public class MainSettings extends PreferenceFragmentCompat
          } else {
              removePreferenceIfPresent(PREF_DEVELOPER);
          }
@@ -406,7 +409,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      }
  
      private Preference addPreferenceIfAbsent(String key) {
-@@ -225,13 +179,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -251,13 +205,6 @@ public class MainSettings extends PreferenceFragmentCompat
          if (preference != null) getPreferenceScreen().removePreference(preference);
      }
  
@@ -420,7 +423,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      private void updateSearchEnginePreference() {
          if (!TemplateUrlServiceFactory.get().isLoaded()) {
              ChromeBasePreference searchEnginePref =
-@@ -263,28 +210,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -289,28 +236,6 @@ public class MainSettings extends PreferenceFragmentCompat
          pref.setSummary(isOn ? R.string.text_on : R.string.text_off);
      }
  
@@ -449,7 +452,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      // TemplateUrlService.LoadListener implementation.
      @Override
      public void onTemplateUrlServiceLoaded() {
-@@ -292,11 +217,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -318,11 +243,6 @@ public class MainSettings extends PreferenceFragmentCompat
          updateSearchEnginePreference();
      }
  
@@ -461,7 +464,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      @VisibleForTesting
      public ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
          return mManagedPreferenceDelegate;
-@@ -306,9 +226,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -332,9 +252,6 @@ public class MainSettings extends PreferenceFragmentCompat
          return new ChromeManagedPreferenceDelegate() {
              @Override
              public boolean isPreferenceControlledByPolicy(Preference preference) {
@@ -471,7 +474,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                  }
-@@ -317,11 +234,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -343,11 +260,6 @@ public class MainSettings extends PreferenceFragmentCompat
  
              @Override
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
@@ -486,10 +489,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
-@@ -22,9 +22,7 @@ import org.chromium.base.metrics.RecordHistogram;
- import org.chromium.base.metrics.RecordUserAction;
+@@ -23,9 +23,7 @@ import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.task.PostTask;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
+ import org.chromium.chrome.browser.sync.AndroidSyncSettings;
 -import org.chromium.components.signin.AccountTrackerService;
  import org.chromium.components.signin.AccountUtils;
 -import org.chromium.components.signin.ChromeSigninController;
@@ -645,6 +648,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private void disableSyncAndWipeData(
              boolean shouldWipeUserData, final Runnable wipeDataCallback) {
          mAndroidSyncSettings.updateAccount(null);
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
+@@ -215,13 +215,7 @@ public class AndroidSyncSettings {
+ 
+     private void setChromeSyncEnabled(boolean value) {
+         synchronized (mLock) {
+-            updateSyncability(null);
+-            if (value == mChromeSyncEnabled || mAccount == null) return;
+-            mChromeSyncEnabled = value;
+-
+-            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
+-            mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mContractAuthority, value);
+-            StrictMode.setThreadPolicy(oldPolicy);
++            mChromeSyncEnabled = false;
+         }
+         notifyObservers();
+     }
+@@ -302,19 +296,9 @@ public class AndroidSyncSettings {
+             boolean oldChromeSyncEnabled = mChromeSyncEnabled;
+             boolean oldMasterSyncEnabled = mMasterSyncEnabled;
+ 
+-            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
+-            if (mAccount != null) {
+-                mIsSyncable =
+-                        mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority)
+-                        == 1;
+-                mChromeSyncEnabled = mSyncContentResolverDelegate.getSyncAutomatically(
+-                        mAccount, mContractAuthority);
+-            } else {
+-                mIsSyncable = false;
+-                mChromeSyncEnabled = false;
+-            }
+-            mMasterSyncEnabled = mSyncContentResolverDelegate.getMasterSyncAutomatically();
+-            StrictMode.setThreadPolicy(oldPolicy);
++            mIsSyncable = false;
++            mChromeSyncEnabled = false;
++            mMasterSyncEnabled = false;
+ 
+             return oldChromeSyncEnabled != mChromeSyncEnabled
+                     || oldMasterSyncEnabled != mMasterSyncEnabled;
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
@@ -678,7 +722,7 @@ diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/br
 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
-@@ -263,18 +263,9 @@ CHAR-LIMIT guidelines:
+@@ -261,18 +261,9 @@ CHAR-LIMIT guidelines:
        </message>
  
        <!-- Sign-in, sync and personalization preferences -->
@@ -697,7 +741,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_SIGNIN_PREF_SUMMARY" desc="Summary for the entry in Settings to sign in to Chrome, explaining benefits of signing in.">
          Sync and personalize across devices
        </message>
-@@ -333,9 +324,6 @@ CHAR-LIMIT guidelines:
+@@ -331,9 +322,6 @@ CHAR-LIMIT guidelines:
        <message name="IDS_URL_KEYED_ANONYMIZED_DATA_SUMMARY" desc="Summary for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
          Sends URLs of pages you visit to Google
        </message>
@@ -707,7 +751,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_CANCEL_SYNC_DIALOG_TITLE" desc="The title of a dialog that is shown when users tries closing 'Sync and Google services' preferences without confirming the changes.">
          Cancel sync?
        </message>
-@@ -871,9 +859,6 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -964,9 +952,6 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_DATA_REDUCTION_DESCRIPTION_LITE_MODE" desc="Text describing how the Lite mode feature works. Seen only before the user has enabled the feature.">
          When Lite mode is on, Chrome uses Google servers to make pages load faster. Lite mode rewrites very slow pages to load only essential content. Lite mode does not apply to Incognito tabs.
        </message>
@@ -720,7 +764,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 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
-@@ -170,16 +170,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -171,16 +171,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
  
      @Override
      public boolean hasFeatures(Account account, String[] features) {
@@ -737,17 +781,17 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
          return false;
      }
  
-@@ -219,32 +209,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -220,32 +210,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
      public void updateCredentials(
              Account account, Activity activity, final Callback<Boolean> callback) {
          ThreadUtils.assertOnUiThread();
 -        if (!hasManageAccountsPermission()) {
 -            if (callback != null) {
--                ThreadUtils.postOnUiThread(() -> callback.onResult(false));
+-                ThreadUtils.postOnUiThread(callback.bind(false));
 -            }
 -            return;
 +        if (callback != null) {
-+            ThreadUtils.postOnUiThread(() -> callback.onResult(false));
++            ThreadUtils.postOnUiThread(callback.bind(false));
          }
 -
 -        AccountManagerCallback<Bundle> realCallback = future -> {
@@ -773,47 +817,6 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
      }
  
      @Nullable
-diff --git a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
---- a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
-+++ b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
-@@ -213,13 +213,7 @@ public class AndroidSyncSettings {
- 
-     private void setChromeSyncEnabled(boolean value) {
-         synchronized (mLock) {
--            updateSyncability(null);
--            if (value == mChromeSyncEnabled || mAccount == null) return;
--            mChromeSyncEnabled = value;
--
--            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
--            mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mContractAuthority, value);
--            StrictMode.setThreadPolicy(oldPolicy);
-+            mChromeSyncEnabled = false;
-         }
-         notifyObservers();
-     }
-@@ -300,19 +294,9 @@ public class AndroidSyncSettings {
-             boolean oldChromeSyncEnabled = mChromeSyncEnabled;
-             boolean oldMasterSyncEnabled = mMasterSyncEnabled;
- 
--            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
--            if (mAccount != null) {
--                mIsSyncable =
--                        mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority)
--                        == 1;
--                mChromeSyncEnabled = mSyncContentResolverDelegate.getSyncAutomatically(
--                        mAccount, mContractAuthority);
--            } else {
--                mIsSyncable = false;
--                mChromeSyncEnabled = false;
--            }
--            mMasterSyncEnabled = mSyncContentResolverDelegate.getMasterSyncAutomatically();
--            StrictMode.setThreadPolicy(oldPolicy);
-+            mIsSyncable = false;
-+            mChromeSyncEnabled = false;
-+            mMasterSyncEnabled = false;
- 
-             return oldChromeSyncEnabled != mChromeSyncEnabled
-                     || oldMasterSyncEnabled != mMasterSyncEnabled;
 diff --git a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
 --- a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
 +++ b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java

+ 1 - 1
build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch

@@ -9,7 +9,7 @@ Subject: Replace DoH probe domain with RIPE domain
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -841,7 +841,7 @@ class DnsTCPAttempt : public DnsAttempt {
+@@ -838,7 +838,7 @@ class DnsTCPAttempt : public DnsAttempt {
  
  // ----------------------------------------------------------------------------
  

+ 1 - 1
build/patches/Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch

@@ -13,7 +13,7 @@ See discussion at https://github.com/bromite/bromite/issues/445
 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
-@@ -3531,6 +3531,22 @@
+@@ -3537,6 +3537,22 @@
          "dont_delete_source_texture_for_egl_image"
        ]
      },

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

@@ -7,36 +7,46 @@ This reverts commit ae458edcc8422d0815d0e82261e71fe10d7d6fc2.
 
 Disable search-ready omnibox by default
 ---
- .../browser/omnibox/suggestions/AutocompleteMediator.java   | 6 ++++++
- chrome/browser/about_flags.cc                               | 3 +++
- chrome/browser/flag-metadata.json                           | 5 +++++
- chrome/browser/flag_descriptions.cc                         | 5 +++++
- chrome/browser/flag_descriptions.h                          | 3 +++
- chrome/browser/flags/android/chrome_feature_list.cc         | 4 ++++
- chrome/browser/flags/android/chrome_feature_list.h          | 1 +
- .../chromium/chrome/browser/flags/ChromeFeatureList.java    | 1 +
- 8 files changed, 28 insertions(+)
+ .../DropdownItemViewInfoListBuilder.java           | 14 ++++++++------
+ chrome/browser/about_flags.cc                      |  3 +++
+ chrome/browser/flag-metadata.json                  |  5 +++++
+ chrome/browser/flag_descriptions.cc                |  5 +++++
+ chrome/browser/flag_descriptions.h                 |  3 +++
+ .../browser/flags/android/chrome_feature_list.cc   |  4 ++++
+ chrome/browser/flags/android/chrome_feature_list.h |  1 +
+ .../chrome/browser/flags/ChromeFeatureList.java    |  1 +
+ 8 files changed, 30 insertions(+), 6 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
-@@ -497,6 +497,12 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
-     void onNativeInitialized() {
-         mNativeInitialized = true;
+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
+@@ -83,14 +83,16 @@ class DropdownItemViewInfoListBuilder {
  
-+        // Destroy coordinator if the feature is disabled.
-+        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SEARCH_READY_OMNIBOX)) {
-+            mEditUrlProcessor.destroy();
-+            mEditUrlProcessor = null;
-+        }
+         final Supplier<ImageFetcher> imageFetcherSupplier = () -> mImageFetcher;
+         final Supplier<LargeIconBridge> iconBridgeSupplier = () -> mIconBridge;
+-        final Supplier<Tab> tabSupplier =
+-                () -> mActivityTabProvider == null ? null : mActivityTabProvider.get();
+-        final Supplier<ShareDelegate> shareSupplier =
+-                () -> mShareDelegateSupplier == null ? null : mShareDelegateSupplier.get();
+-
+         mHeaderProcessor = new HeaderProcessor(context, host, delegate);
+-        registerSuggestionProcessor(new EditUrlSuggestionProcessor(
 +
-         mEnableAdaptiveSuggestionsCount =
-                 ChromeFeatureList.isEnabled(ChromeFeatureList.OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT);
-         mEnableDeferredKeyboardPopup =
++        if (ChromeFeatureList.isEnabled(ChromeFeatureList.SEARCH_READY_OMNIBOX)) {
++          final Supplier<Tab> tabSupplier =
++                  () -> mActivityTabProvider == null ? null : mActivityTabProvider.get();
++          final Supplier<ShareDelegate> shareSupplier =
++                  () -> mShareDelegateSupplier == null ? null : mShareDelegateSupplier.get();
++          registerSuggestionProcessor(new EditUrlSuggestionProcessor(
+                 context, host, delegate, iconBridgeSupplier, tabSupplier, shareSupplier));
++        }
+         registerSuggestionProcessor(
+                 new AnswerSuggestionProcessor(context, host, textProvider, imageFetcherSupplier));
+         registerSuggestionProcessor(
 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
-@@ -2529,6 +2529,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2539,6 +2539,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -49,9 +59,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1883,6 +1883,11 @@
-     // settings.
-     "expiry_milestone" : 79
+@@ -1884,6 +1884,11 @@
+     "owners": [ "peter", "finnur" ],
+     "expiry_milestone": 84
    },
 +  {
 +    "name": "enable-search-ready-omnibox",
@@ -59,12 +69,12 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +    "expiry_milestone": -1
 +  },
    {
-     "name": "enable-persistent-downloads",
-     "owners": [ "ewannpv", "gambard" ],
+     "name": "enable-navigation-predictor",
+     "owners": [ "tbansal", "ryansturm", "instant-nav" ],
 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
-@@ -2758,6 +2758,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
+@@ -2890,6 +2890,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
      "process to check the Safe Browsing reputation of URLs without calling "
      "into GmsCore for every URL.";
  
@@ -79,7 +89,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
-@@ -1607,6 +1607,9 @@ extern const char kReportFeedUserActionsDescription[];
+@@ -1673,6 +1673,9 @@ extern const char kReportFeedUserActionsDescription[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  
@@ -93,16 +103,16 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
 @@ -183,6 +183,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
+     &kReachedCodeProfiler,
+     &kReaderModeInCCT,
+     &kReengagementNotification,
++    &kSearchReadyOmniboxFeature,
      &kRelatedSearches,
      &kRevampedContextMenu,
-     &kScrollToExpandPaymentHandler,
-+    &kSearchReadyOmniboxFeature,
      &kSearchEnginePromoExistingDevice,
-     &kSearchEnginePromoNewDevice,
-     &kServiceManagerForBackgroundPrefetch,
-@@ -555,6 +556,9 @@ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
- const base::Feature kScrollToExpandPaymentHandler{
-     "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -552,6 +553,9 @@ const base::Feature kRelatedSearches{"RelatedSearches",
+ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
  
 +const base::Feature kSearchReadyOmniboxFeature{
 +    "SearchReadyOmnibox", base::FEATURE_DISABLED_BY_DEFAULT};
@@ -113,8 +123,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 kRevampedContextMenu;
- extern const base::Feature kScrollToExpandPaymentHandler;
+@@ -104,6 +104,7 @@ extern const base::Feature kRelatedSearches;
+ extern const base::Feature kRevampedContextMenu;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
 +extern const base::Feature kSearchReadyOmniboxFeature;
@@ -124,7 +134,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
-@@ -316,6 +316,7 @@ public abstract class ChromeFeatureList {
+@@ -324,6 +324,7 @@ public abstract class ChromeFeatureList {
      public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT =
              "OmniboxAdaptiveSuggestionsCount";
      public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch";

+ 4 - 4
build/patches/Restore-classic-new-tab-page.patch

@@ -9,7 +9,7 @@ Subject: Restore classic new tab page
 diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
 --- a/chrome/browser/search/search.cc
 +++ b/chrome/browser/search/search.cc
-@@ -90,16 +90,6 @@ enum NewTabURLState {
+@@ -91,16 +91,6 @@ enum NewTabURLState {
    NEW_TAB_URL_MAX
  };
  
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
  bool IsMatchingServiceWorker(const GURL& my_url, const GURL& document_url) {
    // The origin should match.
    if (!MatchesOrigin(my_url, document_url))
-@@ -139,31 +129,6 @@ GURL RemoveQueryParam(const GURL& url) {
+@@ -140,31 +130,6 @@ GURL RemoveQueryParam(const GURL& url) {
    return url.ReplaceComponents(replacements);
  }
  
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
  // Used to look up the URL to use for the New Tab page. Also tracks how we
  // arrived at that URL so it can be logged with UMA.
  struct NewTabURLDetails {
-@@ -184,10 +149,9 @@ struct NewTabURLDetails {
+@@ -185,10 +150,9 @@ struct NewTabURLDetails {
                               : chrome::kChromeSearchLocalNtpUrl);
  #endif
  
@@ -71,7 +71,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
          GetDefaultSearchProviderTemplateURL(profile);
      if (!profile || !template_url)
        return NewTabURLDetails(local_url, NEW_TAB_URL_BAD);
-@@ -203,7 +167,7 @@ struct NewTabURLDetails {
+@@ -204,7 +168,7 @@ struct NewTabURLDetails {
      if (!IsURLAllowedForSupervisedUser(search_provider_url, profile))
        return NewTabURLDetails(local_url, NEW_TAB_URL_BLOCKED);
  

+ 0 - 34
build/patches/Restore-duet-flags.patch

@@ -1,34 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Tue, 4 Aug 2020 07:58:21 +0200
-Subject: Restore duet flags
-
----
- chrome/browser/flag-metadata.json | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
---- a/chrome/browser/flag-metadata.json
-+++ b/chrome/browser/flag-metadata.json
-@@ -1273,7 +1273,7 @@
-   {
-     "name": "enable-chrome-duet",
-     "owners": [ "mdjones" ],
--    "expiry_milestone": 82
-+    "expiry_milestone": -1
-   },
-   {
-     "name": "enable-chrome-duet-labels",
-@@ -1455,8 +1455,8 @@
-   },
-   {
-     "name": "enable-duet-tabstrip-integration",
--    "owners": [ "memex-team@google.com" ],
--    "expiry_milestone": 84
-+    "owners": [ "memex-team@9oo91e.qjz9zk" ],
-+    "expiry_milestone": -1
-   },
-   {
-     "name": "enable-edu-coexistence",
--- 
-2.17.1
-

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

@@ -9,7 +9,7 @@ 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
-@@ -1661,7 +1661,7 @@
+@@ -1746,7 +1746,7 @@
    {
      "name": "enable-horizontal-tab-switcher",
      "owners": [ "memex-team@google.com" ],

+ 2 - 2
build/patches/Revert-Remove-flags-to-enable-disable-AImageReader.patch

@@ -94,7 +94,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
-@@ -525,6 +525,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -542,6 +542,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  const base::Feature kMediaDrmPreprovisioningAtStartup{
      "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -108,7 +108,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
-@@ -182,6 +182,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
+@@ -186,6 +186,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;

+ 121 - 205
build/patches/Revert-Remove-pre-unified-consent-code.patch

@@ -9,10 +9,9 @@ Disable unified consent on Android
 Unified consent miscellanous backport fixes
 ---
  .../java/res/xml/privacy_preferences.xml      | 25 +++++
- .../privacy/settings/PrivacySettings.java     | 97 ++++++++++++++++---
+ .../privacy/settings/PrivacySettings.java     | 95 +++++++++++++++++--
  .../sync/SyncNotificationController.java      |  6 +-
  .../chrome/browser/sync/SyncTestRule.java     | 10 +-
- .../chromium/chrome/browser/sync/UkmTest.java | 50 +++++++++-
  .../strings/android_chrome_strings.grd        | 15 +++
  .../android_chrome_strings_am.xtb             | 19 +++-
  .../android_chrome_strings_ar.xtb             | 19 +++-
@@ -67,7 +66,7 @@ Unified consent miscellanous backport fixes
  .../android_chrome_strings_zh-CN.xtb          | 19 +++-
  .../android_chrome_strings_zh-TW.xtb          | 19 +++-
  .../unified_consent_service_factory.cc        |  5 +-
- 59 files changed, 1121 insertions(+), 75 deletions(-)
+ 58 files changed, 1073 insertions(+), 71 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
@@ -107,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
      <Preference
          android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
          android:key="do_not_track"
-@@ -28,6 +49,10 @@
+@@ -32,6 +53,10 @@
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
@@ -121,7 +120,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
-@@ -16,10 +16,12 @@ import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
+@@ -16,11 +16,13 @@ import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
  
  import org.chromium.base.BuildInfo;
  import org.chromium.chrome.R;
@@ -129,12 +128,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.chrome.browser.help.HelpAndFeedback;
  import org.chromium.chrome.browser.preferences.Pref;
  import org.chromium.chrome.browser.preferences.PrefServiceBridge;
+ import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager.DohEntry;
  import org.chromium.chrome.browser.profiles.Profile;
 +import org.chromium.chrome.browser.safe_browsing.SafeBrowsingBridge;
  import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  import org.chromium.chrome.browser.settings.SettingsLauncher;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
-@@ -36,18 +38,24 @@ import org.chromium.ui.text.SpanApplier;
+@@ -40,11 +42,19 @@ import java.util.List;
   */
  public class PrivacySettings
          extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
@@ -145,26 +145,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +    private static final String PREF_SAFE_BROWSING = "safe_browsing";
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
+     private static final String PREF_SECURE_DNS = "secure_dns";
 -    private static final String PREF_USAGE_STATS = "usage_stats_reporting";
      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_SYNC_AND_SERVICES_LINK_DIVIDER =
 +            "sync_and_services_link_divider";
-     private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
 +    private static final String PREF_USAGE_STATS = "usage_stats_reporting";
+     private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
- 
-     @Override
-     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
--        PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
--        privacyPrefManager.migrateNetworkPredictionPreferences();
-         SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
-         getActivity().setTitle(R.string.prefs_privacy);
-         setHasOptionsMenu(true);
-@@ -65,15 +73,30 @@ public class PrivacySettings
-         networkPredictionPref.setOnPreferenceChangeListener(this);
-         networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+@@ -73,15 +83,30 @@ public class PrivacySettings
+         Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
+         secureDnsPref.setVisible(privacyPrefManager.isDnsOverHttpsUiEnabled());
  
 -        Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
 -        NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
@@ -202,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  
          updateSummaries();
      }
-@@ -86,6 +109,15 @@ public class PrivacySettings
+@@ -94,6 +119,15 @@ public class PrivacySettings
                      Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
@@ -218,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -103,6 +135,35 @@ public class PrivacySettings
+@@ -111,6 +145,35 @@ public class PrivacySettings
      public void updateSummaries() {
          PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
  
@@ -254,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          CheckBoxPreference canMakePaymentPref =
                  (CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
          if (canMakePaymentPref != null) {
-@@ -140,6 +201,18 @@ public class PrivacySettings
+@@ -173,6 +236,18 @@ public class PrivacySettings
      private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
          return preference -> {
              String key = preference.getKey();
@@ -302,7 +295,7 @@ diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncT
  import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
  import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
  import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
-@@ -428,9 +429,12 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
+@@ -430,9 +431,12 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
                              Assert.fail("Sign-in was aborted");
                          }
                      });
@@ -318,87 +311,10 @@ diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncT
          });
          if (setFirstSetupComplete) {
              SyncTestUtil.waitForSyncActive();
-diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTest.java
---- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTest.java
-+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTest.java
-@@ -15,10 +15,13 @@ import org.junit.Test;
- import org.junit.runner.RunWith;
- 
- import org.chromium.base.test.util.CommandLineFlags;
-+import org.chromium.chrome.browser.ChromeFeatureList;
- import org.chromium.chrome.browser.flags.ChromeSwitches;
- import org.chromium.chrome.browser.metrics.UmaSessionStats;
- import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
-+import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
- import org.chromium.components.sync.ModelType;
- import org.chromium.content_public.browser.test.util.JavaScriptUtils;
- import org.chromium.content_public.browser.test.util.TestThreadUtils;
-@@ -132,6 +135,33 @@ public class UkmTest {
-         Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
-     }
- 
-+    @Test
-+    @SmallTest
-+    @DisableFeatures(ChromeFeatureList.UNIFIED_CONSENT)
-+    public void secondaryPassphraseCheck() throws Exception {
-+        // Keep in sync with UkmBrowserTest.SecondaryPassphraseCheck in
-+        // chrome/browser/metrics/ukm_browsertest.cc.
-+        // Make sure that UKM is disabled when an secondary passphrase is set.
-+
-+        TestThreadUtils.runOnUiThreadBlocking(
-+                () -> UmaSessionStats.updateMetricsAndCrashReportingForTesting(true));
-+
-+        // Enable a Syncing account.
-+        Account account = mSyncTestRule.setUpTestAccountAndSignIn();
-+        Tab normalTab = mSyncTestRule.getActivity().getActivityTab();
-+        Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
-+
-+        String clientId = getUkmClientId(normalTab);
-+
-+        // Add a passphrase. This should disable UKM.
-+        SyncTestUtil.encryptWithPassphrase("passphrase");
-+
-+        Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
-+
-+        // Client ID should have been reset.
-+        Assert.assertNotEquals("Client id:", clientId, getUkmClientId(normalTab));
-+    }
-+
-     @Test
-     @SmallTest
-     public void singleSyncSignoutCheck() throws Exception {
-@@ -178,7 +208,23 @@ public class UkmTest {
-         // Disable Sync for history.
-         mSyncTestRule.disableDataType(ModelType.TYPED_URLS);
- 
--        // Disable history sync does not disable UKM
--        Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
-+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
-+            // Disable history sync does not disable UKM when unified consent is
-+            // enabled.
-+            Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
-+        } else {
-+            Assert.assertFalse("UKM Enabled:", isUkmEnabled(normalTab));
-+
-+            // Client ID should have been reset.
-+            Assert.assertNotEquals("Client id:", originalClientId, getUkmClientId(normalTab));
-+
-+            // Re-enable Sync for history.
-+            mSyncTestRule.enableDataType(ModelType.TYPED_URLS);
-+
-+            Assert.assertTrue("UKM Enabled:", isUkmEnabled(normalTab));
-+
-+            // Client ID should still be different.
-+            Assert.assertNotEquals("Client id:", originalClientId, getUkmClientId(normalTab));
-+        }
-     }
- }
 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
-@@ -671,6 +671,18 @@ CHAR-LIMIT guidelines:
+@@ -681,6 +681,18 @@ CHAR-LIMIT guidelines:
        <message name="IDS_PREFS_PRIVACY" desc="Title for the Privacy preferences. [CHAR-LIMIT=32]">
          Privacy
        </message>
@@ -417,7 +333,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_TITLE" desc="Title for checkbox that controls reporting data to detect bad apps/sites. Please ensure ‘Safe Browsing’ in this message matches the ‘Safe Browsing’ settings title.">
          Help improve Chrome security
        </message>
-@@ -1098,6 +1110,9 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1217,6 +1229,9 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_ACCOUNT_MANAGEMENT_TITLE" desc="Header title for the account management screen. [CHAR-LIMIT=32]">
          Signed in to Google as
        </message>
@@ -430,10 +346,10 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ከመስመር ውጪ</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">ሁሉንም ትሮች ይዝጉ</translation>
  <translation id="987264212798334818">አጠቃላይ</translation>
+ <translation id="996149300115483134">የምግብ ካርድ ምናሌ ተዘግቷል</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">ትሮችዎን ከሌሎች መሣሪያዎችዎ ለማግኘት ወደ Chrome ይግቡ።</translation>
@@ -457,10 +373,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">بلا اتصال</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">إغلاق جميع علامات التبويب</translation>
  <translation id="987264212798334818">عام</translation>
+ <translation id="996149300115483134">قائمة بطاقات الخلاصة مغلقة</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">‏للحصول على علامات التبويب من أجهزتك الأخرى، سجّل الدخول إلى Chrome.</translation>
@@ -484,10 +400,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">Офлайн</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">Затваряне на всички раздели</translation>
  <translation id="987264212798334818">Общи</translation>
+ <translation id="996149300115483134">Менюто на картата за емисията е затворено</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Влезте в Chrome, за да получите разделите си от другите си устройства.</translation>
@@ -511,10 +427,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
-@@ -1002,4 +1002,21 @@
- <translation id="981121421437150478">অফলাইন</translation>
+@@ -1047,4 +1047,21 @@
  <translation id="983192555821071799">সমস্ত ট্যাবগুলি বন্ধ করুন</translation>
  <translation id="987264212798334818">সাধারণ</translation>
+ <translation id="996149300115483134">ফিড কার্ডের মেনু বন্ধ করা আছে</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">আপনার অন্য ডিভাইসগুলি থেকে আপনার ট্যাবগুলি পেতে, Chrome-এ সাইন-ইন করুন।</translation>
@@ -538,10 +454,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
-@@ -1000,4 +1000,21 @@ Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud
- <translation id="981121421437150478">Sense connexió</translation>
+@@ -1045,4 +1045,21 @@ Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud
  <translation id="983192555821071799">Tanca totes les pestanyes</translation>
  <translation id="987264212798334818">General</translation>
+ <translation id="996149300115483134">El menú de la targeta del tauler està tancat</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Inicia la sessió a Chrome per accedir a les pestanyes dels altres dispositius que tinguis.</translation>
@@ -565,10 +481,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
-@@ -1000,4 +1000,21 @@ Některé weby mohou například na tento požadavek reagovat tak, že vám zobr
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Některé weby mohou například na tento požadavek reagovat tak, že vám zobr
  <translation id="983192555821071799">Zavřít všechny karty</translation>
  <translation id="987264212798334818">Všeobecné</translation>
+ <translation id="996149300115483134">Nabídka karty informačních kanálů je zavřená</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Chcete-li získat přístup ke kartám ze svých ostatních zařízení, přihlaste se do Chromu.</translation>
@@ -592,10 +508,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
-@@ -1000,4 +1000,21 @@ Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer,
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer,
  <translation id="983192555821071799">Luk alle faner</translation>
  <translation id="987264212798334818">Generelt</translation>
+ <translation id="996149300115483134">Feedkortmenuen er lukket</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Log ind på Chrome for at få adgang til dine faner på dine andre enheder.</translation>
@@ -619,10 +535,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
-@@ -1000,4 +1000,21 @@ Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht dara
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht dara
  <translation id="983192555821071799">Alle Tabs schließen</translation>
  <translation id="987264212798334818">Allgemein</translation>
+ <translation id="996149300115483134">Feedkartenmenü ist geschlossen</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Melden Sie sich in Chrome an, um Tabs von Ihren anderen Geräten abzurufen.</translation>
@@ -646,10 +562,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">Εκτός σύνδεσης</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">Κλείσιμο όλων των καρτελών</translation>
  <translation id="987264212798334818">Γενικά</translation>
+ <translation id="996149300115483134">Το μενού της κάρτας ροής είναι κλειστό</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Για να εμφανίζονται οι καρτέλες από τις άλλες συσκευές σας, συνδεθείτε στο Chrome.</translation>
@@ -673,10 +589,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
-@@ -1000,4 +1000,21 @@ For example, some websites may respond to this request by showing you ads that a
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ For example, some websites may respond to this request by showing you ads that a
  <translation id="983192555821071799">Close all tabs</translation>
  <translation id="987264212798334818">General</translation>
+ <translation id="996149300115483134">Feed card menu is closed</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">To get your tabs from your other devices, sign in to Chrome.</translation>
@@ -700,10 +616,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
-@@ -1000,4 +1000,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncio
- <translation id="981121421437150478">Sin conexión</translation>
+@@ -1045,4 +1045,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncio
  <translation id="983192555821071799">Cerrar todas las pestañas</translation>
  <translation id="987264212798334818">General</translation>
+ <translation id="996149300115483134">Se cerró el menú de la tarjeta de feed</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Accede a Chrome para obtener las pestañas de tus otros dispositivos.</translation>
@@ -727,10 +643,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
-@@ -1000,4 +1000,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anu
- <translation id="981121421437150478">Sin conexión</translation>
+@@ -1045,4 +1045,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anu
  <translation id="983192555821071799">Cerrar todas las pestañas</translation>
  <translation id="987264212798334818">General</translation>
+ <translation id="996149300115483134">El menú de la tarjeta del feed está cerrado</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Inicia sesión en Chrome para ver las pestañas de tus otros dispositivos.</translation>
@@ -754,10 +670,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
-@@ -1000,4 +1000,21 @@ Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teil
- <translation id="981121421437150478">Võrguühenduseta</translation>
+@@ -1045,4 +1045,21 @@ Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teil
  <translation id="983192555821071799">Sule kõik vahelehed</translation>
  <translation id="987264212798334818">Üldine</translation>
+ <translation id="996149300115483134">Voo kaardimenüü on suletud</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Vahelehtede hankimiseks oma teistest seadmetest logige Chrome'i sisse.</translation>
@@ -781,10 +697,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">آفلاین</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">بستن همه برگه‌ها</translation>
  <translation id="987264212798334818">موارد کلی</translation>
+ <translation id="996149300115483134">منوی کارت فید بسته شد</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">‏برای دسترسی به برگه‌هایتان در دستگاه‌های دیگر، به سیستم Chrome وارد شوید.</translation>
@@ -808,10 +724,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
-@@ -1000,4 +1000,21 @@ Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämäl
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämäl
  <translation id="983192555821071799">Sulje kaikki välilehdet</translation>
  <translation id="987264212798334818">Yleistä</translation>
+ <translation id="996149300115483134">Fiidikorttien valikko on suljettu</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Käytä välilehtiä muilta laitteiltasi kirjautumalla Chromeen.</translation>
@@ -835,10 +751,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
-@@ -1000,4 +1000,21 @@ Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan
  <translation id="983192555821071799">Isara ang lahat ng tab</translation>
  <translation id="987264212798334818">Pangkalahatan</translation>
+ <translation id="996149300115483134">Nakasara ang menu ng feed card</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Upang makuha ang iyong mga tab mula sa iba mo pang mga device, mag-sign in sa Chrome.</translation>
@@ -862,10 +778,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
-@@ -1000,4 +1000,21 @@ Par exemple, certains sites Web peuvent répondre à cette demande en diffusant
- <translation id="981121421437150478">Hors connexion</translation>
+@@ -1045,4 +1045,21 @@ Par exemple, certains sites Web peuvent répondre à cette demande en diffusant
  <translation id="983192555821071799">Fermer tous les onglets</translation>
  <translation id="987264212798334818">Général</translation>
+ <translation id="996149300115483134">Le menu de la carte de flux est fermé</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Connectez-vous à Chrome pour accéder à vos onglets sur vos autres appareils.</translation>
@@ -889,10 +805,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ઑફલાઇન</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">બધા ટેબ્સ બંધ કરો</translation>
  <translation id="987264212798334818">સામાન્ય</translation>
+ <translation id="996149300115483134">ફીડ કાર્ડ મેનૂ બંધ છે</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">તમારા અન્ય ઉપકરણો પરથી તમારા ટૅબ્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
@@ -916,10 +832,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ऑफ़लाइन</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">सभी टैब बंद करें</translation>
  <translation id="987264212798334818">सामान्य</translation>
+ <translation id="996149300115483134">फ़ीड कार्ड मेन्यू बंद हो गया है</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">अपने दूसरे डिवाइस से अपने टैब पाने के लिए, Chrome में साइन इन करें.</translation>
@@ -943,10 +859,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
-@@ -1000,4 +1000,21 @@ Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikaž
- <translation id="981121421437150478">Izvanmrežno</translation>
+@@ -1045,4 +1045,21 @@ Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikaž
  <translation id="983192555821071799">Zatvori sve kartice</translation>
  <translation id="987264212798334818">Općenito</translation>
+ <translation id="996149300115483134">Izbornik kartice feeda je zatvoren</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Da bi se prikazale kartice s vaših ostalih uređaja, prijavite se na Chrome.</translation>
@@ -970,10 +886,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
-@@ -1000,4 +1000,21 @@ Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jel
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jel
  <translation id="983192555821071799">Az összes lap bezárása</translation>
  <translation id="987264212798334818">Általános</translation>
+ <translation id="996149300115483134">A hírcsatornakártya menüje be van csukva</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Ha a többi eszközéről is szeretné elérni a lapjait, jelentkezzen be a Chrome-ba.</translation>
@@ -997,10 +913,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
-@@ -1000,4 +1000,21 @@ Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangka
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangka
  <translation id="983192555821071799">Tutup semua tab</translation>
  <translation id="987264212798334818">Umum</translation>
+ <translation id="996149300115483134">Menu kartu feed ditutup</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Untuk mengakses tab Anda dari perangkat lainnya, login ke Chrome.</translation>
@@ -1024,10 +940,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-@@ -1000,4 +1000,21 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
  <translation id="983192555821071799">Chiudi tutte le schede</translation>
  <translation id="987264212798334818">Generali</translation>
+ <translation id="996149300115483134">Menu scheda feed chiuso</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Accedi a Chrome per trovare le tue schede degli altri dispositivi.</translation>
@@ -1051,10 +967,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">לא מקוון</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">סגירת כל הכרטיסיות</translation>
  <translation id="987264212798334818">כללי</translation>
+ <translation id="996149300115483134">תפריט כרטיס הפיד סגור</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">‏כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, יש להיכנס ל-Chrome.</translation>
@@ -1078,10 +994,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">オフライン</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">すべてのタブを閉じる</translation>
  <translation id="987264212798334818">全般</translation>
+ <translation id="996149300115483134">フィードカード メニューは閉じています</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">他のデバイスと同じタブを使用するには、Chrome にログインします。</translation>
@@ -1105,10 +1021,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ಆಫ್‌ಲೈನ್</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">ಎಲ್ಲ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
  <translation id="987264212798334818">ಸಾಮಾನ್ಯ</translation>
+ <translation id="996149300115483134">ಫೀಡ್ ಕಾರ್ಡ್ ಮೆನು ಅನ್ನು ಮುಚ್ಚಲಾಗಿದೆ</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
@@ -1132,10 +1048,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">오프라인</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">탭 모두 닫기</translation>
  <translation id="987264212798334818">일반</translation>
+ <translation id="996149300115483134">피드 카드 메뉴가 닫힘</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">다른 기기에서 탭을 가져오려면 Chrome에 로그인하세요.</translation>
@@ -1159,10 +1075,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
-@@ -1000,4 +1000,21 @@ Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos j
- <translation id="981121421437150478">Neprisijungus</translation>
+@@ -1045,4 +1045,21 @@ Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos j
  <translation id="983192555821071799">Uždar. visų skirtukų lapus</translation>
  <translation id="987264212798334818">Bendra</translation>
+ <translation id="996149300115483134">Sklaidos kanalo kortelės meniu uždarytas</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Prisijunkite prie „Chrome“, kad pasiektumėte skirtukus iš kitų įrenginių.</translation>
@@ -1186,10 +1102,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
-@@ -1000,4 +1000,21 @@ Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums rek
- <translation id="981121421437150478">Bezsaistē</translation>
+@@ -1045,4 +1045,21 @@ Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums rek
  <translation id="983192555821071799">Aizvērt visas cilnes</translation>
  <translation id="987264212798334818">Vispārīgi</translation>
+ <translation id="996149300115483134">Plūsmas kartītes izvēlne ir aizvērta</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Pierakstieties pārlūkā Chrome, lai būtu pieejamas cilnes no citām jūsu ierīcēm.</translation>
@@ -1213,10 +1129,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ഓഫ്‌ലൈൻ</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">ടാബെല്ലാം അടയ്‌ക്കൂ</translation>
  <translation id="987264212798334818">പൊതുവായ</translation>
+ <translation id="996149300115483134">ഫീഡ് കാർഡ് മെനു അടച്ചു</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
@@ -1240,10 +1156,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ऑफलाइन</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">सर्व टॅब बंद करा</translation>
  <translation id="987264212798334818">सामान्य</translation>
+ <translation id="996149300115483134">फीड कार्ड मेनू बंद केला गेला आहे</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">आपल्या इतर डिव्हाइसेसवरील तुमचे टॅब प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
@@ -1267,10 +1183,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
-@@ -1000,4 +1000,21 @@ Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan i
- <translation id="981121421437150478">Luar talian</translation>
+@@ -1045,4 +1045,21 @@ Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan i
  <translation id="983192555821071799">Tutup semua tab</translation>
  <translation id="987264212798334818">Umum</translation>
+ <translation id="996149300115483134">Menu kad suapan ditutup</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Log masuk ke Chrome untuk mendapatkan tab daripada peranti anda yang lain.</translation>
@@ -1294,10 +1210,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
-@@ -1000,4 +1000,21 @@ Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te gev
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te gev
  <translation id="983192555821071799">Alle tabbladen sluiten</translation>
  <translation id="987264212798334818">Algemeen</translation>
+ <translation id="996149300115483134">Feedkaartmenu is gesloten</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Log in bij Chrome om de tabbladen van je andere apparaten te bekijken.</translation>
@@ -1321,10 +1237,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
-@@ -1000,4 +1000,21 @@ Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg
- <translation id="981121421437150478">Uten nett</translation>
+@@ -1045,4 +1045,21 @@ Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg
  <translation id="983192555821071799">Lukk alle faner</translation>
  <translation id="987264212798334818">Generelt</translation>
+ <translation id="996149300115483134">Feedkortmenyen er lukket</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">For å få fanene dine fra de andre enhetene du bruker, logg på Chrome.</translation>
@@ -1348,10 +1264,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
-@@ -1000,4 +1000,21 @@ Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy b
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy b
  <translation id="983192555821071799">Zamknij wszystkie karty</translation>
  <translation id="987264212798334818">Ogólne</translation>
+ <translation id="996149300115483134">Menu karty kanału jest zamknięte</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Aby korzystać z kart ze swoich innych urządzeń, zaloguj się w Chrome.</translation>
@@ -1375,10 +1291,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
-@@ -1001,4 +1001,21 @@ Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que
- <translation id="981121421437150478">Off-line</translation>
+@@ -1046,4 +1046,21 @@ Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que
  <translation id="983192555821071799">Fechar todas as guias</translation>
  <translation id="987264212798334818">Geral</translation>
+ <translation id="996149300115483134">O menu do card do feed está fechado</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Para ver as guias dos seus outros dispositivos, faça login no Chrome.</translation>
@@ -1402,10 +1318,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
-@@ -1000,4 +1000,21 @@ Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios
  <translation id="983192555821071799">Fechar todos os separadores</translation>
  <translation id="987264212798334818">Geral</translation>
+ <translation id="996149300115483134">O menu do cartão do feed está fechado.</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Para obter os separadores dos seus outros dispositivos, inicie sessão no Chrome.</translation>
@@ -1429,10 +1345,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
-@@ -1000,4 +1000,21 @@ De exemplu, unele site-uri pot răspunde la această solicitare afișând anunț
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ De exemplu, unele site-uri pot răspunde la această solicitare afișând anunț
  <translation id="983192555821071799">Închide toate filele</translation>
  <translation id="987264212798334818">General</translation>
+ <translation id="996149300115483134">Meniul cardului din feed este închis</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Pentru a accesa filele de pe alte dispozitive, conectează-te la Chrome.</translation>
@@ -1456,10 +1372,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">Офлайн</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">Закрыть все вкладки</translation>
  <translation id="987264212798334818">Общие</translation>
+ <translation id="996149300115483134">Меню карточки из ленты закрыто</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Чтобы получить доступ к вкладкам на всех ваших устройствах, войдите в Chrome.</translation>
@@ -1483,10 +1399,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
-@@ -1000,4 +1000,21 @@ Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobr
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobr
  <translation id="983192555821071799">Zavrieť všetky karty</translation>
  <translation id="987264212798334818">Všeobecné</translation>
+ <translation id="996149300115483134">Ponuka karty feedu je zatvorená</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Ak chcete získať karty z ďalších svojich zariadení, prihláste sa do Chromu.</translation>
@@ -1510,10 +1426,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
-@@ -1000,4 +1000,21 @@ Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažej
- <translation id="981121421437150478">Brez povezave</translation>
+@@ -1045,4 +1045,21 @@ Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažej
  <translation id="983192555821071799">Zapri vse zavihke</translation>
  <translation id="987264212798334818">Splošno</translation>
+ <translation id="996149300115483134">Meni kartice vira je zaprt</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Če želite dostopati do zavihkov v drugih napravah, se prijavite v Chrome.</translation>
@@ -1537,10 +1453,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
-@@ -1000,4 +1000,21 @@ Google налог можда има друге облике историје п
- <translation id="981121421437150478">Офлајн</translation>
+@@ -1045,4 +1045,21 @@ Google налог можда има друге облике историје п
  <translation id="983192555821071799">Затвори све картице</translation>
  <translation id="987264212798334818">Опште</translation>
+ <translation id="996149300115483134">Мени картице фида је затворен</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Да би вам картице биле доступне на другим уређајима, пријавите се у Chrome.</translation>
@@ -1564,10 +1480,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
-@@ -1000,4 +1000,21 @@ Vissa webbplatser kan till exempel svara på begäran genom att visa annonser so
- <translation id="981121421437150478">Offline</translation>
+@@ -1045,4 +1045,21 @@ Vissa webbplatser kan till exempel svara på begäran genom att visa annonser so
  <translation id="983192555821071799">Stäng alla flikar</translation>
  <translation id="987264212798334818">Allmänt</translation>
+ <translation id="996149300115483134">Menyn med flödeskort är stängd</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Logga in i Chrome om du vill ha samma flikar tillgängliga på alla enheter.</translation>
@@ -1591,10 +1507,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
-@@ -1000,4 +1000,21 @@ Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo
- <translation id="981121421437150478">Nje ya mtandao</translation>
+@@ -1045,4 +1045,21 @@ Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo
  <translation id="983192555821071799">Funga vichupo vyote</translation>
  <translation id="987264212798334818">Jumla</translation>
+ <translation id="996149300115483134">Menyu ya kadi ya mipasho imefungwa</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Ili upate vichupo kutoka kwenye vifaa vyako vingine, ingia katika Chrome.</translation>
@@ -1618,10 +1534,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ஆஃப்லைன்</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">எல்லா தாவல்களையும் மூடு</translation>
  <translation id="987264212798334818">பொது</translation>
+ <translation id="996149300115483134">ஃபீட் கார்டு மெனு மூடப்பட்டுள்ளது</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
@@ -1645,10 +1561,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ఆఫ్‌లైన్</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">అన్ని ట్యాబ్‌లను మూసివేయి</translation>
  <translation id="987264212798334818">సాధారణం</translation>
+ <translation id="996149300115483134">ఫీడ్ కార్డ్ మెనూ మూసివేయబడింది</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Chromeకు సైన్ ఇన్ చేయండి.</translation>
@@ -1672,10 +1588,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">ออฟไลน์</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">ปิดแท็บทั้งหมด</translation>
  <translation id="987264212798334818">ทั่วไป</translation>
+ <translation id="996149300115483134">เมนูของการ์ดฟีดปิดอยู่</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">ลงชื่อเข้าใช้ Chrome เพื่อรับแท็บจากอุปกรณ์เครื่องอื่นๆ ของคุณ</translation>
@@ -1699,10 +1615,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
-@@ -1000,4 +1000,21 @@ Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlay
- <translation id="981121421437150478">Çevrimdışı</translation>
+@@ -1045,4 +1045,21 @@ Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlay
  <translation id="983192555821071799">Tüm sekmeleri kapat</translation>
  <translation id="987264212798334818">Genel</translation>
+ <translation id="996149300115483134">Akış kartı menüsü kapalı</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Diğer cihazlarınızdaki sekmelerinize ulaşmak için Chrome'da oturum açın.</translation>
@@ -1726,10 +1642,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">Офлайн</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">Закрити всі вкладки</translation>
  <translation id="987264212798334818">Загальне</translation>
+ <translation id="996149300115483134">Меню картки зі стрічки закрито</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Щоб мати доступ до вкладок з інших пристроїв, увійдіть в обліковий запис Chrome.</translation>
@@ -1753,10 +1669,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
-@@ -1000,4 +1000,21 @@ Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cá
- <translation id="981121421437150478">Ngoại tuyến</translation>
+@@ -1045,4 +1045,21 @@ Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cá
  <translation id="983192555821071799">Đóng tất cả các thẻ</translation>
  <translation id="987264212798334818">Chung</translation>
+ <translation id="996149300115483134">Trình đơn thẻ nguồn cấp dữ liệu đang đóng</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">Để có các tab từ các thiết bị khác của bạn, hãy đăng nhập vào Chrome.</translation>
@@ -1780,10 +1696,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 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
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">离线</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">关闭所有标签页</translation>
  <translation id="987264212798334818">常规</translation>
+ <translation id="996149300115483134">动态卡片上的菜单已关闭</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">要访问您在其他设备上的标签页,请登录 Chrome。</translation>
@@ -1807,10 +1723,10 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
-@@ -1000,4 +1000,21 @@
- <translation id="981121421437150478">離線</translation>
+@@ -1045,4 +1045,21 @@
  <translation id="983192555821071799">關閉所有分頁</translation>
  <translation id="987264212798334818">一般</translation>
+ <translation id="996149300115483134">已關閉動態消息資訊卡選單</translation>
 -</translationbundle>
 \ No newline at end of file
 +<translation id="1326317727527857210">如要存取您在其他裝置上開啟的分頁,請登入 Chrome。</translation>

+ 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
-@@ -2554,6 +2554,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2564,6 +2564,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
  #endif  // OS_MACOSX
  #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
-@@ -894,6 +894,11 @@
+@@ -945,6 +945,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
-@@ -2716,6 +2716,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch";
+@@ -2848,6 +2848,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch";
  const char kQueryTilesInstantFetchDescription[] =
      "Immediately schedule background task to fetch query tiles";
  
@@ -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
-@@ -1584,6 +1584,9 @@ extern const char kQueryTilesCountryCodeIndonesia[];
+@@ -1650,6 +1650,9 @@ extern const char kQueryTilesCountryCodeIndonesia[];
  extern const char kQueryTilesInstantFetchName[];
  extern const char kQueryTilesInstantFetchDescription[];
  

+ 8 - 8
build/patches/Revert-gpu-android-Remove-setup-for-disabling-AImageReader.patch

@@ -61,7 +61,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 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
-@@ -110,6 +110,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
+@@ -111,6 +111,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
  #if !defined(OS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
@@ -71,7 +71,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -358,6 +361,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -371,6 +374,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] =
          kGpuFeatureStatusBlacklisted;
    }
@@ -89,15 +89,15 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
 @@ -13,6 +13,7 @@ decode_encode_srgb_for_generatemipmap
  depth_stencil_renderbuffer_resize_emulation
  disable_2d_canvas_auto_flush
- disable_accelerated_vpx_decode
+ disable_accelerated_av1_decode
 +disable_aimagereader
+ disable_accelerated_vp8_decode
+ disable_accelerated_vp9_decode
  disable_async_readpixels
- disable_av_sample_buffer_display_layer
- disable_blend_equation_advanced
 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
-@@ -522,6 +522,12 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -561,6 +561,12 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
    ui::OzonePlatform::GetInstance()->AfterSandboxEntry();
  #endif
  
@@ -110,8 +110,8 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
  #if defined(USE_OZONE)
    gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
        std::move(supported_buffer_formats_for_texturing);
-@@ -548,6 +554,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
- 
+@@ -587,6 +593,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
+   DisableInProcessGpuVulkan(&gpu_feature_info_, &gpu_preferences_);
    default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
  
 +  // Disable AImageReader if the workaround is enabled.

+ 59 - 0
build/patches/Rollback-dav1d-upgrades-that-break-x86.patch

@@ -0,0 +1,59 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Sat, 22 Aug 2020 14:31:59 +0200
+Subject: Rollback dav1d upgrades that break x86
+
+Revert "Roll src/third_party/dav1d/libdav1d/ 54f92068c..47daa4df3 (1 commit)"
+
+This reverts commit e6447f7294588dcab826736c267cdab094a1643e.
+
+Revert "Roll src/third_party/dav1d/libdav1d/ 07261e8c3..54f92068c (15 commits)"
+
+This reverts commit b47516cde6a4d570b4c29b761d31c26009f9611f.
+
+Revert "Roll src/third_party/dav1d/libdav1d/ b585f051c..07261e8c3 (39 commits)"
+
+This reverts commit d723c1391cd7f73dedfd97805f1503010edf06ad.
+---
+ DEPS                                  | 2 +-
+ third_party/dav1d/dav1d_generated.gni | 4 +---
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/DEPS b/DEPS
+--- a/DEPS
++++ b/DEPS
+@@ -774,7 +774,7 @@ deps = {
+     Var('chromium_git') + '/angle/angle.git' + '@' +  Var('angle_revision'),
+ 
+   'src/third_party/dav1d/libdav1d':
+-    Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + '47daa4df3387c1529536243db80b81f3878cbf76',
++    Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + 'b585f051c365bbada36bd066dd0a8a237fbf9dca',
+ 
+   'src/third_party/dawn':
+     Var('dawn_git') + '/dawn.git' + '@' +  Var('dawn_revision'),
+diff --git a/third_party/dav1d/dav1d_generated.gni b/third_party/dav1d/dav1d_generated.gni
+--- a/third_party/dav1d/dav1d_generated.gni
++++ b/third_party/dav1d/dav1d_generated.gni
+@@ -20,7 +20,7 @@ x86_asm_sources = [
+   "libdav1d/src/x86/looprestoration.asm",
+   "libdav1d/src/x86/looprestoration_ssse3.asm",
+   "libdav1d/src/x86/mc.asm",
+-  "libdav1d/src/x86/mc_sse.asm",
++  "libdav1d/src/x86/mc_ssse3.asm",
+   "libdav1d/src/x86/msac.asm",
+ ]
+ 
+@@ -37,11 +37,9 @@ x86_template_sources = [
+ arm32_asm_sources = [
+   "libdav1d/src/arm/32/cdef.S",
+   "libdav1d/src/arm/32/ipred.S",
+-  "libdav1d/src/arm/32/itx.S",
+   "libdav1d/src/arm/32/loopfilter.S",
+   "libdav1d/src/arm/32/looprestoration.S",
+   "libdav1d/src/arm/32/mc.S",
+-  "libdav1d/src/arm/32/msac.S",
+   "libdav1d/src/arm/32/util.S",
+ ]
+ 
+-- 
+2.17.1
+

+ 57 - 51
build/patches/Session-only-cookies-support.patch

@@ -11,12 +11,13 @@ Subject: Session-only cookies support
  .../four_state_cookie_settings_preference.xml |  7 ++++
  .../ContentSettingsResources.java             |  9 +++++
  .../FourStateCookieSettingsPreference.java    | 17 +++++++-
- .../site_settings/SingleCategorySettings.java | 30 ++++++++++++++
- .../site_settings/SingleWebsiteSettings.java  | 40 ++++++++++++++-----
+ .../site_settings/SingleCategorySettings.java | 29 ++++++++++++++
+ .../site_settings/SingleWebsiteSettings.java  | 38 ++++++++++++------
  .../site_settings/SiteSettings.java           |  9 +++++
  .../strings/android/site_settings.grdp        |  8 +++-
  .../translations/browser_ui_strings_it.xtb    |  2 +
  .../core/browser/content_settings_registry.cc |  0
+ .../core/data_use_measurement.cc              |  1 +
  .../scheduler/responsiveness/calculator.cc    |  1 +
  .../base/application_state_mojom_traits.cc    |  7 +++-
  .../public/mojom/base/application_state.mojom |  1 +
@@ -24,9 +25,9 @@ Subject: Session-only cookies support
  services/network/cookie_manager.h             |  3 ++
  services/network/network_context.cc           | 17 ++++++++
  .../network/public/mojom/cookie_manager.mojom |  3 ++
- .../network/session_cleanup_cookie_store.cc   | 39 ++++++++++++++++++
+ .../network/session_cleanup_cookie_store.cc   | 39 +++++++++++++++++++
  .../network/session_cleanup_cookie_store.h    |  9 +++++
- 23 files changed, 212 insertions(+), 16 deletions(-)
+ 24 files changed, 210 insertions(+), 16 deletions(-)
  mode change 100644 => 100755 base/android/application_status_listener.cc
  mode change 100644 => 100755 base/android/application_status_listener.h
  mode change 100644 => 100755 base/android/java/src/org/chromium/base/ApplicationStatus.java
@@ -56,7 +57,7 @@ old mode 100644
 new mode 100755
 --- a/base/android/application_status_listener.cc
 +++ b/base/android/application_status_listener.cc
-@@ -84,6 +84,7 @@ void ApplicationStatusListener::NotifyApplicationStateChange(
+@@ -85,6 +85,7 @@ void ApplicationStatusListener::NotifyApplicationStateChange(
    switch (state) {
      case APPLICATION_STATE_UNKNOWN:
      case APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES:
@@ -122,7 +123,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/availability/availability_prober.cc
 +++ b/chrome/browser/availability/availability_prober.cc
-@@ -205,6 +205,7 @@ bool IsInForeground(base::android::ApplicationState state) {
+@@ -206,6 +206,7 @@ bool IsInForeground(base::android::ApplicationState state) {
      case base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES:
      case base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES:
      case base::android::APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES:
@@ -154,7 +155,7 @@ old mode 100644
 new mode 100755
 --- 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
-@@ -325,6 +325,8 @@ public class ContentSettingsResources {
+@@ -335,6 +335,8 @@ public class ContentSettingsResources {
                  return R.string.website_settings_permissions_allow;
              case ContentSettingValues.BLOCK:
                  return R.string.website_settings_permissions_block;
@@ -163,7 +164,7 @@ new mode 100755
              default:
                  return 0; // We never show Ask as an option on individual permissions.
          }
-@@ -412,4 +414,11 @@ public class ContentSettingsResources {
+@@ -422,4 +424,11 @@ public class ContentSettingsResources {
          assert false;
          return null;
      }
@@ -258,7 +259,7 @@ old mode 100644
 new mode 100755
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
-@@ -568,6 +568,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -573,6 +573,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
  
      private void setCookieSettingsPreference(CookieSettingsState state) {
          boolean allowCookies;
@@ -266,7 +267,7 @@ new mode 100755
          @CookieControlsMode
          int mode;
  
-@@ -575,28 +576,50 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -580,23 +581,37 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              case ALLOW:
                  allowCookies = true;
                  mode = CookieControlsMode.OFF;
@@ -296,31 +297,32 @@ new mode 100755
                  return;
          }
  
-+        // reset default
++        // reset cookies content setting to default
 +        WebsitePreferenceBridge.setContentSetting(
-+                   getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES, 
++                   getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES,
 +                   ContentSettingValues.DEFAULT);
 +
          WebsitePreferenceBridge.setCategoryEnabled(
                  getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES,
                  allowCookies);
-         getPrefs().setCookieControlsMode(mode);
-         getPrefs().setBlockThirdPartyCookies(mode == CookieControlsMode.BLOCK_THIRD_PARTY);
+@@ -604,6 +619,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+         prefService.setInteger(COOKIE_CONTROLS_MODE, mode);
+         prefService.setBoolean(
+                 BLOCK_THIRD_PARTY_COOKIES, mode == CookieControlsMode.BLOCK_THIRD_PARTY);
 +
-+        // set sessiononly content setting for cookies
-+        if(sessionOnly)
-+        {
++        // set session-only content setting for cookies
++        if (sessionOnly) {
 +            WebsitePreferenceBridge.setContentSetting(
-+                   getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES, 
++                   getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES,
 +                   ContentSettingValues.SESSION_ONLY);
-+				}
++        }
      }
  
      private boolean cookieSettingsExceptionShouldBlock() {
-@@ -1079,6 +1102,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
-         params.cookieControlsMode = getPrefs().getCookieControlsMode();
-         params.cookiesContentSettingEnforced = mCategory.isManaged();
-         params.thirdPartyBlockingEnforced = getPrefs().isBlockThirdPartyCookiesManaged();
+@@ -1084,6 +1106,13 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+         params.allowCookies = WebsitePreferenceBridge.isCategoryEnabled(
+                 getSiteSettingsClient().getBrowserContextHandle(), ContentSettingsType.COOKIES);
+         PrefService prefService = UserPrefs.get(getSiteSettingsClient().getBrowserContextHandle());
 +
 +        if (WebsitePreferenceBridge.getContentSetting(
 +                        getSiteSettingsClient().getBrowserContextHandle(), 
@@ -328,23 +330,15 @@ new mode 100755
 +              params.sessionOnlyCookies = true;
 +        }
 +
-         fourStateCookieToggle.setState(params);
-     }
- 
+         params.blockThirdPartyCookies = prefService.getBoolean(BLOCK_THIRD_PARTY_COOKIES);
+         params.cookieControlsMode = prefService.getInteger(COOKIE_CONTROLS_MODE);
+         params.cookiesContentSettingEnforced = mCategory.isManaged();
 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
 old mode 100644
 new mode 100755
 --- 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
-@@ -69,6 +69,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-     public static final String PREF_RESET_SITE = "reset_site_button";
- 
-     public static final String TAG = "SingleWebsitePreferences";
-+
-     // Website permissions (if adding new, see hasPermissionsPreferences and resetSite below)
-     // All permissions from the permissions preference category must be listed here.
-     private static final String[] PERMISSION_PREFERENCE_KEYS = {
-@@ -746,19 +747,36 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -750,21 +750,37 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          setUpPreferenceCommon(preference);
          ListPreference listPreference = (ListPreference) preference;
  
@@ -358,7 +352,7 @@ new mode 100755
 -                getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.BLOCK));
 -        listPreference.setEntryValues(keys);
 -        listPreference.setEntries(descriptions);
-+        if(getContentSettingsTypeFromPreferenceKey(preference.getKey()) == ContentSettingsType.COOKIES) {
++        if (getContentSettingsTypeFromPreferenceKey(preference.getKey()) == ContentSettingsType.COOKIES) {
 +          CharSequence[] keys = new String[3];
 +          CharSequence[] descriptions = new String[3];
 +          keys[0] = ContentSetting.toString(ContentSettingValues.ALLOW);
@@ -383,21 +377,22 @@ new mode 100755
 +                  getString(ContentSettingsResources.getSiteSummary(ContentSettingValues.BLOCK));
 +          listPreference.setEntryValues(keys);
 +          listPreference.setEntries(descriptions);
-+				}
-+
++        }
+         listPreference.setOnPreferenceChangeListener(this);
+         listPreference.setSummary(isEmbargoed ? getString(R.string.automatically_blocked) : "%s");
          // 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);
 +        int index = (value == ContentSettingValues.SESSION_ONLY ? 2 : (value == ContentSettingValues.ALLOW ? 0 : 1));
          listPreference.setValueIndex(index);
-         listPreference.setOnPreferenceChangeListener(this);
-         listPreference.setSummary("%s");
+     }
+ 
 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
 old mode 100644
 new mode 100755
 --- 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
-@@ -67,6 +67,8 @@ public class SiteSettings
+@@ -70,6 +70,8 @@ public class SiteSettings
              }
              boolean requiresTriStateSetting =
                      WebsitePreferenceBridge.requiresTriStateContentSetting(contentType);
@@ -406,7 +401,7 @@ new mode 100755
  
              boolean checked = false;
              @ContentSettingValues
-@@ -78,6 +80,11 @@ public class SiteSettings
+@@ -81,6 +83,11 @@ public class SiteSettings
              } else if (requiresTriStateSetting) {
                  setting = WebsitePreferenceBridge.getContentSetting(
                          browserContextHandle, contentType);
@@ -418,21 +413,21 @@ new mode 100755
              } else {
                  checked = WebsitePreferenceBridge.isCategoryEnabled(
                          browserContextHandle, contentType);
-@@ -95,6 +102,8 @@ public class SiteSettings
+@@ -98,6 +105,8 @@ public class SiteSettings
                                 .showPermissionBlockedMessage(getActivity())) {
                  // Show 'disabled' message when permission is not granted in Android.
                  p.setSummary(ContentSettingsResources.getCategorySummary(contentType, false));
 +            } else if (Type.COOKIES == prefCategory && requiresFourStateContentSetting && setting == ContentSettingValues.SESSION_ONLY) {
 +                p.setSummary(ContentSettingsResources.getCookieSessionOnlySummary());
              } else if (Type.COOKIES == prefCategory && checked
-                     && getSiteSettingsClient()
-                                .getSiteSettingsPrefClient()
+                     && UserPrefs.get(browserContextHandle).getBoolean(BLOCK_THIRD_PARTY_COOKIES)) {
+                 p.setSummary(ContentSettingsResources.getCookieAllowedExceptThirdPartySummary());
 diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp
 old mode 100644
 new mode 100755
 --- a/components/browser_ui/strings/android/site_settings.grdp
 +++ b/components/browser_ui/strings/android/site_settings.grdp
-@@ -333,8 +333,14 @@
+@@ -345,8 +345,14 @@
      Cookies are files created by websites you visit. Sites use them to remember your preferences. Third-party cookies are created by other sites. These sites own some of the content, like ads or images, that you see on the webpage you visit.
    </message>
  
@@ -453,8 +448,8 @@ old mode 100644
 new mode 100755
 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
 +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
-@@ -238,4 +238,6 @@
- <translation id="9019902583201351841">Gestito dai genitori</translation>
+@@ -253,4 +253,6 @@
+ <translation id="9074739597929991885">Bluetooth</translation>
  <translation id="945632385593298557">Accesso al microfono</translation>
  <translation id="965817943346481315">Blocca se il sito mostra annunci invasivi o fuorvianti (consigliato)</translation>
 +<translation id="1709693995511170330">Solo cookies di sessione</translation>
@@ -464,6 +459,17 @@ new mode 100755
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 old mode 100644
 new mode 100755
+diff --git a/components/data_use_measurement/core/data_use_measurement.cc b/components/data_use_measurement/core/data_use_measurement.cc
+--- a/components/data_use_measurement/core/data_use_measurement.cc
++++ b/components/data_use_measurement/core/data_use_measurement.cc
+@@ -33,6 +33,7 @@ bool IsInForeground(base::android::ApplicationState state) {
+     case base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES:
+       return true;
+     case base::android::APPLICATION_STATE_UNKNOWN:
++    case base::android::APPLICATION_STATE_EXITING:
+     case base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES:
+     case base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES:
+     case base::android::APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES:
 diff --git a/content/browser/scheduler/responsiveness/calculator.cc b/content/browser/scheduler/responsiveness/calculator.cc
 old mode 100644
 new mode 100755
@@ -567,7 +573,7 @@ old mode 100644
 new mode 100755
 --- a/services/network/network_context.cc
 +++ b/services/network/network_context.cc
-@@ -289,12 +289,23 @@ class NetworkContextApplicationStatusListener
+@@ -291,12 +291,23 @@ class NetworkContextApplicationStatusListener
    }
  
    void Notify(base::android::ApplicationState state) override {
@@ -591,7 +597,7 @@ new mode 100755
  };
  #endif
  
-@@ -2106,6 +2117,12 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext() {
+@@ -2169,6 +2180,12 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
        std::move(session_cleanup_cookie_store),
        std::move(params_->cookie_manager_params));
  
@@ -609,7 +615,7 @@ old mode 100644
 new mode 100755
 --- a/services/network/public/mojom/cookie_manager.mojom
 +++ b/services/network/public/mojom/cookie_manager.mojom
-@@ -361,4 +361,7 @@ interface CookieManager {
+@@ -378,4 +378,7 @@ interface CookieManager {
    // the caller with a callback when settings have been updated.
    SetStorageAccessGrantSettings(
        array<content_settings.mojom.ContentSettingPatternSource> settings) => ();

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

@@ -4,31 +4,23 @@ Subject: Show site settings for cookies, javascript and ads
 
 Avoid displaying info about intrusive ads
 ---
- .../site_settings/SingleWebsiteSettings.java  | 60 +++++++++----------
+ .../site_settings/SingleWebsiteSettings.java  | 59 +++++++++----------
  .../browser_ui/site_settings/Website.java     | 20 +++++++
- 2 files changed, 48 insertions(+), 32 deletions(-)
+ 2 files changed, 47 insertions(+), 32 deletions(-)
 
 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
-@@ -68,6 +68,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-     // Buttons:
-     public static final String PREF_RESET_SITE = "reset_site_button";
- 
-+    public static final String TAG = "SingleWebsitePreferences";
-     // Website permissions (if adding new, see hasPermissionsPreferences and resetSite below)
-     // All permissions from the permissions preference category must be listed here.
-     private static final String[] PERMISSION_PREFERENCE_KEYS = {
-@@ -349,6 +350,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -349,6 +349,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                      setUpSoundPreference(preference);
                  } else if (i == ContentSettingException.Type.JAVASCRIPT) {
                      setUpJavascriptPreference(preference);
 +                } else if (i == ContentSettingException.Type.COOKIE) {
 +                    setUpCookiePreference(preference);
                  } else {
-                     setUpListPreference(preference, mSite.getContentSettingPermission(i));
-                 }
-@@ -666,19 +669,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+                     // ContentSettingException can not be embargoed.
+                     setUpListPreference(preference, mSite.getContentSettingPermission(i),
+@@ -671,19 +673,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
      }
  
      private void setUpAdsInformationalBanner() {
@@ -50,7 +42,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      }
  
      private SiteSettingsCategory getWarningCategory() {
-@@ -831,13 +823,29 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -838,13 +829,29 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          @Nullable
          Integer currentValue =
                  mSite.getContentSettingPermission(ContentSettingException.Type.JAVASCRIPT);
@@ -69,7 +61,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +                    ? ContentSettingValues.ALLOW
 +                    : ContentSettingValues.BLOCK;
 +        }
-+        setUpListPreference(preference, currentValue);
++        setUpListPreference(preference, currentValue, false);
 +    }
 +
 +    private void setUpCookiePreference(Preference preference) {
@@ -85,10 +77,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +                    ? ContentSettingValues.ALLOW
 +                    : ContentSettingValues.BLOCK;
          }
-         setUpListPreference(preference, currentValue);
-     }
-@@ -855,22 +863,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-             setUpListPreference(preference, null);
+         // Not possible to embargo JAVASCRIPT.
+         setUpListPreference(preference, currentValue, false /* isEmbargoed */);
+@@ -863,22 +870,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+             setUpListPreference(preference, null, false);
              return;
          }
 -        // If the ad blocker is activated, then this site will have ads blocked unless there is an
@@ -103,7 +95,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 -        // If the site is not considered a candidate for blocking, do the standard thing and remove
 -        // the preference.
 -        if (permission == null && !activated) {
--            setUpListPreference(preference, null);
+-            setUpListPreference(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
-@@ -273,16 +273,12 @@ config("compiler") {
+@@ -279,16 +279,12 @@ config("compiler") {
          cflags += [ "-fstack-protector" ]
        }
      } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) {

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

@@ -10,7 +10,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
-@@ -6464,4 +6464,8 @@
+@@ -6599,4 +6599,8 @@
  <translation id="995782501881226248">YouTube</translation>
  <translation id="996250603853062861">正在建立安全连接...</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
-@@ -1017,4 +1017,23 @@
+@@ -1062,4 +1062,23 @@
  <translation id="666268767214822976">当您在地址栏中输入查询内容时,使用联想查询服务显示相关查询和热门网站</translation>
  <translation id="8283853025636624853">正在同步到 <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
  <translation id="8981454092730389528">Google 活动控件</translation>

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

@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
      private boolean mSearchProviderIsGoogle;
  
      private boolean mInitialized;
-@@ -526,7 +526,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -528,7 +528,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }
@@ -31,7 +31,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          mSearchProviderIsGoogle = isGoogle;
  
          updateTileGridPadding();
-@@ -797,7 +797,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -799,7 +799,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
          Integer maxRows = mQueryTileSection == null
                  ? null
                  : mQueryTileSection.getMaxRowsForMostVisitedTiles();
@@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
 diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc
 --- a/chrome/browser/engagement/important_sites_util.cc
 +++ b/chrome/browser/engagement/important_sites_util.cc
-@@ -62,7 +62,7 @@ static const int kTimesIgnoredForBlacklist = 3;
+@@ -63,7 +63,7 @@ static const int kTimesIgnoredForBlacklist = 3;
  // These are the maximum # of bookmarks we can use as signals. If the user has
  // <= kMaxBookmarks, then we just use those bookmarks. Otherwise we filter all
  // bookmarks on site engagement > 0, sort, and trim to kMaxBookmarks.

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

@@ -60,7 +60,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
  import org.chromium.base.BuildInfo;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
-@@ -124,18 +121,7 @@ class FakeEngine extends SplitCompatEngine {
+@@ -129,18 +126,7 @@ class FakeEngine extends SplitCompatEngine {
              return false;
          }
  

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff