Browse Source

Updated patches for v80 (#482)

* Updated patches for v80

* Fix arm64 build of openH264

* Fix linking error

* Update other patches too

* Fix remaining crashes
Carl 5 years ago
parent
commit
410fc50a21
100 changed files with 2065 additions and 2282 deletions
  1. 7 0
      CHANGELOG.md
  2. 1 1
      README.md
  3. 0 1
      build/GN_ARGS
  4. 1 9
      build/bromite_patches_list.txt
  5. 1 1
      build/patches/AV1-codec-support.patch
  6. 12 12
      build/patches/Add-a-proxy-configuration-page.patch
  7. 54 53
      build/patches/Add-an-always-incognito-mode.patch
  8. 96 93
      build/patches/Add-bookmark-import-export-actions.patch
  9. 24 24
      build/patches/Add-custom-tab-intents-privacy-option.patch
  10. 9 9
      build/patches/Add-exit-menu-item.patch
  11. 8 8
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  12. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  13. 20 20
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  14. 3 3
      build/patches/Add-flag-to-disable-WebGL.patch
  15. 10 10
      build/patches/Add-flags-to-disable-device-motion-and-orientation-APIs.patch
  16. 73 86
      build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch
  17. 19 19
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  18. 15 15
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  19. 107 103
      build/patches/Add-site-settings-option-for-session-only-cookies.patch
  20. 105 103
      build/patches/Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
  21. 12 36
      build/patches/Allow-building-without-feed-support.patch
  22. 3 3
      build/patches/Allow-playing-audio-in-background.patch
  23. 1 1
      build/patches/Allow-website-sign-in-without-account-sign-in.patch
  24. 2 2
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  25. 17 17
      build/patches/Always-show-site-settings-for-cookies-javascript-and-ads.patch
  26. 73 232
      build/patches/Automated-domain-substitution.patch
  27. 23 23
      build/patches/Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
  28. 32 41
      build/patches/Bromite-AdBlockUpdaterService.patch
  29. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  30. 2 2
      build/patches/Disable-Omaha-update-checks.patch
  31. 4 4
      build/patches/Disable-addresses-autofill-by-default.patch
  32. 23 40
      build/patches/Disable-all-promo-dialogs.patch
  33. 22 22
      build/patches/Disable-dynamic-module-loading.patch
  34. 3 3
      build/patches/Disable-fetching-of-all-field-trials.patch
  35. 3 3
      build/patches/Disable-media-router-and-remoting-by-default.patch
  36. 18 21
      build/patches/Disable-metrics-collection-for-NTP-tiles.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. 19 19
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  41. 4 4
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  42. 319 199
      build/patches/Disable-safe-browsing.patch
  43. 1 1
      build/patches/Disable-search-ready-omnibox-by-default.patch
  44. 1 1
      build/patches/Disable-seed-based-field-trials.patch
  45. 4 4
      build/patches/Disable-smart-selection-by-default.patch
  46. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  47. 8 8
      build/patches/Disable-sync-services-menu-entry.patch
  48. 3 3
      build/patches/Do-not-enable-QUIC-by-default.patch
  49. 2 2
      build/patches/Do-not-grant-notifications-to-default-search-engine.patch
  50. 6 7
      build/patches/Do-not-ignore-download-location-prompt-setting.patch
  51. 3 3
      build/patches/Do-not-store-passwords-by-default.patch
  52. 1 1
      build/patches/Enable-changing-default-downloads-storage-location-by-default.patch
  53. 0 23
      build/patches/Enable-download-rename-option-by-default.patch
  54. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  55. 0 23
      build/patches/Enable-night-mode-menu-entry-by-default.patch
  56. 2 2
      build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
  57. 1 1
      build/patches/Fix-crash-when-accessing-page-info-site-settings.patch
  58. 6 6
      build/patches/Hide-passwords-manager-link.patch
  59. 3 3
      build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch
  60. 4 4
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
  61. 27 39
      build/patches/Modify-default-preferences.patch
  62. 36 38
      build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
  63. 1 1
      build/patches/Never-fetch-popular-sites.patch
  64. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  65. 2 2
      build/patches/Open-YouTube-links-in-Bromite.patch
  66. 7 17
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
  67. 96 82
      build/patches/Remove-SMS-integration.patch
  68. 0 46
      build/patches/Remove-background-sync-and-translate-menu-options.patch
  69. 8 8
      build/patches/Remove-dependency-on-com.google.android.gms.auth.patch
  70. 14 14
      build/patches/Remove-dependency-on-com.google.android.gms.cast.patch
  71. 32 32
      build/patches/Remove-dependency-on-com.google.android.gms.common-auth-signin-dynamic-com.google.android.gms.tasks.patch
  72. 22 22
      build/patches/Remove-dependency-on-com.google.android.gms.fido-com.google.android.gms.iid-com.google.android.gms.instantapps-com.google.android.gms.location.patch
  73. 4 4
      build/patches/Remove-dependency-on-com.google.android.gms.flags-com.google.android.gms.location.places-com.google.android.gms.stats.patch
  74. 13 13
      build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
  75. 4 4
      build/patches/Remove-dependency-on-com.google.android.gms.vision-com.google.android.gms.clearcut-com.google.android.gms.phenotype.patch
  76. 3 3
      build/patches/Remove-dependency-on-com.google.android.play.patch
  77. 15 15
      build/patches/Remove-help-menu-item.patch
  78. 91 146
      build/patches/Remove-signin-and-data-saver-integrations.patch
  79. 1 1
      build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch
  80. 2 2
      build/patches/Restore-enable-horizontal-tab-switcher-flag.patch
  81. 8 8
      build/patches/Revert-Cleanup-Search-Ready-Omnibox-flag-since-it-has-launched.patch
  82. 3 3
      build/patches/Revert-Merge-to-M78-Enable-AImageReader-by-default.patch
  83. 383 259
      build/patches/Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
  84. 4 4
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  85. 15 20
      build/patches/Skip-the-first-run-and-metrics.patch
  86. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  87. 0 38
      build/patches/Use-64-bit-WebView-processes.patch
  88. 8 8
      build/patches/Use-dummy-DFM-installer.patch
  89. 5 5
      build/patches/autofill-disable-autofill-download-manager.patch
  90. 12 37
      build/patches/build-remove-calling-untrusted-hooks.patch
  91. 1 1
      build/patches/disable-AdsBlockedInfoBar.patch
  92. 2 2
      build/patches/disable-background-sync-by-default.patch
  93. 3 3
      build/patches/disable-sensors-access-site-setting-by-default.patch
  94. 1 1
      build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
  95. 6 6
      build/patches/kill-Auth.patch
  96. 17 18
      build/patches/kill-GCM.patch
  97. 1 1
      build/patches/kill-Location-fall-back-to-system.patch
  98. 6 5
      build/patches/kill-Translate.patch
  99. 6 24
      build/patches/openH264-enable-ARM-ARM64-optimizations.patch
  100. 2 2
      build/patches/prefs-only-keep-cookies-until-exit.patch

+ 7 - 0
CHANGELOG.md

@@ -1,3 +1,10 @@
+# 80.0.3987.78
+* removed ungoogled-chromium patch for non-remote developer tools resources
+* removed patch for 64-bit webview (it is now a default from upstream)
+* removed patch for enabling dark mode menu entry by default (it is now a default from upstream)
+* removed patch for enabling download rename by default (it is now a default from upstream)
+* removed some redundant Iridium safe browsing patches
+
 # 79.0.3945.139
 # 79.0.3945.139
 * remove patch to automatically disable video decoding acceleration on Android 10+ and arm64
 * remove patch to automatically disable video decoding acceleration on Android 10+ and arm64
 * fix referral headers bug in non-DoH requests (fixes https://github.com/bromite/bromite/issues/470)
 * fix referral headers bug in non-DoH requests (fixes https://github.com/bromite/bromite/issues/470)

+ 1 - 1
README.md

@@ -58,7 +58,7 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
 * [AV1 codec support](https://github.com/bromite/bromite/wiki/AV1-support)
 * [AV1 codec support](https://github.com/bromite/bromite/wiki/AV1-support)
 * [dav1d](https://code.videolan.org/videolan/dav1d) decoder enabled by default
 * [dav1d](https://code.videolan.org/videolan/dav1d) decoder enabled by default
 * built with official speed optimizations
 * built with official speed optimizations
-* increase number of autocomplete matches
+* increase number of autocomplete matches from 5 to 10
 * allow changing default download storage location
 * allow changing default download storage location
 * do not ignore save prompt for users without SD cards
 * do not ignore save prompt for users without SD cards
 * disable articles and increase number of icons on new tab page
 * disable articles and increase number of icons on new tab page

+ 0 - 1
build/GN_ARGS

@@ -28,7 +28,6 @@ is_debug=false
 is_official_build=true
 is_official_build=true
 rtc_build_examples=false
 rtc_build_examples=false
 safe_browsing_mode=0
 safe_browsing_mode=0
-strip_absolute_paths_from_debug_symbols=true
 symbol_level=1
 symbol_level=1
 target_os="android"
 target_os="android"
 use_debug_fission=true
 use_debug_fission=true

+ 1 - 9
build/bromite_patches_list.txt

@@ -29,16 +29,11 @@ ungoogled-chromium-Disable-GCM.patch
 ungoogled-chromium-Disable-Gaia.patch
 ungoogled-chromium-Disable-Gaia.patch
 ungoogled-chromium-Disable-domain-reliability.patch
 ungoogled-chromium-Disable-domain-reliability.patch
 ungoogled-chromium-Disable-Network-Time-Tracker.patch
 ungoogled-chromium-Disable-Network-Time-Tracker.patch
-ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-Google.patch
-safe_browsing-disable-incident-reporting.patch
-safe_browsing-disable-reporting-of-safebrowsing-override.patch
-safe_browsing-disable-cookie-transmission.patch
 Disable-safe-browsing.patch
 Disable-safe-browsing.patch
 Skip-the-first-run-and-metrics.patch
 Skip-the-first-run-and-metrics.patch
 Disable-all-promo-dialogs.patch
 Disable-all-promo-dialogs.patch
 Disable-sync-services-menu-entry.patch
 Disable-sync-services-menu-entry.patch
 Remove-signin-and-data-saver-integrations.patch
 Remove-signin-and-data-saver-integrations.patch
-Remove-background-sync-and-translate-menu-options.patch
 Hide-passwords-manager-link.patch
 Hide-passwords-manager-link.patch
 Disable-Omaha-update-checks.patch
 Disable-Omaha-update-checks.patch
 Disable-update-scheduler.patch
 Disable-update-scheduler.patch
@@ -106,15 +101,12 @@ Disable-previews-by-default.patch
 Use-4-tile-rows-never-show-logo.patch
 Use-4-tile-rows-never-show-logo.patch
 Disable-metrics-collection-for-NTP-tiles.patch
 Disable-metrics-collection-for-NTP-tiles.patch
 Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
 Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
-Use-64-bit-WebView-processes.patch
 Add-option-to-use-home-page-as-NTP.patch
 Add-option-to-use-home-page-as-NTP.patch
-Enable-night-mode-menu-entry-by-default.patch
 Disable-dynamic-module-loading.patch
 Disable-dynamic-module-loading.patch
 prefs-disable-signinallowed-by-default.patch
 prefs-disable-signinallowed-by-default.patch
 prefs-always-prompt-for-download-directory-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
 Disable-offline-pages-in-the-downloads-home-to-be-opened-in-CCT-by-default.patch
 Enable-changing-default-downloads-storage-location-by-default.patch
 Enable-changing-default-downloads-storage-location-by-default.patch
-Enable-download-rename-option-by-default.patch
 disable-payment-support-by-default.patch
 disable-payment-support-by-default.patch
 disable-background-sync-by-default.patch
 disable-background-sync-by-default.patch
 disable-sensors-access-site-setting-by-default.patch
 disable-sensors-access-site-setting-by-default.patch
@@ -139,9 +131,9 @@ Disable-password-reuse-detection-on-android.patch
 Allow-building-without-feed-support.patch
 Allow-building-without-feed-support.patch
 Disable-addresses-autofill-by-default.patch
 Disable-addresses-autofill-by-default.patch
 Always-show-site-settings-for-cookies-javascript-and-ads.patch
 Always-show-site-settings-for-cookies-javascript-and-ads.patch
-Automated-domain-substitution.patch
 Do-not-enable-QUIC-by-default.patch
 Do-not-enable-QUIC-by-default.patch
 Restore-enable-horizontal-tab-switcher-flag.patch
 Restore-enable-horizontal-tab-switcher-flag.patch
 Use-a-minimum-DoH-timeout-of-400ms.patch
 Use-a-minimum-DoH-timeout-of-400ms.patch
 Disable-DRM-media-origin-IDs-preprovisioning.patch
 Disable-DRM-media-origin-IDs-preprovisioning.patch
 Disable-smart-selection-by-default.patch
 Disable-smart-selection-by-default.patch
+Automated-domain-substitution.patch

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

@@ -25,7 +25,7 @@ Report AV1 as playable on Android
 diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
 diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
 --- a/media/base/mime_util_internal.cc
 --- a/media/base/mime_util_internal.cc
 +++ b/media/base/mime_util_internal.cc
 +++ b/media/base/mime_util_internal.cc
-@@ -564,9 +564,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
+@@ -560,9 +560,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
      case THEORA:
      case THEORA:
        return false;
        return false;
  
  

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

@@ -36,7 +36,7 @@ Offer auto-complete for the proxy page URL.
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -78,6 +78,9 @@
+@@ -77,6 +77,9 @@
      <integer name="list_item_level_selected">1</integer>
      <integer name="list_item_level_selected">1</integer>
      <integer name="list_item_level_incognito">2</integer>
      <integer name="list_item_level_incognito">2</integer>
  
  
@@ -53,17 +53,17 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
      xmlns:app="http://schemas.android.com/apk/res-auto">
  
  
-+    <org.chromium.chrome.browser.preferences.HyperlinkPreference
++    <org.chromium.chrome.browser.settings.HyperlinkPreference
 +        android:key="proxy"
 +        android:key="proxy"
 +        android:title="@string/proxy_title"
 +        android:title="@string/proxy_title"
 +        app:url="@string/proxy_url" />
 +        app:url="@string/proxy_url" />
-     <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+     <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
          android:key="search_suggestions"
          android:key="search_suggestions"
          android:title="@string/search_suggestions_title"
          android:title="@string/search_suggestions_title"
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 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
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -256,6 +256,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -257,6 +257,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<base::string16> builtins_to_provide;
    std::vector<base::string16> builtins_to_provide;
    builtins_to_provide.push_back(
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
        base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -202,6 +202,12 @@
+@@ -148,6 +148,12 @@
          <include name="IDR_HANGOUT_SERVICES_MANIFEST" file="resources\hangout_services\manifest.json" type="BINDATA" />
          <include name="IDR_HANGOUT_SERVICES_MANIFEST" file="resources\hangout_services\manifest.json" type="BINDATA" />
        </if>
        </if>
  
  
@@ -86,8 +86,8 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
 +      </if>
 +      </if>
 +
 +
        <!-- App Management. -->
        <!-- App Management. -->
-       <if expr="not is_android">
-         <include name="IDR_APP_MANAGEMENT_BITMAP_MOJO_LITE_JS" file="${root_gen_dir}\skia\public\mojom\bitmap.mojom-lite.js" use_base_dir="false" type="BINDATA" />
+       <if expr="chromeos">
+         <include name="IDR_APP_MANAGEMENT_BITMAP_MOJO_LITE_JS" file="${root_gen_dir}\skia\public\mojom\bitmap.mojom-lite.js" compress="gzip" use_base_dir="false" type="BINDATA" />
 diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
 diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
 --- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
 --- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
 +++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
 +++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
@@ -509,7 +509,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -263,6 +263,8 @@ jumbo_static_library("ui") {
+@@ -260,6 +260,8 @@ jumbo_static_library("ui") {
      "webui/metrics_handler.h",
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
      "webui/net_export_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/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -376,6 +377,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -400,6 +401,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
      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
 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
-@@ -182,6 +182,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
+@@ -184,6 +184,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
  const char kChromeUINativeScheme[] = "chrome-native";
  const char kChromeUINativeScheme[] = "chrome-native";
  const char kChromeUIOfflineInternalsHost[] = "offline-internals";
  const char kChromeUIOfflineInternalsHost[] = "offline-internals";
  const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
  const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
@@ -988,7 +988,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
  const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
  const char kChromeUIWebApksHost[] = "webapks";
  const char kChromeUIWebApksHost[] = "webapks";
  #endif
  #endif
-@@ -461,6 +463,7 @@ bool IsOSSettingsSubPage(const std::string& sub_page) {
+@@ -467,6 +469,7 @@ bool IsOSSettingsSubPage(const std::string& sub_page) {
        kResetSubPage,
        kResetSubPage,
        kSmartLockSettingsSubPage,
        kSmartLockSettingsSubPage,
        kSmbSharesSubPage,
        kSmbSharesSubPage,
@@ -996,7 +996,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
        kStorageSubPage,
        kStorageSubPage,
        kStylusSubPage,
        kStylusSubPage,
        kSwitchAccessSubPage,
        kSwitchAccessSubPage,
-@@ -561,6 +564,7 @@ const char* const kChromeHostURLs[] = {
+@@ -568,6 +571,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
      kChromeUIAppLauncherPageHost,

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

@@ -8,14 +8,15 @@ Make sure initial incognito status is correctly recognized.
 ---
 ---
  chrome/android/chrome_java_sources.gni        |  1 +
  chrome/android/chrome_java_sources.gni        |  1 +
  .../java/res/xml/privacy_preferences.xml      |  5 ++
  .../java/res/xml/privacy_preferences.xml      |  5 ++
- .../AlwaysIncognitoLinkInterceptor.java       | 73 +++++++++++++++++++
+ .../AlwaysIncognitoLinkInterceptor.java       | 74 +++++++++++++++++++
  .../chrome/browser/ChromeActivity.java        |  4 +
  .../chrome/browser/ChromeActivity.java        |  4 +
  .../chrome/browser/ChromeTabbedActivity.java  |  6 +-
  .../chrome/browser/ChromeTabbedActivity.java  |  6 +-
- .../browser/appmenu/AppMenuHandlerImpl.java   |  9 +++
+ .../AppMenuPropertiesDelegateImpl.java        |  6 ++
  .../ChromeContextMenuPopulator.java           |  9 ++-
  .../ChromeContextMenuPopulator.java           |  9 ++-
  .../browser/tabmodel/ChromeTabCreator.java    | 20 ++++-
  .../browser/tabmodel/ChromeTabCreator.java    | 20 ++++-
- .../java/strings/android_chrome_strings.grd   |  8 ++
- 9 files changed, 131 insertions(+), 4 deletions(-)
+ .../ui/appmenu/AppMenuHandlerImpl.java        |  1 +
+ .../strings/android_chrome_strings.grd        |  8 ++
+ 10 files changed, 130 insertions(+), 4 deletions(-)
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 
 
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
@@ -36,19 +37,19 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
          android:title="@string/preload_pages_title"
          android:title="@string/preload_pages_title"
          android:summary="@string/preload_pages_summary"
          android:summary="@string/preload_pages_summary"
          android:persistent="false" />
          android:persistent="false" />
-+    <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
++    <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
 +        android:key="always_incognito"
 +        android:key="always_incognito"
 +        android:title="@string/always_incognito_title"
 +        android:title="@string/always_incognito_title"
 +        android:summary="@string/always_incognito_summary"
 +        android:summary="@string/always_incognito_summary"
 +        android:defaultValue="false" />
 +        android:defaultValue="false" />
      <Preference
      <Preference
-         android:fragment="org.chromium.chrome.browser.preferences.privacy.DoNotTrackPreference"
+         android:fragment="org.chromium.chrome.browser.settings.privacy.DoNotTrackPreference"
          android:key="do_not_track"
          android:key="do_not_track"
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
-@@ -0,0 +1,73 @@
+@@ -0,0 +1,74 @@
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -59,6 +60,7 @@ new file mode 100644
 +
 +
 +import org.chromium.chrome.browser.tab.EmptyTabObserver;
 +import org.chromium.chrome.browser.tab.EmptyTabObserver;
 +import org.chromium.chrome.browser.tab.Tab;
 +import org.chromium.chrome.browser.tab.Tab;
++import org.chromium.chrome.browser.tab.TabImpl;
 +import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
 +import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
 +import org.chromium.chrome.browser.tabmodel.TabLaunchType;
 +import org.chromium.chrome.browser.tabmodel.TabLaunchType;
 +import org.chromium.chrome.browser.tabmodel.TabModel;
 +import org.chromium.chrome.browser.tabmodel.TabModel;
@@ -112,7 +114,7 @@ new file mode 100644
 +            return;
 +            return;
 +        }
 +        }
 +
 +
-+        tab.getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), TabLaunchType.FROM_LINK, tab);
++        ((TabImpl) tab).getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), TabLaunchType.FROM_LINK, tab);
 +
 +
 +        if ((url.equals(lastUrl)) || (!tab.canGoBack())) {
 +        if ((url.equals(lastUrl)) || (!tab.canGoBack())) {
 +            // this call was triggered by a reload
 +            // this call was triggered by a reload
@@ -125,15 +127,15 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -55,6 +55,7 @@ import org.chromium.base.annotations.UsedByReflection;
+@@ -54,6 +54,7 @@ import org.chromium.base.annotations.UsedByReflection;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.chrome.R;
  import org.chromium.chrome.R;
 +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
 +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
- import org.chromium.chrome.browser.appmenu.AppMenuBlocker;
-@@ -1706,6 +1707,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+ import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegateImpl;
+@@ -1680,6 +1681,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
                      "Attempting to access TabCreator before initialization");
          }
          }
@@ -146,7 +148,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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -49,6 +49,7 @@ import org.chromium.base.metrics.RecordHistogram;
+@@ -50,6 +50,7 @@ import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.task.PostTask;
  import org.chromium.base.task.PostTask;
  import org.chromium.chrome.R;
  import org.chromium.chrome.R;
@@ -154,7 +156,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.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
  import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
-@@ -1652,8 +1653,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
+@@ -1609,8 +1610,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
          Bundle savedInstanceState = getSavedInstanceState();
          Bundle savedInstanceState = getSavedInstanceState();
  
  
          // We determine the model as soon as possible so every systems get initialized coherently.
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -166,39 +168,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
          int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
          int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
  
  
          mTabModelSelectorImpl = (TabModelSelectorImpl)
          mTabModelSelectorImpl = (TabModelSelectorImpl)
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
-@@ -20,8 +20,10 @@ import android.widget.PopupMenu;
- 
- import org.chromium.base.Callback;
- import org.chromium.base.VisibleForTesting;
-+import org.chromium.base.ContextUtils;
- import org.chromium.base.metrics.RecordUserAction;
- import org.chromium.chrome.R;
-+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
- import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
- import org.chromium.chrome.browser.lifecycle.ConfigurationChangedObserver;
- import org.chromium.chrome.browser.lifecycle.StartStopWithNativeObserver;
-@@ -208,6 +210,13 @@ class AppMenuHandlerImpl
-         if (mDelegate.shouldShowHeader(appRect.height())) {
-             headerResourceId = mDelegate.getHeaderResourceId();
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
+@@ -289,6 +289,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+                             ChromeSwitches.ENABLE_VR_SHELL_DEV));
          }
          }
-+
-+        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
-+            final MenuItem newTabOption = mAppMenu.getMenu().findItem(R.id.new_tab_menu_id);
+ 
++        if (ContextUtils.getAppSharedPreferences().getBoolean("always_incognito", false)) {
++            final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id);
 +            if (newTabOption != null)
 +            if (newTabOption != null)
 +                newTabOption.setVisible(false);
 +                newTabOption.setVisible(false);
 +        }
 +        }
 +
 +
-         mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
-                 footerResourceId, headerResourceId, mHighlightMenuId, mCircleHighlight,
-                 showFromBottom);
+         // We have to iterate all menu items since same menu item ID may be associated with more
+         // than one menu items.
+         boolean isMenuGroupTabsVisible = FeatureUtilities.isTabGroupsAndroidUiImprovementsEnabled()
 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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
-@@ -16,7 +16,9 @@ import androidx.annotation.IntDef;
- 
+@@ -17,7 +17,9 @@ import androidx.annotation.IntDef;
+ import org.chromium.base.Supplier;
  import org.chromium.base.library_loader.LibraryProcessType;
  import org.chromium.base.library_loader.LibraryProcessType;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordHistogram;
 +import org.chromium.base.ContextUtils;
 +import org.chromium.base.ContextUtils;
@@ -207,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabPanel;
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabPanel;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
-@@ -301,7 +303,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -308,7 +310,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
              if (FirstRunStatus.getFirstRunFlowComplete() && mMode == ContextMenuMode.NORMAL
              if (FirstRunStatus.getFirstRunFlowComplete() && mMode == ContextMenuMode.NORMAL
                      && !isEmptyUrl(params.getUrl())
                      && !isEmptyUrl(params.getUrl())
                      && UrlUtilities.isAcceptedScheme(params.getUrl())) {
                      && UrlUtilities.isAcceptedScheme(params.getUrl())) {
@@ -224,10 +214,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
 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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
-@@ -9,8 +9,10 @@ import android.text.TextUtils;
- 
+@@ -10,8 +10,10 @@ import android.text.TextUtils;
  import androidx.annotation.Nullable;
  import androidx.annotation.Nullable;
  
  
+ import org.chromium.base.Supplier;
 +import org.chromium.base.ContextUtils;
 +import org.chromium.base.ContextUtils;
  import org.chromium.base.SysUtils;
  import org.chromium.base.SysUtils;
  import org.chromium.base.TraceEvent;
  import org.chromium.base.TraceEvent;
@@ -235,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  import org.chromium.chrome.browser.ChromeActivity;
  import org.chromium.chrome.browser.ChromeActivity;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.ServiceTabLauncher;
  import org.chromium.chrome.browser.ServiceTabLauncher;
-@@ -19,6 +21,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
+@@ -20,6 +22,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.TabAssociatedApp;
  import org.chromium.chrome.browser.tab.TabAssociatedApp;
  import org.chromium.chrome.browser.tab.TabBuilder;
  import org.chromium.chrome.browser.tab.TabBuilder;
@@ -243,7 +233,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  import org.chromium.chrome.browser.tab.TabDelegateFactory;
  import org.chromium.chrome.browser.tab.TabDelegateFactory;
  import org.chromium.chrome.browser.tab.TabParentIntent;
  import org.chromium.chrome.browser.tab.TabParentIntent;
  import org.chromium.chrome.browser.tab.TabRedirectHandler;
  import org.chromium.chrome.browser.tab.TabRedirectHandler;
-@@ -40,6 +43,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -41,6 +44,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
      private final ChromeActivity mActivity;
      private final ChromeActivity mActivity;
      private final StartupTabPreloader mStartupTabPreloader;
      private final StartupTabPreloader mStartupTabPreloader;
      private final boolean mIncognito;
      private final boolean mIncognito;
@@ -251,9 +241,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
  
      private WindowAndroid mNativeWindow;
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
      private TabModel mTabModel;
-@@ -51,6 +55,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
-         mStartupTabPreloader = startupTabPreloader;
+@@ -55,6 +59,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          mNativeWindow = nativeWindow;
          mNativeWindow = nativeWindow;
+         mTabDelegateFactorySupplier = tabDelegateFactory;
          mIncognito = incognito;
          mIncognito = incognito;
 +        if (!mIncognito)
 +        if (!mIncognito)
 +            mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
 +            mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
@@ -262,7 +252,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
      }
      }
  
  
      @Override
      @Override
-@@ -186,6 +194,9 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -190,6 +198,9 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                          tab.getWebContents());
                          tab.getWebContents());
              }
              }
  
  
@@ -272,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type);
              mTabModel.addTab(tab, position, type);
              return tab;
              return tab;
          } finally {
          } finally {
-@@ -217,6 +228,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -221,6 +232,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                            .setDelegateFactory(delegateFactory)
                            .setDelegateFactory(delegateFactory)
                            .setInitiallyHidden(!openInForeground)
                            .setInitiallyHidden(!openInForeground)
                            .build();
                            .build();
@@ -283,7 +273,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type);
          mTabModel.addTab(tab, position, type);
          return true;
          return true;
      }
      }
-@@ -259,7 +274,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -263,7 +278,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
       */
       */
      public Tab launchUrlFromExternalApp(String url, String referer, String headers,
      public Tab launchUrlFromExternalApp(String url, String referer, String headers,
              String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
              String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
@@ -291,7 +281,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
  
          // If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
          // If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
-@@ -326,6 +340,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -330,6 +344,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                            .setTabState(state)
                            .setTabState(state)
                            .build();
                            .build();
          assert state.isIncognito() == mIncognito;
          assert state.isIncognito() == mIncognito;
@@ -302,10 +292,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
          mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
          return tab;
          return tab;
      }
      }
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -669,6 +669,14 @@ CHAR-LIMIT guidelines:
+diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
+--- a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
++++ b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
+@@ -212,6 +212,7 @@ class AppMenuHandlerImpl
+         if (mDelegate.shouldShowHeader(appRect.height())) {
+             headerResourceId = mDelegate.getHeaderResourceId();
+         }
++
+         mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
+                 footerResourceId, headerResourceId, mHighlightMenuId, mCircleHighlight,
+                 showFromBottom, mDelegate.getCustomViewBinders());
+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
+@@ -699,6 +699,14 @@ CHAR-LIMIT guidelines:
          Search and site suggestions disabled
          Search and site suggestions disabled
        </message>
        </message>
  
  

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

@@ -14,21 +14,21 @@ Completely remove contacts picker permission from the file dialog
  .../browser/bookmarks/BookmarkDelegate.java   |  10 +
  .../browser/bookmarks/BookmarkDelegate.java   |  10 +
  .../browser/bookmarks/BookmarkManager.java    |  20 ++
  .../browser/bookmarks/BookmarkManager.java    |  20 ++
  .../browser/bookmarks/BookmarkPage.java       |   1 +
  .../browser/bookmarks/BookmarkPage.java       |   1 +
- .../java/strings/android_chrome_strings.grd   |   6 +
  chrome/browser/BUILD.gn                       |   8 +-
  chrome/browser/BUILD.gn                       |   8 +-
- .../android/bookmarks/bookmark_bridge.cc      | 215 ++++++++++++++++++
+ .../android/bookmarks/bookmark_bridge.cc      | 217 ++++++++++++++++++
  .../android/bookmarks/bookmark_bridge.h       |  20 +-
  .../android/bookmarks/bookmark_bridge.h       |  20 +-
  chrome/browser/importer/profile_writer.cc     |  12 +
  chrome/browser/importer/profile_writer.cc     |  12 +
  chrome/browser/importer/profile_writer.h      |   6 +
  chrome/browser/importer/profile_writer.h      |   6 +
+ .../strings/android_chrome_strings.grd        |   6 +
  chrome/common/BUILD.gn                        |   3 +
  chrome/common/BUILD.gn                        |   3 +
  chrome/utility/BUILD.gn                       |   7 +-
  chrome/utility/BUILD.gn                       |   7 +-
  .../utility/importer/bookmark_html_reader.cc  |  27 ++-
  .../utility/importer/bookmark_html_reader.cc  |  27 ++-
- .../utility/importer/bookmark_html_reader.h   |   9 +
+ .../utility/importer/bookmark_html_reader.h   |   8 +
  .../chromium/ui/base/SelectFileDialog.java    |  18 +-
  .../chromium/ui/base/SelectFileDialog.java    |  18 +-
  ui/shell_dialogs/select_file_dialog.h         |   2 +
  ui/shell_dialogs/select_file_dialog.h         |   2 +
  .../select_file_dialog_android.cc             |   6 +
  .../select_file_dialog_android.cc             |   6 +
  ui/shell_dialogs/select_file_dialog_android.h |   2 +
  ui/shell_dialogs/select_file_dialog_android.h |   2 +
- 22 files changed, 447 insertions(+), 14 deletions(-)
+ 22 files changed, 448 insertions(+), 14 deletions(-)
 
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
@@ -111,7 +111,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/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
-@@ -12,6 +12,7 @@ import org.chromium.base.VisibleForTesting;
+@@ -13,6 +13,7 @@ import androidx.annotation.VisibleForTesting;
  import org.chromium.chrome.browser.SnackbarActivity;
  import org.chromium.chrome.browser.SnackbarActivity;
  import org.chromium.chrome.browser.util.UrlConstants;
  import org.chromium.chrome.browser.util.UrlConstants;
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkId;
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  
  /**
  /**
   * The activity that displays the bookmark UI on the phone. It keeps a {@link BookmarkManager}
   * The activity that displays the bookmark UI on the phone. It keeps a {@link BookmarkManager}
-@@ -21,6 +22,7 @@ import org.chromium.components.bookmarks.BookmarkId;
+@@ -22,6 +23,7 @@ import org.chromium.components.bookmarks.BookmarkId;
  public class BookmarkActivity extends SnackbarActivity {
  public class BookmarkActivity extends SnackbarActivity {
  
  
      private BookmarkManager mBookmarkManager;
      private BookmarkManager mBookmarkManager;
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
      static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
      public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
      public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
  
  
-@@ -32,6 +34,18 @@ public class BookmarkActivity extends SnackbarActivity {
+@@ -33,6 +35,18 @@ public class BookmarkActivity extends SnackbarActivity {
          if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
          if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
          mBookmarkManager.updateForUrl(url);
          mBookmarkManager.updateForUrl(url);
          setContentView(mBookmarkManager.getView());
          setContentView(mBookmarkManager.getView());
@@ -146,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
      }
  
  
      @Override
      @Override
-@@ -48,6 +62,7 @@ public class BookmarkActivity extends SnackbarActivity {
+@@ -49,6 +63,7 @@ public class BookmarkActivity extends SnackbarActivity {
      @Override
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          super.onActivityResult(requestCode, resultCode, data);
@@ -169,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import android.support.annotation.Nullable;
  import android.support.annotation.Nullable;
  import android.text.TextUtils;
  import android.text.TextUtils;
  import android.util.Pair;
  import android.util.Pair;
-@@ -23,6 +27,11 @@ import org.chromium.components.bookmarks.BookmarkType;
+@@ -25,6 +29,11 @@ import org.chromium.components.bookmarks.BookmarkType;
  import org.chromium.components.url_formatter.UrlFormatter;
  import org.chromium.components.url_formatter.UrlFormatter;
  import org.chromium.content_public.browser.WebContents;
  import org.chromium.content_public.browser.WebContents;
  
  
@@ -181,7 +181,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import java.util.ArrayList;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.List;
  
  
-@@ -553,6 +562,24 @@ public class BookmarkBridge {
+@@ -572,6 +581,24 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
      }
      }
  
  
@@ -206,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
      /**
       * Synchronously gets a list of bookmarks that match the specified search query.
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
       * @param query Keyword used for searching bookmarks.
-@@ -914,6 +941,24 @@ public class BookmarkBridge {
+@@ -952,6 +979,24 @@ public class BookmarkBridge {
          depthList.add(depth);
          depthList.add(depth);
      }
      }
  
  
@@ -231,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
      private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
          for (int i = 0; i < left.length; i++) {
          for (int i = 0; i < left.length; i++) {
-@@ -982,6 +1027,8 @@ public class BookmarkBridge {
+@@ -1020,6 +1065,8 @@ public class BookmarkBridge {
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
                  boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
                  boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
@@ -263,7 +263,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/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
-@@ -23,6 +23,7 @@ import org.chromium.chrome.R;
+@@ -24,6 +24,7 @@ import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
@@ -271,7 +271,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.favicon.LargeIconBridge;
  import org.chromium.chrome.browser.favicon.LargeIconBridge;
  import org.chromium.chrome.browser.gesturenav.HistoryNavigationDelegate;
  import org.chromium.chrome.browser.gesturenav.HistoryNavigationDelegate;
  import org.chromium.chrome.browser.native_page.BasicNativePage;
  import org.chromium.chrome.browser.native_page.BasicNativePage;
-@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
+@@ -36,6 +37,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
  import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
  import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
  import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
  import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkId;
@@ -279,7 +279,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  
  import java.util.Stack;
  import java.util.Stack;
  
  
-@@ -59,6 +61,7 @@ public class BookmarkManager
+@@ -60,6 +62,7 @@ public class BookmarkManager
      private Activity mActivity;
      private Activity mActivity;
      private ViewGroup mMainView;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
      private BookmarkModel mBookmarkModel;
@@ -287,7 +287,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private BookmarkUndoController mUndoController;
      private BookmarkUndoController mUndoController;
      private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
      private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
      private BasicNativePage mNativePage;
      private BasicNativePage mNativePage;
-@@ -374,6 +377,13 @@ public class BookmarkManager
+@@ -375,6 +378,13 @@ public class BookmarkManager
          mSelectableListLayout.setHistoryNavigationDelegate(delegate);
          mSelectableListLayout.setHistoryNavigationDelegate(delegate);
      }
      }
  
  
@@ -301,7 +301,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
      /**
       * @return Current URL representing the UI state of bookmark manager. If no state has been shown
       * @return Current URL representing the UI state of bookmark manager. If no state has been shown
       *         yet in this session, on phone return last used state stored in preference; on tablet
       *         yet in this session, on phone return last used state stored in preference; on tablet
-@@ -547,6 +557,16 @@ public class BookmarkManager
+@@ -548,6 +558,16 @@ public class BookmarkManager
          }
          }
      }
      }
  
  
@@ -321,7 +321,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/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
-@@ -35,6 +35,7 @@ public class BookmarkPage extends BasicNativePage {
+@@ -36,6 +36,7 @@ public class BookmarkPage extends BasicNativePage {
          mManager = new BookmarkManager(
          mManager = new BookmarkManager(
                  activity, false, ((SnackbarManageable) activity).getSnackbarManager());
                  activity, false, ((SnackbarManageable) activity).getSnackbarManager());
          mManager.setBasicNativePage(this);
          mManager.setBasicNativePage(this);
@@ -329,26 +329,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          mManager.setHistoryNavigationDelegate(host.createHistoryNavigationDelegate());
          mManager.setHistoryNavigationDelegate(host.createHistoryNavigationDelegate());
          mTitle = activity.getString(R.string.bookmarks);
          mTitle = activity.getString(R.string.bookmarks);
      }
      }
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -230,6 +230,12 @@ CHAR-LIMIT guidelines:
-       <message name="IDS_SEARCH" desc="The label for a search button.">
-         Search
-       </message>
-+      <message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
-+        Import
-+      </message>
-+      <message name="IDS_EXPORT_BOOKMARKS" desc="The label for an export bookmarks button.">
-+        Export
-+      </message>
-       <message name="IDS_SHOW_INFO" desc="The label for a info button to show info.">
-         Show Info
-       </message>
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -163,6 +163,10 @@ jumbo_static_library("browser") {
+@@ -170,6 +170,10 @@ jumbo_static_library("browser") {
      "bitmap_fetcher/bitmap_fetcher_service.h",
      "bitmap_fetcher/bitmap_fetcher_service.h",
      "bitmap_fetcher/bitmap_fetcher_service_factory.cc",
      "bitmap_fetcher/bitmap_fetcher_service_factory.cc",
      "bitmap_fetcher/bitmap_fetcher_service_factory.h",
      "bitmap_fetcher/bitmap_fetcher_service_factory.h",
@@ -359,16 +343,16 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "bookmarks/bookmark_model_factory.cc",
      "bookmarks/bookmark_model_factory.cc",
      "bookmarks/bookmark_model_factory.h",
      "bookmarks/bookmark_model_factory.h",
      "bookmarks/chrome_bookmark_client.cc",
      "bookmarks/chrome_bookmark_client.cc",
-@@ -2953,8 +2957,6 @@ jumbo_static_library("browser") {
-       "badging/badge_manager_factory.h",
-       "banners/app_banner_manager_desktop.cc",
-       "banners/app_banner_manager_desktop.h",
+@@ -3063,8 +3067,6 @@ jumbo_static_library("browser") {
+       "bluetooth/bluetooth_chooser_context.h",
+       "bluetooth/bluetooth_chooser_context_factory.cc",
+       "bluetooth/bluetooth_chooser_context_factory.h",
 -      "bookmarks/bookmark_html_writer.cc",
 -      "bookmarks/bookmark_html_writer.cc",
 -      "bookmarks/bookmark_html_writer.h",
 -      "bookmarks/bookmark_html_writer.h",
        "certificate_viewer.h",
        "certificate_viewer.h",
        "chrome_browser_field_trials_desktop.cc",
        "chrome_browser_field_trials_desktop.cc",
        "chrome_browser_field_trials_desktop.h",
        "chrome_browser_field_trials_desktop.h",
-@@ -3059,8 +3061,6 @@ jumbo_static_library("browser") {
+@@ -3174,8 +3176,6 @@ jumbo_static_library("browser") {
        "importer/importer_uma.h",
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
        "importer/in_process_importer_bridge.h",
@@ -380,7 +364,15 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
-@@ -43,6 +43,21 @@
+@@ -34,6 +34,7 @@
+ #include "components/bookmarks/common/android/bookmark_type.h"
+ #include "components/bookmarks/common/bookmark_pref_names.h"
+ #include "components/bookmarks/managed/managed_bookmark_service.h"
++#include "components/favicon_base/favicon_usage_data.h"
+ #include "components/dom_distiller/core/url_utils.h"
+ #include "components/prefs/pref_service.h"
+ #include "components/query_parser/query_parser.h"
+@@ -43,6 +44,21 @@
  #include "content/public/browser/browser_thread.h"
  #include "content/public/browser/browser_thread.h"
  #include "content/public/browser/web_contents.h"
  #include "content/public/browser/web_contents.h"
  
  
@@ -402,7 +394,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  using base::android::AttachCurrentThread;
  using base::android::AttachCurrentThread;
  using base::android::ConvertUTF8ToJavaString;
  using base::android::ConvertUTF8ToJavaString;
  using base::android::ConvertUTF16ToJavaString;
  using base::android::ConvertUTF16ToJavaString;
-@@ -60,6 +75,56 @@ using bookmarks::BookmarkPermanentNode;
+@@ -60,6 +76,56 @@ using bookmarks::BookmarkPermanentNode;
  using bookmarks::BookmarkType;
  using bookmarks::BookmarkType;
  using content::BrowserThread;
  using content::BrowserThread;
  
  
@@ -459,7 +451,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  namespace {
  namespace {
  
  
  const int kInvalidId = -1;
  const int kInvalidId = -1;
-@@ -138,6 +203,10 @@ BookmarkBridge::~BookmarkBridge() {
+@@ -138,6 +204,10 @@ BookmarkBridge::~BookmarkBridge() {
    bookmark_model_->RemoveObserver(this);
    bookmark_model_->RemoveObserver(this);
    if (partner_bookmarks_shim_)
    if (partner_bookmarks_shim_)
      partner_bookmarks_shim_->RemoveObserver(this);
      partner_bookmarks_shim_->RemoveObserver(this);
@@ -470,7 +462,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  }
  }
  
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -524,6 +593,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -542,6 +612,153 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
    return count;
  }
  }
  
  
@@ -585,14 +577,15 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
 +  // the following import logic comes from BookmarksFileImporter class
 +  // the following import logic comes from BookmarksFileImporter class
 +  std::vector<ImportedBookmarkEntry> bookmarks;
 +  std::vector<ImportedBookmarkEntry> bookmarks;
 +  std::vector<importer::SearchEngineInfo> search_engines;
 +  std::vector<importer::SearchEngineInfo> search_engines;
++  favicon_base::FaviconUsageDataList favicons;
 +
 +
 +  bookmark_html_reader::ImportBookmarksFile(
 +  bookmark_html_reader::ImportBookmarksFile(
 +      base::Callback<bool(void)>(),
 +      base::Callback<bool(void)>(),
-+      base::Bind(internal::CanImportURL),
++      base::BindRepeating(internal::CanImportURL),
 +      contents,
 +      contents,
 +      &bookmarks,
 +      &bookmarks,
 +      &search_engines,
 +      &search_engines,
-+      nullptr);
++      &favicons);
 +
 +
 +  auto *writer = new ProfileWriter(profile_);
 +  auto *writer = new ProfileWriter(profile_);
 +
 +
@@ -745,10 +738,26 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
    virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons);
    virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons);
  
  
    // Adds the TemplateURLs in |template_urls| to the local store.
    // Adds the TemplateURLs in |template_urls| to the local store.
+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
+@@ -257,6 +257,12 @@ CHAR-LIMIT guidelines:
+       <message name="IDS_SEARCH" desc="The label for a search button.">
+         Search
+       </message>
++      <message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
++        Import
++      </message>
++      <message name="IDS_EXPORT_BOOKMARKS" desc="The label for an export bookmarks button.">
++        Export
++      </message>
+       <message name="IDS_SHOW_INFO" desc="The label for a info button to show info.">
+         Show Info
+       </message>
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -445,6 +445,9 @@ static_library("common") {
+@@ -426,6 +426,9 @@ static_library("common") {
      sources += [
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
        "media/chrome_media_drm_bridge_client.h",
@@ -761,7 +770,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
 diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
 --- a/chrome/utility/BUILD.gn
 --- a/chrome/utility/BUILD.gn
 +++ b/chrome/utility/BUILD.gn
 +++ b/chrome/utility/BUILD.gn
-@@ -66,8 +66,6 @@ static_library("utility") {
+@@ -70,8 +70,6 @@ static_library("utility") {
  
  
    if (!is_android) {
    if (!is_android) {
      sources += [
      sources += [
@@ -770,7 +779,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/bookmarks_file_importer.h",
        "importer/edge_database_reader_win.cc",
        "importer/edge_database_reader_win.cc",
-@@ -164,6 +162,11 @@ static_library("utility") {
+@@ -167,6 +165,11 @@ static_library("utility") {
      }
      }
    }
    }
  
  
@@ -811,21 +820,39 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im
  
  
  }  // namespace
  }  // namespace
  
  
-@@ -108,12 +112,10 @@ static std::string stripDt(const std::string& lineDt) {
+@@ -106,14 +110,28 @@ static std::string stripDt(const std::string& lineDt) {
+ }
+ 
  void ImportBookmarksFile(
  void ImportBookmarksFile(
-     const base::Callback<bool(void)>& cancellation_callback,
-     const base::Callback<bool(const GURL&)>& valid_url_callback,
--    const base::FilePath& file_path,
-+    const std::string& content,
+-    base::RepeatingCallback<bool(void)> cancellation_callback,
+-    base::RepeatingCallback<bool(const GURL&)> valid_url_callback,
++    const base::RepeatingCallback<bool(void)> cancellation_callback,
++    const base::RepeatingCallback<bool(const GURL&)> valid_url_callback,
+     const base::FilePath& file_path,
      std::vector<ImportedBookmarkEntry>* bookmarks,
      std::vector<ImportedBookmarkEntry>* bookmarks,
      std::vector<importer::SearchEngineInfo>* search_engines,
      std::vector<importer::SearchEngineInfo>* search_engines,
      favicon_base::FaviconUsageDataList* favicons) {
      favicon_base::FaviconUsageDataList* favicons) {
--  std::string content;
+   std::string content;
 -  base::ReadFileToString(file_path, &content);
 -  base::ReadFileToString(file_path, &content);
++  if (!base::ReadFileToString(file_path, &content)) {
++     LOG(ERROR) << "Could not directly read bookmarks import file";
++     return;
++  }
++
++  ImportBookmarksFile(cancellation_callback, valid_url_callback, content, bookmarks, search_engines, favicons);
++}
++
++void ImportBookmarksFile(
++    base::RepeatingCallback<bool(void)> cancellation_callback,
++    base::RepeatingCallback<bool(const GURL&)> valid_url_callback,
++    const std::string& content,
++    std::vector<ImportedBookmarkEntry>* bookmarks,
++    std::vector<importer::SearchEngineInfo>* search_engines,
++    favicon_base::FaviconUsageDataList* favicons) {
    std::vector<std::string> lines = base::SplitString(
    std::vector<std::string> lines = base::SplitString(
        content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
        content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
  
  
-@@ -126,6 +128,7 @@ void ImportBookmarksFile(
+@@ -126,6 +144,7 @@ void ImportBookmarksFile(
    std::vector<base::string16> path;
    std::vector<base::string16> path;
    size_t toolbar_folder_index = 0;
    size_t toolbar_folder_index = 0;
    std::string charset = "UTF-8";  // If no charset is specified, assume utf-8.
    std::string charset = "UTF-8";  // If no charset is specified, assume utf-8.
@@ -833,7 +860,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im
    for (size_t i = 0;
    for (size_t i = 0;
         i < lines.size() &&
         i < lines.size() &&
             (cancellation_callback.is_null() || !cancellation_callback.Run());
             (cancellation_callback.is_null() || !cancellation_callback.Run());
-@@ -218,10 +221,12 @@ void ImportBookmarksFile(
+@@ -218,10 +237,12 @@ void ImportBookmarksFile(
        }
        }
        bookmarks->push_back(entry);
        bookmarks->push_back(entry);
  
  
@@ -846,44 +873,20 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im
  
  
        continue;
        continue;
      }
      }
-@@ -278,6 +283,22 @@ void ImportBookmarksFile(
-   }
- }
- 
-+void ImportBookmarksFile(
-+    const base::Callback<bool(void)>& cancellation_callback,
-+    const base::Callback<bool(const GURL&)>& valid_url_callback,
-+    const base::FilePath& file_path,
-+    std::vector<ImportedBookmarkEntry>* bookmarks,
-+    std::vector<importer::SearchEngineInfo>* search_engines,
-+    favicon_base::FaviconUsageDataList* favicons) {
-+  std::string content;
-+  if (!base::ReadFileToString(file_path, &content)) {
-+     LOG(ERROR) << "Could not directly read bookmarks import file";
-+     return;
-+  }
-+
-+  ImportBookmarksFile(cancellation_callback, valid_url_callback, content, bookmarks, search_engines, favicons);
-+}
-+
- bool CanImportURLAsSearchEngine(const GURL& url,
-                                 std::string* search_engine_url) {
-   std::string url_spec = url.possibly_invalid_spec();
 diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h
 diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h
 --- a/chrome/utility/importer/bookmark_html_reader.h
 --- a/chrome/utility/importer/bookmark_html_reader.h
 +++ b/chrome/utility/importer/bookmark_html_reader.h
 +++ b/chrome/utility/importer/bookmark_html_reader.h
-@@ -51,6 +51,15 @@ void ImportBookmarksFile(
+@@ -51,6 +51,14 @@ void ImportBookmarksFile(
      std::vector<importer::SearchEngineInfo>* search_engines,
      std::vector<importer::SearchEngineInfo>* search_engines,
      favicon_base::FaviconUsageDataList* favicons);
      favicon_base::FaviconUsageDataList* favicons);
  
  
 +void ImportBookmarksFile(
 +void ImportBookmarksFile(
-+    const base::Callback<bool(void)>& cancellation_callback,
-+    const base::Callback<bool(const GURL&)>& valid_url_callback,
++    const base::RepeatingCallback<bool(void)> cancellation_callback,
++    const base::RepeatingCallback<bool(const GURL&)> valid_url_callback,
 +    const std::string& content,
 +    const std::string& content,
 +    std::vector<ImportedBookmarkEntry>* bookmarks,
 +    std::vector<ImportedBookmarkEntry>* bookmarks,
 +    std::vector<importer::SearchEngineInfo>* search_engines,
 +    std::vector<importer::SearchEngineInfo>* search_engines,
 +    favicon_base::FaviconUsageDataList* favicons);
 +    favicon_base::FaviconUsageDataList* favicons);
-+
 +
 +
  // Returns true if |url| should be imported as a search engine, i.e. because it
  // Returns true if |url| should be imported as a search engine, i.e. because it
  // has replacement terms. Chrome treats such bookmarks as search engines rather
  // has replacement terms. Chrome treats such bookmarks as search engines rather
@@ -891,7 +894,7 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp
 diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
-@@ -34,6 +34,7 @@ import org.chromium.base.task.PostTask;
+@@ -35,6 +35,7 @@ import org.chromium.base.task.PostTask;
  import org.chromium.base.task.TaskTraits;
  import org.chromium.base.task.TaskTraits;
  import org.chromium.ui.PhotoPickerListener;
  import org.chromium.ui.PhotoPickerListener;
  import org.chromium.ui.R;
  import org.chromium.ui.R;
@@ -899,7 +902,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
  import org.chromium.ui.UiUtils;
  import org.chromium.ui.UiUtils;
  
  
  import java.io.File;
  import java.io.File;
-@@ -53,6 +54,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -54,6 +55,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
      private static final String IMAGE_TYPE = "image/";
      private static final String IMAGE_TYPE = "image/";
      private static final String VIDEO_TYPE = "video/";
      private static final String VIDEO_TYPE = "video/";
      private static final String AUDIO_TYPE = "audio/";
      private static final String AUDIO_TYPE = "audio/";
@@ -907,7 +910,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
      private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
      private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
      private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
      private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
      private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
-@@ -131,6 +133,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -132,6 +134,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          mFileTypes = fileTypes;
          mFileTypes = fileTypes;
      }
      }
  
  
@@ -919,7 +922,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      /**
      /**
       * Creates and starts an intent based on the passed fileTypes and capture value.
       * Creates and starts an intent based on the passed fileTypes and capture value.
       * @param fileTypes MIME types requested (i.e. "image/*")
       * @param fileTypes MIME types requested (i.e. "image/*")
-@@ -158,7 +165,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -159,7 +166,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          List<String> missingPermissions = new ArrayList<>();
          List<String> missingPermissions = new ArrayList<>();
          String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
          String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
          boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
          boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
@@ -928,7 +931,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
              if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
              if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
          } else {
          } else {
              if (((mSupportsImageCapture && shouldShowImageTypes())
              if (((mSupportsImageCapture && shouldShowImageTypes())
-@@ -186,7 +193,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -187,7 +194,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
                          }
                          }
  
  
                          // TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
                          // TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
@@ -937,7 +940,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
                              if (permissions.length != requestPermissions.length) {
                              if (permissions.length != requestPermissions.length) {
                                  throw new RuntimeException(
                                  throw new RuntimeException(
                                          String.format("Permissions arrays misaligned: %d != %d",
                                          String.format("Permissions arrays misaligned: %d != %d",
-@@ -200,7 +207,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -201,7 +208,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
                              }
                              }
                          }
                          }
  
  
@@ -946,7 +949,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
                              onFileNotSelected();
                              onFileNotSelected();
                              return;
                              return;
                          }
                          }
-@@ -349,6 +356,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -350,6 +357,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
              }
              }
              if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
              if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
          }
          }
@@ -954,7 +957,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
          return mimeTypes;
          return mimeTypes;
      }
      }
  
  
-@@ -626,6 +634,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -627,6 +635,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          return countAcceptTypesFor(specificType) > 0;
          return countAcceptTypesFor(specificType) > 0;
      }
      }
  
  
@@ -968,7 +971,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
 diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h
 diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h
 --- a/ui/shell_dialogs/select_file_dialog.h
 --- a/ui/shell_dialogs/select_file_dialog.h
 +++ b/ui/shell_dialogs/select_file_dialog.h
 +++ b/ui/shell_dialogs/select_file_dialog.h
-@@ -192,6 +192,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
+@@ -191,6 +191,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
                    void* params);
                    void* params);
    bool HasMultipleFileTypeChoices();
    bool HasMultipleFileTypeChoices();
  
  

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

@@ -6,8 +6,8 @@ Subject: Add custom tab intents privacy option
  chrome/android/java/res/values/values.xml             |  3 +++
  chrome/android/java/res/values/values.xml             |  3 +++
  chrome/android/java/res/xml/privacy_preferences.xml   |  5 +++++
  chrome/android/java/res/xml/privacy_preferences.xml   |  5 +++++
  .../chrome/browser/LaunchIntentDispatcher.java        |  3 +++
  .../chrome/browser/LaunchIntentDispatcher.java        |  3 +++
- .../preferences/privacy/PrivacyPreferences.java       | 11 +++++++++++
- .../android/java/strings/android_chrome_strings.grd   |  7 +++++++
+ .../browser/settings/privacy/PrivacyPreferences.java  | 11 +++++++++++
+ .../ui/android/strings/android_chrome_strings.grd     |  7 +++++++
  5 files changed, 29 insertions(+)
  5 files changed, 29 insertions(+)
 
 
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
@@ -27,10 +27,10 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 --- a/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
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
 @@ -29,6 +29,11 @@
 @@ -29,6 +29,11 @@
-         android:fragment="org.chromium.chrome.browser.preferences.privacy.DoNotTrackPreference"
+         android:fragment="org.chromium.chrome.browser.settings.privacy.DoNotTrackPreference"
          android:key="do_not_track"
          android:key="do_not_track"
          android:title="@string/do_not_track_title" />
          android:title="@string/do_not_track_title" />
-+    <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
++    <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
 +        android:key="allow_custom_tab_intents"
 +        android:key="allow_custom_tab_intents"
 +        android:title="@string/allow_custom_tab_intents_title"
 +        android:title="@string/allow_custom_tab_intents_title"
 +        android:summary="@string/allow_custom_tab_intents_summary"
 +        android:summary="@string/allow_custom_tab_intents_summary"
@@ -45,7 +45,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
  import org.chromium.chrome.browser.searchwidget.SearchActivity;
  import org.chromium.chrome.browser.searchwidget.SearchActivity;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.Tab;
-+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
++import org.chromium.chrome.browser.settings.privacy.PrivacyPreferences;
  import org.chromium.chrome.browser.util.IntentUtils;
  import org.chromium.chrome.browser.util.IntentUtils;
  import org.chromium.chrome.browser.util.UrlConstants;
  import org.chromium.chrome.browser.util.UrlConstants;
  import org.chromium.chrome.browser.vr.VrModuleProvider;
  import org.chromium.chrome.browser.vr.VrModuleProvider;
@@ -58,9 +58,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
          if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
          if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
                  || !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
                  || !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
              return false;
              return false;
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
 @@ -41,6 +41,8 @@ public class PrivacyPreferences
 @@ -41,6 +41,8 @@ public class PrivacyPreferences
  
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -69,18 +69,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 +
 +
      @Override
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-         PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
-@@ -75,6 +77,10 @@ public class PrivacyPreferences
-             PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
+         SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
+@@ -76,6 +78,10 @@ public class PrivacyPreferences
+                     Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
-             PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
+             PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
 +        } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
 +        } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
 +            sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
 +            sharedPreferencesEditor.apply();
 +            sharedPreferencesEditor.apply();
-         } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
-             PrefServiceBridge.getInstance().setBoolean(
-                     Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+         } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
+             PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
+         }
 @@ -111,6 +117,11 @@ public class PrivacyPreferences
 @@ -111,6 +117,11 @@ public class PrivacyPreferences
                      prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
                      prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
          }
@@ -92,13 +92,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 +
 +
          Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
          Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
          if (doNotTrackPref != null) {
          if (doNotTrackPref != null) {
-             doNotTrackPref.setSummary(
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3965,6 +3965,13 @@ The site does NOT gain access to the camera. The camera images are only visible
-               'Installing Extra ICU for Chrome…').">
-         Extra ICU
+             doNotTrackPref.setSummary(prefServiceBridge.getBoolean(Pref.ENABLE_DO_NOT_TRACK)
+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
+@@ -3975,6 +3975,13 @@ The site does NOT gain access to the camera. The camera images are only visible
+       <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>
        </message>
 +      <!-- Allow custom tab intents -->
 +      <!-- Allow custom tab intents -->
 +      <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
 +      <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
@@ -108,8 +108,8 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 +        Allow applications to open custom tab intents, similar to webview.
 +        Allow applications to open custom tab intents, similar to webview.
 +      </message>
 +      </message>
  
  
-     </messages>
-   </release>
+       <!-- Autofill Assistant preferences -->
+       <message name="IDS_PREFS_AUTOFILL_ASSISTANT_TITLE" desc="Title for the Autofill Assistant preferences screen. [CHAR-LIMIT=32]">
 -- 
 -- 
 2.17.1
 2.17.1
 
 

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

@@ -7,13 +7,13 @@ Corrected Exit functionality
  chrome/android/java/res/menu/main_menu.xml                  | 2 ++
  chrome/android/java/res/menu/main_menu.xml                  | 2 ++
  .../src/org/chromium/chrome/browser/ChromeActivity.java     | 2 ++
  .../src/org/chromium/chrome/browser/ChromeActivity.java     | 2 ++
  .../chrome/browser/init/ChromeLifetimeController.java       | 6 +++++-
  .../chrome/browser/init/ChromeLifetimeController.java       | 6 +++++-
- chrome/android/java/strings/android_chrome_strings.grd      | 3 +++
+ .../browser/ui/android/strings/android_chrome_strings.grd   | 3 +++
  4 files changed, 12 insertions(+), 1 deletion(-)
  4 files changed, 12 insertions(+), 1 deletion(-)
 
 
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 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
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -80,6 +80,8 @@
+@@ -85,6 +85,8 @@
              android:title="@string/menu_help" />
              android:title="@string/menu_help" />
          <item android:id="@+id/enter_vr_id"
          <item android:id="@+id/enter_vr_id"
              android:title="@string/enter_vr" />
              android:title="@string/enter_vr" />
@@ -25,9 +25,9 @@ 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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2204,6 +2204,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-                     new AddToHomescreenManager(this, currentTab);
-             addToHomescreenManager.start();
+@@ -2177,6 +2177,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             AddToHomescreenCoordinator.showForAppMenu(
+                     this, getWindowAndroid(), getModalDialogManager(), currentTab.getWebContents());
              RecordUserAction.record("MobileMenuAddToHomescreen");
              RecordUserAction.record("MobileMenuAddToHomescreen");
 +        } else if (id == R.id.exit_id) {
 +        } else if (id == R.id.exit_id) {
 +            ApplicationLifetime.terminate(false);
 +            ApplicationLifetime.terminate(false);
@@ -50,10 +50,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
      }
      }
  
  
      @Override
      @Override
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -2860,6 +2860,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
+--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
++++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
+@@ -2903,6 +2903,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
        <message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
          Settings
          Settings
        </message>
        </message>

+ 8 - 8
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
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -668,6 +668,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -706,6 +706,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
       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
  // Ensure that all effective connection types returned by Network Quality
  // Estimator (NQE) are also exposed via flags.
  // Estimator (NQE) are also exposed via flags.
  static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
  static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
-@@ -2633,6 +2638,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2663,6 +2668,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kPassiveDocumentEventListenersName,
       flag_descriptions::kPassiveDocumentEventListenersName,
       flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
       flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
       FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
@@ -44,9 +44,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1275,6 +1275,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
- const char kMarkHttpAsName[] = "Mark non-secure origins as non-secure";
- const char kMarkHttpAsDescription[] = "Change the UI treatment for HTTP pages";
+@@ -1279,6 +1279,10 @@ extern const char kMediaInspectorLoggingDescription[] =
+     "project; #enable-devtools-experiments must also be enabled as well on "
+     "desktop platforms";
  
  
 +const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
 +const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
 +const char kMaxConnectionsPerHostDescription[] =
 +const char kMaxConnectionsPerHostDescription[] =
@@ -58,9 +58,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -776,6 +776,9 @@ extern const char kMarkHttpAsWarning[];
- extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
- extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
+@@ -775,6 +775,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
+ extern const char kMediaInspectorLoggingName[];
+ extern const char kMediaInspectorLoggingDescription[];
  
  
 +extern const char kMaxConnectionsPerHostName[];
 +extern const char kMaxConnectionsPerHostName[];
 +extern const char kMaxConnectionsPerHostDescription[];
 +extern const char kMaxConnectionsPerHostDescription[];

+ 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
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1670,6 +1670,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1688,6 +1688,10 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
      {"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
       flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
       flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
       FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
@@ -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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -904,6 +904,11 @@ const char kMemlogStackModeNative[] = "Native";
+@@ -894,6 +894,11 @@ const char kMemlogStackModeNative[] = "Native";
  const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
  const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
  const char kMemlogStackModePseudo[] = "Trace events";
  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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -532,6 +532,9 @@ extern const char kEnablePortalsDescription[];
+@@ -525,6 +525,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePictureInPictureName[];
  extern const char kEnablePictureInPictureName[];
  extern const char kEnablePictureInPictureDescription[];
  extern const char kEnablePictureInPictureDescription[];
  
  
@@ -55,7 +55,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -216,11 +216,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -231,11 +231,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  // when in background.
  const base::Feature kResumeBackgroundVideo {
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",
    "resume-background-video",

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

@@ -3,20 +3,20 @@ Date: Sun, 18 Nov 2018 13:06:49 +0100
 Subject: Add flag to disable IPv6 probes
 Subject: Add flag to disable IPv6 probes
 
 
 ---
 ---
- chrome/browser/about_flags.cc                          |  5 +++++
- chrome/browser/flag_descriptions.cc                    |  4 ++++
- chrome/browser/flag_descriptions.h                     |  3 +++
- components/subresource_filter/tools/BUILD.gn           |  6 ++++++
- .../url_formatter/spoof_checks/top_domains/BUILD.gn    |  3 ++-
- net/dns/host_resolver_manager.cc                       | 10 ++++++++--
- services/network/public/cpp/features.cc                |  4 ++++
- services/network/public/cpp/features.h                 |  2 ++
- 8 files changed, 34 insertions(+), 3 deletions(-)
+ chrome/browser/about_flags.cc                            | 5 +++++
+ chrome/browser/flag_descriptions.cc                      | 4 ++++
+ chrome/browser/flag_descriptions.h                       | 3 +++
+ components/subresource_filter/tools/BUILD.gn             | 6 ++++++
+ .../url_formatter/spoof_checks/top_domains/BUILD.gn      | 3 ++-
+ net/dns/host_resolver_manager.cc                         | 9 ++++++++-
+ services/network/public/cpp/features.cc                  | 4 ++++
+ services/network/public/cpp/features.h                   | 2 ++
+ 8 files changed, 34 insertions(+), 2 deletions(-)
 
 
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3281,6 +3281,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3303,6 +3303,11 @@ const FeatureEntry kFeatureEntries[] = {
           kMarkHttpAsFeatureVariations,
           kMarkHttpAsFeatureVariations,
           "HTTPReallyBadFinal")},
           "HTTPReallyBadFinal")},
  
  
@@ -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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2512,6 +2512,10 @@ const char kContextualSearchSimplifiedServerDescription[] =
+@@ -2520,6 +2520,10 @@ const char kContextualSearchSimplifiedServerDescription[] =
  
  
  const char kContextualSearchSecondTapName[] =
  const char kContextualSearchSecondTapName[] =
      "Contextual Search second tap triggering";
      "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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -535,6 +535,9 @@ extern const char kEnableNewDownloadBackendDescription[];
+@@ -528,6 +528,9 @@ extern const char kEnableNewDownloadBackendDescription[];
  extern const char kEnablePortalsName[];
  extern const char kEnablePortalsName[];
  extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsDescription[];
  
  
@@ -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
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
-@@ -87,6 +87,7 @@
+@@ -92,6 +92,7 @@
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
  #include "net/socket/datagram_client_socket.h"
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context.h"
@@ -109,22 +109,22 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "url/url_canon_ip.h"
  #include "url/url_canon_ip.h"
  
  
  #if BUILDFLAG(ENABLE_MDNS)
  #if BUILDFLAG(ENABLE_MDNS)
-@@ -3269,8 +3270,13 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3564,8 +3565,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    bool cached = true;
    bool cached = true;
    if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
    if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
        kIPv6ProbePeriodMs) {
        kIPv6ProbePeriodMs) {
--    last_ipv6_probe_result_ =
--        IsGloballyReachable(IPAddress(kIPv6ProbeAddress), net_log);
+-    SetLastIPv6ProbeResult(
++
 +    if (!base::FeatureList::IsEnabled(network::features::kIPv6Probing)) {
 +    if (!base::FeatureList::IsEnabled(network::features::kIPv6Probing)) {
 +      // pretend IPv6 connectivy probe is successful when probing is disabled
 +      // pretend IPv6 connectivy probe is successful when probing is disabled
-+      last_ipv6_probe_result_ = true;
++      SetLastIPv6ProbeResult(true);
 +    } else {
 +    } else {
-+      last_ipv6_probe_result_ =
-+          IsGloballyReachable(IPAddress(kIPv6ProbeAddress), net_log);
++      SetLastIPv6ProbeResult(
+         IsGloballyReachable(IPAddress(kIPv6ProbeAddress), net_log));
 +    }
 +    }
-     last_ipv6_probe_time_ = tick_clock_->NowTicks();
      cached = false;
      cached = false;
    }
    }
+   net_log.AddEvent(
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc

+ 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
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1462,6 +1462,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1476,6 +1476,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAccelerated2dCanvasName,
       flag_descriptions::kAccelerated2dCanvasName,
       flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
       flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
       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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -426,6 +426,10 @@ const char kDisableAudioForDesktopShareDescription[] =
+@@ -446,6 +446,10 @@ const char kDisableAudioForDesktopShareDescription[] =
      "With this flag on, desktop share picker window will not let the user "
      "With this flag on, desktop share picker window will not let the user "
      "choose whether to share audio.";
      "choose whether to share audio.";
  
  
@@ -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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -274,6 +274,9 @@ extern const char kDevtoolsExperimentsDescription[];
+@@ -287,6 +287,9 @@ extern const char kDevtoolsExperimentsDescription[];
  extern const char kDisableAudioForDesktopShareName[];
  extern const char kDisableAudioForDesktopShareName[];
  extern const char kDisableAudioForDesktopShareDescription[];
  extern const char kDisableAudioForDesktopShareDescription[];
  
  

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

@@ -20,7 +20,7 @@ legacy acceleration events.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1696,6 +1696,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1714,6 +1714,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
      {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
       flag_descriptions::kGpuRasterizationDescription, kOsAll,
       flag_descriptions::kGpuRasterizationDescription, kOsAll,
       MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
       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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -674,6 +674,14 @@ const char kWinrtSensorsImplementationDescription[] =
+@@ -667,6 +667,14 @@ const char kWinrtSensorsImplementationDescription[] =
      "Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
      "Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
      "sensors";
      "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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -410,6 +410,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
+@@ -409,6 +409,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
  extern const char kWinrtSensorsImplementationName[];
  extern const char kWinrtSensorsImplementationName[];
  extern const char kWinrtSensorsImplementationDescription[];
  extern const char kWinrtSensorsImplementationDescription[];
  
  
@@ -70,7 +70,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -85,6 +85,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -87,6 +87,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
        command_line.HasSwitch(
        command_line.HasSwitch(
            switches::kEnableGpuMemoryBufferCompositorResources) &&
            switches::kEnableGpuMemoryBufferCompositorResources) &&
        !command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
        !command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
@@ -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
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -688,6 +688,16 @@ const base::Feature kExperimentalProductivityFeatures{
+@@ -690,6 +690,16 @@ const base::Feature kExperimentalProductivityFeatures{
  // TODO(rouslan): Remove this.
  // TODO(rouslan): Remove this.
  const base::Feature kWebPayments{"WebPayments",
  const base::Feature kWebPayments{"WebPayments",
                                   base::FEATURE_ENABLED_BY_DEFAULT};
                                   base::FEATURE_ENABLED_BY_DEFAULT};
@@ -103,9 +103,9 @@ 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
 diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
 --- a/content/public/common/content_features.h
 --- a/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
-@@ -156,6 +156,8 @@ CONTENT_EXPORT extern const base::Feature kScriptStreamingOnPreload;
- CONTENT_EXPORT extern const base::Feature kTrustedDOMTypes;
- CONTENT_EXPORT extern const base::Feature kBrowserUseDisplayThreadPriority;
+@@ -157,6 +157,8 @@ CONTENT_EXPORT extern const base::Feature kBrowserUseDisplayThreadPriority;
+ CONTENT_EXPORT extern const base::Feature kFeaturePolicyForClientHints;
+ CONTENT_EXPORT extern const base::Feature kVideoPlaybackQuality;
  
  
 +CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
 +CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
 +
 +
@@ -146,7 +146,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
 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
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -172,6 +172,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
+@@ -173,6 +173,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
    RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
    RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
  }
  }
  
  
@@ -164,7 +164,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
 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
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -1132,6 +1132,14 @@
+@@ -1162,6 +1162,14 @@
        name: "OffscreenCanvasCommit",
        name: "OffscreenCanvasCommit",
        status: "experimental",
        status: "experimental",
      },
      },

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

@@ -7,36 +7,36 @@ Subject: Add option to configure the ad blocker filters URL
  .../java/res/layout/adblock_editor.xml        | 65 +++++++++++++
  .../java/res/layout/adblock_editor.xml        | 65 +++++++++++++
  chrome/android/java/res/values/values.xml     |  2 +
  chrome/android/java/res/values/values.xml     |  2 +
  .../java/res/xml/adblock_preferences.xml      | 25 +++++
  .../java/res/xml/adblock_preferences.xml      | 25 +++++
- .../android/java/res/xml/main_preferences.xml | 11 ++-
- .../browser/preferences/AdBlockEditor.java    | 91 +++++++++++++++++++
- .../preferences/AdBlockPreferences.java       | 53 +++++++++++
- .../java/strings/android_chrome_strings.grd   | 14 +++
+ .../android/java/res/xml/main_preferences.xml |  5 +
+ .../browser/settings/AdBlockEditor.java       | 92 +++++++++++++++++++
+ .../browser/settings/AdBlockPreferences.java  | 56 +++++++++++
  chrome/app/generated_resources.grd            | 10 ++
  chrome/app/generated_resources.grd            | 10 ++
  chrome/browser/android/feature_utilities.cc   |  8 ++
  chrome/browser/android/feature_utilities.cc   |  8 ++
  chrome/browser/browser_process_impl.cc        |  3 +-
  chrome/browser/browser_process_impl.cc        |  3 +-
  .../net/system_network_context_manager.cc     |  3 +
  .../net/system_network_context_manager.cc     |  3 +
+ .../strings/android_chrome_strings.grd        | 14 +++
  chrome/common/pref_names.cc                   |  3 +
  chrome/common/pref_names.cc                   |  3 +
  chrome/common/pref_names.h                    |  1 +
  chrome/common/pref_names.h                    |  1 +
  .../adblock_updater_service.cc                |  6 +-
  .../adblock_updater_service.cc                |  6 +-
  .../adblock_updater_service.h                 |  3 +-
  .../adblock_updater_service.h                 |  3 +-
- 16 files changed, 292 insertions(+), 8 deletions(-)
+ 16 files changed, 293 insertions(+), 5 deletions(-)
  create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
  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/res/xml/adblock_preferences.xml
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
+ create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
+ create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
 
 
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
 @@ -1277,6 +1277,8 @@ chrome_java_sources = [
 @@ -1277,6 +1277,8 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/preferences/PreferenceUtils.java",
-   "java/src/org/chromium/chrome/browser/preferences/Preferences.java",
-   "java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java",
-+  "java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java",
-+  "java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java",
-   "java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java",
-   "java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java",
-   "java/src/org/chromium/chrome/browser/preferences/SearchUtils.java",
+   "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",
++  "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
++  "java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
+   "java/src/org/chromium/chrome/browser/photo_picker/FileEnumWorkerTask.java",
+   "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialog.java",
+   "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerToolbar.java",
 diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
 diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
@@ -110,7 +110,7 @@ new file mode 100644
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -70,6 +70,8 @@
+@@ -69,6 +69,8 @@
      <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
      <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
      <string name="manage_space_activity"></string>
      <string name="manage_space_activity"></string>
  
  
@@ -133,12 +133,12 @@ new file mode 100644
 +    xmlns:android="http://schemas.android.com/apk/res/android"
 +    xmlns:android="http://schemas.android.com/apk/res/android"
 +    xmlns:app="http://schemas.android.com/apk/res-auto">
 +    xmlns:app="http://schemas.android.com/apk/res-auto">
 +
 +
-+    <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
++    <org.chromium.chrome.browser.settings.ChromeSwitchPreference
 +        android:key="adblock_switch"
 +        android:key="adblock_switch"
 +        android:summaryOn="@string/text_on"
 +        android:summaryOn="@string/text_on"
 +        android:summaryOff="@string/text_off" />
 +        android:summaryOff="@string/text_off" />
 +
 +
-+    <org.chromium.chrome.browser.preferences.HyperlinkPreference
++    <org.chromium.chrome.browser.settings.HyperlinkPreference
 +        android:key="adblock_help"
 +        android:key="adblock_help"
 +        android:title="@string/adblock_help"
 +        android:title="@string/adblock_help"
 +        app:url="@string/adblock_help_url" />
 +        app:url="@string/adblock_help_url" />
@@ -146,51 +146,34 @@ new file mode 100644
 +    <Preference
 +    <Preference
 +        android:key="adblock_edit"
 +        android:key="adblock_edit"
 +        android:title="@string/options_adblock_edit_label"
 +        android:title="@string/options_adblock_edit_label"
-+        android:fragment="org.chromium.chrome.browser.preferences.AdBlockEditor" />
++        android:fragment="org.chromium.chrome.browser.settings.AdBlockEditor" />
 +
 +
 +</PreferenceScreen>
 +</PreferenceScreen>
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 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
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -60,20 +60,25 @@
+@@ -60,6 +60,11 @@
          android:key="privacy"
          android:key="privacy"
          android:order="13"
          android:order="13"
          android:title="@string/prefs_privacy"/>
          android:title="@string/prefs_privacy"/>
 +    <Preference
 +    <Preference
-+        android:fragment="org.chromium.chrome.browser.preferences.AdBlockPreferences"
++        android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
 +        android:key="adblock"
 +        android:key="adblock"
-+        android:order="14"
++        android:order="13"
 +        android:title="@string/prefs_adblock"/>
 +        android:title="@string/prefs_adblock"/>
      <Preference
      <Preference
-         android:fragment="org.chromium.chrome.browser.preferences.AccessibilityPreferences"
+         android:fragment="org.chromium.chrome.browser.settings.accessibility.AccessibilitySettings"
          android:key="accessibility"
          android:key="accessibility"
--        android:order="14"
-+        android:order="15"
-         android:title="@string/prefs_accessibility"/>
-     <Preference
-         android:fragment="org.chromium.chrome.browser.preferences.website.SiteSettingsPreferences"
-         android:key="content_settings"
--        android:order="15"
-+        android:order="16"
-         android:title="@string/prefs_site_settings"/>
-     <Preference
-         android:fragment="org.chromium.chrome.browser.preferences.languages.LanguagesPreferences"
-         android:key="languages"
--        android:order="16"
-+        android:order="17"
-         android:title="@string/prefs_languages"/>
-     <org.chromium.chrome.browser.preferences.ChromeBasePreference
-         android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
-@@ -0,0 +1,91 @@
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
+@@ -0,0 +1,92 @@
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
 +// found in the LICENSE file.
 +
 +
-+package org.chromium.chrome.browser.preferences;
++package org.chromium.chrome.browser.settings;
 +
 +
 +import android.os.Bundle;
 +import android.os.Bundle;
 +import android.support.v4.app.Fragment;
 +import android.support.v4.app.Fragment;
@@ -202,12 +185,13 @@ new file mode 100644
 +import android.widget.Button;
 +import android.widget.Button;
 +import android.widget.EditText;
 +import android.widget.EditText;
 +
 +
-+import org.chromium.chrome.browser.util.FeatureUtilities;
++import org.chromium.chrome.browser.settings.SettingsUtils;
++import org.chromium.chrome.browser.flags.FeatureUtilities;
 +import org.chromium.chrome.R;
 +import org.chromium.chrome.R;
 +import org.chromium.components.url_formatter.UrlFormatter;
 +import org.chromium.components.url_formatter.UrlFormatter;
 +
 +
 +/**
 +/**
-+ * Provides the Java-UI for editing the DNS-over-HTTPS (AdBlock) preference.
++ * Provides the Java-UI for editing AdBlock preferences.
 + */
 + */
 +public class AdBlockEditor extends Fragment implements TextWatcher {
 +public class AdBlockEditor extends Fragment implements TextWatcher {
 +    private EditText mAdBlockFiltersUrlEdit;
 +    private EditText mAdBlockFiltersUrlEdit;
@@ -223,7 +207,7 @@ new file mode 100644
 +        View v = inflater.inflate(R.layout.adblock_editor, container, false);
 +        View v = inflater.inflate(R.layout.adblock_editor, container, false);
 +        View scrollView = v.findViewById(R.id.scroll_view);
 +        View scrollView = v.findViewById(R.id.scroll_view);
 +        scrollView.getViewTreeObserver().addOnScrollChangedListener(
 +        scrollView.getViewTreeObserver().addOnScrollChangedListener(
-+                PreferenceUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
++                SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
 +        mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
 +        mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
 +        mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
 +        mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
 +        mAdBlockFiltersUrlEdit.addTextChangedListener(this);
 +        mAdBlockFiltersUrlEdit.addTextChangedListener(this);
@@ -277,24 +261,27 @@ new file mode 100644
 +        });
 +        });
 +    }
 +    }
 +}
 +}
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
-@@ -0,0 +1,53 @@
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
+@@ -0,0 +1,56 @@
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
 +// found in the LICENSE file.
 +
 +
-+package org.chromium.chrome.browser.preferences;
++package org.chromium.chrome.browser.settings;
 +
 +
 +import android.os.Bundle;
 +import android.os.Bundle;
 +import android.support.v7.preference.Preference;
 +import android.support.v7.preference.Preference;
 +import android.support.v7.preference.PreferenceFragmentCompat;
 +import android.support.v7.preference.PreferenceFragmentCompat;
++import org.chromium.chrome.browser.settings.ChromeSwitchPreference;
 +
 +
++import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge;
 +import org.chromium.chrome.browser.ContentSettingsType;
 +import org.chromium.chrome.browser.ContentSettingsType;
-+import org.chromium.chrome.browser.util.FeatureUtilities;
-+import org.chromium.base.VisibleForTesting;
++import org.chromium.chrome.browser.settings.SettingsUtils;
++import org.chromium.chrome.browser.flags.FeatureUtilities;
++import androidx.annotation.VisibleForTesting;
 +import org.chromium.chrome.R;
 +import org.chromium.chrome.R;
 +
 +
 +/**
 +/**
@@ -310,14 +297,14 @@ new file mode 100644
 +    @Override
 +    @Override
 +    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 +    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 +        getActivity().setTitle(R.string.options_adblock_title);
 +        getActivity().setTitle(R.string.options_adblock_title);
-+        PreferenceUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
++        SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
 +
 +
 +        ChromeSwitchPreference mAdBlockSwitch =
 +        ChromeSwitchPreference mAdBlockSwitch =
 +                (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
 +                (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
-+        boolean isAdBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
++        boolean isAdBlockEnabled = !WebsitePreferenceBridge.isCategoryEnabled(ContentSettingsType.ADS);
 +        mAdBlockSwitch.setChecked(isAdBlockEnabled);
 +        mAdBlockSwitch.setChecked(isAdBlockEnabled);
 +        mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
 +        mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
-+            PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, !(boolean) newValue);
++            WebsitePreferenceBridge.setCategoryEnabled(ContentSettingsType.ADS, !(boolean) newValue);
 +            return true;
 +            return true;
 +        });
 +        });
 +
 +
@@ -335,34 +322,10 @@ new file mode 100644
 +        updateCurrentAdBlockUrl();
 +        updateCurrentAdBlockUrl();
 +    }
 +    }
 +}
 +}
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -870,6 +870,20 @@ Your Google account may have other forms of browsing history like searches and a
-         Captions
-       </message>
- 
-+      <!-- AdBlock settings -->
-+      <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
-+        AdBlock settings
-+      </message>
-+      <message name="IDS_OPTIONS_ADBLOCK_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used to fetch the ad blocker filters.">
-+        Edit filters URL
-+      </message>
-+      <message name="IDS_OPTIONS_ADBLOCK_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used to fetch the ad blocker filters.">
-+        Filters URL
-+      </message>
-+      <message name="IDS_ADBLOCK_HELP" desc="The title of the hyperlink that allows users to visit the web page with instructions for custom ad blocker filters.">
-+        Visit help page
-+      </message>
-+
-       <!-- Site settings -->
-       <message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
-         Site settings
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -9603,6 +9603,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -9734,6 +9734,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
        Never show this again.
      </message>
      </message>
  
  
@@ -382,7 +345,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
 diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
 diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
 --- a/chrome/browser/android/feature_utilities.cc
 --- a/chrome/browser/android/feature_utilities.cc
 +++ b/chrome/browser/android/feature_utilities.cc
 +++ b/chrome/browser/android/feature_utilities.cc
-@@ -50,6 +50,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
+@@ -56,6 +56,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
  } // namespace android
  } // namespace android
  } // namespace chrome
  } // namespace chrome
  
  
@@ -400,7 +363,7 @@ diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/androi
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -1028,7 +1028,8 @@ BrowserProcessImpl::adblock_updater() {
+@@ -1030,7 +1030,8 @@ BrowserProcessImpl::adblock_updater() {
    adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
    adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
            g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
            g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
            std::move(scheduler),
            std::move(scheduler),
@@ -413,7 +376,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 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
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -405,6 +405,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -409,6 +409,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
        ssl_config_service_manager_(
        ssl_config_service_manager_(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_) {
        proxy_config_monitor_(local_state_) {
@@ -422,7 +385,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #if !defined(OS_ANDROID)
  #if !defined(OS_ANDROID)
    // QuicAllowed was not part of Android policy.
    // QuicAllowed was not part of Android policy.
    const base::Value* value =
    const base::Value* value =
-@@ -508,6 +510,7 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -512,6 +514,7 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  }
  }
  
  
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -430,10 +393,34 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
    // Register the DnsClient and DoH preferences. The feature list has not been
    // Register the DnsClient and DoH preferences. The feature list has not been
    // initialized yet, so setting the preference defaults here to reflect the
    // initialized yet, so setting the preference defaults here to reflect the
    // corresponding features will only cause the preference defaults to reflect
    // corresponding features will only cause the preference defaults to reflect
+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
+@@ -893,6 +893,20 @@ Your Google account may have other forms of browsing history like searches and a
+         Captions
+       </message>
+ 
++      <!-- AdBlock settings -->
++      <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
++        AdBlock settings
++      </message>
++      <message name="IDS_OPTIONS_ADBLOCK_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used to fetch the ad blocker filters.">
++        Edit filters URL
++      </message>
++      <message name="IDS_OPTIONS_ADBLOCK_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used to fetch the ad blocker filters.">
++        Filters URL
++      </message>
++      <message name="IDS_ADBLOCK_HELP" desc="The title of the hyperlink that allows users to visit the web page with instructions for custom ad blocker filters.">
++        Visit help page
++      </message>
++
+       <!-- Site settings -->
+       <message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
+         Site settings
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -1925,6 +1925,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -1974,6 +1974,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
  

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

@@ -6,14 +6,14 @@ Subject: Add option to not persist tabs across sessions
  chrome/android/java/res/values/values.xml            |  3 +++
  chrome/android/java/res/values/values.xml            |  3 +++
  chrome/android/java/res/xml/privacy_preferences.xml  |  5 +++++
  chrome/android/java/res/xml/privacy_preferences.xml  |  5 +++++
  .../chrome/browser/ChromeTabbedActivity.java         |  4 +++-
  .../chrome/browser/ChromeTabbedActivity.java         |  4 +++-
- .../preferences/privacy/PrivacyPreferences.java      | 12 ++++++++++++
- .../android/java/strings/android_chrome_strings.grd  |  6 ++++++
+ .../browser/settings/privacy/PrivacyPreferences.java | 12 ++++++++++++
+ .../ui/android/strings/android_chrome_strings.grd    |  6 ++++++
  5 files changed, 29 insertions(+), 1 deletion(-)
  5 files changed, 29 insertions(+), 1 deletion(-)
 
 
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -64,6 +64,9 @@
+@@ -63,6 +63,9 @@
      <!-- TODO(peconn): Add help section. -->
      <!-- TODO(peconn): Add help section. -->
      <!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
      <!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
  
  
@@ -30,7 +30,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
          android:title="@string/allow_custom_tab_intents_title"
          android:title="@string/allow_custom_tab_intents_title"
          android:summary="@string/allow_custom_tab_intents_summary"
          android:summary="@string/allow_custom_tab_intents_summary"
          android:defaultValue="false" />
          android:defaultValue="false" />
-+    <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
++    <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
 +        android:key="close_tabs_on_exit"
 +        android:key="close_tabs_on_exit"
 +        android:title="@string/close_tabs_on_exit_title"
 +        android:title="@string/close_tabs_on_exit_title"
 +        android:summary="@string/close_tabs_on_exit_summary"
 +        android:summary="@string/close_tabs_on_exit_summary"
@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1174,8 +1174,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
+@@ -1144,8 +1144,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
              boolean hadCipherData =
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
  
@@ -53,12 +53,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
              if (noRestoreState) {
              if (noRestoreState) {
                  // Clear the state files because they are inconsistent and useless from now on.
                  // Clear the state files because they are inconsistent and useless from now on.
                  mTabModelSelectorImpl.clearState();
                  mTabModelSelectorImpl.clearState();
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
 @@ -4,6 +4,7 @@
 @@ -4,6 +4,7 @@
  
  
- package org.chromium.chrome.browser.preferences.privacy;
+ package org.chromium.chrome.browser.settings.privacy;
  
  
 +import android.content.SharedPreferences;
 +import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.os.Bundle;
@@ -81,9 +81,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
  
  
 @@ -84,6 +87,10 @@ public class PrivacyPreferences
 @@ -84,6 +87,10 @@ public class PrivacyPreferences
-         } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
-             PrefServiceBridge.getInstance().setBoolean(
-                     Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+             sharedPreferencesEditor.apply();
+         } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
+             PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
 +        } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
 +        } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
 +            sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
@@ -91,9 +91,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          }
          }
  
  
          return true;
          return true;
-@@ -127,6 +134,11 @@ public class PrivacyPreferences
-             doNotTrackPref.setSummary(
-                     prefServiceBridge.isDoNotTrackEnabled() ? R.string.text_on : R.string.text_off);
+@@ -128,6 +135,11 @@ public class PrivacyPreferences
+                             ? R.string.text_on
+                             : R.string.text_off);
          }
          }
 +
 +
 +        ChromeBaseCheckBoxPreference closeTabsOnExitPref =
 +        ChromeBaseCheckBoxPreference closeTabsOnExitPref =
@@ -103,10 +103,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      }
      }
  
  
      private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
      private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3677,6 +3677,12 @@ The site does NOT gain access to the camera. The camera images are only visible
+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
+@@ -3733,6 +3733,12 @@ The site does NOT gain access to the camera. The camera images are only visible
        <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.">
        <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
          IMAGE
        </message>
        </message>

+ 15 - 15
build/patches/Add-option-to-use-home-page-as-NTP.patch

@@ -6,9 +6,9 @@ Use about:blank as default homepage
 ---
 ---
  .../java/res/xml/homepage_preferences.xml     |  5 ++++
  .../java/res/xml/homepage_preferences.xml     |  5 ++++
  .../HomepageManager.java                      | 24 +++++++++++++++++--
  .../HomepageManager.java                      | 24 +++++++++++++++++--
- .../preferences/HomepagePreferences.java      | 10 ++++++++
+ .../browser/settings/HomepagePreferences.java | 10 ++++++++
  .../browser/tabmodel/TabCreatorManager.java   | 11 +++++++--
  .../browser/tabmodel/TabCreatorManager.java   | 11 +++++++--
- .../java/strings/android_chrome_strings.grd   |  3 +++
+ .../strings/android_chrome_strings.grd        |  3 +++
  chrome/browser/ui/browser_ui_prefs.cc         |  2 ++
  chrome/browser/ui/browser_ui_prefs.cc         |  2 ++
  chrome/common/pref_names.cc                   |  4 ++++
  chrome/common/pref_names.cc                   |  4 ++++
  chrome/common/pref_names.h                    |  1 +
  chrome/common/pref_names.h                    |  1 +
@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro
 +        android:summaryOn="@string/options_ntp_is_homepage_label"
 +        android:summaryOn="@string/options_ntp_is_homepage_label"
 +        android:summaryOff="@string/options_ntp_is_homepage_label" />
 +        android:summaryOff="@string/options_ntp_is_homepage_label" />
 +
 +
-     <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
+     <org.chromium.chrome.browser.settings.ChromeSwitchPreference
          android:key="homepage_switch"
          android:key="homepage_switch"
          android:summaryOn="@string/text_on"
          android:summaryOn="@string/text_on"
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
@@ -91,10 +91,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
      /**
      /**
       * @return User specified homepage custom URI string.
       * @return User specified homepage custom URI string.
       */
       */
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
-@@ -19,6 +19,7 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
+@@ -21,6 +21,7 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
      @VisibleForTesting
      @VisibleForTesting
      public static final String PREF_HOMEPAGE_SWITCH = "homepage_switch";
      public static final String PREF_HOMEPAGE_SWITCH = "homepage_switch";
      private static final String PREF_HOMEPAGE_EDIT = "homepage_edit";
      private static final String PREF_HOMEPAGE_EDIT = "homepage_edit";
@@ -102,9 +102,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Hom
  
  
      private HomepageManager mHomepageManager;
      private HomepageManager mHomepageManager;
      private Preference mHomepageEdit;
      private Preference mHomepageEdit;
-@@ -39,6 +40,15 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
-             return true;
-         });
+@@ -46,6 +47,15 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
+             });
+         }
  
  
 +        ChromeSwitchPreference mNTPIsHomepageSwitch =
 +        ChromeSwitchPreference mNTPIsHomepageSwitch =
 +                (ChromeSwitchPreference) findPreference(PREF_NTP_HOMEPAGE_SWITCH);
 +                (ChromeSwitchPreference) findPreference(PREF_NTP_HOMEPAGE_SWITCH);
@@ -150,10 +150,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCre
              } finally {
              } finally {
                  TraceEvent.end("TabCreator.launchNTP");
                  TraceEvent.end("TabCreator.launchNTP");
              }
              }
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -668,6 +668,9 @@ CHAR-LIMIT guidelines:
+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
+@@ -698,6 +698,9 @@ CHAR-LIMIT guidelines:
        <message name="IDS_NOTIFICATIONS_CONTENT_SUGGESTIONS_SUMMARY_DISABLED" desc="Summary for the disabled preference to turn on/off content suggestions notifications when search and site suggestions are disabled.">
        <message name="IDS_NOTIFICATIONS_CONTENT_SUGGESTIONS_SUMMARY_DISABLED" desc="Summary for the disabled preference to turn on/off content suggestions notifications when search and site suggestions are disabled.">
          Search and site suggestions disabled
          Search and site suggestions disabled
        </message>
        </message>
@@ -192,7 +192,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
 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -322,6 +322,7 @@ extern const char kSettingsShowOSBanner[];
+@@ -323,6 +323,7 @@ extern const char kSettingsShowOSBanner[];
  extern const char kDeviceLoginScreenWebUsbAllowDevicesForUrls[];
  extern const char kDeviceLoginScreenWebUsbAllowDevicesForUrls[];
  #endif  // defined(OS_CHROMEOS)
  #endif  // defined(OS_CHROMEOS)
  extern const char kShowHomeButton[];
  extern const char kShowHomeButton[];

+ 107 - 103
build/patches/Add-site-settings-option-for-session-only-cookies.patch

@@ -3,13 +3,13 @@ Date: Tue, 28 Aug 2018 23:27:23 +0200
 Subject: Add site settings option for session-only cookies
 Subject: Add site settings option for session-only cookies
 
 
 ---
 ---
- chrome/android/java/res/values/values.xml     |  3 +++
- .../java/res/xml/website_preferences.xml      |  7 ++++++
- .../preferences/PrefServiceBridge.java        | 10 ++++++++
- .../website/SingleCategoryPreferences.java    | 21 +++++++++++++++-
- .../java/strings/android_chrome_strings.grd   |  6 +++++
- .../preferences/pref_service_bridge.cc        | 25 +++++++++++++++++++
- 6 files changed, 71 insertions(+), 1 deletion(-)
+ chrome/android/java/res/values/values.xml     |  3 ++
+ .../java/res/xml/website_preferences.xml      |  7 +++++
+ .../website/SingleCategoryPreferences.java    | 21 ++++++++++++-
+ .../preferences/pref_service_bridge.cc        | 31 +++++++++++++++++++
+ .../preferences/PrefServiceBridge.java        | 10 ++++++
+ .../strings/android_chrome_strings.grd        |  6 ++++
+ 6 files changed, 77 insertions(+), 1 deletion(-)
 
 
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
@@ -27,100 +27,66 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
 diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
 --- a/chrome/android/java/res/xml/website_preferences.xml
 --- a/chrome/android/java/res/xml/website_preferences.xml
 +++ b/chrome/android/java/res/xml/website_preferences.xml
 +++ b/chrome/android/java/res/xml/website_preferences.xml
-@@ -26,6 +26,13 @@
-         android:summary="@string/block_third_party_cookies_summary"
-         android:defaultValue="true"
+@@ -32,6 +32,13 @@
+         android:title="@string/website_settings_category_notifications_quiet"
+         android:defaultValue="false"
          android:persistent="false" />
          android:persistent="false" />
 +    <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
 +    <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
-+    <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
++    <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
 +        android:key="cookies_session_only"
 +        android:key="cookies_session_only"
 +        android:title="@string/allow_cookies_session_only_title"
 +        android:title="@string/allow_cookies_session_only_title"
 +        android:summary="@string/allow_cookies_session_only_summary"
 +        android:summary="@string/allow_cookies_session_only_summary"
 +        android:defaultValue="true"
 +        android:defaultValue="true"
 +        android:persistent="false" />
 +        android:persistent="false" />
      <!-- A toggle for enabling vibration in notifications. -->
      <!-- A toggle for enabling vibration in notifications. -->
-     <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+     <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
          android:key="notifications_vibrate"
          android:key="notifications_vibrate"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
-@@ -265,6 +265,10 @@ public class PrefServiceBridge {
-         return PrefServiceBridgeJni.get().getBlockThirdPartyCookiesEnabled(PrefServiceBridge.this);
-     }
- 
-+    public boolean isCookiesSessionOnlyEnabled() {
-+        return PrefServiceBridgeJni.get().getCookiesSessionOnlyEnabled(PrefServiceBridge.this);
-+    }
-+
-     /**
-      * @return Whether third-party cookie blocking is configured by policy
-      */
-@@ -668,6 +672,10 @@ public class PrefServiceBridge {
-                 PrefServiceBridge.this, enabled);
-     }
- 
-+    public void setCookiesSessionOnlyEnabled(boolean enabled) {
-+        PrefServiceBridgeJni.get().setCookiesSessionOnlyEnabled(PrefServiceBridge.this, enabled);
-+    }
-+
-     public void setDoNotTrackEnabled(boolean enabled) {
-         PrefServiceBridgeJni.get().setDoNotTrackEnabled(PrefServiceBridge.this, enabled);
-     }
-@@ -1138,6 +1146,8 @@ public class PrefServiceBridge {
- 
-     @NativeMethods
-     public interface Natives {
-+        boolean getCookiesSessionOnlyEnabled(PrefServiceBridge caller);
-+        void setCookiesSessionOnlyEnabled(PrefServiceBridge caller, boolean enabled);
-         boolean isContentSettingEnabled(PrefServiceBridge caller, int contentSettingType);
-         boolean isContentSettingManaged(PrefServiceBridge caller, int contentSettingType);
-         void setContentSettingEnabled(
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
-@@ -127,6 +127,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
+@@ -130,6 +130,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
  
  
      // Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
      // Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
      public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
      public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
 +    public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
 +    public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
      public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
      public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
+     public static final String NOTIFICATIONS_QUIET_UI_TOGGLE_KEY = "notifications_quiet_ui";
      public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
      public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
-     private static final String ADD_EXCEPTION_KEY = "add_exception";
-@@ -477,6 +478,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+@@ -479,6 +480,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
  
  
                  if (type == SiteSettingsCategory.Type.COOKIES) {
                  if (type == SiteSettingsCategory.Type.COOKIES) {
                      updateThirdPartyCookiesCheckBox();
                      updateThirdPartyCookiesCheckBox();
 +                    updateCookiesSessionOnlyCheckBox();
 +                    updateCookiesSessionOnlyCheckBox();
                  } else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
                  } else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
-                     updateNotificationsVibrateCheckBox();
+                     updateNotificationsSecondaryControls();
                  }
                  }
-@@ -516,6 +518,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+@@ -517,6 +519,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
              int setting = (int) newValue;
              int setting = (int) newValue;
-             prefServiceBridge.setContentSetting(mCategory.getContentSettingsType(), setting);
+             WebsitePreferenceBridge.setContentSetting(mCategory.getContentSettingsType(), setting);
              getInfoForOrigins();
              getInfoForOrigins();
 +        } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
 +        } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
-+            prefServiceBridge.setCookiesSessionOnlyEnabled((boolean) newValue);
++            PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled((boolean) newValue);
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
-             prefServiceBridge.setBlockThirdPartyCookiesEnabled(((boolean) newValue));
-         } else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
-@@ -833,6 +837,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+             PrefServiceBridge.getInstance().setBoolean(
+                     Pref.BLOCK_THIRD_PARTY_COOKIES, ((boolean) newValue));
+@@ -828,6 +832,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
          TriStateSiteSettingsPreference triStateToggle =
          TriStateSiteSettingsPreference triStateToggle =
                  (TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
                  (TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
          Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
          Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
 +        Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
 +        Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
 +                COOKIES_SESSION_ONLY_TOGGLE_KEY);
 +                COOKIES_SESSION_ONLY_TOGGLE_KEY);
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
+         Preference notificationsQuietUi = screen.findPreference(NOTIFICATIONS_QUIET_UI_TOGGLE_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
-         PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
-@@ -864,6 +870,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+@@ -860,6 +866,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
  
  
          if (hideSecondaryToggles) {
          if (hideSecondaryToggles) {
              screen.removePreference(thirdPartyCookies);
              screen.removePreference(thirdPartyCookies);
 +            screen.removePreference(cookiesSessionOnly);
 +            screen.removePreference(cookiesSessionOnly);
              screen.removePreference(notificationsVibrate);
              screen.removePreference(notificationsVibrate);
+             screen.removePreference(notificationsQuietUi);
              screen.removePreference(explainProtectedMediaKey);
              screen.removePreference(explainProtectedMediaKey);
-             screen.removePreference(allowedGroup);
-@@ -874,12 +881,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+@@ -871,12 +878,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
              return;
              return;
          }
          }
  
  
@@ -136,9 +102,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +            screen.removePreference(cookiesSessionOnly);
 +            screen.removePreference(cookiesSessionOnly);
          }
          }
  
  
-         // Configure/hide the notifications vibrate toggle, as needed.
-@@ -994,6 +1004,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
-                 preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
+         // Configure/hide the notifications secondary controls, as needed.
+@@ -990,6 +1000,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
+         }
      }
      }
  
  
 +    private void updateCookiesSessionOnlyCheckBox() {
 +    private void updateCookiesSessionOnlyCheckBox() {
@@ -146,57 +112,52 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +                getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
 +                getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
 +        cookiesSessionOnlyPref.setChecked(
 +        cookiesSessionOnlyPref.setChecked(
 +                PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
 +                PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
-+        cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
-+                ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
++        cookiesSessionOnlyPref.setEnabled(WebsitePreferenceBridge.isCategoryEnabled(
++                ContentSettingsType.COOKIES));
 +    }
 +    }
 +
 +
-     private void updateNotificationsVibrateCheckBox() {
-         ChromeBaseCheckBoxPreference preference =
+     private void updateThirdPartyCookiesCheckBox() {
+         ChromeBaseCheckBoxPreference thirdPartyCookiesPref =
                  (ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
                  (ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -878,6 +878,12 @@ Your Google account may have other forms of browsing history like searches and a
-       <message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
-         Prevent third-party websites from saving and reading cookie data
-       </message>
-+      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
-+        Keep cookies only until you quit your browser
-+      </message>
-+      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
-+        When enabled, all cookies will be erased when the browsing session is over
-+      </message>
-       <message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
-         JavaScript
-       </message>
 diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
 diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
 --- a/chrome/browser/android/preferences/pref_service_bridge.cc
 --- a/chrome/browser/android/preferences/pref_service_bridge.cc
 +++ b/chrome/browser/android/preferences/pref_service_bridge.cc
 +++ b/chrome/browser/android/preferences/pref_service_bridge.cc
-@@ -330,6 +330,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
-   return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
- }
+@@ -13,10 +13,17 @@
+ #include "chrome/browser/android/preferences/prefs.h"
+ #include "chrome/browser/preferences/jni_headers/PrefServiceBridge_jni.h"
+ #include "chrome/browser/profiles/profile_manager.h"
++#include "components/content_settings/core/browser/host_content_settings_map.h"
++#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
++//#include "components/content_settings/core/common/content_settings_types.h"
+ #include "components/prefs/pref_service.h"
+ 
+ namespace {
  
  
++Profile* GetOriginalProfile() {
++  return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
++}
++
+ PrefService* GetPrefService() {
+   return ProfileManager::GetActiveUserProfile()
+       ->GetOriginalProfile()
+@@ -84,3 +91,27 @@ static jboolean JNI_PrefServiceBridge_IsManagedPreference(
+   return GetPrefService()->IsManagedPreference(
+       PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index));
+ }
 +static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
 +static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
 +    JNIEnv* env,
 +    JNIEnv* env,
-+    const JavaParamRef<jobject>& obj) {
++    const base::android::JavaParamRef<jobject>& obj) {
 +  HostContentSettingsMap* host_content_settings_map =
 +  HostContentSettingsMap* host_content_settings_map =
 +      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
 +      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
-+  auto value = host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
++  auto value = host_content_settings_map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr);
 +  auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
 +  auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
 +  LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
 +  LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
 +  return enabled;
 +  return enabled;
 +}
 +}
 +
 +
- static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
-     JNIEnv* env,
-     const JavaParamRef<jobject>& obj) {
-@@ -801,6 +812,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
-   GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
- }
- 
 +static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
 +static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
 +    JNIEnv* env,
 +    JNIEnv* env,
-+    const JavaParamRef<jobject>& obj,
++    const base::android::JavaParamRef<jobject>& obj,
 +    jboolean enabled) {
 +    jboolean enabled) {
 +  HostContentSettingsMap* host_content_settings_map =
 +  HostContentSettingsMap* host_content_settings_map =
 +      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
 +      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
@@ -204,13 +165,56 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
 +           "; false -> setting_allow: " << CONTENT_SETTING_ALLOW <<
 +           "; false -> setting_allow: " << CONTENT_SETTING_ALLOW <<
 +           "; true -> session_only: "   << CONTENT_SETTING_SESSION_ONLY;
 +           "; true -> session_only: "   << CONTENT_SETTING_SESSION_ONLY;
 +  host_content_settings_map->SetDefaultContentSetting(
 +  host_content_settings_map->SetDefaultContentSetting(
-+      CONTENT_SETTINGS_TYPE_COOKIES,
++      ContentSettingsType::COOKIES,
 +      enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
 +      enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
 +}
 +}
+diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
++++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+@@ -82,6 +82,13 @@ public class PrefServiceBridge {
+         PrefServiceBridgeJni.get().setString(preference, value);
+     }
+ 
++    public boolean isCookiesSessionOnlyEnabled() {
++        return PrefServiceBridgeJni.get().getCookiesSessionOnlyEnabled(PrefServiceBridge.this);
++    }
++    public void setCookiesSessionOnlyEnabled(boolean enabled) {
++        PrefServiceBridgeJni.get().setCookiesSessionOnlyEnabled(PrefServiceBridge.this, enabled);
++    }
 +
 +
- static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
-     JNIEnv* env,
-     const JavaParamRef<jobject>& obj,
+     /**
+      * @param preference The name of the preference.
+      * @return Whether the specified preference is managed.
+@@ -97,6 +104,8 @@ public class PrefServiceBridge {
+ 
+     @NativeMethods
+     interface Natives {
++        boolean getCookiesSessionOnlyEnabled(PrefServiceBridge caller);
++        void setCookiesSessionOnlyEnabled(PrefServiceBridge caller, boolean enabled);
+         boolean getBoolean(int preference);
+         void setBoolean(int preference, boolean value);
+         int getInteger(int preference);
+@@ -106,3 +115,4 @@ public class PrefServiceBridge {
+         boolean isManagedPreference(int preference);
+     }
+ }
++
+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
+@@ -898,6 +898,12 @@ Your Google account may have other forms of browsing history like searches and a
+       <message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
+         Prevent third-party websites from saving and reading cookie data
+       </message>
++      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
++        Keep cookies only until you quit your browser
++      </message>
++      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
++        When enabled, all cookies will be erased when the browsing session is over
++      </message>
+       <message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
+         JavaScript
+       </message>
 -- 
 -- 
 2.17.1
 2.17.1
 
 

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

@@ -8,33 +8,32 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
  chrome/android/java/res/values/values.xml     |  2 +
  chrome/android/java/res/values/values.xml     |  2 +
  .../android/java/res/xml/doh_preferences.xml  | 25 +++++
  .../android/java/res/xml/doh_preferences.xml  | 25 +++++
  .../java/res/xml/privacy_preferences.xml      |  5 +
  .../java/res/xml/privacy_preferences.xml      |  5 +
- .../chrome/browser/preferences/DoHEditor.java | 91 +++++++++++++++++++
- .../browser/preferences/DoHPreferences.java   | 52 +++++++++++
- .../chrome/browser/util/FeatureUtilities.java | 24 +++++
- .../java/strings/android_chrome_strings.grd   | 11 +++
+ .../browser/flags/FeatureUtilities.java       | 24 +++++
+ .../chrome/browser/settings/DoHEditor.java    | 92 +++++++++++++++++++
+ .../browser/settings/DoHPreferences.java      | 54 +++++++++++
  chrome/app/generated_resources.grd            |  6 ++
  chrome/app/generated_resources.grd            |  6 ++
  chrome/browser/android/feature_utilities.cc   | 23 +++++
  chrome/browser/android/feature_utilities.cc   | 23 +++++
  .../net/system_network_context_manager.cc     | 46 +++-------
  .../net/system_network_context_manager.cc     | 46 +++-------
+ .../strings/android_chrome_strings.grd        | 11 +++
  chrome/common/chrome_features.cc              |  4 +-
  chrome/common/chrome_features.cc              |  4 +-
- 13 files changed, 319 insertions(+), 37 deletions(-)
+ 13 files changed, 322 insertions(+), 37 deletions(-)
  create mode 100644 chrome/android/java/res/layout/doh_editor.xml
  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/res/xml/doh_preferences.xml
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java
+ create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
+ create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
 
 
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -1263,7 +1263,9 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/preferences/ClearBrowsingDataCheckBoxPreference.java",
-   "java/src/org/chromium/chrome/browser/preferences/ExpandablePreferenceGroup.java",
-   "java/src/org/chromium/chrome/browser/preferences/HomepageEditor.java",
-+  "java/src/org/chromium/chrome/browser/preferences/DoHEditor.java",
-   "java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java",
-+  "java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java",
-   "java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java",
-   "java/src/org/chromium/chrome/browser/preferences/LearnMorePreference.java",
-   "java/src/org/chromium/chrome/browser/preferences/LegalInformationPreferences.java",
+@@ -1335,6 +1335,8 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/settings/ChromeSwitchPreference.java",
+   "java/src/org/chromium/chrome/browser/settings/ClearBrowsingDataCheckBoxPreference.java",
+   "java/src/org/chromium/chrome/browser/settings/ExpandablePreferenceGroup.java",
++  "java/src/org/chromium/chrome/browser/settings/DoHEditor.java",
++  "java/src/org/chromium/chrome/browser/settings/DoHPreferences.java",
+   "java/src/org/chromium/chrome/browser/settings/HomepageEditor.java",
+   "java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java",
+   "java/src/org/chromium/chrome/browser/settings/HyperlinkPreference.java",
 diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java/res/layout/doh_editor.xml
 diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java/res/layout/doh_editor.xml
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
@@ -108,7 +107,7 @@ new file mode 100644
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -92,6 +92,8 @@
+@@ -91,6 +91,8 @@
      <integer name="download_infobar_bar_fill_in_delay">400</integer>
      <integer name="download_infobar_bar_fill_in_delay">400</integer>
      <integer name="download_infobar_bar_fill_out_delay">200</integer>
      <integer name="download_infobar_bar_fill_out_delay">200</integer>
  
  
@@ -131,12 +130,12 @@ new file mode 100644
 +    xmlns:android="http://schemas.android.com/apk/res/android"
 +    xmlns:android="http://schemas.android.com/apk/res/android"
 +    xmlns:app="http://schemas.android.com/apk/res-auto">
 +    xmlns:app="http://schemas.android.com/apk/res-auto">
 +
 +
-+    <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
++    <org.chromium.chrome.browser.settings.ChromeSwitchPreference
 +        android:key="doh_switch"
 +        android:key="doh_switch"
 +        android:summaryOn="@string/text_on"
 +        android:summaryOn="@string/text_on"
 +        android:summaryOff="@string/text_off" />
 +        android:summaryOff="@string/text_off" />
 +
 +
-+    <org.chromium.chrome.browser.preferences.HyperlinkPreference
++    <org.chromium.chrome.browser.settings.HyperlinkPreference
 +        android:key="doh_help"
 +        android:key="doh_help"
 +        android:title="@string/doh_help"
 +        android:title="@string/doh_help"
 +        app:url="@string/doh_help_url" />
 +        app:url="@string/doh_help_url" />
@@ -144,7 +143,7 @@ new file mode 100644
 +    <Preference
 +    <Preference
 +        android:key="doh_edit"
 +        android:key="doh_edit"
 +        android:title="@string/options_doh_edit_label"
 +        android:title="@string/options_doh_edit_label"
-+        android:fragment="org.chromium.chrome.browser.preferences.DoHEditor" />
++        android:fragment="org.chromium.chrome.browser.settings.DoHEditor" />
 +
 +
 +</PreferenceScreen>
 +</PreferenceScreen>
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -155,23 +154,64 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
          android:title="@string/can_make_payment_title"
          android:title="@string/can_make_payment_title"
          android:summary="@string/settings_can_make_payment_toggle_label" />
          android:summary="@string/settings_can_make_payment_toggle_label" />
 +    <Preference
 +    <Preference
-+        android:fragment="org.chromium.chrome.browser.preferences.DoHPreferences"
++        android:fragment="org.chromium.chrome.browser.settings.DoHPreferences"
 +        android:key="doh"
 +        android:key="doh"
 +        android:title="@string/options_doh_title"
 +        android:title="@string/options_doh_title"
 +        android:summary="@string/options_doh_summary" />
 +        android:summary="@string/options_doh_summary" />
-     <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+     <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
          android:key="preload_pages"
          android:key="preload_pages"
          android:title="@string/preload_pages_title"
          android:title="@string/preload_pages_title"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+@@ -95,6 +95,26 @@ public class FeatureUtilities {
+         FeatureUtilitiesJni.get().setCustomTabVisible(visible);
+     }
+ 
++     /**
++     * Records whether custom URL for DoH is enabled with native-side feature utilities.
++     * @param url Whether custom URL is enabled or not.
++     */
++     public static void setDoHEnabled(boolean enabled) {
++         FeatureUtilitiesJni.get().setDoHEnabled(enabled);
++     }
++
++     public static boolean getDoHEnabled() {
++         return FeatureUtilitiesJni.get().getDoHEnabled();
++     }
++
++     public static void setDoHTemplates(String t) {
++         FeatureUtilitiesJni.get().setDoHTemplates(t);
++     }
++
++     public static String getDoHTemplates() {
++         return FeatureUtilitiesJni.get().getDoHTemplates();
++     }
++
+     /**
+      * Records whether the activity is in multi-window mode with native-side feature utilities.
+      * @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
+@@ -736,6 +756,10 @@ public class FeatureUtilities {
+         void setCustomTabVisible(boolean visible);
+         void setActivityType(@ActivityType int type);
+         void setIsInMultiWindowMode(boolean isInMultiWindowMode);
++        void setDoHEnabled(boolean enabled);
++        boolean getDoHEnabled();
++        void setDoHTemplates(String templates);
++        String getDoHTemplates();
+         boolean isNetworkServiceWarmUpEnabled();
+         void setAdBlockFiltersURL(String url);
+         String getAdBlockFiltersURL();
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
-@@ -0,0 +1,91 @@
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
+@@ -0,0 +1,92 @@
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
 +// found in the LICENSE file.
 +
 +
-+package org.chromium.chrome.browser.preferences;
++package org.chromium.chrome.browser.settings;
 +
 +
 +import android.os.Bundle;
 +import android.os.Bundle;
 +import android.support.v4.app.Fragment;
 +import android.support.v4.app.Fragment;
@@ -183,7 +223,8 @@ new file mode 100644
 +import android.widget.Button;
 +import android.widget.Button;
 +import android.widget.EditText;
 +import android.widget.EditText;
 +
 +
-+import org.chromium.chrome.browser.util.FeatureUtilities;
++import org.chromium.chrome.browser.settings.SettingsUtils;
++import org.chromium.chrome.browser.flags.FeatureUtilities;
 +import org.chromium.chrome.R;
 +import org.chromium.chrome.R;
 +import org.chromium.components.url_formatter.UrlFormatter;
 +import org.chromium.components.url_formatter.UrlFormatter;
 +
 +
@@ -204,7 +245,7 @@ new file mode 100644
 +        View v = inflater.inflate(R.layout.doh_editor, container, false);
 +        View v = inflater.inflate(R.layout.doh_editor, container, false);
 +        View scrollView = v.findViewById(R.id.scroll_view);
 +        View scrollView = v.findViewById(R.id.scroll_view);
 +        scrollView.getViewTreeObserver().addOnScrollChangedListener(
 +        scrollView.getViewTreeObserver().addOnScrollChangedListener(
-+                PreferenceUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
++                SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
 +        mDoHUrlEdit = (EditText) v.findViewById(R.id.doh_url_edit);
 +        mDoHUrlEdit = (EditText) v.findViewById(R.id.doh_url_edit);
 +        mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
 +        mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
 +        mDoHUrlEdit.addTextChangedListener(this);
 +        mDoHUrlEdit.addTextChangedListener(this);
@@ -258,23 +299,25 @@ new file mode 100644
 +        });
 +        });
 +    }
 +    }
 +}
 +}
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java
-@@ -0,0 +1,52 @@
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
+@@ -0,0 +1,54 @@
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Copyright 2015 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
 +// Use of this source code is governed by a BSD-style license that can be
 +// found in the LICENSE file.
 +// found in the LICENSE file.
 +
 +
-+package org.chromium.chrome.browser.preferences;
++package org.chromium.chrome.browser.settings;
 +
 +
 +import android.os.Bundle;
 +import android.os.Bundle;
 +import android.support.v7.preference.Preference;
 +import android.support.v7.preference.Preference;
 +import android.support.v7.preference.PreferenceFragmentCompat;
 +import android.support.v7.preference.PreferenceFragmentCompat;
++import org.chromium.chrome.browser.settings.ChromeSwitchPreference;
 +
 +
-+import org.chromium.chrome.browser.util.FeatureUtilities;
-+import org.chromium.base.VisibleForTesting;
++import org.chromium.chrome.browser.settings.SettingsUtils;
++import org.chromium.chrome.browser.flags.FeatureUtilities;
++import androidx.annotation.VisibleForTesting;
 +import org.chromium.chrome.R;
 +import org.chromium.chrome.R;
 +
 +
 +/**
 +/**
@@ -290,7 +333,7 @@ new file mode 100644
 +    @Override
 +    @Override
 +    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 +    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 +        getActivity().setTitle(R.string.options_doh_title);
 +        getActivity().setTitle(R.string.options_doh_title);
-+        PreferenceUtils.addPreferencesFromResource(this, R.xml.doh_preferences);
++        SettingsUtils.addPreferencesFromResource(this, R.xml.doh_preferences);
 +
 +
 +        ChromeSwitchPreference mDoHSwitch =
 +        ChromeSwitchPreference mDoHSwitch =
 +                (ChromeSwitchPreference) findPreference(PREF_DOH_SWITCH);
 +                (ChromeSwitchPreference) findPreference(PREF_DOH_SWITCH);
@@ -315,72 +358,10 @@ new file mode 100644
 +        updateCurrentDoHUrl();
 +        updateCurrentDoHUrl();
 +    }
 +    }
 +}
 +}
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-@@ -224,6 +224,26 @@ public class FeatureUtilities {
-         FeatureUtilitiesJni.get().setCustomTabVisible(visible);
-     }
- 
-+     /**
-+     * Records whether custom URL for DoH is enabled with native-side feature utilities.
-+     * @param url Whether custom URL is enabled or not.
-+     */
-+     public static void setDoHEnabled(boolean enabled) {
-+         FeatureUtilitiesJni.get().setDoHEnabled(enabled);
-+     }
-+
-+     public static boolean getDoHEnabled() {
-+         return FeatureUtilitiesJni.get().getDoHEnabled();
-+     }
-+
-+     public static void setDoHTemplates(String t) {
-+         FeatureUtilitiesJni.get().setDoHTemplates(t);
-+     }
-+
-+     public static String getDoHTemplates() {
-+         return FeatureUtilitiesJni.get().getDoHTemplates();
-+     }
-+
-     /**
-      * Records whether the activity is in multi-window mode with native-side feature utilities.
-      * @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
-@@ -878,6 +898,10 @@ public class FeatureUtilities {
-     interface Natives {
-         void setCustomTabVisible(boolean visible);
-         void setIsInMultiWindowMode(boolean isInMultiWindowMode);
-+        void setDoHEnabled(boolean enabled);
-+        boolean getDoHEnabled();
-+        void setDoHTemplates(String templates);
-+        String getDoHTemplates();
-         boolean isNetworkServiceWarmUpEnabled();
-         void setAdBlockFiltersURL(String url);
-         String getAdBlockFiltersURL();
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -644,6 +644,17 @@ CHAR-LIMIT guidelines:
-         Chrome Passwords
-       </message>
- 
-+      <!-- DoH preferences -->
-+      <message name="IDS_OPTIONS_DOH_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used for DNS-over-HTTPS queries.">
-+        Edit DoH template URLs
-+      </message>
-+      <message name="IDS_OPTIONS_DOH_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used for DNS-over-HTTPS queries.">
-+        DoH template URLs
-+      </message>
-+      <message name="IDS_DOH_HELP" desc="The title of the hyperlink that allows users to visit the wiki page with instructions for DNS-over-HTTPS configuration.">
-+        Visit help page
-+      </message>
-+
-       <!-- Homepage preferences -->
-       <message name="IDS_OPTIONS_HOMEPAGE_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that opens when they tap on the home page button in the omnibox.">
-         Edit home page
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -6558,6 +6558,12 @@ the Bookmarks menu.">
+@@ -6699,6 +6699,12 @@ the Bookmarks menu.">
          <message name="IDS_OPTIONS_HOMEPAGE_TITLE" desc="The title of the home page overlay on Android" formatter_data="android_java">
          <message name="IDS_OPTIONS_HOMEPAGE_TITLE" desc="The title of the home page overlay on Android" formatter_data="android_java">
            Home page
            Home page
          </message>
          </message>
@@ -406,7 +387,7 @@ diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/androi
  #include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
  #include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
  #include "chrome/browser/profiles/profile_manager.h"
  #include "chrome/browser/profiles/profile_manager.h"
  #include "components/ntp_snippets/content_suggestions_service.h"
  #include "components/ntp_snippets/content_suggestions_service.h"
-@@ -76,3 +79,23 @@ static jboolean JNI_FeatureUtilities_IsNetworkServiceWarmUpEnabled(
+@@ -87,3 +90,23 @@ static jboolean JNI_FeatureUtilities_IsNetworkServiceWarmUpEnabled(
    return content::IsOutOfProcessNetworkService() &&
    return content::IsOutOfProcessNetworkService() &&
           base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
           base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
  }
  }
@@ -433,7 +414,7 @@ diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/androi
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 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
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -137,9 +137,14 @@ void GetStubResolverConfig(
+@@ -139,9 +139,14 @@ void GetStubResolverConfig(
  
  
    std::string doh_templates =
    std::string doh_templates =
        local_state->GetString(prefs::kDnsOverHttpsTemplates);
        local_state->GetString(prefs::kDnsOverHttpsTemplates);
@@ -451,7 +432,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
      for (const std::string& server_template :
      for (const std::string& server_template :
           SplitString(doh_templates, " ", base::TRIM_WHITESPACE,
           SplitString(doh_templates, " ", base::TRIM_WHITESPACE,
                       base::SPLIT_WANT_NONEMPTY)) {
                       base::SPLIT_WANT_NONEMPTY)) {
-@@ -425,40 +430,11 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -429,40 +434,11 @@ SystemNetworkContextManager::SystemNetworkContextManager(
    // features before registering change callbacks for these preferences.
    // features before registering change callbacks for these preferences.
    local_state_->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
    local_state_->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
                                      base::Value(ShouldEnableAsyncDns()));
                                      base::Value(ShouldEnableAsyncDns()));
@@ -495,10 +476,31 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  
  
    PrefChangeRegistrar::NamedChangeCallback dns_pref_callback =
    PrefChangeRegistrar::NamedChangeCallback dns_pref_callback =
        base::BindRepeating(&OnStubResolverConfigChanged,
        base::BindRepeating(&OnStubResolverConfigChanged,
+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
+@@ -674,6 +674,17 @@ CHAR-LIMIT guidelines:
+         Chrome Passwords
+       </message>
+ 
++      <!-- DoH preferences -->
++      <message name="IDS_OPTIONS_DOH_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used for DNS-over-HTTPS queries.">
++        Edit DoH template URLs
++      </message>
++      <message name="IDS_OPTIONS_DOH_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used for DNS-over-HTTPS queries.">
++        DoH template URLs
++      </message>
++      <message name="IDS_DOH_HELP" desc="The title of the hyperlink that allows users to visit the wiki page with instructions for DNS-over-HTTPS configuration.">
++        Visit help page
++      </message>
++
+       <!-- Homepage preferences -->
+       <message name="IDS_OPTIONS_HOMEPAGE_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that opens when they tap on the home page button in the omnibox.">
+         Edit home page
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -294,12 +294,12 @@ const char kDisallowUnsafeHttpDownloadsParamName[] = "MimeTypeList";
+@@ -303,12 +303,12 @@ const char kDisallowUnsafeHttpDownloadsParamName[] = "MimeTypeList";
  
  
  // Enable DNS over HTTPS (DoH).
  // Enable DNS over HTTPS (DoH).
  const base::Feature kDnsOverHttps{"DnsOverHttps",
  const base::Feature kDnsOverHttps{"DnsOverHttps",

+ 12 - 36
build/patches/Allow-building-without-feed-support.patch

@@ -3,15 +3,14 @@ Date: Thu, 19 Dec 2019 22:52:53 +0100
 Subject: Allow building without feed support
 Subject: Allow building without feed support
 
 
 ---
 ---
- .../start_surface/StartSurfaceCoordinator.java   |  5 -----
- .../start_surface/StartSurfaceMediator.java      | 16 ----------------
- .../browser/ntp/cards/ExploreOfflineCard.java    |  5 +----
- 3 files changed, 1 insertion(+), 25 deletions(-)
+ .../start_surface/StartSurfaceCoordinator.java    |  5 -----
+ .../start_surface/StartSurfaceMediator.java       | 15 ---------------
+ 2 files changed, 20 deletions(-)
 
 
 diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
 diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
 +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
 +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
-@@ -198,11 +198,6 @@ public class StartSurfaceCoordinator implements StartSurface {
+@@ -211,11 +211,6 @@ public class StartSurfaceCoordinator implements StartSurface {
              mBottomBarCoordinator = new BottomBarCoordinator(
              mBottomBarCoordinator = new BottomBarCoordinator(
                      mActivity, mActivity.getCompositorViewHolder(), mPropertyModel);
                      mActivity, mActivity.getCompositorViewHolder(), mPropertyModel);
          }
          }
@@ -26,9 +25,9 @@ diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromiu
 diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
-@@ -253,15 +253,6 @@ class StartSurfaceMediator
-                 RecordUserAction.record("StartSurface.TasksOnly");
-             }
+@@ -403,14 +403,6 @@ class StartSurfaceMediator
+             assert (isShownState(shownState));
+             setOverviewState(shownState);
  
  
 -            // Make sure FeedSurfaceCoordinator is built before the explore surface is showing by
 -            // Make sure FeedSurfaceCoordinator is built before the explore surface is showing by
 -            // default.
 -            // default.
@@ -38,11 +37,10 @@ diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromiu
 -                        mFeedSurfaceCreator.createFeedSurfaceCoordinator(
 -                        mFeedSurfaceCreator.createFeedSurfaceCoordinator(
 -                                mNightModeStateProvider.isInNightMode()));
 -                                mNightModeStateProvider.isInNightMode()));
 -            }
 -            }
--
-             mPropertyModel.set(IS_SHOWING_OVERVIEW, true);
-             mFakeboxDelegate.addUrlFocusChangeListener(mUrlFocusChangeListener);
-         }
-@@ -361,13 +352,6 @@ class StartSurfaceMediator
+             mTabModelSelector.addObserver(mTabModelSelectorObserver);
+ 
+             if (mFullScreenListener != null) {
+@@ -523,13 +515,6 @@ class StartSurfaceMediator
      private void setExploreSurfaceVisibility(boolean isVisible) {
      private void setExploreSurfaceVisibility(boolean isVisible) {
          if (isVisible == mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) return;
          if (isVisible == mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) return;
  
  
@@ -55,29 +53,7 @@ diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromiu
 -
 -
          mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, isVisible);
          mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, isVisible);
  
  
-         if (mSurfaceMode == SurfaceMode.TWO_PANES) {
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
-@@ -13,7 +13,6 @@ import org.chromium.base.ApiCompatibilityUtils;
- import org.chromium.chrome.R;
- import org.chromium.chrome.browser.ChromeFeatureList;
- import org.chromium.chrome.browser.download.DownloadUtils;
--import org.chromium.chrome.browser.feed.FeedConfiguration;
- import org.chromium.net.NetworkChangeNotifier;
- import org.chromium.ui.text.SpanApplier;
- 
-@@ -73,9 +72,7 @@ public class ExploreOfflineCard {
- 
-         View imageView = cardView.findViewById(R.id.explore_offline_image);
-         imageView.setBackground(imageView.getContext().getResources().getDrawable(
--                FeedConfiguration.getFeedUiEnabled()
--                        ? R.drawable.card_background_rounded_right_half_with_border
--                        : R.drawable.card_background_rounded_right_half_no_border));
-+                        R.drawable.card_background_rounded_right_half_no_border));
- 
-         cardView.setOnClickListener(v -> mOpenDownloadHomeCallback.run());
-         return cardView;
+         if (mOverviewModeState == OverviewModeState.SHOWN_TABSWITCHER_TWO_PANES) {
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 3 - 3
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
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -989,6 +989,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -962,6 +962,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
    return pipeline_metadata_.has_audio;
    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(
  void WebMediaPlayerImpl::EnabledAudioTracksChanged(
      const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
      const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
    DCHECK(main_task_runner_->BelongsToCurrentThread());
    DCHECK(main_task_runner_->BelongsToCurrentThread());
-@@ -3298,7 +3304,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3283,7 +3289,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
    // Audio only stream is allowed to play when in background.
    // Audio only stream is allowed to play when in background.
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // to move the logic of checking video frames out of that function.
    // to move the logic of checking video frames out of that function.
@@ -39,7 +39,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
 diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
 diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
 --- a/media/blink/webmediaplayer_impl.h
 --- a/media/blink/webmediaplayer_impl.h
 +++ b/media/blink/webmediaplayer_impl.h
 +++ b/media/blink/webmediaplayer_impl.h
-@@ -143,6 +143,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -145,6 +145,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
    // True if the loaded media has a playable video/audio track.
    // True if the loaded media has a playable video/audio track.
    bool HasVideo() const override;
    bool HasVideo() const override;
    bool HasAudio() const override;
    bool HasAudio() const override;

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

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

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

@@ -11,7 +11,7 @@ Do not read experiment value for cronet async DNS configuration
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 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
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -245,7 +245,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
+@@ -247,7 +247,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
  // Android this includes checking the Android version in the field trial.
  // Android this includes checking the Android version in the field trial.
  bool ShouldEnableAsyncDns() {
  bool ShouldEnableAsyncDns() {
    bool feature_can_be_enabled = true;
    bool feature_can_be_enabled = true;
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
 diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
 --- a/components/cronet/url_request_context_config.cc
 --- a/components/cronet/url_request_context_config.cc
 +++ b/components/cronet/url_request_context_config.cc
 +++ b/components/cronet/url_request_context_config.cc
-@@ -573,7 +573,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
+@@ -564,7 +564,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
          effective_experimental_options->Remove(it.key(), nullptr);
          effective_experimental_options->Remove(it.key(), nullptr);
          continue;
          continue;
        }
        }

+ 17 - 17
build/patches/Always-show-site-settings-for-cookies-javascript-and-ads.patch

@@ -5,12 +5,12 @@ Subject: Always show site settings for cookies, javascript and ads
 Avoid displaying info about intrusive ads
 Avoid displaying info about intrusive ads
 ---
 ---
  .../website/SingleWebsitePreferences.java     | 46 +++++++++----------
  .../website/SingleWebsitePreferences.java     | 46 +++++++++----------
- .../browser/preferences/website/Website.java  | 20 ++++++++
+ .../browser/settings/website/Website.java     | 20 ++++++++
  2 files changed, 42 insertions(+), 24 deletions(-)
  2 files changed, 42 insertions(+), 24 deletions(-)
 
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
 @@ -46,6 +46,7 @@ import java.util.Set;
 @@ -46,6 +46,7 @@ import java.util.Set;
   */
   */
  public class SingleWebsitePreferences extends PreferenceFragmentCompat
  public class SingleWebsitePreferences extends PreferenceFragmentCompat
@@ -31,13 +31,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +                    // initialize cookie and javascript with the category global defaults
 +                    // initialize cookie and javascript with the category global defaults
 +                    if (permission == null) {
 +                    if (permission == null) {
 +                       if (i == ContentSettingException.Type.COOKIE)
 +                       if (i == ContentSettingException.Type.COOKIE)
-+                          permission = PrefServiceBridge.getInstance().isCategoryEnabled(
-+                                 ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES)
++                          permission = WebsitePreferenceBridge.isCategoryEnabled(
++                                 ContentSettingsType.COOKIES)
 +                                 ? ContentSettingValues.ALLOW
 +                                 ? ContentSettingValues.ALLOW
 +                                 : ContentSettingValues.BLOCK;
 +                                 : ContentSettingValues.BLOCK;
 +                       else if (i == ContentSettingException.Type.JAVASCRIPT)
 +                       else if (i == ContentSettingException.Type.JAVASCRIPT)
-+                          permission = PrefServiceBridge.getInstance().isCategoryEnabled(
-+                                 ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT)
++                          permission = WebsitePreferenceBridge.isCategoryEnabled(
++                                 ContentSettingsType.JAVASCRIPT)
 +                                 ? ContentSettingValues.ALLOW
 +                                 ? ContentSettingValues.ALLOW
 +                                 : ContentSettingValues.BLOCK;
 +                                 : ContentSettingValues.BLOCK;
 +                    }
 +                    }
@@ -45,7 +45,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
                  }
                  }
                  return;
                  return;
              }
              }
-@@ -626,17 +644,8 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
+@@ -640,17 +658,8 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
      }
      }
  
  
      private void setUpAdsInformationalBanner() {
      private void setUpAdsInformationalBanner() {
@@ -65,7 +65,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
      }
      }
  
  
      private SiteSettingsCategory getWarningCategory() {
      private SiteSettingsCategory getWarningCategory() {
-@@ -711,6 +720,7 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
+@@ -725,6 +734,7 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
          // TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are
          // TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are
          // effectively treating non-ALLOW values as BLOCK.
          // effectively treating non-ALLOW values as BLOCK.
          int index = (value == ContentSettingValues.ALLOW ? 0 : 1);
          int index = (value == ContentSettingValues.ALLOW ? 0 : 1);
@@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          listPreference.setValueIndex(index);
          listPreference.setValueIndex(index);
          listPreference.setOnPreferenceChangeListener(this);
          listPreference.setOnPreferenceChangeListener(this);
          listPreference.setSummary("%s");
          listPreference.setSummary("%s");
-@@ -782,22 +792,10 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
+@@ -794,22 +804,10 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
              setUpListPreference(preference, null);
              setUpListPreference(preference, null);
              return;
              return;
          }
          }
@@ -96,11 +96,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          // However, if the blocking is activated, we still want to show the permission, even if it
          // However, if the blocking is activated, we still want to show the permission, even if it
          // is in the default state.
          // is in the default state.
          if (permission == null) {
          if (permission == null) {
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
 @@ -166,6 +166,26 @@ public class Website implements Serializable {
 @@ -166,6 +166,26 @@ public class Website implements Serializable {
-                         new ContentSettingException(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS,
+                         new ContentSettingException(ContentSettingsType.ADS,
                                  getAddress().getOrigin(), ContentSettingValues.BLOCK, "");
                                  getAddress().getOrigin(), ContentSettingValues.BLOCK, "");
              }
              }
 +        } else if (type == ContentSettingException.Type.COOKIE) {
 +        } else if (type == ContentSettingException.Type.COOKIE) {
@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +            // permission.
 +            // permission.
 +            if (mContentSettingException[type] == null) {
 +            if (mContentSettingException[type] == null) {
 +                mContentSettingException[type] =
 +                mContentSettingException[type] =
-+                        new ContentSettingException(ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES,
++                        new ContentSettingException(ContentSettingsType.COOKIES,
 +                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
 +                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
 +            }
 +            }
 +        } else if (type == ContentSettingException.Type.JAVASCRIPT) {
 +        } else if (type == ContentSettingException.Type.JAVASCRIPT) {
@@ -120,7 +120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +            // permission.
 +            // permission.
 +            if (mContentSettingException[type] == null) {
 +            if (mContentSettingException[type] == null) {
 +                mContentSettingException[type] =
 +                mContentSettingException[type] =
-+                        new ContentSettingException(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT,
++                        new ContentSettingException(ContentSettingsType.JAVASCRIPT,
 +                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
 +                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
 +            }
 +            }
          } else if (type == ContentSettingException.Type.SOUND) {
          } else if (type == ContentSettingException.Type.SOUND) {

File diff suppressed because it is too large
+ 73 - 232
build/patches/Automated-domain-substitution.patch


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

@@ -63,15 +63,15 @@ diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_t
 diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
 diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
 --- a/chromecast/browser/url_request_context_factory.cc
 --- a/chromecast/browser/url_request_context_factory.cc
 +++ b/chromecast/browser/url_request_context_factory.cc
 +++ b/chromecast/browser/url_request_context_factory.cc
-@@ -39,6 +39,7 @@
- #include "net/http/http_stream_factory.h"
+@@ -40,6 +40,7 @@
  #include "net/proxy_resolution/proxy_resolution_service.h"
  #include "net/proxy_resolution/proxy_resolution_service.h"
+ #include "net/quic/quic_context.h"
  #include "net/ssl/ssl_config_service_defaults.h"
  #include "net/ssl/ssl_config_service_defaults.h"
 +#include "net/url_request/trk_protocol_handler.h"
 +#include "net/url_request/trk_protocol_handler.h"
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_builder.h"
  #include "net/url_request/url_request_context_builder.h"
  #include "net/url_request/url_request_context_getter.h"
  #include "net/url_request/url_request_context_getter.h"
-@@ -245,13 +246,17 @@ void URLRequestContextFactory::InitializeMainContextDependencies(
+@@ -248,13 +249,17 @@ void URLRequestContextFactory::InitializeMainContextDependencies(
        new net::URLRequestJobFactoryImpl());
        new net::URLRequestJobFactoryImpl());
    // Keep ProtocolHandlers added in sync with
    // Keep ProtocolHandlers added in sync with
    // CastContentBrowserClient::IsHandledURL().
    // CastContentBrowserClient::IsHandledURL().
@@ -131,8 +131,8 @@ 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
 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
 --- a/content/browser/child_process_security_policy_impl.cc
 +++ b/content/browser/child_process_security_policy_impl.cc
 +++ b/content/browser/child_process_security_policy_impl.cc
-@@ -513,6 +513,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
-   RegisterWebSafeScheme(url::kHttpsScheme);
+@@ -617,6 +617,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
+ #endif  // BUILDFLAG(ENABLE_WEBSOCKETS)
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kDataScheme);
    RegisterWebSafeScheme(url::kDataScheme);
 +  RegisterWebSafeScheme(url::kTraceScheme);
 +  RegisterWebSafeScheme(url::kTraceScheme);
@@ -142,7 +142,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
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1801,6 +1801,8 @@ component("net") {
+@@ -1662,6 +1662,8 @@ component("net") {
        "url_request/report_sender.h",
        "url_request/report_sender.h",
        "url_request/static_http_user_agent_settings.cc",
        "url_request/static_http_user_agent_settings.cc",
        "url_request/static_http_user_agent_settings.h",
        "url_request/static_http_user_agent_settings.h",
@@ -239,7 +239,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
  
  
  using base::Time;
  using base::Time;
  using std::string;
  using std::string;
-@@ -592,6 +594,12 @@ URLRequest::URLRequest(const GURL& url,
+@@ -579,6 +581,12 @@ URLRequest::URLRequest(const GURL& url,
    // Sanity check out environment.
    // Sanity check out environment.
    DCHECK(base::ThreadTaskRunnerHandle::IsSet());
    DCHECK(base::ThreadTaskRunnerHandle::IsSet());
  
  
@@ -256,14 +256,14 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
 --- a/net/url_request/url_request_context_builder.cc
 --- a/net/url_request/url_request_context_builder.cc
 +++ b/net/url_request/url_request_context_builder.cc
 +++ b/net/url_request/url_request_context_builder.cc
 @@ -40,6 +40,7 @@
 @@ -40,6 +40,7 @@
+ #include "net/quic/quic_stream_factory.h"
  #include "net/ssl/ssl_config_service_defaults.h"
  #include "net/ssl/ssl_config_service_defaults.h"
- #include "net/url_request/data_protocol_handler.h"
  #include "net/url_request/static_http_user_agent_settings.h"
  #include "net/url_request/static_http_user_agent_settings.h"
 +#include "net/url_request/trk_protocol_handler.h"
 +#include "net/url_request/trk_protocol_handler.h"
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_intercepting_job_factory.h"
  #include "net/url_request/url_request_intercepting_job_factory.h"
-@@ -641,6 +642,9 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -649,6 +650,9 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      }
      }
      url_request_interceptors_.clear();
      url_request_interceptors_.clear();
    }
    }
@@ -276,9 +276,9 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
 diff --git a/url/url_constants.cc b/url/url_constants.cc
 diff --git a/url/url_constants.cc b/url/url_constants.cc
 --- a/url/url_constants.cc
 --- a/url/url_constants.cc
 +++ b/url/url_constants.cc
 +++ b/url/url_constants.cc
-@@ -26,6 +26,7 @@ const char kHttpsScheme[] = "https";
- const char kJavaScriptScheme[] = "javascript";
- const char kMailToScheme[] = "mailto";
+@@ -28,6 +28,7 @@ const char kMailToScheme[] = "mailto";
+ // See also: https://www.iana.org/assignments/uri-schemes/prov/quic-transport
+ const char kQuicTransportScheme[] = "quic-transport";
  const char kTelScheme[] = "tel";
  const char kTelScheme[] = "tel";
 +const char kTraceScheme[] = "trk";
 +const char kTraceScheme[] = "trk";
  const char kWsScheme[] = "ws";
  const char kWsScheme[] = "ws";
@@ -287,9 +287,9 @@ diff --git a/url/url_constants.cc b/url/url_constants.cc
 diff --git a/url/url_constants.h b/url/url_constants.h
 diff --git a/url/url_constants.h b/url/url_constants.h
 --- a/url/url_constants.h
 --- a/url/url_constants.h
 +++ b/url/url_constants.h
 +++ b/url/url_constants.h
-@@ -32,6 +32,7 @@ COMPONENT_EXPORT(URL) extern const char kHttpsScheme[];
- COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[];
+@@ -32,6 +32,7 @@ COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[];
  COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
  COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
+ COMPONENT_EXPORT(URL) extern const char kQuicTransportScheme[];
  COMPONENT_EXPORT(URL) extern const char kTelScheme[];
  COMPONENT_EXPORT(URL) extern const char kTelScheme[];
 +COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
 +COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
  COMPONENT_EXPORT(URL) extern const char kWsScheme[];
  COMPONENT_EXPORT(URL) extern const char kWsScheme[];
@@ -298,15 +298,15 @@ diff --git a/url/url_constants.h b/url/url_constants.h
 diff --git a/url/url_util.cc b/url/url_util.cc
 diff --git a/url/url_util.cc b/url/url_util.cc
 --- a/url/url_util.cc
 --- a/url/url_util.cc
 +++ b/url/url_util.cc
 +++ b/url/url_util.cc
-@@ -52,6 +52,7 @@ struct SchemeRegistry {
-       kHttpsScheme,
-       kAboutScheme,
-       kDataScheme,
-+      kTraceScheme,
-       kWssScheme,
-   };
- 
-@@ -67,6 +68,7 @@ struct SchemeRegistry {
+@@ -27,6 +27,7 @@ struct SchemeRegistry {
+   std::vector<SchemeWithType> standard_schemes = {
+       {kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
+       {kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
++      {kTraceScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
+       // 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
+@@ -64,6 +65,7 @@ struct SchemeRegistry {
        kAboutScheme,
        kAboutScheme,
        kJavaScriptScheme,
        kJavaScriptScheme,
        kDataScheme,
        kDataScheme,

+ 32 - 41
build/patches/Bromite-AdBlockUpdaterService.patch

@@ -7,18 +7,18 @@ Do not use experiments to enable/disable presets
 Always enable ad filtering
 Always enable ad filtering
 Download filters by checking Last-Modified header first
 Download filters by checking Last-Modified header first
 ---
 ---
- .../chrome/browser/util/FeatureUtilities.java |  10 +
+ .../browser/flags/FeatureUtilities.java       |  10 +
  chrome/browser/after_startup_task_utils.cc    |   5 +
  chrome/browser/after_startup_task_utils.cc    |   5 +
  chrome/browser/browser_process.h              |   7 +
  chrome/browser/browser_process.h              |   7 +
  chrome/browser/browser_process_impl.cc        |  28 ++
  chrome/browser/browser_process_impl.cc        |  28 ++
  chrome/browser/browser_process_impl.h         |   3 +
  chrome/browser/browser_process_impl.h         |   3 +
  chrome/browser/chrome_browser_main.cc         |   5 +-
  chrome/browser/chrome_browser_main.cc         |   5 +-
- .../browser/chrome_content_browser_client.cc  |  17 --
+ .../browser/chrome_content_browser_client.cc  |  16 --
  components/component_updater/BUILD.gn         |   6 +
  components/component_updater/BUILD.gn         |   6 +
  .../adblock_updater_service.cc                | 249 ++++++++++++++++++
  .../adblock_updater_service.cc                | 249 ++++++++++++++++++
  .../adblock_updater_service.h                 |  99 +++++++
  .../adblock_updater_service.h                 |  99 +++++++
- .../download_filters_task.cc                  | 228 ++++++++++++++++
- .../component_updater/download_filters_task.h | 131 +++++++++
+ .../download_filters_task.cc                  | 221 ++++++++++++++++
+ .../component_updater/download_filters_task.h | 129 +++++++++
  ...ent_subresource_filter_throttle_manager.cc |  11 +
  ...ent_subresource_filter_throttle_manager.cc |  11 +
  .../content/browser/ruleset_service.cc        |  33 ++-
  .../content/browser/ruleset_service.cc        |  33 ++-
  .../content/browser/ruleset_service.h         |   7 +-
  .../content/browser/ruleset_service.h         |   7 +-
@@ -28,16 +28,16 @@ Download filters by checking Last-Modified header first
  .../browser/subresource_filter_features.cc    | 113 +-------
  .../browser/subresource_filter_features.cc    | 113 +-------
  .../core/common/common_features.cc            |   2 +-
  .../core/common/common_features.cc            |   2 +-
  .../frame_host/navigation_throttle_runner.cc  |  10 -
  .../frame_host/navigation_throttle_runner.cc  |  10 -
- 21 files changed, 827 insertions(+), 145 deletions(-)
+ 21 files changed, 818 insertions(+), 144 deletions(-)
  create mode 100644 components/component_updater/adblock_updater_service.cc
  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/adblock_updater_service.h
  create mode 100644 components/component_updater/download_filters_task.cc
  create mode 100644 components/component_updater/download_filters_task.cc
  create mode 100644 components/component_updater/download_filters_task.h
  create mode 100644 components/component_updater/download_filters_task.h
 
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-@@ -278,6 +278,14 @@ public class FeatureUtilities {
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+@@ -156,6 +156,14 @@ public class FeatureUtilities {
          cacheServiceManagerForBackgroundPrefetch();
          cacheServiceManagerForBackgroundPrefetch();
      }
      }
  
  
@@ -52,8 +52,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
      /**
      /**
       * @return True if tab model merging for Android N+ is enabled.
       * @return True if tab model merging for Android N+ is enabled.
       */
       */
-@@ -871,5 +879,7 @@ public class FeatureUtilities {
-         void setCustomTabVisible(boolean visible);
+@@ -729,5 +737,7 @@ public class FeatureUtilities {
+         void setActivityType(@ActivityType int type);
          void setIsInMultiWindowMode(boolean isInMultiWindowMode);
          void setIsInMultiWindowMode(boolean isInMultiWindowMode);
          boolean isNetworkServiceWarmUpEnabled();
          boolean isNetworkServiceWarmUpEnabled();
 +        void setAdBlockFiltersURL(String url);
 +        void setAdBlockFiltersURL(String url);
@@ -116,7 +116,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
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -1005,6 +1005,34 @@ BrowserProcessImpl::component_updater() {
+@@ -1007,6 +1007,34 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
    return component_updater_.get();
  }
  }
  
  
@@ -174,13 +174,14 @@ 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
 diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
 --- a/chrome/browser/chrome_browser_main.cc
 --- a/chrome/browser/chrome_browser_main.cc
 +++ b/chrome/browser/chrome_browser_main.cc
 +++ b/chrome/browser/chrome_browser_main.cc
-@@ -1715,8 +1715,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1727,9 +1727,12 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
  
  
    PreBrowserStart();
    PreBrowserStart();
  
  
 -  if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate))
 -  if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate))
 +  if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
 +  if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
-     RegisterComponentsForUpdate(profile_->GetPrefs());
+     RegisterComponentsForUpdate(profile_->IsOffTheRecord(),
+                                 profile_->GetPrefs());
 +    // force initialisation
 +    // force initialisation
 +    g_browser_process->adblock_updater();
 +    g_browser_process->adblock_updater();
 +  }
 +  }
@@ -191,14 +192,14 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 --- a/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
 @@ -63,7 +63,6 @@
 @@ -63,7 +63,6 @@
+ #include "chrome/browser/gpu/chrome_browser_main_extra_parts_gpu.h"
  #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/hid/chrome_hid_delegate.h"
- #include "chrome/browser/language/translate_frame_binder.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
 -#include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h"
 -#include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h"
  #include "chrome/browser/media/router/media_router_feature.h"
  #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/presentation_service_delegate_impl.h"
  #include "chrome/browser/media/router/presentation/receiver_presentation_service_delegate_impl.h"
  #include "chrome/browser/media/router/presentation/receiver_presentation_service_delegate_impl.h"
-@@ -207,7 +206,6 @@
+@@ -208,7 +207,6 @@
  #include "components/nacl/common/buildflags.h"
  #include "components/nacl/common/buildflags.h"
  #include "components/nacl/common/nacl_constants.h"
  #include "components/nacl/common/nacl_constants.h"
  #include "components/net_log/chrome_net_log.h"
  #include "components/net_log/chrome_net_log.h"
@@ -206,7 +207,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "components/page_load_metrics/browser/metrics_web_contents_observer.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/page_load_metrics/browser/page_load_metrics_util.h"
  #include "components/payments/content/payment_request_display_manager.h"
  #include "components/payments/content/payment_request_display_manager.h"
-@@ -3798,16 +3796,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3802,16 +3800,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
  
@@ -223,14 +224,13 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(ENABLE_PLUGINS)
  #if BUILDFLAG(ENABLE_PLUGINS)
    MaybeAddThrottle(&throttles,
    MaybeAddThrottle(&throttles,
                     FlashDownloadInterception::MaybeCreateThrottleFor(handle));
                     FlashDownloadInterception::MaybeCreateThrottleFor(handle));
-@@ -3914,11 +3902,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3926,10 +3914,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     safe_browsing::MaybeCreateNavigationThrottle(handle));
                     safe_browsing::MaybeCreateNavigationThrottle(handle));
  #endif
  #endif
  
  
 -  MaybeAddThrottle(
 -  MaybeAddThrottle(
 -      &throttles,
 -      &throttles,
--      lookalikes::LookalikeUrlNavigationThrottle::MaybeCreateNavigationThrottle(
--          handle));
+-      LookalikeUrlNavigationThrottle::MaybeCreateNavigationThrottle(handle));
 -
 -
    MaybeAddThrottle(&throttles,
    MaybeAddThrottle(&throttles,
                     PDFIFrameNavigationThrottle::MaybeCreateThrottleFor(handle));
                     PDFIFrameNavigationThrottle::MaybeCreateThrottleFor(handle));
@@ -613,7 +613,7 @@ diff --git a/components/component_updater/download_filters_task.cc b/components/
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
 +++ b/components/component_updater/download_filters_task.cc
 +++ b/components/component_updater/download_filters_task.cc
-@@ -0,0 +1,228 @@
+@@ -0,0 +1,221 @@
 +/*
 +/*
 +    This file is part of Bromite.
 +    This file is part of Bromite.
 +
 +
@@ -732,23 +732,14 @@ new file mode 100644
 +void DownloadFiltersTask::internalDownload() {
 +void DownloadFiltersTask::internalDownload() {
 +  simple_url_loader_->DownloadToTempFile(
 +  simple_url_loader_->DownloadToTempFile(
 +      shared_url_network_factory_.get(),
 +      shared_url_network_factory_.get(),
-+      base::BindOnce(
-+          [](const network::SimpleURLLoader* simple_url_loader,
-+             update_client::NetworkFetcher::DownloadToFileCompleteCallback download_to_file_complete_callback,
-+             base::FilePath file_path) {
-+            std::move(download_to_file_complete_callback)
-+                .Run(file_path, simple_url_loader->NetError(),
-+                     simple_url_loader->GetContentSize());
-+          },
-+          simple_url_loader_.get(),
-+          base::BindOnce(&DownloadFiltersTask::OnDownloadComplete, base::Unretained(this))
-+      ), kMaxBodySize);
++      base::BindOnce(&DownloadFiltersTask::OnDownloadComplete, base::Unretained(this)),
++      kMaxBodySize);
 +}
 +}
 +
 +
 +void DownloadFiltersTask::OnHeadersDownloadComplete(scoped_refptr<net::HttpResponseHeaders> headers) {
 +void DownloadFiltersTask::OnHeadersDownloadComplete(scoped_refptr<net::HttpResponseHeaders> headers) {
 +  // something went wrong
 +  // something went wrong
 +  if (headers == nullptr) {
 +  if (headers == nullptr) {
-+    OnDownloadComplete(base::FilePath(), simple_url_loader_->NetError(), simple_url_loader_->GetContentSize() /* 0 */);
++    OnDownloadComplete(base::FilePath());
 +    return;
 +    return;
 +  }
 +  }
 +
 +
@@ -780,8 +771,10 @@ new file mode 100644
 +    LOG(INFO) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD");
 +    LOG(INFO) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD");
 +}
 +}
 +
 +
-+void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path, int net_error, int64_t content_size) {
++void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path) {
 +  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 +  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
++  int net_error = simple_url_loader_->NetError();
++  int64_t content_size = simple_url_loader_->GetContentSize();
 +
 +
 +  const base::TimeTicks download_end_time(base::TimeTicks::Now());
 +  const base::TimeTicks download_end_time(base::TimeTicks::Now());
 +  const base::TimeDelta download_time =
 +  const base::TimeDelta download_time =
@@ -846,7 +839,7 @@ diff --git a/components/component_updater/download_filters_task.h b/components/c
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null
 +++ b/components/component_updater/download_filters_task.h
 +++ b/components/component_updater/download_filters_task.h
-@@ -0,0 +1,131 @@
+@@ -0,0 +1,129 @@
 +/*
 +/*
 +    This file is part of Bromite.
 +    This file is part of Bromite.
 +
 +
@@ -947,9 +940,7 @@ new file mode 100644
 +  void OnDownloadProgress(uint64_t current);
 +  void OnDownloadProgress(uint64_t current);
 +  void OnResponseStarted(const GURL& final_url,
 +  void OnResponseStarted(const GURL& final_url,
 +                         const network::mojom::URLResponseHead& response_head);
 +                         const network::mojom::URLResponseHead& response_head);
-+  void OnDownloadComplete(base::FilePath file_path,
-+                                                    int net_error,
-+                                                    int64_t content_size);
++  void OnDownloadComplete(base::FilePath file_path);
 +  void OnHeadersDownloadComplete(scoped_refptr<net::HttpResponseHeaders> headers);
 +  void OnHeadersDownloadComplete(scoped_refptr<net::HttpResponseHeaders> headers);
 +  void createSimpleURLLoader(bool);
 +  void createSimpleURLLoader(bool);
 +  void internalDownload();
 +  void internalDownload();
@@ -1353,14 +1344,14 @@ diff --git a/content/browser/frame_host/navigation_throttle_runner.cc b/content/
  #include "content/browser/frame_host/mixed_content_navigation_throttle.h"
  #include "content/browser/frame_host/mixed_content_navigation_throttle.h"
  #include "content/browser/frame_host/navigation_request.h"
  #include "content/browser/frame_host/navigation_request.h"
  #include "content/browser/frame_host/navigator_delegate.h"
  #include "content/browser/frame_host/navigator_delegate.h"
-@@ -120,15 +119,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
-        devtools_instrumentation::CreateNavigationThrottles(handle_)) {
+@@ -128,15 +127,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
+        devtools_instrumentation::CreateNavigationThrottles(request)) {
      AddThrottle(std::move(throttle));
      AddThrottle(std::move(throttle));
    }
    }
 -
 -
 -  // Delay navigation for an ablation study (if needed).
 -  // Delay navigation for an ablation study (if needed).
 -  AddThrottle(HistoryNavigationAblationStudyNavigationThrottle::
 -  AddThrottle(HistoryNavigationAblationStudyNavigationThrottle::
--                  MaybeCreateForNavigation(handle_));
+-                  MaybeCreateForNavigation(request));
 -
 -
 -  // Insert all testing NavigationThrottles last.
 -  // Insert all testing NavigationThrottles last.
 -  throttles_.insert(throttles_.end(),
 -  throttles_.insert(throttles_.end(),

+ 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
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -442,7 +442,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -476,7 +476,7 @@ const base::Feature kMediaDrmPersistentLicense{
  // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs
  // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs
  // which will trigger provisioning process after MediaDrmBridge is created.
  // which will trigger provisioning process after MediaDrmBridge is created.
  const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",

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

@@ -24,7 +24,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
-@@ -42,7 +42,7 @@ public class VersionNumberGetter {
+@@ -43,7 +43,7 @@ public class VersionNumberGetter {
      private static VersionNumberGetter sInstanceForTests;
      private static VersionNumberGetter sInstanceForTests;
  
  
      /** If false, OmahaClient will never report that a newer version is available. */
      /** If false, OmahaClient will never report that a newer version is available. */
@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNu
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -458,7 +458,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
+@@ -464,7 +464,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
      base::FEATURE_DISABLED_BY_DEFAULT};
      base::FEATURE_DISABLED_BY_DEFAULT};
  
  
  const base::Feature kJellyBeanSupported{"JellyBeanSupported",
  const base::Feature kJellyBeanSupported{"JellyBeanSupported",

+ 4 - 4
build/patches/Disable-addresses-autofill-by-default.patch

@@ -10,7 +10,7 @@ Subject: Disable addresses autofill by default
 diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
 diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
 --- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
 --- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
 +++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
 +++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
-@@ -25,7 +25,7 @@ class AutofillAssistantPreferencesUtil {
+@@ -26,7 +26,7 @@ class AutofillAssistantPreferencesUtil {
      /** Checks whether the Autofill Assistant switch preference in settings is on. */
      /** Checks whether the Autofill Assistant switch preference in settings is on. */
      static boolean isAutofillAssistantSwitchOn() {
      static boolean isAutofillAssistantSwitchOn() {
          return ContextUtils.getAppSharedPreferences().getBoolean(
          return ContextUtils.getAppSharedPreferences().getBoolean(
@@ -19,9 +19,9 @@ diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chro
      }
      }
  
  
      /** Checks whether the Autofill Assistant onboarding has been accepted. */
      /** Checks whether the Autofill Assistant onboarding has been accepted. */
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
 @@ -48,7 +48,7 @@ public class AutofillAssistantPreferences extends PreferenceFragmentCompat {
 @@ -48,7 +48,7 @@ public class AutofillAssistantPreferences extends PreferenceFragmentCompat {
          // (e.g. the switch will say "On" when it is really turned off), so .setChecked() should be
          // (e.g. the switch will say "On" when it is really turned off), so .setChecked() should be
          // called after .addPreference()
          // called after .addPreference()

+ 23 - 40
build/patches/Disable-all-promo-dialogs.patch

@@ -3,49 +3,32 @@ Date: Tue, 12 Jun 2018 15:09:26 +0200
 Subject: Disable all promo dialogs
 Subject: Disable all promo dialogs
 
 
 ---
 ---
- .../chrome/browser/ChromeTabbedActivity.java  | 30 +------------------
- 1 file changed, 1 insertion(+), 29 deletions(-)
+ .../chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 
-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
-@@ -801,35 +801,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
-         try (TraceEvent e = TraceEvent.scoped(
-                      "ChromeTabbedActivity.createToolbarButtonInProductHelpController")) {
-             ChromePreferenceManager preferenceManager = ChromePreferenceManager.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
--            // complete, and this will only show promos on the second opportunity. This is
--            // because the FRE is shown on the first opportunity, and we don't want to show such
--            // content back to back.
--            //
--            // TODO(tedchoc): Unify promo dialog logic as the search engine promo dialog checks
--            //                might not have completed at this point and we could show multiple
--            //                promos.
--            boolean isShowingPromo = mLocaleManager.hasShownSearchEnginePromoThisSession();
--            // Promo dialogs in multiwindow mode are broken on some devices:
--            // http://crbug.com/354696
--            boolean isLegacyMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(this);
--            if (!isShowingPromo && !mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()
--                    && preferenceManager.readBoolean(
--                            ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, false)
--                    && !VrModuleProvider.getDelegate().isInVr()
--                    // VrModuleProvider.getDelegate().isInVr may not return true at this point
--                    // even though Chrome is about to enter VR, so we need to also check whether
--                    // we're launching into VR.
--                    && !VrModuleProvider.getIntentDelegate().isLaunchingIntoVr(this, getIntent())
--                    && !isLegacyMultiWindow) {
--                isShowingPromo = maybeShowPromo();
--            } else {
--                preferenceManager.writeBoolean(
--                        ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, true);
--            }
--
--            ToolbarButtonInProductHelpController.create(this, isShowingPromo);
-+            ToolbarButtonInProductHelpController.create(this, false);
-         }
+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
+@@ -183,7 +183,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+      * displayed.
+      */
+     private boolean triggerPromo() {
+-        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
+@@ -214,8 +214,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+                 preferenceManager.writeBoolean(
+                         ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
+             }
+-            return isShowingPromo;
+-        }
++            return isShowingPromo;        } */
++            return false;
      }
      }
  
  
+     private boolean maybeShowPromo() {
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 22 - 22
build/patches/Disable-dynamic-module-loading.patch

@@ -14,7 +14,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 --- a/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
 @@ -426,19 +426,6 @@ chrome_java_sources = [
 @@ -426,19 +426,6 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/customtabs/content/TabCreationMode.java",
+   "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/BaseCustomTabActivityComponent.java",
    "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
    "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
    "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
    "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
 -  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java",
 -  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java",
@@ -36,25 +36,25 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
-@@ -51,7 +51,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.Int
+@@ -40,7 +40,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.Int
  import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
  import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
  import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
  import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
  import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
  import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
  import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController;
  import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController;
- import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
  import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
-@@ -94,9 +93,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+ import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
+@@ -79,9 +78,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
  
  
      private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
      private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
  
  
 -    @Nullable
 -    @Nullable
 -    private DynamicModuleCoordinator mDynamicModuleCoordinator;
 -    private DynamicModuleCoordinator mDynamicModuleCoordinator;
 -
 -
-     private CustomTabTaskDescriptionHelper mTaskDescriptionHelper;
- 
      private CustomTabNightModeStateController mNightModeStateController;
      private CustomTabNightModeStateController mNightModeStateController;
-@@ -233,12 +229,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+ 
+     /**
+@@ -217,12 +213,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
      public void finishNativeInitialization() {
      public void finishNativeInitialization() {
          if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this);
          if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this);
  
  
@@ -66,8 +66,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 -
 -
          mConnection.showSignInToastIfNecessary(mSession, getIntent());
          mConnection.showSignInToastIfNecessary(mSession, getIntent());
  
  
-         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && useSeparateTask()) {
-@@ -280,10 +270,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+         if (isTaskRoot() && UsageStatsService.isEnabled()) {
+@@ -259,10 +249,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
          WebContents webContents = tab == null ? null : tab.getWebContents();
          WebContents webContents = tab == null ? null : tab.getWebContents();
          mConnection.resetPostMessageHandlerForSession(
          mConnection.resetPostMessageHandlerForSession(
                  mIntentDataProvider.getSession(), webContents);
                  mIntentDataProvider.getSession(), webContents);
@@ -78,7 +78,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
      }
      }
  
  
      @Override
      @Override
-@@ -595,10 +581,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+@@ -503,10 +489,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
          if (mIntentDataProvider.isTrustedWebActivity()) {
          if (mIntentDataProvider.isTrustedWebActivity()) {
              component.resolveTrustedWebActivityCoordinator();
              component.resolveTrustedWebActivityCoordinator();
          }
          }
@@ -92,15 +92,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
-@@ -44,7 +44,6 @@ import org.chromium.chrome.browser.ChromeFeatureList;
+@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.ChromeVersionInfo;
  import org.chromium.chrome.browser.ChromeVersionInfo;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
  import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
- import org.chromium.chrome.browser.ui.widget.TintedDrawable;
-@@ -459,20 +458,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
+ import org.chromium.chrome.browser.ui.styles.ChromeColors;
+@@ -824,20 +823,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
          // even receive the extras for using the feature.
          // even receive the extras for using the feature.
          if (componentName == null) return false;
          if (componentName == null) return false;
  
  
@@ -122,7 +122,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 +        return false;
 +        return false;
      }
      }
  
  
-     @NonNull
+     @Override
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -135,7 +135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
  import org.chromium.chrome.browser.device.DeviceClassManager;
  import org.chromium.chrome.browser.device.DeviceClassManager;
  import org.chromium.chrome.browser.init.ChainedTasks;
  import org.chromium.chrome.browser.init.ChainedTasks;
  import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
  import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
-@@ -218,7 +216,6 @@ public class CustomTabsConnection {
+@@ -220,7 +218,6 @@ public class CustomTabsConnection {
  
  
      private volatile ChainedTasks mWarmupTasks;
      private volatile ChainedTasks mWarmupTasks;
  
  
@@ -143,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
      /**
      /**
       * <strong>DO NOT CALL</strong>
       * <strong>DO NOT CALL</strong>
       * Public to be instanciable from {@link ChromeApplication}. This is however
       * Public to be instanciable from {@link ChromeApplication}. This is however
-@@ -1382,7 +1379,6 @@ public class CustomTabsConnection {
+@@ -1388,7 +1385,6 @@ public class CustomTabsConnection {
          if (ChromeApplication.isSevereMemorySignal(level)) {
          if (ChromeApplication.isSevereMemorySignal(level)) {
              getInstance().mClientManager.cleanupUnusedSessions();
              getInstance().mClientManager.cleanupUnusedSessions();
          }
          }
@@ -151,7 +151,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
      }
      }
  
  
      @VisibleForTesting
      @VisibleForTesting
-@@ -1519,32 +1515,6 @@ public class CustomTabsConnection {
+@@ -1524,32 +1520,6 @@ public class CustomTabsConnection {
          recordSpeculationStatusOnSwap(SPECULATION_STATUS_ON_SWAP_BACKGROUND_TAB_NOT_MATCHED);
          recordSpeculationStatusOnSwap(SPECULATION_STATUS_ON_SWAP_BACKGROUND_TAB_NOT_MATCHED);
      }
      }
  
  
@@ -187,18 +187,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
-@@ -18,8 +18,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabContro
+@@ -17,8 +17,6 @@ import org.chromium.chrome.browser.customtabs.ReparentingTaskProvider;
+ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController;
  import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
  import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
- import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
  import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
  import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleToolbarController;
 -import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleToolbarController;
  import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
  import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
- import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
+ import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarColorController;
  import org.chromium.chrome.browser.dependency_injection.ActivityScope;
  import org.chromium.chrome.browser.dependency_injection.ActivityScope;
-@@ -36,8 +34,6 @@ import dagger.Subcomponent;
+@@ -34,8 +32,6 @@ import dagger.Subcomponent;
  @ActivityScope
  @ActivityScope
- public interface CustomTabActivityComponent extends ChromeActivityComponent {
+ public interface CustomTabActivityComponent extends BaseCustomTabActivityComponent {
      TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
      TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
 -    DynamicModuleToolbarController resolveDynamicModuleToolbarController();
 -    DynamicModuleToolbarController resolveDynamicModuleToolbarController();
 -    DynamicModuleCoordinator resolveDynamicModuleCoordinator();
 -    DynamicModuleCoordinator resolveDynamicModuleCoordinator();

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

@@ -10,7 +10,7 @@ Subject: Disable fetching of all field trials
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
-@@ -107,10 +107,7 @@ public abstract class ChromeFeatureList {
+@@ -108,10 +108,7 @@ public abstract class ChromeFeatureList {
       */
       */
      public static int getFieldTrialParamByFeatureAsInt(
      public static int getFieldTrialParamByFeatureAsInt(
              String featureName, String paramName, int defaultValue) {
              String featureName, String paramName, int defaultValue) {
@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
      }
      }
  
  
      /**
      /**
-@@ -127,10 +124,7 @@ public abstract class ChromeFeatureList {
+@@ -128,10 +125,7 @@ public abstract class ChromeFeatureList {
       */
       */
      public static double getFieldTrialParamByFeatureAsDouble(
      public static double getFieldTrialParamByFeatureAsDouble(
              String featureName, String paramName, double defaultValue) {
              String featureName, String paramName, double defaultValue) {
@@ -34,7 +34,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
      }
      }
  
  
      /**
      /**
-@@ -147,10 +141,7 @@ public abstract class ChromeFeatureList {
+@@ -148,10 +142,7 @@ public abstract class ChromeFeatureList {
       */
       */
      public static boolean getFieldTrialParamByFeatureAsBoolean(
      public static boolean getFieldTrialParamByFeatureAsBoolean(
              String featureName, String paramName, boolean defaultValue) {
              String featureName, String paramName, boolean defaultValue) {

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

@@ -11,7 +11,7 @@ Subject: Disable media router and remoting by default
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
 --- a/chrome/browser/media/router/media_router_feature.cc
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -57,17 +57,16 @@ const PrefService::Preference* GetMediaRouterPref(
+@@ -51,17 +51,16 @@ const PrefService::Preference* GetMediaRouterPref(
  
  
  bool MediaRouterEnabled(content::BrowserContext* context) {
  bool MediaRouterEnabled(content::BrowserContext* context) {
  #if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
  #if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
@@ -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
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -226,7 +226,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -232,7 +232,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kMediaRouterFirstRunFlowAcknowledged,
        prefs::kMediaRouterFirstRunFlowAcknowledged,
        false,
        false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
        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
 diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
 --- a/chrome/browser/profiles/profile_impl.cc
 --- a/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
-@@ -422,7 +422,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -401,7 +401,7 @@ void ProfileImpl::RegisterProfilePrefs(
    registry->RegisterStringPref(
    registry->RegisterStringPref(
        prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string());
        prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string());
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);

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

@@ -3,9 +3,9 @@ Date: Wed, 20 Feb 2019 21:41:26 +0100
 Subject: Disable metrics collection for NTP tiles
 Subject: Disable metrics collection for NTP tiles
 
 
 ---
 ---
- .../android/ntp/most_visited_sites_bridge.cc  | 21 -------------------
- components/ntp_tiles/BUILD.gn                 |  3 ---
- 2 files changed, 24 deletions(-)
+ .../browser/android/ntp/most_visited_sites_bridge.cc  | 11 ++---------
+ components/ntp_tiles/BUILD.gn                         |  3 ---
+ 2 files changed, 2 insertions(+), 12 deletions(-)
 
 
 diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
 diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
 --- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
 --- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -17,8 +17,8 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
 -#include "components/ntp_tiles/metrics.h"
 -#include "components/ntp_tiles/metrics.h"
  #include "components/ntp_tiles/most_visited_sites.h"
  #include "components/ntp_tiles/most_visited_sites.h"
  #include "components/ntp_tiles/section_type.h"
  #include "components/ntp_tiles/section_type.h"
- #include "components/rappor/rappor_service_impl.h"
-@@ -45,7 +44,6 @@ using ntp_tiles::NTPTilesVector;
+ #include "ui/gfx/android/java_bitmap.h"
+@@ -44,7 +43,6 @@ using ntp_tiles::NTPTilesVector;
  using ntp_tiles::SectionType;
  using ntp_tiles::SectionType;
  using ntp_tiles::TileTitleSource;
  using ntp_tiles::TileTitleSource;
  using ntp_tiles::TileSource;
  using ntp_tiles::TileSource;
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  
  
  namespace {
  namespace {
  
  
-@@ -236,7 +234,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
+@@ -235,7 +233,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
      JNIEnv* env,
      JNIEnv* env,
      const JavaParamRef<jobject>& obj,
      const JavaParamRef<jobject>& obj,
      jint jtiles_count) {
      jint jtiles_count) {
@@ -34,26 +34,23 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  }
  }
  
  
  void MostVisitedSitesBridge::RecordTileImpression(
  void MostVisitedSitesBridge::RecordTileImpression(
-@@ -249,18 +246,6 @@ void MostVisitedSitesBridge::RecordTileImpression(
+@@ -248,6 +245,7 @@ void MostVisitedSitesBridge::RecordTileImpression(
      jint jsource,
      jint jsource,
      jlong jdata_generation_time_ms,
      jlong jdata_generation_time_ms,
      const JavaParamRef<jstring>& jurl) {
      const JavaParamRef<jstring>& jurl) {
--  GURL url(ConvertJavaStringToUTF8(env, jurl));
--  TileTitleSource title_source = static_cast<TileTitleSource>(jtitle_source);
--  TileSource source = static_cast<TileSource>(jsource);
--  TileVisualType visual_type = static_cast<TileVisualType>(jvisual_type);
--  favicon_base::IconType icon_type =
--      static_cast<favicon_base::IconType>(jicon_type);
--
--  ntp_tiles::metrics::RecordTileImpression(
--      ntp_tiles::NTPTileImpression(
--          jindex, source, title_source, visual_type, icon_type,
--          base::Time::FromJavaTime(jdata_generation_time_ms), url),
--      g_browser_process->rappor_service());
++#if 0
+   GURL url(ConvertJavaStringToUTF8(env, jurl));
+   TileTitleSource title_source = static_cast<TileTitleSource>(jtitle_source);
+   TileSource source = static_cast<TileSource>(jsource);
+@@ -258,6 +256,7 @@ void MostVisitedSitesBridge::RecordTileImpression(
+   ntp_tiles::metrics::RecordTileImpression(ntp_tiles::NTPTileImpression(
+       jindex, source, title_source, visual_type, icon_type,
+       base::Time::FromJavaTime(jdata_generation_time_ms), url));
++#endif
  }
  }
  
  
  void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
  void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
-@@ -271,12 +256,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
+@@ -268,12 +267,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
      jint title_source,
      jint title_source,
      jint source,
      jint source,
      jlong jdata_generation_time_ms) {
      jlong jdata_generation_time_ms) {
@@ -78,7 +75,7 @@ diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
      "most_visited_sites.cc",
      "most_visited_sites.cc",
      "most_visited_sites.h",
      "most_visited_sites.h",
      "ntp_tile.cc",
      "ntp_tile.cc",
-@@ -78,7 +76,6 @@ source_set("unit_tests") {
+@@ -79,7 +77,6 @@ source_set("unit_tests") {
      "custom_links_manager_impl_unittest.cc",
      "custom_links_manager_impl_unittest.cc",
      "custom_links_store_unittest.cc",
      "custom_links_store_unittest.cc",
      "icon_cacher_impl_unittest.cc",
      "icon_cacher_impl_unittest.cc",

+ 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
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -905,7 +905,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -907,7 +907,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // defined(OS_CHROMEOS)
  #endif  // defined(OS_CHROMEOS)
  
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
    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
 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
 --- a/chrome/browser/profiles/profile_io_data.cc
 +++ b/chrome/browser/profiles/profile_io_data.cc
 +++ b/chrome/browser/profiles/profile_io_data.cc
-@@ -47,8 +47,6 @@
+@@ -48,8 +48,6 @@
  #include "components/content_settings/core/browser/host_content_settings_map.h"
  #include "components/content_settings/core/browser/host_content_settings_map.h"
  #include "components/cookie_config/cookie_store_util.h"
  #include "components/cookie_config/cookie_store_util.h"
  #include "components/dom_distiller/core/url_constants.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
 diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
 --- a/components/url_formatter/url_formatter.cc
 --- a/components/url_formatter/url_formatter.cc
 +++ b/components/url_formatter/url_formatter.cc
 +++ b/components/url_formatter/url_formatter.cc
-@@ -433,13 +433,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
+@@ -460,13 +460,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
  }  // namespace
  }  // namespace
  
  
  const FormatUrlType kFormatUrlOmitNothing = 0;
  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
 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
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -1169,10 +1169,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
+@@ -1177,10 +1177,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
  }
  }
  
  
  PluginData* LocalFrame::GetPluginData() const {
  PluginData* LocalFrame::GetPluginData() const {

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

@@ -7,9 +7,9 @@ bookmarks, never reach signin thresholds.
 ---
 ---
  ...rsonalized_signin_promo_view_bookmarks.xml | 30 -----------
  ...rsonalized_signin_promo_view_bookmarks.xml | 30 -----------
  .../bookmarks/BookmarkItemsAdapter.java       | 23 +-------
  .../bookmarks/BookmarkItemsAdapter.java       | 23 +-------
- .../bookmarks/BookmarkPromoHeader.java        | 54 +------------------
+ .../bookmarks/BookmarkPromoHeader.java        | 52 +------------------
  .../ReorderBookmarkItemsAdapter.java          | 19 +------
  .../ReorderBookmarkItemsAdapter.java          | 19 +------
- .../browser/signin/SigninPromoController.java | 19 +------
+ .../browser/signin/SigninPromoController.java | 21 +-------
  5 files changed, 7 insertions(+), 138 deletions(-)
  5 files changed, 7 insertions(+), 138 deletions(-)
  delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
  delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
 
 
@@ -128,15 +128,15 @@ 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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
-@@ -19,7 +19,6 @@ import org.chromium.base.ContextUtils;
- import org.chromium.base.VisibleForTesting;
- import org.chromium.chrome.R;
+@@ -20,7 +20,6 @@ import org.chromium.chrome.R;
+ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+ import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
  import org.chromium.chrome.browser.signin.IdentityServicesProvider;
  import org.chromium.chrome.browser.signin.IdentityServicesProvider;
 -import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
 -import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
  import org.chromium.chrome.browser.signin.ProfileDataCache;
  import org.chromium.chrome.browser.signin.ProfileDataCache;
  import org.chromium.chrome.browser.signin.SigninManager;
  import org.chromium.chrome.browser.signin.SigninManager;
  import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
  import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
-@@ -132,19 +131,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -124,19 +123,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return mPromoState;
          return mPromoState;
      }
      }
  
  
@@ -156,7 +156,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
       * @return Sync promo header {@link ViewHolder} instance that can be used with
       *         {@link RecyclerView}.
       *         {@link RecyclerView}.
-@@ -157,42 +143,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -149,40 +135,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return new ViewHolder(view) {};
          return new ViewHolder(view) {};
      }
      }
  
  
@@ -180,10 +180,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -     * Saves that the personalized signin promo was declined and updates the UI.
 -     * Saves that the personalized signin promo was declined and updates the UI.
 -     */
 -     */
 -    private void setPersonalizedSigninPromoDeclined() {
 -    private void setPersonalizedSigninPromoDeclined() {
--        SharedPreferences.Editor sharedPreferencesEditor =
--                ContextUtils.getAppSharedPreferences().edit();
--        sharedPreferencesEditor.putBoolean(PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, true);
--        sharedPreferencesEditor.apply();
+-        SharedPreferencesManager.getInstance().writeBoolean(
+-                ChromePreferenceKeys.PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, true);
 -        mPromoState = calculatePromoState();
 -        mPromoState = calculatePromoState();
 -        triggerPromoUpdate();
 -        triggerPromoUpdate();
 -    }
 -    }
@@ -192,14 +190,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -     * @return Whether the user declined the personalized signin promo.
 -     * @return Whether the user declined the personalized signin promo.
 -     */
 -     */
 -    private boolean wasPersonalizedSigninPromoDeclined() {
 -    private boolean wasPersonalizedSigninPromoDeclined() {
--        return ContextUtils.getAppSharedPreferences().getBoolean(
--                PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, false);
+-        return SharedPreferencesManager.getInstance().readBoolean(
+-                ChromePreferenceKeys.PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, false);
 -    }
 -    }
 -
 -
      private @PromoState int calculatePromoState() {
      private @PromoState int calculatePromoState() {
          if (sPromoStateForTests != null) {
          if (sPromoStateForTests != null) {
              return sPromoStateForTests;
              return sPromoStateForTests;
-@@ -205,8 +155,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -195,8 +147,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          if (!ChromeSigninController.get().isSignedIn()) {
          if (!ChromeSigninController.get().isSignedIn()) {
              boolean impressionLimitReached = !SigninPromoController.hasNotReachedImpressionLimit(
              boolean impressionLimitReached = !SigninPromoController.hasNotReachedImpressionLimit(
                      SigninAccessPoint.BOOKMARK_MANAGER);
                      SigninAccessPoint.BOOKMARK_MANAGER);
@@ -209,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
                  return PromoState.PROMO_NONE;
                  return PromoState.PROMO_NONE;
              }
              }
              return PromoState.PROMO_SIGNIN_PERSONALIZED;
              return PromoState.PROMO_SIGNIN_PERSONALIZED;
-@@ -254,7 +203,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -248,7 +199,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      }
      }
  
  
      private void triggerPromoUpdate() {
      private void triggerPromoUpdate() {
@@ -275,13 +273,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Reord
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
-@@ -75,23 +75,8 @@ public class SigninPromoController {
+@@ -70,25 +70,8 @@ public class SigninPromoController {
       */
       */
      public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) {
      public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) {
-         SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
+         SharedPreferencesManager preferencesManager = SharedPreferencesManager.getInstance();
 -        switch (accessPoint) {
 -        switch (accessPoint) {
 -            case SigninAccessPoint.BOOKMARK_MANAGER:
 -            case SigninAccessPoint.BOOKMARK_MANAGER:
--                return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, 0)
+-                return preferencesManager.readInt(
+-                               ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS)
 -                        < MAX_IMPRESSIONS_BOOKMARKS;
 -                        < MAX_IMPRESSIONS_BOOKMARKS;
 -            case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
 -            case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
 -                // There is no impression limit for NTP content suggestions.
 -                // There is no impression limit for NTP content suggestions.
@@ -290,7 +289,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPr
 -                // There is no impression limit for Recent Tabs.
 -                // There is no impression limit for Recent Tabs.
 -                return true;
 -                return true;
 -            case SigninAccessPoint.SETTINGS:
 -            case SigninAccessPoint.SETTINGS:
--                return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS, 0)
+-                return preferencesManager.readInt(
+-                               ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS)
 -                        < MAX_IMPRESSIONS_SETTINGS;
 -                        < MAX_IMPRESSIONS_SETTINGS;
 -            default:
 -            default:
 -                assert false : "Unexpected value for access point: " + accessPoint;
 -                assert false : "Unexpected value for access point: " + accessPoint;

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

@@ -12,7 +12,7 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 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
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -317,7 +317,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -295,7 +295,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
  }
  }
  
  
  std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {
  std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {
@@ -36,10 +36,10 @@ diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_di
 diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
-@@ -130,7 +130,7 @@ function maybeSetWebFont() {
-     return;
+@@ -132,7 +132,7 @@ function maybeSetWebFont() {
+   }
  
  
-   var e = document.createElement('link');
+   const e = document.createElement('link');
 -  e.href = 'https://fonts.googleapis.com/css?family=Roboto';
 -  e.href = 'https://fonts.googleapis.com/css?family=Roboto';
 +  e.href = 'chrome://resources/css/roboto.css';
 +  e.href = 'chrome://resources/css/roboto.css';
    e.rel = 'stylesheet';
    e.rel = 'stylesheet';

File diff suppressed because it is too large
+ 319 - 199
build/patches/Disable-safe-browsing.patch


+ 1 - 1
build/patches/Disable-search-ready-omnibox-by-default.patch

@@ -9,7 +9,7 @@ Subject: Disable search-ready omnibox by default
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -518,7 +518,7 @@ const base::Feature kScrollToExpandPaymentHandler{
+@@ -521,7 +521,7 @@ const base::Feature kScrollToExpandPaymentHandler{
      "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
      "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
  
  
  const base::Feature kSearchReadyOmniboxFeature{
  const base::Feature kSearchReadyOmniboxFeature{

+ 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
 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
 --- a/components/variations/service/variations_field_trial_creator.cc
 +++ b/components/variations/service/variations_field_trial_creator.cc
 +++ b/components/variations/service/variations_field_trial_creator.cc
-@@ -538,8 +538,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
+@@ -545,8 +545,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
  #endif  // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
    bool used_seed = false;
    bool used_seed = false;
    if (!used_testing_config) {
    if (!used_testing_config) {

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

@@ -15,19 +15,19 @@ leak information through the TextClassifier set by OEM, if any
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -352,7 +352,7 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
+@@ -366,7 +366,7 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
                                        base::FEATURE_DISABLED_BY_DEFAULT};
                                        base::FEATURE_DISABLED_BY_DEFAULT};
  
  
  const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
  const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
 -                                          base::FEATURE_ENABLED_BY_DEFAULT};
 -                                          base::FEATURE_ENABLED_BY_DEFAULT};
 +                                          base::FEATURE_DISABLED_BY_DEFAULT};
 +                                          base::FEATURE_DISABLED_BY_DEFAULT};
  
  
- const base::Feature kClickToCallOpenDialerDirectly{
-     "ClickToCallOpenDialerDirectly", base::FEATURE_ENABLED_BY_DEFAULT};
+ const base::Feature kCommandLineOnNonRooted{"CommandLineOnNonRooted",
+                                             base::FEATURE_DISABLED_BY_DEFAULT};
 diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
-@@ -774,7 +774,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
+@@ -775,7 +775,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
              menu.removeItem(R.id.select_action_menu_share);
              menu.removeItem(R.id.select_action_menu_share);
          }
          }
  
  

+ 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
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -507,7 +507,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
+@@ -500,7 +500,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
  // Signed Exchange Reporting for distributors
  // Signed Exchange Reporting for distributors
  // https://www.chromestatus.com/features/5687904902840320
  // https://www.chromestatus.com/features/5687904902840320
  const base::Feature kSignedExchangeReportingForDistributors{
  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
  // Subresource prefetching+loading via Signed HTTP Exchange
  // https://www.chromestatus.com/features/5126805474246656
  // https://www.chromestatus.com/features/5126805474246656
-@@ -517,7 +517,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
+@@ -510,7 +510,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/features/5745285984681984
  // https://www.chromestatus.com/features/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",

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

@@ -4,8 +4,8 @@ Subject: Disable sync services menu entry
 
 
 ---
 ---
  chrome/android/java/res/xml/main_preferences.xml    | 6 ------
  chrome/android/java/res/xml/main_preferences.xml    | 6 ------
- chrome/android/java/res/xml/privacy_preferences.xml | 7 -------
- 2 files changed, 13 deletions(-)
+ chrome/android/java/res/xml/privacy_preferences.xml | 8 --------
+ 2 files changed, 14 deletions(-)
 
 
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 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
 --- a/chrome/android/java/res/xml/main_preferences.xml
@@ -14,30 +14,30 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
          android:key="sign_in"
          android:key="sign_in"
          android:order="1"
          android:order="1"
          android:title="@string/sign_in_to_chrome"/>
          android:title="@string/sign_in_to_chrome"/>
--    <org.chromium.chrome.browser.preferences.ChromeBasePreference
+-    <org.chromium.chrome.browser.settings.ChromeBasePreference
 -        android:key="sync_and_services"
 -        android:key="sync_and_services"
 -        android:order="2"
 -        android:order="2"
 -        android:layout="@layout/account_management_account_row"
 -        android:layout="@layout/account_management_account_row"
 -        android:title="@string/prefs_sync_and_services"
 -        android:title="@string/prefs_sync_and_services"
--        android:fragment="org.chromium.chrome.browser.preferences.sync.SyncAndServicesPreferences"/>
+-        android:fragment="org.chromium.chrome.browser.settings.sync.SyncAndServicesPreferences"/>
  
  
      <PreferenceCategory
      <PreferenceCategory
          android:key="basics_section"
          android:key="basics_section"
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 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
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -29,12 +29,5 @@
+@@ -29,12 +29,4 @@
          android:title="@string/clear_browsing_data_title"
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:summary="@string/clear_browsing_data_summary"
-         android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
+         android:fragment="org.chromium.chrome.browser.settings.privacy.ClearBrowsingDataTabsFragment" />
 -    <android.support.v7.preference.Preference
 -    <android.support.v7.preference.Preference
 -        android:key="sync_and_services_link_divider"
 -        android:key="sync_and_services_link_divider"
 -        android:layout="@layout/divider_preference"
 -        android:layout="@layout/divider_preference"
 -        android:selectable="false"/>
 -        android:selectable="false"/>
--    <org.chromium.chrome.browser.preferences.TextMessagePreference
+-    <org.chromium.chrome.browser.settings.TextMessagePreference
 -        android:key="sync_and_services_link"
 -        android:key="sync_and_services_link"
 -        android:summary="@string/privacy_sync_and_services_link"
 -        android:summary="@string/privacy_sync_and_services_link"
-         app:allowDividerBelow="false" />
+-        app:allowDividerBelow="false" />
  </PreferenceScreen>
  </PreferenceScreen>
 -- 
 -- 
 2.17.1
 2.17.1

+ 3 - 3
build/patches/Do-not-enable-QUIC-by-default.patch

@@ -12,7 +12,7 @@ For reference:
 diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc
 diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc
 --- a/components/network_session_configurator/browser/network_session_configurator.cc
 --- a/components/network_session_configurator/browser/network_session_configurator.cc
 +++ b/components/network_session_configurator/browser/network_session_configurator.cc
 +++ b/components/network_session_configurator/browser/network_session_configurator.cc
-@@ -180,7 +180,7 @@ bool ShouldEnableQuic(base::StringPiece quic_trial_group,
+@@ -186,7 +186,7 @@ bool ShouldEnableQuic(base::StringPiece quic_trial_group,
    return quic_trial_group.starts_with(kQuicFieldTrialEnabledGroupName) ||
    return quic_trial_group.starts_with(kQuicFieldTrialEnabledGroupName) ||
           quic_trial_group.starts_with(kQuicFieldTrialHttpsEnabledGroupName) ||
           quic_trial_group.starts_with(kQuicFieldTrialHttpsEnabledGroupName) ||
           base::LowerCaseEqualsASCII(
           base::LowerCaseEqualsASCII(
@@ -21,7 +21,7 @@ diff --git a/components/network_session_configurator/browser/network_session_con
  }
  }
  
  
  bool ShouldEnableQuicProxiesForHttpsUrls(
  bool ShouldEnableQuicProxiesForHttpsUrls(
-@@ -188,7 +188,7 @@ bool ShouldEnableQuicProxiesForHttpsUrls(
+@@ -194,7 +194,7 @@ bool ShouldEnableQuicProxiesForHttpsUrls(
    return base::LowerCaseEqualsASCII(
    return base::LowerCaseEqualsASCII(
        GetVariationParam(quic_trial_params,
        GetVariationParam(quic_trial_params,
                          "enable_quic_proxies_for_https_urls"),
                          "enable_quic_proxies_for_https_urls"),
@@ -30,7 +30,7 @@ diff --git a/components/network_session_configurator/browser/network_session_con
  }
  }
  
  
  bool ShouldRetryWithoutAltSvcOnQuicErrors(
  bool ShouldRetryWithoutAltSvcOnQuicErrors(
-@@ -468,7 +468,6 @@ void ConfigureQuicParams(base::StringPiece quic_trial_group,
+@@ -475,7 +475,6 @@ void ConfigureQuicParams(base::StringPiece quic_trial_group,
    params->enable_quic =
    params->enable_quic =
        ShouldEnableQuic(quic_trial_group, quic_trial_params,
        ShouldEnableQuic(quic_trial_group, quic_trial_params,
                         is_quic_force_disabled, is_quic_force_enabled);
                         is_quic_force_disabled, is_quic_force_enabled);

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

@@ -47,7 +47,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
  
  
      // Update the content setting with the auto-grants for the DSE.
      // Update the content setting with the auto-grants for the DSE.
 @@ -398,11 +392,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
 @@ -398,11 +392,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
-         GetContentSetting(dse_origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
+         GetContentSetting(dse_origin, ContentSettingsType::NOTIFICATIONS);
      ContentSetting dse_notifications_setting = notifications_setting_to_restore;
      ContentSetting dse_notifications_setting = notifications_setting_to_restore;
      // If the user hasn't explicitly allowed or blocked notifications for the
      // If the user hasn't explicitly allowed or blocked notifications for the
 -    // DSE, initialize it to allowed.
 -    // DSE, initialize it to allowed.
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -311,7 +311,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
+@@ -320,7 +320,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
  #if defined(OS_ANDROID)
  #if defined(OS_ANDROID)
  // Enable changing default downloads storage location on Android.
  // Enable changing default downloads storage location on Android.
  const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
  const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",

+ 6 - 7
build/patches/Do-not-ignore-download-location-prompt-setting.patch

@@ -6,13 +6,13 @@ Upstream has decided that it works as intended (https://bugs.chromium.org/p/chro
 but users would like to decide where to save a file even when there is no SD card available;
 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 skip the prompt in such cases.
 ---
 ---
- .../DownloadLocationDialogBridge.java         | 73 ++++++-------------
- 1 file changed, 21 insertions(+), 52 deletions(-)
+ .../DownloadLocationDialogBridge.java         | 72 ++++++-------------
+ 1 file changed, 21 insertions(+), 51 deletions(-)
 
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
-@@ -32,9 +32,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+@@ -31,9 +31,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
      private PropertyModel mDialogModel;
      private PropertyModel mDialogModel;
      private DownloadLocationCustomView mCustomView;
      private DownloadLocationCustomView mCustomView;
      private ModalDialogManager mModalDialogManager;
      private ModalDialogManager mModalDialogManager;
@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
      private Context mContext;
      private Context mContext;
  
  
      private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
      private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
-@@ -67,12 +64,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+@@ -66,12 +63,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
  
  
          mModalDialogManager = activity.getModalDialogManager();
          mModalDialogManager = activity.getModalDialogManager();
          mContext = activity;
          mContext = activity;
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
      }
      }
  
  
      @Override
      @Override
-@@ -105,50 +118,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+@@ -104,49 +117,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
          mCustomView = null;
          mCustomView = null;
      }
      }
  
  
@@ -72,8 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
 -            final DirectoryOption dir = dirs.get(0);
 -            final DirectoryOption dir = dirs.get(0);
 -            if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) {
 -            if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) {
 -                assert(!TextUtils.isEmpty(dir.location));
 -                assert(!TextUtils.isEmpty(dir.location));
--                PrefServiceBridge.getInstance().setDownloadAndSaveFileDefaultDirectory(
--                        dir.location);
+-                setDownloadAndSaveFileDefaultDirectory(dir.location);
 -                DownloadLocationDialogBridgeJni.get().onComplete(
 -                DownloadLocationDialogBridgeJni.get().onComplete(
 -                        mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,
 -                        mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,
 -                        mSuggestedPath);
 -                        mSuggestedPath);

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

@@ -9,9 +9,9 @@ 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
 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
 --- a/components/password_manager/core/browser/password_manager.cc
 +++ b/components/password_manager/core/browser/password_manager.cc
 +++ b/components/password_manager/core/browser/password_manager.cc
-@@ -155,10 +155,10 @@ void PasswordManager::RegisterProfilePrefs(
-   registry->RegisterBooleanPref(prefs::kBlacklistedCredentialsNormalized,
-                                 false);
+@@ -178,10 +178,10 @@ void AddLocallySavedPredictions(FieldInfoManager* field_info_manager,
+ void PasswordManager::RegisterProfilePrefs(
+     user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
    registry->RegisterBooleanPref(
 -      prefs::kCredentialsEnableService, true,
 -      prefs::kCredentialsEnableService, true,
 +      prefs::kCredentialsEnableService, false,
 +      prefs::kCredentialsEnableService, false,

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

@@ -9,7 +9,7 @@ Subject: Enable changing default downloads storage location by default
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -311,7 +311,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
+@@ -320,7 +320,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
  #if defined(OS_ANDROID)
  #if defined(OS_ANDROID)
  // Enable changing default downloads storage location on Android.
  // Enable changing default downloads storage location on Android.
  const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
  const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",

+ 0 - 23
build/patches/Enable-download-rename-option-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Thu, 30 May 2019 03:44:07 +0200
-Subject: Enable download rename option by default
-
----
- chrome/browser/android/chrome_feature_list.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
---- a/chrome/browser/android/chrome_feature_list.cc
-+++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -414,7 +414,7 @@ const base::Feature kDownloadNotificationBadge{
-     "DownloadNotificationBadge", base::FEATURE_DISABLED_BY_DEFAULT};
- 
- const base::Feature kDownloadRename{"DownloadRename",
--                                    base::FEATURE_DISABLED_BY_DEFAULT};
-+                                    base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kDownloadTabManagementModule{
-     "DownloadTabManagementModule", base::FEATURE_DISABLED_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
 diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -297,6 +297,10 @@ config("compiler") {
+@@ -302,6 +302,10 @@ config("compiler") {
        }
        }
      }
      }
  
  

+ 0 - 23
build/patches/Enable-night-mode-menu-entry-by-default.patch

@@ -1,23 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Sun, 14 Apr 2019 12:02:57 +0200
-Subject: Enable night mode menu entry by default
-
----
- chrome/browser/android/chrome_feature_list.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
---- a/chrome/browser/android/chrome_feature_list.cc
-+++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -246,7 +246,7 @@ const base::Feature kAdjustWebApkInstallationSpace = {
-     "AdjustWebApkInstallationSpace", base::FEATURE_DISABLED_BY_DEFAULT};
- 
- const base::Feature kAndroidNightMode{"AndroidNightMode",
--                                      base::FEATURE_DISABLED_BY_DEFAULT};
-+                                      base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kAndroidNightModeCCT{"AndroidNightModeCCT",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
--- 
-2.17.1
-

+ 2 - 2
build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch

@@ -9,7 +9,7 @@ Subject: Enable site per process isolation for devices with enough memory
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -651,11 +651,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
+@@ -659,11 +659,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
  // browser_features, as they are only used on the browser side.
  // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
  const base::Feature kSitePerProcess {
    "site-per-process",
    "site-per-process",
@@ -21,7 +21,7 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
  };
  };
  
  
  // Controls a mode for dynamically process-isolating sites where the user has
  // Controls a mode for dynamically process-isolating sites where the user has
-@@ -685,7 +681,7 @@ const base::Feature kSiteIsolationForPasswordSites{
+@@ -693,7 +689,7 @@ const base::Feature kSiteIsolationForPasswordSites{
  // base::SysInfo::AmountOfPhysicalMemoryMB().
  // base::SysInfo::AmountOfPhysicalMemoryMB().
  const base::Feature kSitePerProcessOnlyForHighMemoryClients{
  const base::Feature kSitePerProcessOnlyForHighMemoryClients{
      "site-per-process-only-for-high-memory-clients",
      "site-per-process-only-for-high-memory-clients",

+ 1 - 1
build/patches/Fix-crash-when-accessing-page-info-site-settings.patch

@@ -9,7 +9,7 @@ Subject: Fix crash when accessing page info / site settings
 diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
 diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
 --- a/chrome/browser/permissions/permission_manager.cc
 --- a/chrome/browser/permissions/permission_manager.cc
 +++ b/chrome/browser/permissions/permission_manager.cc
 +++ b/chrome/browser/permissions/permission_manager.cc
-@@ -761,6 +761,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
+@@ -766,6 +766,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
    if (status != CONTENT_SETTING_DEFAULT)
    if (status != CONTENT_SETTING_DEFAULT)
      return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
      return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
    PermissionContextBase* context = GetPermissionContext(permission);
    PermissionContextBase* context = GetPermissionContext(permission);

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

@@ -3,13 +3,13 @@ Date: Sun, 13 Aug 2017 19:33:04 -0400
 Subject: Hide passwords manager link
 Subject: Hide passwords manager link
 
 
 ---
 ---
- .../preferences/password/SavePasswordsPreferences.java        | 4 ++--
+ .../browser/settings/password/SavePasswordsPreferences.java   | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
-@@ -251,7 +251,7 @@ public class SavePasswordsPreferences
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
+@@ -254,7 +254,7 @@ public class SavePasswordsPreferences
              return;
              return;
          }
          }
  
  
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pas
  
  
          PreferenceGroup passwordParent;
          PreferenceGroup passwordParent;
          if (mSearchQuery == null) {
          if (mSearchQuery == null) {
-@@ -326,7 +326,7 @@ public class SavePasswordsPreferences
+@@ -329,7 +329,7 @@ public class SavePasswordsPreferences
              return;
              return;
          }
          }
  
  

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

@@ -11,7 +11,7 @@ Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment
 diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
 diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
 --- a/components/omnibox/browser/autocomplete_result.cc
 --- a/components/omnibox/browser/autocomplete_result.cc
 +++ b/components/omnibox/browser/autocomplete_result.cc
 +++ b/components/omnibox/browser/autocomplete_result.cc
-@@ -74,7 +74,8 @@ struct MatchGURLHash {
+@@ -75,7 +75,8 @@ struct MatchGURLHash {
  // static
  // static
  size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
  size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
  #if (defined(OS_ANDROID))
  #if (defined(OS_ANDROID))
@@ -20,11 +20,11 @@ diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omni
 +  constexpr size_t kDefaultMaxAutocompleteMatches = 10;
 +  constexpr size_t kDefaultMaxAutocompleteMatches = 10;
    if (is_zero_suggest)
    if (is_zero_suggest)
      return kDefaultMaxAutocompleteMatches;
      return kDefaultMaxAutocompleteMatches;
- #else
+ #elif defined(OS_IOS)  // !defined(OS_ANDROID)
 diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc
 diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc
 --- a/components/omnibox/browser/omnibox_field_trial.cc
 --- a/components/omnibox/browser/omnibox_field_trial.cc
 +++ b/components/omnibox/browser/omnibox_field_trial.cc
 +++ b/components/omnibox/browser/omnibox_field_trial.cc
-@@ -329,7 +329,8 @@ void OmniboxFieldTrial::GetDemotionsByType(
+@@ -338,7 +338,8 @@ void OmniboxFieldTrial::GetDemotionsByType(
  
  
  size_t OmniboxFieldTrial::GetProviderMaxMatches(
  size_t OmniboxFieldTrial::GetProviderMaxMatches(
      AutocompleteProvider::Type provider) {
      AutocompleteProvider::Type provider) {

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

@@ -50,7 +50,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  #ifndef NDEBUG
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  static WeakDocumentSet& liveDocumentSet();
  static WeakDocumentSet& liveDocumentSet();
-@@ -6664,8 +6667,63 @@ void Document::FinishedParsing() {
+@@ -6770,8 +6773,63 @@ void Document::FinishedParsing() {
    // Parser should have picked up all preloads by now
    // Parser should have picked up all preloads by now
    fetcher_->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads);
    fetcher_->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads);
  
  
@@ -118,7 +118,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
 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
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -1663,6 +1663,8 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1690,6 +1690,8 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  
  
@@ -152,7 +152,7 @@ new file mode 100644
 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
 --- a/third_party/blink/renderer/core/html/html_script_element.cc
 --- a/third_party/blink/renderer/core/html/html_script_element.cc
 +++ b/third_party/blink/renderer/core/html/html_script_element.cc
 +++ b/third_party/blink/renderer/core/html/html_script_element.cc
-@@ -149,6 +149,11 @@ void HTMLScriptElement::setTextContent(
+@@ -148,6 +148,11 @@ void HTMLScriptElement::setTextContent(
    }
    }
  }
  }
  
  
@@ -162,7 +162,7 @@ diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third
 +}
 +}
 +
 +
  void HTMLScriptElement::setAsync(bool async) {
  void HTMLScriptElement::setAsync(bool async) {
-   SetBooleanAttribute(kAsyncAttr, async);
+   SetBooleanAttribute(html_names::kAsyncAttr, async);
    loader_->HandleAsyncAttribute();
    loader_->HandleAsyncAttribute();
 diff --git a/third_party/blink/renderer/core/html/html_script_element.h b/third_party/blink/renderer/core/html/html_script_element.h
 diff --git a/third_party/blink/renderer/core/html/html_script_element.h b/third_party/blink/renderer/core/html/html_script_element.h
 --- a/third_party/blink/renderer/core/html/html_script_element.h
 --- a/third_party/blink/renderer/core/html/html_script_element.h

+ 27 - 39
build/patches/Modify-default-preferences.patch

@@ -4,27 +4,27 @@ Subject: Modify default preferences
 
 
 Do not hide component extensions
 Do not hide component extensions
 ---
 ---
- .../browser/background/background_mode_manager.cc  |  2 +-
- chrome/browser/chrome_content_browser_client.cc    |  2 +-
- chrome/browser/net/prediction_options.cc           |  2 +-
- chrome/browser/net/prediction_options.h            |  2 +-
- chrome/browser/profiles/profile.cc                 |  2 +-
- .../settings/reset_page/reset_profile_dialog.html  |  2 +-
- chrome/browser/ui/browser_ui_prefs.cc              |  4 ++--
- .../ui/navigation_correction_tab_observer.cc       |  2 +-
- .../ui/webui/local_discovery/local_discovery_ui.cc |  4 ----
- chrome/service/cloud_print/connector_settings.cc   |  2 +-
- .../autofill/core/browser/autofill_manager.cc      | 14 ++++----------
- components/autofill/core/common/autofill_prefs.cc  |  2 +-
- components/bookmarks/browser/bookmark_utils.cc     |  4 ++--
- .../safe_browsing/common/safe_browsing_prefs.cc    |  4 ++--
- extensions/common/extension.cc                     |  8 --------
- 15 files changed, 19 insertions(+), 37 deletions(-)
+ chrome/browser/background/background_mode_manager.cc     | 2 +-
+ chrome/browser/chrome_content_browser_client.cc          | 2 +-
+ chrome/browser/net/prediction_options.cc                 | 2 +-
+ chrome/browser/net/prediction_options.h                  | 2 +-
+ chrome/browser/profiles/profile.cc                       | 2 +-
+ .../settings/reset_page/reset_profile_dialog.html        | 2 +-
+ chrome/browser/ui/browser_ui_prefs.cc                    | 4 ++--
+ chrome/browser/ui/navigation_correction_tab_observer.cc  | 2 +-
+ .../ui/webui/local_discovery/local_discovery_ui.cc       | 4 ----
+ chrome/service/cloud_print/connector_settings.cc         | 2 +-
+ components/autofill/core/browser/autofill_manager.cc     | 9 +++------
+ components/autofill/core/common/autofill_prefs.cc        | 2 +-
+ components/bookmarks/browser/bookmark_utils.cc           | 4 ++--
+ components/safe_browsing/common/safe_browsing_prefs.cc   | 4 ++--
+ extensions/common/extension.cc                           | 8 --------
+ 15 files changed, 18 insertions(+), 33 deletions(-)
 
 
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
-@@ -302,7 +302,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -310,7 +310,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
  #endif
  #endif
@@ -36,7 +36,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
 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
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1141,7 +1141,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1170,7 +1170,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -79,8 +79,8 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
 -      true,
 -      true,
 +      false,
 +      false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-   registry->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
-   registry->RegisterStringPref(prefs::kSessionExitType, std::string());
+ #if defined(OS_ANDROID)
+   registry->RegisterStringPref(
 diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 --- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 --- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 +++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 +++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
@@ -113,7 +113,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
 diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
 --- a/chrome/browser/ui/navigation_correction_tab_observer.cc
 --- a/chrome/browser/ui/navigation_correction_tab_observer.cc
 +++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
 +++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
-@@ -43,7 +43,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {}
+@@ -57,7 +57,7 @@ void NavigationCorrectionTabObserver::SetAllowEnableCorrectionsForTesting(
  // static
  // static
  void NavigationCorrectionTabObserver::RegisterProfilePrefs(
  void NavigationCorrectionTabObserver::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* prefs) {
      user_prefs::PrefRegistrySyncable* prefs) {
@@ -151,19 +151,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
 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
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -529,10 +529,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
-   bool enabled = IsAutofillEnabled();
-   sync_state_ = personal_data_ ? personal_data_->GetSyncSigninState()
-                                : AutofillSyncSigninState::kNumSyncStates;
--  if (!has_logged_autofill_enabled_) {
--    AutofillMetrics::LogIsAutofillEnabledAtPageLoad(enabled, sync_state_);
--    has_logged_autofill_enabled_ = true;
--  }
-+  has_logged_autofill_enabled_ = true;
- 
-   return enabled;
- }
-@@ -818,10 +815,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -823,10 +823,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
        // (current metric) and number shown to the user.
@@ -175,7 +163,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
      }
    }
    }
  
  
-@@ -1450,8 +1444,8 @@ void AutofillManager::Reset() {
+@@ -1464,8 +1461,8 @@ void AutofillManager::Reset() {
  #if defined(OS_ANDROID) || defined(OS_IOS)
  #if defined(OS_ANDROID) || defined(OS_IOS)
    autofill_assistant_.Reset();
    autofill_assistant_.Reset();
  #endif
  #endif
@@ -189,7 +177,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
 diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
 diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
 --- a/components/autofill/core/common/autofill_prefs.cc
 --- a/components/autofill/core/common/autofill_prefs.cc
 +++ b/components/autofill/core/common/autofill_prefs.cc
 +++ b/components/autofill/core/common/autofill_prefs.cc
-@@ -152,7 +152,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -147,7 +147,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
        prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(
    registry->RegisterBooleanPref(
@@ -234,13 +222,13 @@ diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
-@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
-   if (is_theme())
+@@ -333,14 +333,6 @@ bool Extension::ShouldDisplayInExtensionSettings(Manifest::Type type,
+   if (type == Manifest::TYPE_THEME)
      return false;
      return false;
  
  
 -  // Hide component extensions because they are only extensions as an
 -  // Hide component extensions because they are only extensions as an
 -  // implementation detail of Chrome.
 -  // implementation detail of Chrome.
--  if (extensions::Manifest::IsComponentLocation(location()) &&
+-  if (Manifest::IsComponentLocation(location) &&
 -      !base::CommandLine::ForCurrentProcess()->HasSwitch(
 -      !base::CommandLine::ForCurrentProcess()->HasSwitch(
 -          switches::kShowComponentExtensionOptions)) {
 -          switches::kShowComponentExtensionOptions)) {
 -    return false;
 -    return false;

+ 36 - 38
build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch

@@ -57,18 +57,18 @@ Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2144,6 +2144,7 @@ jumbo_static_library("browser") {
+@@ -2222,6 +2222,7 @@ jumbo_static_library("browser") {
      "//third_party/metrics_proto",
      "//third_party/metrics_proto",
      "//third_party/re2",
      "//third_party/re2",
      "//third_party/smhasher:cityhash",
      "//third_party/smhasher:cityhash",
 +    "//third_party/ungoogled:switches",
 +    "//third_party/ungoogled:switches",
-     "//third_party/webrtc_overrides",
-     "//third_party/webrtc_overrides:init_webrtc",
+     "//third_party/webrtc_overrides:webrtc_component",
      "//third_party/widevine/cdm:buildflags",
      "//third_party/widevine/cdm:buildflags",
+     "//third_party/zlib",
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -147,6 +147,7 @@
+@@ -149,6 +149,7 @@
  #include "third_party/blink/public/common/experiments/memory_ablation_experiment.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/features.h"
  #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
  #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
@@ -76,7 +76,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "third_party/leveldatabase/leveldb_features.h"
  #include "third_party/leveldatabase/leveldb_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/accessibility/accessibility_switches.h"
-@@ -1503,12 +1504,24 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1513,12 +1514,24 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
      {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
       flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
       flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
       SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
       SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
@@ -104,18 +104,18 @@ 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
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -206,6 +206,7 @@ jumbo_source_set("browser") {
+@@ -209,6 +209,7 @@ jumbo_source_set("browser") {
      "//third_party/libyuv",
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/re2",
      "//third_party/sqlite",
      "//third_party/sqlite",
 +    "//third_party/ungoogled:switches",
 +    "//third_party/ungoogled:switches",
-     "//third_party/webrtc/modules/desktop_capture:primitives",
-     "//third_party/webrtc/rtc_base:rtc_base",
+     "//third_party/webrtc_overrides:webrtc_component",
      "//third_party/zlib",
      "//third_party/zlib",
+     "//third_party/zlib/google:zip",
 diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
 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
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -220,6 +220,7 @@
+@@ -225,6 +225,7 @@
  #include "third_party/blink/public/common/page/launching_process_state.h"
  #include "third_party/blink/public/common/page/launching_process_state.h"
  #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
  #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
  #include "third_party/blink/public/public_buildflags.h"
  #include "third_party/blink/public/public_buildflags.h"
@@ -123,7 +123,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
  #include "third_party/skia/include/core/SkBitmap.h"
  #include "third_party/skia/include/core/SkBitmap.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/base/ui_base_switches.h"
  #include "ui/base/ui_base_switches.h"
-@@ -2977,6 +2978,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3092,6 +3093,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisablePreferCompositingToLCDText,
      switches::kDisablePreferCompositingToLCDText,
      switches::kDisableDatabases,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
      switches::kDisableFileSystem,
@@ -136,7 +136,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
 diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 --- a/content/child/BUILD.gn
 --- a/content/child/BUILD.gn
 +++ b/content/child/BUILD.gn
 +++ b/content/child/BUILD.gn
-@@ -123,6 +123,7 @@ target(link_target_type, "child") {
+@@ -125,6 +125,7 @@ target(link_target_type, "child") {
      "//third_party/blink/public/common",
      "//third_party/blink/public/common",
      "//third_party/blink/public/strings",
      "//third_party/blink/public/strings",
      "//third_party/ced",
      "//third_party/ced",
@@ -147,7 +147,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -23,6 +23,7 @@
+@@ -25,6 +25,7 @@
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
  #include "services/network/public/cpp/network_switches.h"
  #include "third_party/blink/public/common/features.h"
  #include "third_party/blink/public/common/features.h"
@@ -155,9 +155,9 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #include "third_party/blink/public/platform/web_runtime_features.h"
  #include "third_party/blink/public/platform/web_runtime_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/base/ui_base_features.h"
  #include "ui/base/ui_base_features.h"
-@@ -513,6 +514,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
-   if (ui::IsOverlayScrollbarEnabled())
-     WebRuntimeFeatures::EnableOverlayScrollbars(true);
+@@ -523,6 +524,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+   // They're moved here to distinguish them from actual base checks
+   WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
  
  
 +  WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(
 +  WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(
 +      !command_line.HasSwitch(switches::kFingerprintingClientRectsNoise));
 +      !command_line.HasSwitch(switches::kFingerprintingClientRectsNoise));
@@ -172,8 +172,8 @@ 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
 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
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -229,6 +229,9 @@ class WebRuntimeFeatures {
-   BLINK_PLATFORM_EXPORT static void EnableMergeBlockingNonBlockingPools(bool);
+@@ -226,6 +226,9 @@ class WebRuntimeFeatures {
+   BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool);
 +  BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool);
@@ -193,7 +193,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/time/time.h"
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/scroll_snap_data.h"
  #include "cc/input/scroll_snap_data.h"
-@@ -2794,6 +2795,23 @@ void Document::UpdateStyleAndLayoutTree() {
+@@ -2875,6 +2876,23 @@ void Document::UpdateStyleAndLayoutTree() {
  #if DCHECK_IS_ON()
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this);
    AssertLayoutTreeUpdated(*this);
  #endif
  #endif
@@ -220,7 +220,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
 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
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -414,6 +414,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -416,6 +416,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
    }
  
  
@@ -231,7 +231,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    String visibilityState() const;
    String visibilityState() const;
    bool IsPageVisible() const;
    bool IsPageVisible() const;
    bool hidden() const;
    bool hidden() const;
-@@ -1936,6 +1940,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1970,6 +1974,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
  
    base::ElapsedTimer start_time_;
    base::ElapsedTimer start_time_;
  
  
@@ -244,7 +244,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
 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
 --- a/third_party/blink/renderer/core/dom/element.cc
 +++ b/third_party/blink/renderer/core/dom/element.cc
 +++ b/third_party/blink/renderer/core/dom/element.cc
-@@ -1877,6 +1877,11 @@ DOMRectList* Element::getClientRects() {
+@@ -1902,6 +1902,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
        quads, *element_layout_object);
@@ -256,7 +256,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return DOMRectList::Create(quads);
    return DOMRectList::Create(quads);
  }
  }
  
  
-@@ -1894,6 +1899,9 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -1919,6 +1924,9 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
                                                          *element_layout_object);
@@ -335,7 +335,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
 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
 --- 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
 +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
-@@ -818,9 +818,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -821,9 +821,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    else
    else
      direction = ToTextDirection(GetState().GetDirection(), canvas());
      direction = ToTextDirection(GetState().GetDirection(), canvas());
  
  
@@ -372,7 +372,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 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
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1454,7 +1454,9 @@ jumbo_component("platform") {
+@@ -1478,7 +1478,9 @@ jumbo_component("platform") {
      "//third_party/blink/renderer:non_test_config",
      "//third_party/blink/renderer:non_test_config",
    ]
    ]
  
  
@@ -383,9 +383,9 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
  
  
    public_deps = [
    public_deps = [
      ":blink_platform_public_deps",
      ":blink_platform_public_deps",
-@@ -1487,6 +1489,7 @@ jumbo_component("platform") {
-     "//third_party/blink/public/common",
+@@ -1516,6 +1518,7 @@ jumbo_component("platform") {
      "//third_party/blink/public/mojom:embedded_frame_sink_mojo_bindings_blink",
      "//third_party/blink/public/mojom:embedded_frame_sink_mojo_bindings_blink",
+     "//third_party/blink/public/strings",
      "//third_party/ced",
      "//third_party/ced",
 +    "//third_party/ungoogled:switches",
 +    "//third_party/ungoogled:switches",
      "//third_party/emoji-segmenter",
      "//third_party/emoji-segmenter",
@@ -394,7 +394,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 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
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -704,4 +704,16 @@ void WebRuntimeFeatures::EnableAcceleratedSmallCanvases(bool enable) {
+@@ -696,4 +696,16 @@ void WebRuntimeFeatures::EnableAcceleratedSmallCanvases(bool enable) {
    RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled(enable);
    RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled(enable);
  }
  }
  
  
@@ -414,16 +414,16 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
 diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
 --- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
 --- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
 +++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
 +++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
-@@ -35,6 +35,8 @@
- #include <memory>
+@@ -36,6 +36,8 @@
  
  
+ #include "base/compiler_specific.h"
  #include "base/memory/ptr_util.h"
  #include "base/memory/ptr_util.h"
 +#include "base/rand_util.h"
 +#include "base/rand_util.h"
 +#include "base/logging.h"
 +#include "base/logging.h"
  #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
  #include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
-@@ -127,6 +129,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
+@@ -130,6 +132,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
                                            const SkPixmap& pixmap) const {
                                            const SkPixmap& pixmap) const {
    DCHECK(is_valid_);
    DCHECK(is_valid_);
  
  
@@ -447,12 +447,11 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  #include "base/numerics/checked_math.h"
  #include "base/numerics/checked_math.h"
  #include "gpu/command_buffer/client/gles2_interface.h"
  #include "gpu/command_buffer/client/gles2_interface.h"
  #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
-@@ -11,12 +13,14 @@
+@@ -11,11 +13,13 @@
  #include "third_party/blink/renderer/platform/graphics/image_observer.h"
  #include "third_party/blink/renderer/platform/graphics/image_observer.h"
  #include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
  #include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
  #include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h"
 +#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 +#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
- #include "third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h"
  #include "third_party/skia/include/core/SkCanvas.h"
  #include "third_party/skia/include/core/SkCanvas.h"
  #include "third_party/skia/include/core/SkImage.h"
  #include "third_party/skia/include/core/SkImage.h"
  #include "third_party/skia/include/core/SkPaint.h"
  #include "third_party/skia/include/core/SkPaint.h"
@@ -462,16 +461,15 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  #include "v8/include/v8.h"
  #include "v8/include/v8.h"
  
  
  namespace blink {
  namespace blink {
-@@ -141,10 +145,165 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
+@@ -117,9 +121,164 @@ bool StaticBitmapImage::CopyToByteArray(
    DCHECK(read_pixels_successful ||
    DCHECK(read_pixels_successful ||
           !sk_image->bounds().intersect(SkIRect::MakeXYWH(
           !sk_image->bounds().intersect(SkIRect::MakeXYWH(
               rect.X(), rect.Y(), info.width(), info.height())));
               rect.X(), rect.Y(), info.width(), info.height())));
 +
 +
-+  if (RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
-+    ShuffleSubchannelColorData(result.Data(), info, rect.X(), rect.Y());
++  if (read_pixels_successful && RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
++    ShuffleSubchannelColorData(dst.data(), info, rect.X(), rect.Y());
 +  }
 +  }
 +
 +
-   result.Transfer(dest_contents);
    return true;
    return true;
  }
  }
  
  
@@ -631,7 +629,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
 diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 --- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 --- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 +++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 +++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
-@@ -44,6 +44,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
+@@ -30,6 +30,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
    static scoped_refptr<StaticBitmapImage> Create(sk_sp<SkData> data,
    static scoped_refptr<StaticBitmapImage> Create(sk_sp<SkData> data,
                                                   const SkImageInfo&);
                                                   const SkImageInfo&);
  
  
@@ -643,7 +641,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
 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
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -683,6 +683,15 @@
+@@ -714,6 +714,15 @@
        name: "FetchMetadataDestination",
        name: "FetchMetadataDestination",
        status: "experimental"
        status: "experimental"
      },
      },

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

@@ -9,7 +9,7 @@ Subject: Never fetch popular sites
 diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/popular_sites_impl.cc
 diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/popular_sites_impl.cc
 --- a/components/ntp_tiles/popular_sites_impl.cc
 --- a/components/ntp_tiles/popular_sites_impl.cc
 +++ b/components/ntp_tiles/popular_sites_impl.cc
 +++ b/components/ntp_tiles/popular_sites_impl.cc
-@@ -283,6 +283,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
+@@ -275,6 +275,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
    DCHECK(!callback_);
    DCHECK(!callback_);
    callback_ = callback;
    callback_ = callback;
  
  

+ 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
 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
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -254,6 +254,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
+@@ -255,6 +255,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
  std::vector<base::string16>
  std::vector<base::string16>
  ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
  ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<base::string16> builtins_to_provide;
    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/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
-@@ -402,6 +402,7 @@ public class ExternalNavigationHandler {
+@@ -403,6 +403,7 @@ public class ExternalNavigationHandler {
                          Uri.parse(WebView.SCHEME_TEL
                          Uri.parse(WebView.SCHEME_TEL
                                  + params.getUrl().substring(WTAI_MC_URL_PREFIX.length()))),
                                  + params.getUrl().substring(WTAI_MC_URL_PREFIX.length()))),
                  false);
                  false);
@@ -17,7 +17,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
          if (DEBUG) Log.i(TAG, "wtai:// link handled");
          if (DEBUG) Log.i(TAG, "wtai:// link handled");
          RecordUserAction.record("Android.PhoneIntent");
          RecordUserAction.record("Android.PhoneIntent");
          return true;
          return true;
-@@ -745,6 +746,13 @@ public class ExternalNavigationHandler {
+@@ -746,6 +747,13 @@ public class ExternalNavigationHandler {
              return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
              return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
          }
          }
  
  

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

@@ -2,12 +2,11 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Sat, 28 Apr 2018 08:30:26 +0200
 Date: Sat, 28 Apr 2018 08:30:26 +0200
 Subject: Reduce HTTP headers in DoH requests to bare minimum
 Subject: Reduce HTTP headers in DoH requests to bare minimum
 
 
-Serve DoH requests with maximum priority.
 ---
 ---
  net/base/load_flags_list.h              |  9 +++++++++
  net/base/load_flags_list.h              |  9 +++++++++
- net/dns/dns_transaction.cc              |  3 ++-
+ net/dns/dns_transaction.cc              |  1 +
  net/url_request/url_request_http_job.cc | 16 +++++++++++-----
  net/url_request/url_request_http_job.cc | 16 +++++++++++-----
- 3 files changed, 22 insertions(+), 6 deletions(-)
+ 3 files changed, 21 insertions(+), 5 deletions(-)
 
 
 diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 --- a/net/base/load_flags_list.h
 --- a/net/base/load_flags_list.h
@@ -28,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
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -403,6 +403,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -405,6 +405,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      // perspective to prevent the client from sending AIA requests).
      // perspective to prevent the client from sending AIA requests).
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
                             LOAD_BYPASS_PROXY |
                             LOAD_BYPASS_PROXY |
@@ -36,19 +35,10 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
                             LOAD_DISABLE_CERT_NETWORK_FETCHES);
                             LOAD_DISABLE_CERT_NETWORK_FETCHES);
      request_->set_allow_credentials(false);
      request_->set_allow_credentials(false);
    }
    }
-@@ -1004,7 +1005,7 @@ class DnsTransactionImpl : public DnsTransaction,
-         had_tcp_attempt_(false),
-         first_server_index_(0),
-         url_request_context_(url_request_context),
--        request_priority_(DEFAULT_PRIORITY) {
-+        request_priority_(MAXIMUM_PRIORITY) {
-     DCHECK(session_.get());
-     DCHECK(!hostname_.empty());
-     DCHECK(!callback_.is_null());
 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.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
 --- a/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
-@@ -354,6 +354,7 @@ void URLRequestHttpJob::Start() {
+@@ -271,6 +271,7 @@ void URLRequestHttpJob::Start() {
    // plugin could set a referrer although sending the referrer is inhibited.
    // plugin could set a referrer although sending the referrer is inhibited.
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
  
  
@@ -56,7 +46,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
    // Our consumer should have made sure that this is a safe referrer. See for
    // Our consumer should have made sure that this is a safe referrer. See for
    // instance WebCore::FrameLoader::HideReferrer.
    // instance WebCore::FrameLoader::HideReferrer.
    if (referrer.is_valid()) {
    if (referrer.is_valid()) {
-@@ -369,11 +370,14 @@ void URLRequestHttpJob::Start() {
+@@ -286,11 +287,14 @@ void URLRequestHttpJob::Start() {
      request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
      request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
                                            referer_value);
                                            referer_value);
    }
    }
@@ -71,7 +61,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
  
    AddExtraHeaders();
    AddExtraHeaders();
    AddCookieHeaderAndStart();
    AddCookieHeaderAndStart();
-@@ -588,10 +592,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -505,10 +509,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
      } else {
      } else {
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        bool advertise_brotli = false;
        bool advertise_brotli = false;
@@ -88,7 +78,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
          }
          }
        }
        }
  
  
-@@ -609,7 +615,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -526,7 +532,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
      }
    }
    }
  
  

+ 96 - 82
build/patches/Remove-SMS-integration.patch

@@ -3,102 +3,116 @@ Date: Sun, 3 Nov 2019 08:22:29 +0100
 Subject: Remove SMS integration
 Subject: Remove SMS integration
 
 
 ---
 ---
- content/public/android/BUILD.gn               |  2 -
- .../content/browser/sms/Wrappers.java         | 74 -------------------
- 2 files changed, 76 deletions(-)
- delete mode 100644 content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+ .../content/browser/sms/SmsReceiver.java      | 29 +++----------------
+ .../content/browser/sms/Wrappers.java         | 11 +------
+ 2 files changed, 5 insertions(+), 35 deletions(-)
 
 
-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
-@@ -232,8 +232,6 @@ android_library("content_java") {
-     "java/src/org/chromium/content/browser/selection/SmartSelectionClient.java",
-     "java/src/org/chromium/content/browser/selection/SmartSelectionMetricsLogger.java",
-     "java/src/org/chromium/content/browser/selection/SmartSelectionProvider.java",
--    "java/src/org/chromium/content/browser/sms/SmsReceiver.java",
--    "java/src/org/chromium/content/browser/sms/Wrappers.java",
-     "java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java",
-     "java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java",
-     "java/src/org/chromium/content/common/ContentSwitchUtils.java",
-diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
-deleted file mode 100644
---- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
-+++ /dev/null
-@@ -1,74 +0,0 @@
--// Copyright 2019 The Chromium Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
+diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
+--- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
++++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
+@@ -11,11 +11,6 @@ import android.content.IntentFilter;
+ 
+ import androidx.annotation.VisibleForTesting;
+ 
+-import com.google.android.gms.auth.api.phone.SmsRetriever;
+-import com.google.android.gms.common.api.CommonStatusCodes;
+-import com.google.android.gms.common.api.Status;
+-import com.google.android.gms.tasks.Task;
 -
 -
--package org.chromium.content.browser.sms;
+ import org.chromium.base.ContextUtils;
+ import org.chromium.base.Log;
+ import org.chromium.base.annotations.CalledByNative;
+@@ -42,18 +37,6 @@ public class SmsReceiver extends BroadcastReceiver {
+         mSmsProviderAndroid = smsProviderAndroid;
+ 
+         mContext = new Wrappers.SmsReceiverContext(ContextUtils.getApplicationContext());
 -
 -
--import android.content.BroadcastReceiver;
--import android.content.Context;
--import android.content.ContextWrapper;
--import android.content.Intent;
--import android.content.IntentFilter;
+-        // A broadcast receiver is registered upon the creation of this class
+-        // which happens when the SMS Retriever API is used for the first time
+-        // since chrome last restarted (which, on android, happens frequently).
+-        // The broadcast receiver is fairly lightweight (e.g. it responds
+-        // quickly without much computation).
+-        // If this broadcast receiver becomes more heavyweight, we should make
+-        // this registration expire after the SMS message is received.
+-        if (DEBUG) Log.d(TAG, "Registering intent filters.");
+-        IntentFilter filter = new IntentFilter();
+-        filter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
+-        mContext.registerReceiver(this, filter);
+     }
+ 
+     @CalledByNative
+@@ -77,7 +60,7 @@ public class SmsReceiver extends BroadcastReceiver {
+             return;
+         }
+ 
+-        if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
++/*        if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
+             return;
+         }
+ 
+@@ -104,22 +87,18 @@ public class SmsReceiver extends BroadcastReceiver {
+                 if (DEBUG) Log.d(TAG, "Timeout");
+                 SmsReceiverJni.get().onTimeout(mSmsProviderAndroid);
+                 break;
+-        }
++        } */
+     }
+ 
+     @CalledByNative
+     private void listen() {
+-        Wrappers.SmsRetrieverClientWrapper client = getClient();
+-        Task<Void> task = client.startSmsRetriever();
 -
 -
+-        if (DEBUG) Log.d(TAG, "Installed task");
+     }
+ 
+     private Wrappers.SmsRetrieverClientWrapper getClient() {
+-        if (mClient != null) {
++/*        if (mClient != null) {
+             return mClient;
+         }
+-        mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext));
++        mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext)); */
+         return mClient;
+     }
+ 
+diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+--- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
++++ b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+@@ -10,9 +10,6 @@ import android.content.ContextWrapper;
+ import android.content.Intent;
+ import android.content.IntentFilter;
+ 
 -import com.google.android.gms.auth.api.phone.SmsRetrieverClient;
 -import com.google.android.gms.auth.api.phone.SmsRetrieverClient;
 -import com.google.android.gms.tasks.Task;
 -import com.google.android.gms.tasks.Task;
 -
 -
--class Wrappers {
--    // Prevent instantiation.
--    private Wrappers() {}
--
--    /**
--     * Wraps com.google.android.gms.auth.api.phone.SmsRetrieverClient.
--     */
--    static class SmsRetrieverClientWrapper {
+ class Wrappers {
+     // Prevent instantiation.
+     private Wrappers() {}
+@@ -21,11 +18,9 @@ class Wrappers {
+      * Wraps com.google.android.gms.auth.api.phone.SmsRetrieverClient.
+      */
+     static class SmsRetrieverClientWrapper {
 -        private final SmsRetrieverClient mSmsRetrieverClient;
 -        private final SmsRetrieverClient mSmsRetrieverClient;
--        private SmsReceiverContext mContext;
--
+         private SmsReceiverContext mContext;
+ 
 -        public SmsRetrieverClientWrapper(SmsRetrieverClient smsRetrieverClient) {
 -        public SmsRetrieverClientWrapper(SmsRetrieverClient smsRetrieverClient) {
 -            mSmsRetrieverClient = smsRetrieverClient;
 -            mSmsRetrieverClient = smsRetrieverClient;
--        }
--
--        public void setContext(SmsReceiverContext context) {
--            mContext = context;
--        }
--
--        public SmsReceiverContext getContext() {
--            return mContext;
--        }
++        public SmsRetrieverClientWrapper() {
+         }
+ 
+         public void setContext(SmsReceiverContext context) {
+@@ -35,10 +30,6 @@ class Wrappers {
+         public SmsReceiverContext getContext() {
+             return mContext;
+         }
 -
 -
 -        public Task<Void> startSmsRetriever() {
 -        public Task<Void> startSmsRetriever() {
 -            return mSmsRetrieverClient.startSmsRetriever();
 -            return mSmsRetrieverClient.startSmsRetriever();
 -        }
 -        }
--    }
--
--    /**
--     * Extends android.content.ContextWrapper to store and retrieve the
--     * registered BroadcastReceiver.
--     */
--    static class SmsReceiverContext extends ContextWrapper {
--        private BroadcastReceiver mReceiver;
--
--        public SmsReceiverContext(Context context) {
--            super(context);
--        }
--
--        public BroadcastReceiver getRegisteredReceiver() {
--            return mReceiver;
--        }
--
--        // ---------------------------------------------------------------------
--        // Context overrides:
--
--        @Override
--        public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
--            mReceiver = receiver;
--            return super.registerReceiver(receiver, filter);
--        }
--
--        @Override
--        public void unregisterReceiver(BroadcastReceiver receiver) {
--            mReceiver = null;
--            super.unregisterReceiver(receiver);
--        }
--    }
--}
+     }
+ 
+     /**
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 0 - 46
build/patches/Remove-background-sync-and-translate-menu-options.patch

@@ -1,46 +0,0 @@
-From: Serg <serg.zhukovsky@gmail.com>
-Date: Wed, 22 Mar 2017 19:10:30 -0400
-Subject: Remove background sync and translate menu options
-
----
- chrome/android/java/res/xml/site_settings_preferences.xml     | 4 ----
- .../browser/preferences/website/SiteSettingsPreferences.java  | 3 +--
- 2 files changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
---- a/chrome/android/java/res/xml/site_settings_preferences.xml
-+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
-@@ -49,10 +49,6 @@
-     <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
-         android:key="ads" />
--    <!-- Background sync -->
--    <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
--        android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
--        android:key="background_sync" />
-     <!-- Automatic Downloads -->
-     <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
-@@ -72,7 +72,7 @@ public class SiteSettingsPreferences
-             // The Media sub-menu only contains Protected Content and Autoplay, so remove all other
-             // menus.
-             for (@Type int i = 0; i < Type.NUM_ENTRIES; i++) {
--                if (i == Type.AUTOPLAY || i == Type.PROTECTED_MEDIA) continue;
-+                if (i == Type.AUTOPLAY || i == Type.PROTECTED_MEDIA || i == Type.BACKGROUND_SYNC) continue;
-                 getPreferenceScreen().removePreference(findPreference(i));
-             }
-             getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
-@@ -106,7 +106,6 @@ public class SiteSettingsPreferences
-                 websitePrefs.add(Type.ADS);
-             }
-             websitePrefs.add(Type.AUTOMATIC_DOWNLOADS);
--            websitePrefs.add(Type.BACKGROUND_SYNC);
-             CommandLine commandLine = CommandLine.getInstance();
-             if (commandLine.hasSwitch(ContentSwitches.ENABLE_EXPERIMENTAL_WEB_PLATFORM_FEATURES)) {
-                 websitePrefs.add(Type.BLUETOOTH_SCANNING);
--- 
-2.17.1
-

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

@@ -16,7 +16,7 @@ Subject: Remove dependency on com.google.android.gms.auth
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -258,7 +258,6 @@ android_library("chrome_java") {
+@@ -216,7 +216,6 @@ android_library("chrome_java") {
      ":thumbnail_cache_entry_proto_java",
      ":thumbnail_cache_entry_proto_java",
      ":update_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
      ":usage_stats_proto_java",
@@ -27,7 +27,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
 diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
 --- a/components/signin/core/browser/android/BUILD.gn
 --- a/components/signin/core/browser/android/BUILD.gn
 +++ b/components/signin/core/browser/android/BUILD.gn
 +++ b/components/signin/core/browser/android/BUILD.gn
-@@ -16,7 +16,6 @@ generate_jni("jni_headers") {
+@@ -15,7 +15,6 @@ generate_jni("jni_headers") {
  
  
  android_library("java") {
  android_library("java") {
    deps = [
    deps = [
@@ -38,9 +38,9 @@ diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
-@@ -4,9 +4,6 @@
+@@ -6,9 +6,6 @@ package org.chromium.components.signin;
  
  
- package org.chromium.components.signin;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -import com.google.android.gms.common.GoogleApiAvailability;
@@ -48,7 +48,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.Log;
  import org.chromium.base.StrictModeContext;
  import org.chromium.base.StrictModeContext;
-@@ -47,12 +44,7 @@ public class AccountIdProvider {
+@@ -48,12 +45,7 @@ public class AccountIdProvider {
       * Google Play services is available.
       * Google Play services is available.
       */
       */
      public boolean canBeUsed() {
      public boolean canBeUsed() {
@@ -97,7 +97,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
 diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
-@@ -52,7 +52,6 @@ action("generate_sandboxed_service_srcjar") {
+@@ -53,7 +53,6 @@ action("generate_sandboxed_service_srcjar") {
  android_library("content_java") {
  android_library("content_java") {
    deps = [
    deps = [
      ":content_java_resources",
      ":content_java_resources",
@@ -108,7 +108,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
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2444,7 +2444,6 @@ if (is_android) {
+@@ -2348,7 +2348,6 @@ if (is_android) {
      testonly = true
      testonly = true
      java_files = content_java_sources_needing_jni
      java_files = content_java_sources_needing_jni
      deps = [
      deps = [
@@ -119,7 +119,7 @@ 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
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -802,50 +802,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
+@@ -820,50 +820,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
    ]
    ]
  }
  }
  
  

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

@@ -29,7 +29,7 @@ Subject: Remove dependency on com.google.android.gms.cast
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -260,8 +260,6 @@ android_library("chrome_java") {
+@@ -218,8 +218,6 @@ android_library("chrome_java") {
      ":usage_stats_proto_java",
      ":usage_stats_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$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_basement_java",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_tasks_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:base_java",
      "//base:jni_java",
      "//base:jni_java",
-@@ -654,8 +652,6 @@ junit_binary("chrome_junit_tests") {
+@@ -618,8 +616,6 @@ junit_binary("chrome_junit_tests") {
      ":partner_location_descriptor_proto_java",
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$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_basement_java",
@@ -47,7 +47,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
      "//base:base_junit_test_support",
-@@ -759,8 +755,6 @@ android_library("chrome_test_java") {
+@@ -730,8 +726,6 @@ android_library("chrome_test_java") {
      ":partner_location_descriptor_proto_java",
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$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_basement_java",
@@ -59,7 +59,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/features/media_router/BUILD.gn
 diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/features/media_router/BUILD.gn
 --- a/chrome/android/features/media_router/BUILD.gn
 --- a/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
-@@ -11,8 +11,6 @@ android_library("java") {
+@@ -12,8 +12,6 @@ android_library("java") {
      ":java_resources",
      ":java_resources",
      "$google_play_services_package:google_play_services_base_java",
      "$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_basement_java",
@@ -804,9 +804,9 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/CafMessageHandler.java
-@@ -11,10 +11,6 @@ import android.support.v4.util.ArrayMap;
- import android.text.TextUtils;
- import android.util.SparseArray;
+@@ -13,10 +13,6 @@ import android.util.SparseArray;
+ 
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.cast.ApplicationMetadata;
 -import com.google.android.gms.cast.ApplicationMetadata;
 -import com.google.android.gms.common.api.PendingResult;
 -import com.google.android.gms.common.api.PendingResult;
@@ -815,7 +815,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
  import org.json.JSONArray;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONException;
  import org.json.JSONObject;
  import org.json.JSONObject;
-@@ -344,49 +340,7 @@ public class CafMessageHandler {
+@@ -345,49 +341,7 @@ public class CafMessageHandler {
              final int sequenceNumber) throws JSONException {
              final int sequenceNumber) throws JSONException {
          if (volumeMessage == null) return false;
          if (volumeMessage == null) return false;
          if (!mSessionController.isConnected()) return false;
          if (!mSessionController.isConnected()) return false;
@@ -866,7 +866,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      }
      }
  
  
      @VisibleForTesting
      @VisibleForTesting
-@@ -674,19 +628,11 @@ public class CafMessageHandler {
+@@ -675,19 +629,11 @@ public class CafMessageHandler {
          try {
          try {
              // "volume" is a part of "receiver" initialized below.
              // "volume" is a part of "receiver" initialized below.
              JSONObject jsonVolume = new JSONObject();
              JSONObject jsonVolume = new JSONObject();
@@ -886,7 +886,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
              jsonReceiver.put("displayStatus", null);
              jsonReceiver.put("displayStatus", null);
              jsonReceiver.put("receiverType", "cast");
              jsonReceiver.put("receiverType", "cast");
  
  
-@@ -699,23 +645,14 @@ public class CafMessageHandler {
+@@ -700,23 +646,14 @@ public class CafMessageHandler {
  
  
              JSONObject jsonMessage = new JSONObject();
              JSONObject jsonMessage = new JSONObject();
              jsonMessage.put("sessionId", mSessionController.getSessionId());
              jsonMessage.put("sessionId", mSessionController.getSessionId());
@@ -912,7 +912,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
  
  
              return jsonMessage.toString();
              return jsonMessage.toString();
          } catch (JSONException e) {
          } catch (JSONException e) {
-@@ -796,32 +733,6 @@ public class CafMessageHandler {
+@@ -797,32 +734,6 @@ public class CafMessageHandler {
      boolean sendStringCastMessage(
      boolean sendStringCastMessage(
              String message, String namespace, String clientId, int sequenceNumber) {
              String message, String namespace, String clientId, int sequenceNumber) {
          if (!mSessionController.isConnected()) return false;
          if (!mSessionController.isConnected()) return false;
@@ -1437,7 +1437,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Note: All activities directly or indirectly derived from ChromeActivity
          <!-- Note: All activities directly or indirectly derived from ChromeActivity
               must specify android:hardwareAccelerated="false".
               must specify android:hardwareAccelerated="false".
  
  
-@@ -783,16 +777,6 @@ by a child template that "extends" this file.
+@@ -784,16 +778,6 @@ by a child template that "extends" this file.
              </intent-filter>
              </intent-filter>
          </activity>
          </activity>
  
  
@@ -1454,7 +1454,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. -->
          <!-- This activity is used to restart the main Chrome process.  Should never be exported. -->
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
              android:launchMode="singleInstance"
              android:launchMode="singleInstance"
-@@ -1195,18 +1179,6 @@ android:value="true" />
+@@ -1217,18 +1201,6 @@ android:value="true" />
          {% endif %}
          {% endif %}
  
  
          {% block extra_application_definitions %}
          {% block extra_application_definitions %}
@@ -1487,7 +1487,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
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -828,39 +828,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
+@@ -846,39 +846,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
  }
  }
  
  

+ 32 - 32
build/patches/Remove-dependency-on-com.google.android.gms.common-auth-signin-dynamic-com.google.android.gms.tasks.patch

@@ -17,7 +17,7 @@ Subject: Remove dependency on
  .../gcore/ChromeGoogleApiClientImpl.java      | 25 +-----
  .../gcore/ChromeGoogleApiClientImpl.java      | 25 +-----
  .../browser/gcore/GoogleApiClientHelper.java  | 82 +------------------
  .../browser/gcore/GoogleApiClientHelper.java  | 82 +------------------
  .../browser/omaha/UpdateStatusProvider.java   | 10 +--
  .../browser/omaha/UpdateStatusProvider.java   | 10 +--
- .../preferences/PreferencesLauncher.java      | 20 +----
+ .../PasswordManagerLauncher.java              | 20 +----
  chrome/test/android/BUILD.gn                  |  2 -
  chrome/test/android/BUILD.gn                  |  2 -
  components/background_task_scheduler/BUILD.gn | 10 ---
  components/background_task_scheduler/BUILD.gn | 10 ---
  .../signin/core/browser/android/BUILD.gn      |  2 -
  .../signin/core/browser/android/BUILD.gn      |  2 -
@@ -37,7 +37,7 @@ Subject: Remove dependency on
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -258,9 +258,6 @@ android_library("chrome_java") {
+@@ -216,9 +216,6 @@ android_library("chrome_java") {
      ":thumbnail_cache_entry_proto_java",
      ":thumbnail_cache_entry_proto_java",
      ":update_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
      ":usage_stats_proto_java",
@@ -47,16 +47,16 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java",
      "//base:jni_java",
      "//base:jni_java",
      "//chrome/android/features/keyboard_accessory:public_java",
      "//chrome/android/features/keyboard_accessory:public_java",
-@@ -650,8 +647,6 @@ junit_binary("chrome_junit_tests") {
+@@ -614,8 +611,6 @@ junit_binary("chrome_junit_tests") {
+     ":chrome_app_java_resources",
      ":chrome_java",
      ":chrome_java",
-     ":chrome_junit_test_support",
      ":partner_location_descriptor_proto_java",
      ":partner_location_descriptor_proto_java",
 -    "$google_play_services_package:google_play_services_base_java",
 -    "$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_basement_java",
      "//base:base_java",
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
      "//base:base_junit_test_support",
-@@ -753,9 +748,6 @@ android_library("chrome_test_java") {
+@@ -724,9 +719,6 @@ android_library("chrome_test_java") {
      ":chrome_public_test_apk_resources",
      ":chrome_public_test_apk_resources",
      ":chrome_test_util_java",
      ":chrome_test_util_java",
      ":partner_location_descriptor_proto_java",
      ":partner_location_descriptor_proto_java",
@@ -69,7 +69,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/features/media_router/BUILD.gn
 diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/features/media_router/BUILD.gn
 --- a/chrome/android/features/media_router/BUILD.gn
 --- a/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
-@@ -9,8 +9,6 @@ import("//chrome/common/features.gni")
+@@ -10,8 +10,6 @@ import("//chrome/common/features.gni")
  android_library("java") {
  android_library("java") {
    deps = [
    deps = [
      ":java_resources",
      ":java_resources",
@@ -81,9 +81,9 @@ diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/feat
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
-@@ -8,9 +8,6 @@ import android.support.v7.media.MediaRouter;
- 
+@@ -9,9 +9,6 @@ import android.support.v7.media.MediaRouter;
  import androidx.annotation.Nullable;
  import androidx.annotation.Nullable;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -import com.google.android.gms.common.GoogleApiAvailability;
@@ -105,7 +105,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
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -840,15 +840,6 @@ by a child template that "extends" this file.
+@@ -858,15 +858,6 @@ by a child template that "extends" this file.
              </intent-filter>
              </intent-filter>
            </activity>
            </activity>
  
  
@@ -124,16 +124,16 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
-@@ -13,9 +13,6 @@ import android.view.View;
- 
+@@ -14,9 +14,6 @@ import android.view.View;
  import androidx.annotation.Nullable;
  import androidx.annotation.Nullable;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -
 -
  import org.chromium.base.Callback;
  import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
- import org.chromium.base.VisibleForTesting;
+ import org.chromium.base.annotations.CalledByNative;
 @@ -380,16 +377,7 @@ public abstract class AppHooks {
 @@ -380,16 +377,7 @@ public abstract class AppHooks {
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       */
       */
@@ -203,8 +203,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updat
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
-@@ -14,9 +14,6 @@ import android.text.TextUtils;
- 
+@@ -15,9 +15,6 @@ import android.text.TextUtils;
+ import androidx.annotation.VisibleForTesting;
  import androidx.annotation.WorkerThread;
  import androidx.annotation.WorkerThread;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
@@ -501,16 +501,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
-@@ -20,8 +20,6 @@ import androidx.annotation.IntDef;
- import androidx.annotation.NonNull;
+@@ -21,8 +21,6 @@ import androidx.annotation.NonNull;
  import androidx.annotation.Nullable;
  import androidx.annotation.Nullable;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.common.GooglePlayServicesUtil;
 -import com.google.android.gms.common.GooglePlayServicesUtil;
 -
 -
  import org.chromium.base.ActivityState;
  import org.chromium.base.ActivityState;
  import org.chromium.base.ApplicationStatus;
  import org.chromium.base.ApplicationStatus;
  import org.chromium.base.ApplicationStatus.ActivityStateListener;
  import org.chromium.base.ApplicationStatus.ActivityStateListener;
-@@ -464,13 +462,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
+@@ -465,13 +463,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
          }
          }
  
  
          private boolean isGooglePlayStoreAvailable(Context context) {
          private boolean isGooglePlayStoreAvailable(Context context) {
@@ -525,19 +525,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
          }
          }
  
  
          @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
          @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java
-@@ -13,8 +13,6 @@ import android.support.v4.app.Fragment;
- 
- import androidx.annotation.Nullable;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
+@@ -7,8 +7,6 @@ package org.chromium.chrome.browser.password_manager;
+ import android.app.Activity;
+ import android.os.Build;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
 -
 -
  import org.chromium.base.annotations.CalledByNative;
  import org.chromium.base.annotations.CalledByNative;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordHistogram;
- import org.chromium.base.metrics.RecordUserAction;
-@@ -190,22 +188,6 @@ public class PreferencesLauncher {
+ import org.chromium.chrome.browser.AppHooks;
+@@ -89,22 +87,6 @@ public class PasswordManagerLauncher {
      }
      }
  
  
      private static boolean tryShowingTheGooglePasswordManager(Activity activity) {
      private static boolean tryShowingTheGooglePasswordManager(Activity activity) {
@@ -564,7 +564,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
 diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 --- a/chrome/test/android/BUILD.gn
 --- a/chrome/test/android/BUILD.gn
 +++ b/chrome/test/android/BUILD.gn
 +++ b/chrome/test/android/BUILD.gn
-@@ -175,8 +175,6 @@ android_library("chrome_java_test_support") {
+@@ -187,8 +187,6 @@ android_library("chrome_java_test_support") {
      "javatests/src/org/chromium/chrome/test/util/WaitForFocusHelper.java",
      "javatests/src/org/chromium/chrome/test/util/WaitForFocusHelper.java",
    ]
    ]
    deps = [
    deps = [
@@ -610,7 +610,7 @@ diff --git a/components/background_task_scheduler/BUILD.gn b/components/backgrou
 diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
 diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
 --- a/components/signin/core/browser/android/BUILD.gn
 --- a/components/signin/core/browser/android/BUILD.gn
 +++ b/components/signin/core/browser/android/BUILD.gn
 +++ b/components/signin/core/browser/android/BUILD.gn
-@@ -16,8 +16,6 @@ generate_jni("jni_headers") {
+@@ -15,8 +15,6 @@ generate_jni("jni_headers") {
  
  
  android_library("java") {
  android_library("java") {
    deps = [
    deps = [
@@ -642,7 +642,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
 diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
-@@ -52,9 +52,6 @@ action("generate_sandboxed_service_srcjar") {
+@@ -53,9 +53,6 @@ action("generate_sandboxed_service_srcjar") {
  android_library("content_java") {
  android_library("content_java") {
    deps = [
    deps = [
      ":content_java_resources",
      ":content_java_resources",
@@ -655,7 +655,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
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2444,9 +2444,6 @@ if (is_android) {
+@@ -2348,9 +2348,6 @@ if (is_android) {
      testonly = true
      testonly = true
      java_files = content_java_sources_needing_jni
      java_files = content_java_sources_needing_jni
      deps = [
      deps = [
@@ -668,7 +668,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -387,8 +387,6 @@ if (is_android) {
+@@ -390,8 +390,6 @@ if (is_android) {
    junit_binary("device_junit_tests") {
    junit_binary("device_junit_tests") {
      java_files = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      java_files = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      deps = [
      deps = [
@@ -738,7 +738,7 @@ 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
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -802,44 +802,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
+@@ -820,44 +820,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
    ]
    ]
  }
  }
  
  
@@ -804,8 +804,8 @@ diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
 -    "$google_play_services_package:google_play_services_base_java",
 -    "$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_basement_java",
      "//third_party/android_deps:android_support_v4_java",
      "//third_party/android_deps:android_support_v4_java",
+     "//third_party/android_deps:com_google_guava_guava_java",
      "//third_party/gson:gson_java",
      "//third_party/gson:gson_java",
-     "//third_party/guava:guava_java",
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 22 - 22
build/patches/Remove-dependency-on-com.google.android.gms.fido-com.google.android.gms.iid-com.google.android.gms.instantapps-com.google.android.gms.location.patch

@@ -21,7 +21,7 @@ Subject: Remove dependency on com.google.android.gms.fido,
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -262,8 +262,6 @@ android_library("chrome_java") {
+@@ -220,8 +220,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_basement_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_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_tasks_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:base_java",
      "//base:jni_java",
      "//base:jni_java",
-@@ -658,7 +656,6 @@ junit_binary("chrome_junit_tests") {
+@@ -622,7 +620,6 @@ junit_binary("chrome_junit_tests") {
      "$google_play_services_package:google_play_services_basement_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_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
      "//base:base_junit_test_support",
-@@ -764,8 +761,6 @@ android_library("chrome_test_java") {
+@@ -735,8 +732,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_basement_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_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -50,7 +50,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
-@@ -641,10 +641,6 @@ public class ExternalNavigationHandler {
+@@ -642,10 +642,6 @@ public class ExternalNavigationHandler {
          if (shouldProxyForInstantApps) {
          if (shouldProxyForInstantApps) {
              RecordHistogram.recordEnumeratedHistogram("Android.InstantApps.DirectInstantAppsIntent",
              RecordHistogram.recordEnumeratedHistogram("Android.InstantApps.DirectInstantAppsIntent",
                      AiaIntent.SERP, AiaIntent.NUM_ENTRIES);
                      AiaIntent.SERP, AiaIntent.NUM_ENTRIES);
@@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
-@@ -42,36 +42,6 @@ public class InstantAppsHandler {
+@@ -44,36 +44,6 @@ public class InstantAppsHandler {
      // TODO(mariakhomenko): Use system once we roll to O SDK.
      // TODO(mariakhomenko): Use system once we roll to O SDK.
      private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
      private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
  
  
@@ -101,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
      /** Finch experiment name. */
      /** Finch experiment name. */
      private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
      private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
  
  
-@@ -123,14 +93,6 @@ public class InstantAppsHandler {
+@@ -125,14 +95,6 @@ public class InstantAppsHandler {
       * @return Whether the given intent is going to open an Instant App.
       * @return Whether the given intent is going to open an Instant App.
       */
       */
      public static boolean isIntentToInstantApp(Intent intent) {
      public static boolean isIntentToInstantApp(Intent intent) {
@@ -116,7 +116,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          return false;
          return false;
      }
      }
  
  
-@@ -167,13 +129,7 @@ public class InstantAppsHandler {
+@@ -169,13 +131,7 @@ public class InstantAppsHandler {
              sFallbackIntentTimes.record(SystemClock.elapsedRealtime() - startTime);
              sFallbackIntentTimes.record(SystemClock.elapsedRealtime() - startTime);
              intent.removeExtra(INSTANT_APP_START_TIME_EXTRA);
              intent.removeExtra(INSTANT_APP_START_TIME_EXTRA);
          }
          }
@@ -131,7 +131,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
      }
      }
  
  
      /**
      /**
-@@ -208,14 +164,6 @@ public class InstantAppsHandler {
+@@ -210,14 +166,6 @@ public class InstantAppsHandler {
              return false;
              return false;
          }
          }
  
  
@@ -146,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          if (IntentUtils.safeGetBooleanExtra(
          if (IntentUtils.safeGetBooleanExtra(
                  intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
                  intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
                  || IntentUtils.safeHasExtra(intent, ShortcutHelper.EXTRA_SOURCE)
                  || IntentUtils.safeHasExtra(intent, ShortcutHelper.EXTRA_SOURCE)
-@@ -240,7 +188,6 @@ public class InstantAppsHandler {
+@@ -242,7 +190,6 @@ public class InstantAppsHandler {
          }
          }
  
  
          Intent callbackIntent = new Intent(intent);
          Intent callbackIntent = new Intent(intent);
@@ -154,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
          callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
  
  
          return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
          return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
-@@ -343,12 +290,9 @@ public class InstantAppsHandler {
+@@ -345,12 +292,9 @@ public class InstantAppsHandler {
          Intent iaIntent = data.getIntent();
          Intent iaIntent = data.getIntent();
          if (data.getReferrer() != null) {
          if (data.getReferrer() != null) {
              iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
              iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
@@ -167,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
  
  
          try {
          try {
              appContext.startActivity(iaIntent);
              appContext.startActivity(iaIntent);
-@@ -394,7 +338,6 @@ public class InstantAppsHandler {
+@@ -396,7 +340,6 @@ public class InstantAppsHandler {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              return info.isInstantAppAvailable;
              return info.isInstantAppAvailable;
          } else if (info.activityInfo != null) {
          } else if (info.activityInfo != null) {
@@ -197,16 +197,16 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm
 diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
 diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
 --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
 --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
 +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
 +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
-@@ -8,8 +8,6 @@ import android.content.Context;
- import android.os.Bundle;
- import android.text.TextUtils;
+@@ -10,8 +10,6 @@ import android.text.TextUtils;
+ 
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.iid.InstanceID;
 -import com.google.android.gms.iid.InstanceID;
 -
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
- import org.chromium.base.VisibleForTesting;
  
  
-@@ -25,8 +23,6 @@ public class InstanceIDWithSubtype {
+ import java.io.IOException;
+@@ -26,8 +24,6 @@ public class InstanceIDWithSubtype {
      // Must match the private InstanceID.OPTION_SUBTYPE, which is guaranteed to not change.
      // Must match the private InstanceID.OPTION_SUBTYPE, which is guaranteed to not change.
      private static final String OPTION_SUBTYPE = "subtype";
      private static final String OPTION_SUBTYPE = "subtype";
  
  
@@ -215,7 +215,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
      /**
      /**
       * Cached instances. May be accessed from multiple threads; synchronize on sSubtypeInstancesLock
       * Cached instances. May be accessed from multiple threads; synchronize on sSubtypeInstancesLock
       */
       */
-@@ -38,10 +34,6 @@ public class InstanceIDWithSubtype {
+@@ -39,10 +35,6 @@ public class InstanceIDWithSubtype {
      @VisibleForTesting
      @VisibleForTesting
      protected static FakeFactory sFakeFactoryForTesting;
      protected static FakeFactory sFakeFactoryForTesting;
  
  
@@ -226,7 +226,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
      /**
      /**
       * Returns an instance of this class. Unlike {@link InstanceID#getInstance(Context)}, it is not
       * Returns an instance of this class. Unlike {@link InstanceID#getInstance(Context)}, it is not
       * a singleton, but instead a different instance will be returned for each {@code subtype}.
       * a singleton, but instead a different instance will be returned for each {@code subtype}.
-@@ -57,11 +49,6 @@ public class InstanceIDWithSubtype {
+@@ -58,11 +50,6 @@ public class InstanceIDWithSubtype {
                  if (sFakeFactoryForTesting != null) {
                  if (sFakeFactoryForTesting != null) {
                      existing = sFakeFactoryForTesting.create(subtype);
                      existing = sFakeFactoryForTesting.create(subtype);
                  } else {
                  } else {
@@ -238,7 +238,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
                  }
                  }
                  sSubtypeInstances.put(subtype, existing);
                  sSubtypeInstances.put(subtype, existing);
              }
              }
-@@ -70,35 +57,30 @@ public class InstanceIDWithSubtype {
+@@ -71,35 +58,30 @@ public class InstanceIDWithSubtype {
      }
      }
  
  
      public String getSubtype() {
      public String getSubtype() {
@@ -282,7 +282,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -389,7 +389,6 @@ if (is_android) {
+@@ -392,7 +392,6 @@ if (is_android) {
      deps = [
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$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_basement_java",
@@ -328,7 +328,7 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge
 -public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
 -public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
 -                                                LocationListener, LocationProvider {
 -                                                LocationListener, LocationProvider {
 +public class LocationProviderGmsCore implements LocationProvider {
 +public class LocationProviderGmsCore implements LocationProvider {
-     private static final String TAG = "cr_LocationProvider";
+     private static final String TAG = "LocationProvider";
  
  
      // Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
      // Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
      private static final long UPDATE_INTERVAL_MS = 1000;
      private static final long UPDATE_INTERVAL_MS = 1000;
@@ -454,7 +454,7 @@ 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
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -861,64 +861,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
+@@ -879,64 +879,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
    strip_resources = !is_java_debug
    strip_resources = !is_java_debug
  }
  }
  
  

+ 4 - 4
build/patches/Remove-dependency-on-com.google.android.gms.flags-com.google.android.gms.location.places-com.google.android.gms.stats.patch

@@ -10,8 +10,8 @@ Subject: Remove dependency on com.google.android.gms.flags,
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/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
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1512,55 +1512,6 @@ android_aar_prebuilt("com_android_support_versionedparcelable_java") {
-   ignore_aidl = true
+@@ -1638,55 +1638,6 @@ java_prebuilt("com_github_stephenc_jcip_jcip_annotations_java") {
+   visibility = [ ":*" ]
  }
  }
  
  
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -64,8 +64,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.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
- java_prebuilt("com_google_code_findbugs_jsr305_java") {
-   jar_path = "libs/com_google_code_findbugs_jsr305/jsr305-1.3.9.jar"
+ java_prebuilt("com_google_auto_auto_common_java") {
+   jar_path = "libs/com_google_auto_auto_common/auto-common-0.10.jar"
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 13 - 13
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
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -263,7 +263,6 @@ android_library("chrome_java") {
+@@ -221,7 +221,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_cast_framework_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_cast_java",
      "$google_play_services_package:google_play_services_fido_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_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:base_java",
-@@ -767,7 +766,6 @@ android_library("chrome_test_java") {
+@@ -738,7 +737,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_cast_framework_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_cast_java",
      "$google_play_services_package:google_play_services_fido_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_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:base_java",
-@@ -1543,7 +1541,6 @@ android_library("browser_java_test_support") {
+@@ -1539,7 +1537,6 @@ android_library("browser_java_test_support") {
    ]
    ]
    deps = [
    deps = [
      ":chrome_java",
      ":chrome_java",
@@ -51,21 +51,21 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
-@@ -6,10 +6,6 @@ package org.chromium.chrome.browser;
+@@ -8,10 +8,6 @@ import android.content.Context;
  
  
- import android.content.Context;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmTaskService;
 -import com.google.android.gms.gcm.GcmTaskService;
 -import com.google.android.gms.gcm.TaskParams;
 -import com.google.android.gms.gcm.TaskParams;
 -
 -
  import org.chromium.base.Log;
  import org.chromium.base.Log;
- import org.chromium.base.VisibleForTesting;
  import org.chromium.base.task.PostTask;
  import org.chromium.base.task.PostTask;
+ import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler;
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
-@@ -35,7 +35,7 @@ public class SnippetsLauncher {
+@@ -36,7 +36,7 @@ public class SnippetsLauncher {
      // If it is non-null then the browser is running.
      // If it is non-null then the browser is running.
      private static SnippetsLauncher sInstance;
      private static SnippetsLauncher sInstance;
  
  
@@ -187,9 +187,9 @@ diff --git a/components/background_task_scheduler/BUILD.gn b/components/backgrou
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
-@@ -6,10 +6,6 @@ package org.chromium.components.background_task_scheduler;
+@@ -8,10 +8,6 @@ import android.os.Build;
  
  
- import android.os.Build;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmTaskService;
 -import com.google.android.gms.gcm.GcmTaskService;
@@ -198,7 +198,7 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.Log;
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.ThreadUtils;
-@@ -20,7 +16,7 @@ import java.util.concurrent.TimeUnit;
+@@ -21,7 +17,7 @@ import java.util.concurrent.TimeUnit;
  import java.util.concurrent.atomic.AtomicBoolean;
  import java.util.concurrent.atomic.AtomicBoolean;
  
  
  /** Delegates calls out to various tasks that need to run in the background. */
  /** Delegates calls out to various tasks that need to run in the background. */
@@ -207,7 +207,7 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
      private static final String TAG = "BkgrdTaskGcmTS";
      private static final String TAG = "BkgrdTaskGcmTS";
  
  
      private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
      private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
-@@ -89,63 +85,6 @@ public class BackgroundTaskGcmTaskService extends GcmTaskService {
+@@ -90,63 +86,6 @@ public class BackgroundTaskGcmTaskService extends GcmTaskService {
          }
          }
      }
      }
  
  
@@ -274,7 +274,7 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
-@@ -17,11 +17,7 @@ public final class BackgroundTaskSchedulerFactory {
+@@ -18,11 +18,7 @@ public final class BackgroundTaskSchedulerFactory {
      private static BackgroundTaskFactory sBackgroundTaskFactory;
      private static BackgroundTaskFactory sBackgroundTaskFactory;
  
  
      static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
      static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
@@ -321,7 +321,7 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/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
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -875,21 +875,6 @@ android_aar_prebuilt("google_play_services_fido_java") {
+@@ -893,21 +893,6 @@ android_aar_prebuilt("google_play_services_fido_java") {
    strip_drawables = true
    strip_drawables = true
  }
  }
  
  

+ 4 - 4
build/patches/Remove-dependency-on-com.google.android.gms.vision-com.google.android.gms.clearcut-com.google.android.gms.phenotype.patch

@@ -483,7 +483,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
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -931,35 +931,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
+@@ -949,35 +949,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
    strip_drawables = true
    strip_drawables = true
  }
  }
  
  
@@ -519,8 +519,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.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
  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 = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
-@@ -1541,25 +1512,6 @@ android_aar_prebuilt("com_android_support_versionedparcelable_java") {
-   ignore_aidl = true
+@@ -1667,25 +1638,6 @@ java_prebuilt("com_github_stephenc_jcip_jcip_annotations_java") {
+   visibility = [ ":*" ]
  }
  }
  
  
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -545,7 +545,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.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_flags_java") {
  android_aar_prebuilt("google_play_services_flags_java") {
    aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-15.0.1.aar"
    aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-15.0.1.aar"
-@@ -1577,24 +1529,6 @@ android_aar_prebuilt("google_play_services_flags_java") {
+@@ -1703,24 +1655,6 @@ android_aar_prebuilt("google_play_services_flags_java") {
    strip_drawables = true
    strip_drawables = true
  }
  }
  
  

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

@@ -14,9 +14,9 @@ Subject: Remove dependency on com.google.android.play
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -378,7 +378,6 @@ android_library("chrome_java") {
+@@ -344,7 +344,6 @@ android_library("chrome_java") {
+     "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
      "//third_party/cct_dynamic_module:cct_dynamic_module_java",
      "//third_party/cct_dynamic_module:cct_dynamic_module_java",
-     "//third_party/feed:feed_lib_proto_java",
      "//third_party/gif_player:gif_player_java",
      "//third_party/gif_player:gif_player_java",
 -    "//third_party/google_android_play_core:com_google_android_play_core_java",
 -    "//third_party/google_android_play_core:com_google_android_play_core_java",
      "//third_party/jsr-305:jsr_305_javalib",
      "//third_party/jsr-305:jsr_305_javalib",
@@ -471,7 +471,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Pl
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -34,7 +34,6 @@ android_library("module_installer_java") {
+@@ -35,7 +35,6 @@ android_library("module_installer_java") {
      "//base:base_java",
      "//base:base_java",
      "//base:jni_java",
      "//base:jni_java",
      "//components/crash/android:java",
      "//components/crash/android:java",

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

@@ -6,14 +6,14 @@ Subject: Remove help menu item
  chrome/android/java/res/menu/main_menu.xml               | 2 --
  chrome/android/java/res/menu/main_menu.xml               | 2 --
  .../src/org/chromium/chrome/browser/ChromeActivity.java  | 9 ---------
  .../src/org/chromium/chrome/browser/ChromeActivity.java  | 9 ---------
  .../org/chromium/chrome/browser/KeyboardShortcuts.java   | 3 ---
  .../org/chromium/chrome/browser/KeyboardShortcuts.java   | 3 ---
- .../chrome/browser/customtabs/CustomTabActivity.java     | 2 +-
+ .../chrome/browser/customtabs/BaseCustomTabActivity.java | 2 +-
  .../browser/directactions/MenuDirectActionHandler.java   | 2 --
  .../browser/directactions/MenuDirectActionHandler.java   | 2 --
  5 files changed, 1 insertion(+), 17 deletions(-)
  5 files changed, 1 insertion(+), 17 deletions(-)
 
 
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 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
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -76,8 +76,6 @@
+@@ -81,8 +81,6 @@
              android:icon="@drawable/reader_mode_prefs_icon" />
              android:icon="@drawable/reader_mode_prefs_icon" />
          <item android:id="@+id/preferences_id"
          <item android:id="@+id/preferences_id"
              android:title="@string/menu_preferences" />
              android:title="@string/menu_preferences" />
@@ -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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2143,15 +2143,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2114,15 +2114,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
  
          final Tab currentTab = getActivityTab();
          final Tab currentTab = getActivityTab();
  
  
@@ -38,9 +38,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 -            return true;
 -            return true;
 -        }
 -        }
 -
 -
-         // All the code below assumes currentTab is not null, so return early if it is null.
-         if (currentTab == null) {
-             return false;
+         if (id == R.id.open_history_menu_id) {
+             // 'currentTab' could only be null when opening history from start surface, which is
+             // not available on tablet.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
@@ -54,17 +54,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
              }
              }
          }
          }
  
  
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
-@@ -441,7 +441,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+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
+@@ -125,7 +125,7 @@ public abstract class BaseCustomTabActivity<C extends ChromeActivityComponent>
+     @Override
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
-         if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
--                || id == R.id.help_id || id == R.id.recent_tabs_menu_id
-+                || id == R.id.recent_tabs_menu_id
-                 || id == R.id.new_incognito_tab_menu_id || id == R.id.new_tab_menu_id
-                 || id == R.id.open_history_menu_id) {
+-        if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id || id == R.id.help_id
++        if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
+                 || id == R.id.recent_tabs_menu_id || id == R.id.new_incognito_tab_menu_id
+                 || id == R.id.new_tab_menu_id || id == R.id.open_history_menu_id) {
              return true;
              return true;
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java

+ 91 - 146
build/patches/Remove-signin-and-data-saver-integrations.patch

@@ -20,25 +20,23 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  chrome/android/java/AndroidManifest.xml       | 28 ------
  chrome/android/java/AndroidManifest.xml       | 28 ------
  .../android/java/res/xml/main_preferences.xml | 14 ---
  .../android/java/res/xml/main_preferences.xml | 14 ---
  .../chrome/browser/ChromeActivity.java        | 34 -------
  .../chrome/browser/ChromeActivity.java        | 34 -------
- .../browser/preferences/MainPreferences.java  | 86 +-----------------
+ .../browser/settings/MainPreferences.java     | 86 +-----------------
  .../DataReductionPreferenceFragment.java      | 24 ++---
  .../DataReductionPreferenceFragment.java      | 24 ++---
- .../privacy/PrivacyPreferences.java           |  7 --
+ .../settings/privacy/PrivacyPreferences.java  |  7 --
  .../sync/SyncAndServicesPreferences.java      |  8 --
  .../sync/SyncAndServicesPreferences.java      |  8 --
  .../chrome/browser/signin/SigninManager.java  | 71 ++-------------
  .../chrome/browser/signin/SigninManager.java  | 71 ++-------------
- .../java/strings/android_chrome_strings.grd   | 18 ----
  .../android/signin/signin_manager_android.cc  |  1 -
  .../android/signin/signin_manager_android.cc  |  1 -
- .../impl/invalidation_service_util.cc         | 21 -----
- .../impl/invalidation_service_util.h          |  6 +-
+ .../strings/android_chrome_strings.grd        | 18 ----
  .../signin/SystemAccountManagerDelegate.java  | 38 +-------
  .../signin/SystemAccountManagerDelegate.java  | 38 +-------
  .../components/sync/AndroidSyncSettings.java  | 24 +----
  .../components/sync/AndroidSyncSettings.java  | 24 +----
  .../net/HttpNegotiateAuthenticator.java       | 88 +------------------
  .../net/HttpNegotiateAuthenticator.java       | 88 +------------------
  .../chromoting/base/OAuthTokenFetcher.java    |  2 -
  .../chromoting/base/OAuthTokenFetcher.java    |  2 -
- 17 files changed, 26 insertions(+), 447 deletions(-)
+ 15 files changed, 25 insertions(+), 421 deletions(-)
 
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -1136,8 +1136,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1114,8 +1114,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -83,7 +81,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% block extra_uses_permissions %}
      {% block extra_uses_permissions %}
      {% endblock %}
      {% endblock %}
  
  
-@@ -960,16 +952,6 @@ by a child template that "extends" this file.
+@@ -978,16 +970,6 @@ by a child template that "extends" this file.
                  android:resource="@xml/file_paths" />
                  android:resource="@xml/file_paths" />
          </provider>
          </provider>
  
  
@@ -100,7 +98,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Broadcast receiver that will be notified of account changes -->
          <!-- Broadcast receiver that will be notified of account changes -->
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
              <intent-filter>
              <intent-filter>
-@@ -1077,16 +1059,6 @@ by a child template that "extends" this file.
+@@ -1095,16 +1077,6 @@ by a child template that "extends" this file.
          <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
          <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
              android:exported="false"/>
              android:exported="false"/>
  
  
@@ -128,7 +126,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
 -        android:key="account_section"
 -        android:key="account_section"
 -        android:order="0"
 -        android:order="0"
 -        android:title="@string/prefs_section_account"/>
 -        android:title="@string/prefs_section_account"/>
--    <org.chromium.chrome.browser.preferences.sync.SignInPreference
+-    <org.chromium.chrome.browser.settings.sync.SignInPreference
 -        android:key="sign_in"
 -        android:key="sign_in"
 -        android:order="1"
 -        android:order="1"
 -        android:title="@string/sign_in_to_chrome"/>
 -        android:title="@string/sign_in_to_chrome"/>
@@ -140,27 +138,27 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
          android:key="languages"
          android:key="languages"
          android:order="16"
          android:order="16"
          android:title="@string/prefs_languages"/>
          android:title="@string/prefs_languages"/>
--    <org.chromium.chrome.browser.preferences.ChromeBasePreference
--        android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferenceFragment"
+-    <org.chromium.chrome.browser.settings.ChromeBasePreference
+-        android:fragment="org.chromium.chrome.browser.settings.datareduction.DataReductionPreferenceFragment"
 -        android:key="data_reduction"
 -        android:key="data_reduction"
 -        android:order="17"
 -        android:order="17"
 -        android:title="@string/data_reduction_title_lite_mode"/>
 -        android:title="@string/data_reduction_title_lite_mode"/>
-     <org.chromium.chrome.browser.preferences.ChromeBasePreference
-         android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
+     <org.chromium.chrome.browser.settings.ChromeBasePreference
+         android:fragment="org.chromium.chrome.browser.settings.download.DownloadPreferences"
          android:key="downloads"
          android:key="downloads"
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -129,8 +129,6 @@ import org.chromium.chrome.browser.share.ShareMenuActionHandler;
+@@ -131,8 +131,6 @@ import org.chromium.chrome.browser.share.ShareDelegateImpl;
  import org.chromium.chrome.browser.snackbar.BottomContainer;
  import org.chromium.chrome.browser.snackbar.BottomContainer;
  import org.chromium.chrome.browser.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
  import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
 -import org.chromium.chrome.browser.sync.ProfileSyncService;
 -import org.chromium.chrome.browser.sync.ProfileSyncService;
 -import org.chromium.chrome.browser.sync.SyncController;
 -import org.chromium.chrome.browser.sync.SyncController;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tab.TabBrowserControlsState;
- import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
-@@ -268,9 +266,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+ import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper;
+ import org.chromium.chrome.browser.tab.TabImpl;
+@@ -255,9 +253,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      @SuppressLint("NewApi")
      @SuppressLint("NewApi")
      private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
      private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
  
  
@@ -170,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      @Nullable
      @Nullable
      private ChromeFullscreenManager mFullscreenManager;
      private ChromeFullscreenManager mFullscreenManager;
  
  
-@@ -919,28 +914,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -870,28 +865,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private void createContextReporterIfNeeded() {
      private void createContextReporterIfNeeded() {
          if (!mStarted) return; // Sync state reporting should work only in started state.
          if (!mStarted) return; // Sync state reporting should work only in started state.
          if (mContextReporter != null || getActivityTab() == null) return;
          if (mContextReporter != null || getActivityTab() == null) return;
@@ -199,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      }
      }
  
  
      @Override
      @Override
-@@ -1008,13 +981,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -963,13 +936,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
              GSAAccountChangeListener.getInstance().disconnect();
              GSAAccountChangeListener.getInstance().disconnect();
          }
          }
@@ -213,24 +211,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
          if (mContextReporter != null) mContextReporter.disable();
          if (mContextReporter != null) mContextReporter.disable();
  
  
          super.onStopWithNative();
          super.onStopWithNative();
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-@@ -17,13 +17,11 @@ import org.chromium.base.ContextUtils;
- import org.chromium.base.VisibleForTesting;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
+@@ -19,7 +19,6 @@ import org.chromium.base.ContextUtils;
  import org.chromium.chrome.R;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.ChromeFeatureList;
+ import org.chromium.chrome.browser.flags.FeatureUtilities;
 -import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
 -import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.night_mode.NightModeUtils;
  import org.chromium.chrome.browser.night_mode.NightModeUtils;
  import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchConfiguration;
  import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchConfiguration;
  import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
  import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
- import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
- import org.chromium.chrome.browser.preferences.autofill_assistant.AutofillAssistantPreferences;
--import org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferenceFragment;
- import org.chromium.chrome.browser.preferences.developer.DeveloperPreferences;
- import org.chromium.chrome.browser.preferences.sync.SignInPreference;
- import org.chromium.chrome.browser.preferences.sync.SyncPreferenceUtils;
-@@ -42,16 +40,11 @@ import java.util.Map;
+@@ -27,7 +26,6 @@ import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
+ import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
+ import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
+ import org.chromium.chrome.browser.settings.autofill_assistant.AutofillAssistantPreferences;
+-import org.chromium.chrome.browser.settings.datareduction.DataReductionPreferenceFragment;
+ import org.chromium.chrome.browser.settings.developer.DeveloperSettings;
+ import org.chromium.chrome.browser.settings.sync.SignInPreference;
+ import org.chromium.chrome.browser.settings.sync.SyncPreferenceUtils;
+@@ -44,16 +42,11 @@ import java.util.Map;
   * The main settings screen, shown when the user first opens Settings.
   * The main settings screen, shown when the user first opens Settings.
   */
   */
  public class MainPreferences extends PreferenceFragmentCompat
  public class MainPreferences extends PreferenceFragmentCompat
@@ -248,7 +248,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      public static final String PREF_NOTIFICATIONS = "notifications";
      public static final String PREF_NOTIFICATIONS = "notifications";
      public static final String PREF_LANGUAGES = "languages";
      public static final String PREF_LANGUAGES = "languages";
      public static final String PREF_DOWNLOADS = "downloads";
      public static final String PREF_DOWNLOADS = "downloads";
-@@ -65,7 +58,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -67,7 +60,6 @@ public class MainPreferences extends PreferenceFragmentCompat
  
  
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
@@ -256,7 +256,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  
  
      public MainPreferences() {
      public MainPreferences() {
          setHasOptionsMenu(true);
          setHasOptionsMenu(true);
-@@ -88,35 +80,16 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -90,35 +82,16 @@ public class MainPreferences extends PreferenceFragmentCompat
      @Override
      @Override
      public void onDestroy() {
      public void onDestroy() {
          super.onDestroy();
          super.onDestroy();
@@ -292,8 +292,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
      }
  
  
      @Override
      @Override
-@@ -129,12 +102,9 @@ public class MainPreferences extends PreferenceFragmentCompat
-         PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
+@@ -131,12 +104,9 @@ public class MainPreferences extends PreferenceFragmentCompat
+         SettingsUtils.addPreferencesFromResource(this, R.xml.main_preferences);
          cachePreferences();
          cachePreferences();
  
  
 -        mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
 -        mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
@@ -305,7 +305,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  
  
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              // If we are on Android O+ the Notifications preference should lead to the Android
              // If we are on Android O+ the Notifications preference should lead to the Android
-@@ -188,7 +158,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -190,7 +160,6 @@ public class MainPreferences extends PreferenceFragmentCompat
              Preference preference = getPreferenceScreen().getPreference(index);
              Preference preference = getPreferenceScreen().getPreference(index);
              mAllPreferences.put(preference.getKey(), preference);
              mAllPreferences.put(preference.getKey(), preference);
          }
          }
@@ -313,7 +313,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
      }
  
  
      private void setManagedPreferenceDelegateForPreference(String key) {
      private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -197,13 +166,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -199,13 +168,6 @@ public class MainPreferences extends PreferenceFragmentCompat
      }
      }
  
  
      private void updatePreferences() {
      private void updatePreferences() {
@@ -327,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
          updateSearchEnginePreference();
          updateSearchEnginePreference();
  
  
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
-@@ -220,10 +182,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -222,10 +184,6 @@ public class MainPreferences extends PreferenceFragmentCompat
          } else {
          } else {
              removePreferenceIfPresent(PREF_DEVELOPER);
              removePreferenceIfPresent(PREF_DEVELOPER);
          }
          }
@@ -338,7 +338,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
      }
  
  
      private Preference addPreferenceIfAbsent(String key) {
      private Preference addPreferenceIfAbsent(String key) {
-@@ -237,13 +195,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -239,13 +197,6 @@ public class MainPreferences extends PreferenceFragmentCompat
          if (preference != null) getPreferenceScreen().removePreference(preference);
          if (preference != null) getPreferenceScreen().removePreference(preference);
      }
      }
  
  
@@ -352,7 +352,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      private void updateSearchEnginePreference() {
      private void updateSearchEnginePreference() {
          if (!TemplateUrlServiceFactory.get().isLoaded()) {
          if (!TemplateUrlServiceFactory.get().isLoaded()) {
              ChromeBasePreference searchEnginePref =
              ChromeBasePreference searchEnginePref =
-@@ -275,28 +226,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -277,28 +228,6 @@ public class MainPreferences extends PreferenceFragmentCompat
          pref.setSummary(isOn ? R.string.text_on : R.string.text_off);
          pref.setSummary(isOn ? R.string.text_on : R.string.text_off);
      }
      }
  
  
@@ -381,7 +381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      // TemplateUrlService.LoadListener implementation.
      // TemplateUrlService.LoadListener implementation.
      @Override
      @Override
      public void onTemplateUrlServiceLoaded() {
      public void onTemplateUrlServiceLoaded() {
-@@ -304,11 +233,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -306,11 +235,6 @@ public class MainPreferences extends PreferenceFragmentCompat
          updateSearchEnginePreference();
          updateSearchEnginePreference();
      }
      }
  
  
@@ -393,7 +393,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      @VisibleForTesting
      @VisibleForTesting
      ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
      ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
          return mManagedPreferenceDelegate;
          return mManagedPreferenceDelegate;
-@@ -318,9 +242,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -320,9 +244,6 @@ public class MainPreferences extends PreferenceFragmentCompat
          return new ManagedPreferenceDelegate() {
          return new ManagedPreferenceDelegate() {
              @Override
              @Override
              public boolean isPreferenceControlledByPolicy(Preference preference) {
              public boolean isPreferenceControlledByPolicy(Preference preference) {
@@ -403,7 +403,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                  }
                  }
-@@ -329,11 +250,6 @@ public class MainPreferences extends PreferenceFragmentCompat
+@@ -331,11 +252,6 @@ public class MainPreferences extends PreferenceFragmentCompat
  
  
              @Override
              @Override
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
@@ -415,12 +415,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                  }
                  }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
 @@ -50,10 +50,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
 @@ -50,10 +50,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-         PreferenceUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
+         SettingsUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
          getActivity().setTitle(R.string.data_reduction_title_lite_mode);
          getActivity().setTitle(R.string.data_reduction_title_lite_mode);
 -        boolean isEnabled = DataReductionProxySettings.getInstance().isDataReductionProxyEnabled();
 -        boolean isEnabled = DataReductionProxySettings.getInstance().isDataReductionProxyEnabled();
 -        mIsEnabled = !isEnabled;
 -        mIsEnabled = !isEnabled;
@@ -456,17 +456,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/dat
      }
      }
  
  
      /**
      /**
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
-@@ -23,7 +23,6 @@ import org.chromium.chrome.browser.preferences.Pref;
- import org.chromium.chrome.browser.preferences.PrefServiceBridge;
- import org.chromium.chrome.browser.preferences.PreferenceUtils;
- import org.chromium.chrome.browser.preferences.PreferencesLauncher;
--import org.chromium.chrome.browser.preferences.sync.SyncAndServicesPreferences;
- import org.chromium.chrome.browser.profiles.Profile;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference;
+ import org.chromium.chrome.browser.settings.ManagedPreferenceDelegate;
+ import org.chromium.chrome.browser.settings.PreferencesLauncher;
+ import org.chromium.chrome.browser.settings.SettingsUtils;
+-import org.chromium.chrome.browser.settings.sync.SyncAndServicesPreferences;
  import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog;
  import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog;
  import org.chromium.ui.text.NoUnderlineClickableSpan;
  import org.chromium.ui.text.NoUnderlineClickableSpan;
+ import org.chromium.ui.text.SpanApplier;
 @@ -39,9 +38,6 @@ public class PrivacyPreferences
 @@ -39,9 +38,6 @@ public class PrivacyPreferences
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
@@ -487,10 +487,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          ChromeBaseCheckBoxPreference searchSuggestionsPref =
          ChromeBaseCheckBoxPreference searchSuggestionsPref =
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
          searchSuggestionsPref.setOnPreferenceChangeListener(this);
          searchSuggestionsPref.setOnPreferenceChangeListener(this);
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncAndServicesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncAndServicesPreferences.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncAndServicesPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncAndServicesPreferences.java
-@@ -167,15 +167,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
+@@ -175,15 +175,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
  
  
          mPrivacyPrefManager.migrateNetworkPredictionPreferences();
          mPrivacyPrefManager.migrateNetworkPredictionPreferences();
  
  
@@ -504,23 +504,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/syn
 -            RecordUserAction.record("Signin_Signin_ShowAdvancedSyncSettings");
 -            RecordUserAction.record("Signin_Signin_ShowAdvancedSyncSettings");
 -        }
 -        }
  
  
-         PreferenceUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences);
+         SettingsUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences);
  
  
 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
 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
-@@ -23,10 +23,7 @@ import org.chromium.base.metrics.RecordHistogram;
+@@ -22,9 +22,6 @@ import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.task.PostTask;
  import org.chromium.base.task.PostTask;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
 -import org.chromium.components.signin.AccountIdProvider;
 -import org.chromium.components.signin.AccountIdProvider;
- import org.chromium.components.signin.AccountManagerFacade;
 -import org.chromium.components.signin.AccountTrackerService;
 -import org.chromium.components.signin.AccountTrackerService;
 -import org.chromium.components.signin.ChromeSigninController;
 -import org.chromium.components.signin.ChromeSigninController;
  import org.chromium.components.signin.identitymanager.ClearAccountsAction;
  import org.chromium.components.signin.identitymanager.ClearAccountsAction;
  import org.chromium.components.signin.identitymanager.CoreAccountInfo;
  import org.chromium.components.signin.identitymanager.CoreAccountInfo;
  import org.chromium.components.signin.identitymanager.IdentityManager;
  import org.chromium.components.signin.identitymanager.IdentityManager;
-@@ -52,7 +49,7 @@ import java.util.List;
+@@ -50,7 +47,7 @@ import java.util.List;
   * See chrome/browser/signin/signin_manager_android.h for more details.
   * See chrome/browser/signin/signin_manager_android.h for more details.
   */
   */
  public class SigninManager
  public class SigninManager
@@ -571,9 +570,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
  
  
 -        mAccountTrackerService.addSystemAccountsSeededListener(this);
 -        mAccountTrackerService.addSystemAccountsSeededListener(this);
          mIdentityManager.addObserver(this);
          mIdentityManager.addObserver(this);
-     }
  
  
-@@ -241,7 +234,6 @@ public class SigninManager
+         reloadAllAccountsFromSystem();
+@@ -243,7 +236,6 @@ public class SigninManager
      @CalledByNative
      @CalledByNative
      public void destroy() {
      public void destroy() {
          mIdentityManager.removeObserver(this);
          mIdentityManager.removeObserver(this);
@@ -581,7 +580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mNativeSigninManagerAndroid = 0;
          mNativeSigninManagerAndroid = 0;
      }
      }
  
  
-@@ -285,8 +277,7 @@ public class SigninManager
+@@ -282,8 +274,7 @@ public class SigninManager
       * Returns true if signin can be started now.
       * Returns true if signin can be started now.
       */
       */
      public boolean isSignInAllowed() {
      public boolean isSignInAllowed() {
@@ -591,7 +590,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
      }
  
  
      /**
      /**
-@@ -342,27 +333,6 @@ public class SigninManager
+@@ -339,27 +330,6 @@ public class SigninManager
          });
          });
      }
      }
  
  
@@ -619,7 +618,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      /**
      /**
       * Starts the sign-in flow, and executes the callback when finished.
       * Starts the sign-in flow, and executes the callback when finished.
       *
       *
-@@ -418,14 +388,8 @@ public class SigninManager
+@@ -407,14 +377,8 @@ public class SigninManager
      }
      }
  
  
      private void progressSignInFlowSeedSystemAccounts() {
      private void progressSignInFlowSeedSystemAccounts() {
@@ -636,9 +635,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
      }
  
  
      /**
      /**
-@@ -459,18 +423,6 @@ public class SigninManager
-         // This method should be called at most once per sign-in flow.
-         assert mSignInState != null && mSignInState.mCoreAccountInfo != null;
+@@ -451,18 +415,6 @@ public class SigninManager
+         // The user should not be already signed in
+         assert !mIdentityManager.hasPrimaryAccount();
  
  
 -        if (!mIdentityMutator.setPrimaryAccount(mSignInState.mCoreAccountInfo.getId())) {
 -        if (!mIdentityMutator.setPrimaryAccount(mSignInState.mCoreAccountInfo.getId())) {
 -            Log.w(TAG, "Failed to set the PrimaryAccount in IdentityManager, aborting signin");
 -            Log.w(TAG, "Failed to set the PrimaryAccount in IdentityManager, aborting signin");
@@ -680,10 +679,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private void disableSyncAndWipeData(
      private void disableSyncAndWipeData(
              boolean shouldWipeUserData, final Runnable wipeDataCallback) {
              boolean shouldWipeUserData, final Runnable wipeDataCallback) {
          mAndroidSyncSettings.updateAccount(null);
          mAndroidSyncSettings.updateAccount(null);
-diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
---- a/chrome/android/java/strings/android_chrome_strings.grd
-+++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -339,24 +339,12 @@ CHAR-LIMIT guidelines:
+diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
+--- a/chrome/browser/android/signin/signin_manager_android.cc
++++ b/chrome/browser/android/signin/signin_manager_android.cc
+@@ -138,7 +138,6 @@ SigninManagerAndroid::SigninManagerAndroid(
+ 
+   java_signin_manager_ = Java_SigninManager_create(
+       base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
+-      identity_manager_->LegacyGetAccountTrackerServiceJavaObject(),
+       identity_manager_->GetJavaObject(),
+       identity_manager_->GetIdentityMutatorJavaObject());
+ }
+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
+@@ -369,24 +369,12 @@ CHAR-LIMIT guidelines:
        </message>
        </message>
  
  
        <!-- Sign-in, sync and personalization preferences -->
        <!-- Sign-in, sync and personalization preferences -->
@@ -708,7 +718,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
        <message name="IDS_SIGN_IN_TO_CHROME_DISABLED_SUMMARY" desc="A descriptive line of text that appears under the 'Sign in to Chrome' option, in Chrome Settings on Android. The text explains why 'Sign in to Chrome' is disabled. 'Administrator' refers to the IT administrator of the company/organization that owns the user’s device.">
        <message name="IDS_SIGN_IN_TO_CHROME_DISABLED_SUMMARY" desc="A descriptive line of text that appears under the 'Sign in to Chrome' option, in Chrome Settings on Android. The text explains why 'Sign in to Chrome' is disabled. 'Administrator' refers to the IT administrator of the company/organization that owns the user’s device.">
          Disabled by the administrator of this device
          Disabled by the administrator of this device
        </message>
        </message>
-@@ -406,9 +394,6 @@ CHAR-LIMIT guidelines:
+@@ -436,9 +424,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.">
        <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
          Sends URLs of pages you visit to Google
        </message>
        </message>
@@ -718,7 +728,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
        <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.">
        <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?
          Cancel sync?
        </message>
        </message>
-@@ -1265,9 +1250,6 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1294,9 +1279,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.">
        <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.
          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>
        </message>
@@ -728,71 +738,6 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
        <message name="IDS_DATA_REDUCTION_SAVINGS_LABEL" desc="Data Reduction statistics label that states the amount of mobile data that was saved by Lite mode. Lite mode allows users to to reduce their mobile data usage by compressing network traffic.">
        <message name="IDS_DATA_REDUCTION_SAVINGS_LABEL" desc="Data Reduction statistics label that states the amount of mobile data that was saved by Lite mode. Lite mode allows users to to reduce their mobile data usage by compressing network traffic.">
          data saved
          data saved
        </message>
        </message>
-diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
---- a/chrome/browser/android/signin/signin_manager_android.cc
-+++ b/chrome/browser/android/signin/signin_manager_android.cc
-@@ -138,7 +138,6 @@ SigninManagerAndroid::SigninManagerAndroid(
- 
-   java_signin_manager_ = Java_SigninManager_create(
-       base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
--      identity_manager_->LegacyGetAccountTrackerServiceJavaObject(),
-       identity_manager_->GetJavaObject(),
-       identity_manager_->GetIdentityMutatorJavaObject());
- }
-diff --git a/components/invalidation/impl/invalidation_service_util.cc b/components/invalidation/impl/invalidation_service_util.cc
---- a/components/invalidation/impl/invalidation_service_util.cc
-+++ b/components/invalidation/impl/invalidation_service_util.cc
-@@ -12,27 +12,6 @@
- 
- namespace invalidation {
- 
--notifier::NotifierOptions ParseNotifierOptions(
--    const base::CommandLine& command_line) {
--  notifier::NotifierOptions notifier_options;
--
--  if (command_line.HasSwitch(switches::kSyncNotificationHostPort)) {
--    notifier_options.xmpp_host_port =
--        net::HostPortPair::FromString(
--            command_line.GetSwitchValueASCII(
--                switches::kSyncNotificationHostPort));
--    DVLOG(1) << "Using " << notifier_options.xmpp_host_port.ToString()
--             << " for test sync notification server.";
--  }
--
--  notifier_options.allow_insecure_connection =
--      command_line.HasSwitch(switches::kSyncAllowInsecureXmppConnection);
--  DVLOG_IF(1, notifier_options.allow_insecure_connection)
--      << "Allowing insecure XMPP connections.";
--
--  return notifier_options;
--}
--
- std::string GenerateInvalidatorClientId() {
-   // Generate a GUID with 128 bits worth of base64-encoded randomness.
-   // This format is similar to that of sync's cache_guid.
-diff --git a/components/invalidation/impl/invalidation_service_util.h b/components/invalidation/impl/invalidation_service_util.h
---- a/components/invalidation/impl/invalidation_service_util.h
-+++ b/components/invalidation/impl/invalidation_service_util.h
-@@ -5,7 +5,7 @@
- #ifndef COMPONENTS_INVALIDATION_IMPL_INVALIDATION_SERVICE_UTIL_H_
- #define COMPONENTS_INVALIDATION_IMPL_INVALIDATION_SERVICE_UTIL_H_
- 
--#include "jingle/notifier/base/notifier_options.h"
-+#include <string>
- 
- namespace base {
- class CommandLine;
-@@ -13,10 +13,6 @@ class CommandLine;
- 
- namespace invalidation {
- 
--// Parses the given command line for notifier options.
--notifier::NotifierOptions ParseNotifierOptions(
--    const base::CommandLine& command_line);
--
- // Generates a unique client ID for the invalidator.
- std::string GenerateInvalidatorClientId();
- 
 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
 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
 --- 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
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
@@ -893,7 +838,7 @@ diff --git a/components/sync/android/java/src/org/chromium/components/sync/Andro
 diff --git a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
 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
 --- a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
 +++ b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
 +++ b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
-@@ -97,54 +97,8 @@ public class HttpNegotiateAuthenticator {
+@@ -98,54 +98,8 @@ public class HttpNegotiateAuthenticator {
  
  
          @Override
          @Override
          public void run(AccountManagerFuture<Account[]> future) {
          public void run(AccountManagerFuture<Account[]> future) {
@@ -950,7 +895,7 @@ diff --git a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.ja
          }
          }
      }
      }
  
  
-@@ -157,42 +111,8 @@ public class HttpNegotiateAuthenticator {
+@@ -158,42 +112,8 @@ public class HttpNegotiateAuthenticator {
  
  
          @Override
          @Override
          public void run(AccountManagerFuture<Bundle> future) {
          public void run(AccountManagerFuture<Bundle> future) {

+ 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
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -818,7 +818,7 @@ class DnsTCPAttempt : public DnsAttempt {
+@@ -824,7 +824,7 @@ class DnsTCPAttempt : public DnsAttempt {
  
  
  // ----------------------------------------------------------------------------
  // ----------------------------------------------------------------------------
  
  

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

@@ -9,10 +9,10 @@ Subject: Restore enable-horizontal-tab-switcher flag
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1360,7 +1360,7 @@
+@@ -1459,7 +1459,7 @@
    {
    {
      "name": "enable-horizontal-tab-switcher",
      "name": "enable-horizontal-tab-switcher",
-     "owners": [ "memex-team@9oo91e.qjz9zk" ],
+     "owners": [ "memex-team@google.com" ],
 -    "expiry_milestone": 77
 -    "expiry_milestone": 77
 +    "expiry_milestone": -1
 +    "expiry_milestone": -1
    },
    },

+ 8 - 8
build/patches/Revert-Cleanup-Search-Ready-Omnibox-flag-since-it-has-launched.patch

@@ -17,7 +17,7 @@ This reverts commit ae458edcc8422d0815d0e82261e71fe10d7d6fc2.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
-@@ -303,6 +303,7 @@ public abstract class ChromeFeatureList {
+@@ -309,6 +309,7 @@ public abstract class ChromeFeatureList {
      public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts";
      public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts";
      public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler";
      public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler";
      public static final String READER_MODE_IN_CCT = "ReaderModeInCCT";
      public static final String READER_MODE_IN_CCT = "ReaderModeInCCT";
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
 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
 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
 --- 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
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
-@@ -364,6 +364,13 @@ class AutocompleteMediator
+@@ -387,6 +387,13 @@ class AutocompleteMediator
      void onNativeInitialized() {
      void onNativeInitialized() {
          mNativeInitialized = true;
          mNativeInitialized = true;
  
  
@@ -45,7 +45,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2009,6 +2009,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2027,6 +2027,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -164,6 +164,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
+@@ -166,6 +166,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kReorderBookmarks,
      &kReorderBookmarks,
      &kRevampedContextMenu,
      &kRevampedContextMenu,
      &kScrollToExpandPaymentHandler,
      &kScrollToExpandPaymentHandler,
@@ -66,7 +66,7 @@ diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/andr
      &kSearchEnginePromoExistingDevice,
      &kSearchEnginePromoExistingDevice,
      &kSearchEnginePromoNewDevice,
      &kSearchEnginePromoNewDevice,
      &kServiceManagerForBackgroundPrefetch,
      &kServiceManagerForBackgroundPrefetch,
-@@ -516,6 +517,9 @@ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
+@@ -519,6 +520,9 @@ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
  const base::Feature kScrollToExpandPaymentHandler{
  const base::Feature kScrollToExpandPaymentHandler{
      "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
      "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
  
  
@@ -90,7 +90,7 @@ diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/andro
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1647,6 +1647,11 @@
+@@ -1758,6 +1758,11 @@
      "owners": [ "ginko", "newcomer" ],
      "owners": [ "ginko", "newcomer" ],
      "expiry_milestone": 78
      "expiry_milestone": 78
    },
    },
@@ -105,7 +105,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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2764,6 +2764,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
+@@ -2771,6 +2771,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
      "process to check the Safe Browsing reputation of URLs without calling "
      "process to check the Safe Browsing reputation of URLs without calling "
      "into GmsCore for every URL.";
      "into GmsCore for every URL.";
  
  
@@ -120,7 +120,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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1626,6 +1626,9 @@ extern const char kReaderModeInCCTDescription[];
+@@ -1630,6 +1630,9 @@ extern const char kReaderModeInCCTDescription[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  
  

+ 3 - 3
build/patches/Revert-Merge-to-M78-Enable-AImageReader-by-default.patch

@@ -46,7 +46,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
-@@ -493,9 +493,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -491,9 +491,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
  
  
  #if defined(OS_ANDROID)
  #if defined(OS_ANDROID)
    // Disable AImageReader if the workaround is enabled.
    // Disable AImageReader if the workaround is enabled.
@@ -57,7 +57,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
  #endif
  #endif
  #if defined(USE_OZONE)
  #if defined(USE_OZONE)
    gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
    gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
-@@ -523,9 +521,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
+@@ -522,9 +520,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
    default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
    default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
  
  
    // Disable AImageReader if the workaround is enabled.
    // Disable AImageReader if the workaround is enabled.
@@ -71,7 +71,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -453,7 +453,7 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
+@@ -487,7 +487,7 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
  
  
  // Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
  // Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
  const base::Feature kAImageReaderVideoOutput{"AImageReaderVideoOutput",
  const base::Feature kAImageReaderVideoOutput{"AImageReaderVideoOutput",

File diff suppressed because it is too large
+ 383 - 259
build/patches/Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch


+ 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
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2034,6 +2034,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2052,6 +2052,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
  #endif  // OS_MACOSX
  #endif  // OS_MACOSX
  #if defined(OS_ANDROID)
  #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
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -712,6 +712,11 @@
+@@ -776,6 +776,11 @@
        "quickoffice-chrome-eng@google.com" ],
        "quickoffice-chrome-eng@google.com" ],
      "expiry_milestone": 88
      "expiry_milestone": 88
    },
    },
@@ -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
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2748,6 +2748,10 @@ extern const char kProcessSharingWithStrictSiteInstancesDescription[] =
+@@ -2755,6 +2755,10 @@ extern const char kProcessSharingWithStrictSiteInstancesDescription[] =
      "separated like strict site isolation, but process selection puts multiple "
      "separated like strict site isolation, but process selection puts multiple "
      "site instances in a single process.";
      "site instances in a single process.";
  
  
@@ -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
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1615,6 +1615,9 @@ extern const char kProcessSharingWithDefaultSiteInstancesDescription[];
+@@ -1619,6 +1619,9 @@ extern const char kProcessSharingWithDefaultSiteInstancesDescription[];
  extern const char kProcessSharingWithStrictSiteInstancesName[];
  extern const char kProcessSharingWithStrictSiteInstancesName[];
  extern const char kProcessSharingWithStrictSiteInstancesDescription[];
  extern const char kProcessSharingWithStrictSiteInstancesDescription[];
  
  

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

@@ -3,15 +3,15 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
 Subject: Skip the first run and metrics
 Subject: Skip the first run and metrics
 
 
 ---
 ---
- .../chrome/browser/firstrun/FirstRunStatus.java  |  8 ++++----
- .../chrome/browser/firstrun/FirstRunUtils.java   | 16 ++++++----------
- .../firstrun/ToSAndUMAFirstRunFragment.java      |  6 ++++--
- 3 files changed, 14 insertions(+), 16 deletions(-)
+ .../chromium/chrome/browser/firstrun/FirstRunStatus.java  | 8 ++++----
+ .../chromium/chrome/browser/firstrun/FirstRunUtils.java   | 5 -----
+ .../browser/firstrun/ToSAndUMAFirstRunFragment.java       | 6 ++++--
+ 3 files changed, 8 insertions(+), 11 deletions(-)
 
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
-@@ -36,11 +36,11 @@ public class FirstRunStatus {
+@@ -38,11 +38,11 @@ public class FirstRunStatus {
       * includes ToS and Sign In pages if necessary.
       * includes ToS and Sign In pages if necessary.
       */
       */
      public static boolean getFirstRunFlowComplete() {
      public static boolean getFirstRunFlowComplete() {
@@ -30,29 +30,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
-@@ -37,16 +37,12 @@ public class FirstRunUtils {
+@@ -35,17 +35,12 @@ public class FirstRunUtils {
          //   - checkAnyUserHasSeenToS() may be true which needs to sync its state to the prefs.
          //   - checkAnyUserHasSeenToS() may be true which needs to sync its state to the prefs.
          boolean javaPrefValue = javaPrefs.getBoolean(CACHED_TOS_ACCEPTED_PREF, false);
          boolean javaPrefValue = javaPrefs.getBoolean(CACHED_TOS_ACCEPTED_PREF, false);
-         boolean nativePrefValue = prefsBridge.isFirstRunEulaAccepted();
+         boolean nativePrefValue = isFirstRunEulaAccepted();
 -        boolean userHasSeenTos =
 -        boolean userHasSeenTos =
 -                ToSAckedReceiver.checkAnyUserHasSeenToS();
 -                ToSAckedReceiver.checkAnyUserHasSeenToS();
 -        boolean isFirstRunComplete = FirstRunStatus.getFirstRunFlowComplete();
 -        boolean isFirstRunComplete = FirstRunStatus.getFirstRunFlowComplete();
 -        if (javaPrefValue || nativePrefValue || userHasSeenTos || isFirstRunComplete) {
 -        if (javaPrefValue || nativePrefValue || userHasSeenTos || isFirstRunComplete) {
--            if (!javaPrefValue) {
--                javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
--            }
--            if (!nativePrefValue) {
--                prefsBridge.setEulaAccepted();
--            }
-+
-+        if (!javaPrefValue) {
-+            javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
-+        }
-+        if (!nativePrefValue) {
-+            prefsBridge.setEulaAccepted();
-         }
+             if (!javaPrefValue) {
+                 javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
+             }
+             if (!nativePrefValue) {
+                 setEulaAccepted();
+             }
+-        }
      }
      }
  
  
+     /**
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java

+ 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
 diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -288,16 +288,12 @@ config("compiler") {
+@@ -293,16 +293,12 @@ config("compiler") {
          cflags += [ "-fstack-protector" ]
          cflags += [ "-fstack-protector" ]
        }
        }
      } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) {
      } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) {

+ 0 - 38
build/patches/Use-64-bit-WebView-processes.patch

@@ -1,38 +0,0 @@
-From: Daniel Micay <danielmicay@gmail.com>
-Date: Thu, 26 Jan 2017 01:30:12 -0500
-Subject: Use 64-bit WebView processes
-
-64-bit processes introduce 10% or so higher memory consumption.
-The reason for preferring 64-bit processes is providing substantially better
-exploit mitigations at the expense of slightly more memory usage.
-
-In addition to the standard mitigations, it also enables usage of
-https://github.com/AndroidHardening/hardened_malloc (where available).
-
-It will provide high entropy ASLR (24-bit to 32-bit depending on whether the
-kernel uses 3 or 4 level page tables rather than 16-bit for 32-bit processes),
-high entropy stack canaries (56/64-bit instead of 24/32-bit depending on
-whether a zero byte is used) and also features like pointer authentication and
-memory tagging when those are made available in the future.
-
-The reason why upstream started preferring 32-bit processes is to save memory,
-particularly since saving memory makes it feasible to use finer-grained
-sandboxing.
----
- android_webview/apk/java/AndroidManifest.xml | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/android_webview/apk/java/AndroidManifest.xml b/android_webview/apk/java/AndroidManifest.xml
---- a/android_webview/apk/java/AndroidManifest.xml
-+++ b/android_webview/apk/java/AndroidManifest.xml
-@@ -22,7 +22,6 @@
-                  android:icon="@{{manifest_package|default('com.android.webview')}}:drawable/icon_webview"
-                  android:name="{{ application_name|default('com.android.webview.chromium.WebViewApkApplication') }}"
-                  android:multiArch="true"
--                 android:use32bitAbi="true"
-                  android:extractNativeLibs="{{ trichrome_library is not defined }}">
-         {# This part is shared between stand-alone WebView and Monochrome #}
-         {% macro common(manifest_package, webview_lib) %}
--- 
-2.17.1
-

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

@@ -19,7 +19,7 @@ Subject: Use dummy DFM installer
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
-@@ -121,10 +121,6 @@ public class ChromeApplication extends Application {
+@@ -122,10 +122,6 @@ public class ChromeApplication extends Application {
              ChromeBackgroundTaskFactory.setAsDefault();
              ChromeBackgroundTaskFactory.setAsDefault();
          }
          }
  
  
@@ -33,7 +33,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicati
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -19,12 +19,10 @@ android_library("module_installer_java") {
+@@ -20,12 +20,10 @@ android_library("module_installer_java") {
      "java/src/org/chromium/components/module_installer/logger/Logger.java",
      "java/src/org/chromium/components/module_installer/logger/Logger.java",
      "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java",
      "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java",
      "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java",
      "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java",
@@ -82,9 +82,9 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
-@@ -6,10 +6,10 @@ package org.chromium.components.module_installer.engine;
+@@ -8,10 +8,10 @@ import android.app.Activity;
  
  
- import android.app.Activity;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.play.core.splitinstall.SplitInstallException;
 -import com.google.android.play.core.splitinstall.SplitInstallException;
 +/*import com.google.android.play.core.splitinstall.SplitInstallException;
 +/*import com.google.android.play.core.splitinstall.SplitInstallException;
@@ -94,8 +94,8 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 +import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;*/
 +import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;*/
  
  
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.ThreadUtils;
- import org.chromium.base.VisibleForTesting;
-@@ -26,41 +26,42 @@ import java.util.Set;
+ 
+@@ -27,41 +27,42 @@ import java.util.Set;
   * Install engine that uses Play Core and SplitCompat to install modules.
   * Install engine that uses Play Core and SplitCompat to install modules.
   */
   */
  class SplitCompatEngine implements InstallEngine {
  class SplitCompatEngine implements InstallEngine {
@@ -149,7 +149,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
              sSessions.get(moduleName).add(listener);
              sSessions.get(moduleName).add(listener);
              return;
              return;
          }
          }
-@@ -85,10 +86,10 @@ class SplitCompatEngine implements InstallEngine {
+@@ -86,10 +87,10 @@ class SplitCompatEngine implements InstallEngine {
              notifyListeners(moduleName, false);
              notifyListeners(moduleName, false);
          });
          });
  
  
@@ -162,7 +162,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
          return state -> {
          return state -> {
              if (state.moduleNames().size() != 1) {
              if (state.moduleNames().size() != 1) {
                  throw new UnsupportedOperationException("Only one module supported.");
                  throw new UnsupportedOperationException("Only one module supported.");
-@@ -109,35 +110,35 @@ class SplitCompatEngine implements InstallEngine {
+@@ -110,35 +111,35 @@ class SplitCompatEngine implements InstallEngine {
  
  
              mFacade.getLogger().logStatus(moduleName, status);
              mFacade.getLogger().logStatus(moduleName, status);
          };
          };

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

@@ -11,7 +11,7 @@ Disables the autofill download manager (trk:158).
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
-@@ -65,7 +65,6 @@ constexpr std::pair<int, int> kAutofillExperimentRanges[] = {
+@@ -66,7 +66,6 @@ constexpr std::pair<int, int> kAutofillExperimentRanges[] = {
      {3314445, 3314448}, {3314854, 3314883},
      {3314445, 3314448}, {3314854, 3314883},
  };
  };
  
  
@@ -19,7 +19,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  const size_t kAutofillDownloadManagerMaxFormCacheSize = 16;
  const size_t kAutofillDownloadManagerMaxFormCacheSize = 16;
  const size_t kMaxFieldsPerQueryRequest = 100;
  const size_t kMaxFieldsPerQueryRequest = 100;
  
  
-@@ -521,35 +520,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
+@@ -522,35 +521,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
    return upload_request.SerializeToString(payload);
    return upload_request.SerializeToString(payload);
  }
  }
  
  
@@ -55,7 +55,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  // Gets HTTP body payload for API POST request.
  // Gets HTTP body payload for API POST request.
  bool GetAPIBodyPayload(const std::string& payload,
  bool GetAPIBodyPayload(const std::string& payload,
                         AutofillDownloadManager::RequestType type,
                         AutofillDownloadManager::RequestType type,
-@@ -773,6 +743,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
+@@ -774,6 +744,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
  
  
  std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
  std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
      const FormRequestData& request_data) const {
      const FormRequestData& request_data) const {
@@ -63,7 +63,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    std::string method("POST");
    std::string method("POST");
    std::string query_str;
    std::string query_str;
  
  
-@@ -795,35 +766,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -796,35 +767,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    GURL url = autofill_server_url_
    GURL url = autofill_server_url_
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .ReplaceComponents(replacements);
                   .ReplaceComponents(replacements);
@@ -128,7 +128,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  ValuePatternsMetric GetValuePattern(const base::string16& value) {
  ValuePatternsMetric GetValuePattern(const base::string16& value) {
    if (IsUPIVirtualPaymentAddress(value))
    if (IsUPIVirtualPaymentAddress(value))
      return ValuePatternsMetric::kUpiVpa;
      return ValuePatternsMetric::kUpiVpa;
-@@ -1501,11 +1488,6 @@ AutofillManager::AutofillManager(
+@@ -1519,11 +1506,6 @@ AutofillManager::AutofillManager(
                                      : std::make_unique<CreditCardAccessManager>(
                                      : std::make_unique<CreditCardAccessManager>(
                                            driver, client_, personal_data_,
                                            driver, client_, personal_data_,
                                            credit_card_form_event_logger_.get());
                                            credit_card_form_event_logger_.get());

+ 12 - 37
build/patches/build-remove-calling-untrusted-hooks.patch

@@ -5,13 +5,13 @@ Subject: build: remove calling untrusted hooks
 Avoid downloading untrusted executables and wasting time with a
 Avoid downloading untrusted executables and wasting time with a
 sysroot.
 sysroot.
 ---
 ---
- DEPS | 121 ++---------------------------------------------------------
- 1 file changed, 3 insertions(+), 118 deletions(-)
+ DEPS | 96 ++----------------------------------------------------------
+ 1 file changed, 3 insertions(+), 93 deletions(-)
 
 
 diff --git a/DEPS b/DEPS
 diff --git a/DEPS b/DEPS
 --- a/DEPS
 --- a/DEPS
 +++ b/DEPS
 +++ b/DEPS
-@@ -75,7 +75,7 @@ vars = {
+@@ -76,7 +76,7 @@ vars = {
  
  
    # Check out and download nacl by default. This can be disabled e.g. with
    # Check out and download nacl by default. This can be disabled e.g. with
    # custom_vars.
    # custom_vars.
@@ -20,7 +20,7 @@ diff --git a/DEPS b/DEPS
  
  
    # By default, do not check out src-internal. This can be overridden e.g. with
    # By default, do not check out src-internal. This can be overridden e.g. with
    # custom_vars.
    # custom_vars.
-@@ -99,8 +99,8 @@ vars = {
+@@ -100,8 +100,8 @@ vars = {
    # support for other platforms may be added in the future.
    # support for other platforms may be added in the future.
    'checkout_openxr' : 'checkout_win',
    'checkout_openxr' : 'checkout_win',
  
  
@@ -31,7 +31,7 @@ diff --git a/DEPS b/DEPS
  
  
    # By default, do not check out WebKit for iOS, as it is not needed unless
    # By default, do not check out WebKit for iOS, as it is not needed unless
    # running against ToT WebKit rather than system WebKit. This can be overridden
    # running against ToT WebKit rather than system WebKit. This can be overridden
-@@ -3141,49 +3141,6 @@ hooks = [
+@@ -3397,49 +3397,6 @@ hooks = [
          'sync', '--extract',
          'sync', '--extract',
      ],
      ],
    },
    },
@@ -81,7 +81,7 @@ diff --git a/DEPS b/DEPS
    {
    {
      # Case-insensitivity for the Win SDK. Must run before win_toolchain below.
      # Case-insensitivity for the Win SDK. Must run before win_toolchain below.
      'name': 'ciopfs_linux',
      'name': 'ciopfs_linux',
-@@ -3211,43 +3168,6 @@ hooks = [
+@@ -3467,18 +3424,6 @@ hooks = [
      'condition': 'checkout_mac',
      'condition': 'checkout_mac',
      'action': ['python', 'src/build/mac_toolchain.py'],
      'action': ['python', 'src/build/mac_toolchain.py'],
    },
    },
@@ -96,36 +96,11 @@ diff --git a/DEPS b/DEPS
 -        'python',
 -        'python',
 -        'src/third_party/binutils/download.py',
 -        'src/third_party/binutils/download.py',
 -    ],
 -    ],
--  },
--  {
--    # Update the prebuilt clang toolchain.
--    # Note: On Win, this should run after win_toolchain, as it may use it.
--    'name': 'clang',
--    'pattern': '.',
--    'condition': 'not llvm_force_head_revision',
--    'action': ['python', 'src/tools/clang/scripts/update.py'],
--  },
--  {
--    # Build the clang toolchain from tip-of-tree.
--    # Note: On Win, this should run after win_toolchain, as it may use it.
--    'name': 'clang_tot',
--    'pattern': '.',
--    'condition': 'llvm_force_head_revision',
--    'action': ['python', 'src/tools/clang/scripts/build.py',
--               '--llvm-force-head-revision',
--               '--with-android={checkout_android}'],
--  },
--  {
--    # This is supposed to support the same set of platforms as 'clang' above.
--    'name': 'clang_coverage',
--    'pattern': '.',
--    'condition': 'checkout_clang_coverage_tools',
--    'action': ['python', 'src/tools/code_coverage/update_clang_coverage_tools.py'],
 -  },
 -  },
    {
    {
-     # Mac doesn't use lld so it's not included in the default clang bundle
-     # there.  lld is however needed in win and Fuchsia cross builds, so
-@@ -3307,18 +3227,6 @@ hooks = [
+     # Update the prebuilt clang toolchain.
+     # Note: On Win, this should run after win_toolchain, as it may use it.
+@@ -3565,18 +3510,6 @@ hooks = [
                  '-s', 'src/buildtools/mac/clang-format.sha1',
                  '-s', 'src/buildtools/mac/clang-format.sha1',
      ],
      ],
    },
    },
@@ -144,7 +119,7 @@ diff --git a/DEPS b/DEPS
    # Pull rc binaries using checked-in hashes.
    # Pull rc binaries using checked-in hashes.
    {
    {
      'name': 'rc_win',
      'name': 'rc_win',
-@@ -3344,29 +3252,6 @@ hooks = [
+@@ -3602,29 +3535,6 @@ hooks = [
                  '-s', 'src/build/toolchain/win/rc/mac/rc.sha1',
                  '-s', 'src/build/toolchain/win/rc/mac/rc.sha1',
      ],
      ],
    },
    },
@@ -171,9 +146,9 @@ diff --git a/DEPS b/DEPS
 -                '-s', 'src/third_party/test_fonts/test_fonts.tar.gz.sha1',
 -                '-s', 'src/third_party/test_fonts/test_fonts.tar.gz.sha1',
 -    ],
 -    ],
 -  },
 -  },
-   # Pull order files for the win/clang build.
+   # Download test resources for opus, i.e. audio files.
    {
    {
-     'name': 'orderfiles_win',
+     'name': 'opus_test_files',
 -- 
 -- 
 2.17.1
 2.17.1
 
 

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

@@ -20,7 +20,7 @@ diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.
 -#endif
 -#endif
    TabSpecificContentSettings* content_settings =
    TabSpecificContentSettings* content_settings =
        TabSpecificContentSettings::FromWebContents(web_contents());
        TabSpecificContentSettings::FromWebContents(web_contents());
-   content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_ADS);
+   content_settings->OnContentBlocked(ContentSettingsType::ADS);
 -- 
 -- 
 2.17.1
 2.17.1
 
 

+ 2 - 2
build/patches/disable-background-sync-by-default.patch

@@ -9,10 +9,10 @@ Subject: disable background sync by default
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -309,7 +309,7 @@ void ContentSettingsRegistry::Init() {
+@@ -308,7 +308,7 @@ void ContentSettingsRegistry::Init() {
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
             ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
  
  
-   Register(CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync",
+   Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync",
 -           CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE,
 -           CONTENT_SETTING_ALLOW, WebsiteSettingsInfo::UNSYNCABLE,
 +           CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::UNSYNCABLE,
 +           CONTENT_SETTING_BLOCK, WebsiteSettingsInfo::UNSYNCABLE,
             WhitelistedSchemes(),
             WhitelistedSchemes(),

+ 3 - 3
build/patches/disable-sensors-access-site-setting-by-default.patch

@@ -9,12 +9,12 @@ Subject: disable sensors access site setting by default
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -413,7 +413,7 @@ void ContentSettingsRegistry::Init() {
+@@ -412,7 +412,7 @@ void ContentSettingsRegistry::Init() {
    // TODO(crbug.com/904439): Update this to "SECURE_ONLY" once
    // TODO(crbug.com/904439): Update this to "SECURE_ONLY" once
    // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure
    // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure
    // contexts.
    // contexts.
--  Register(CONTENT_SETTINGS_TYPE_SENSORS, "sensors", CONTENT_SETTING_ALLOW,
-+  Register(CONTENT_SETTINGS_TYPE_SENSORS, "sensors", CONTENT_SETTING_BLOCK,
+-  Register(ContentSettingsType::SENSORS, "sensors", CONTENT_SETTING_ALLOW,
++  Register(ContentSettingsType::SENSORS, "sensors", CONTENT_SETTING_BLOCK,
             WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
             WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(),
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK),
             WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE,
             WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE,

+ 1 - 1
build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch

@@ -13,7 +13,7 @@ Increase probe period from 1s to 15s
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc
-@@ -121,12 +121,12 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
+@@ -126,12 +126,12 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
  
  
  // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are
  // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are
  // cached.
  // cached.

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

@@ -11,9 +11,9 @@ Subject: kill Auth
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
-@@ -11,10 +11,6 @@ import android.content.SharedPreferences;
- 
+@@ -12,10 +12,6 @@ import android.content.SharedPreferences;
  import androidx.annotation.Nullable;
  import androidx.annotation.Nullable;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.auth.AccountChangeEvent;
 -import com.google.android.gms.auth.AccountChangeEvent;
 -import com.google.android.gms.auth.GoogleAuthException;
 -import com.google.android.gms.auth.GoogleAuthException;
@@ -21,7 +21,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHe
 -
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.Log;
- import org.chromium.base.VisibleForTesting;
+ import org.chromium.base.task.AsyncTask;
 @@ -73,23 +69,7 @@ public class SigninHelper {
 @@ -73,23 +69,7 @@ public class SigninHelper {
          @Override
          @Override
          public List<String> getAccountChangeEvents(
          public List<String> getAccountChangeEvents(
@@ -50,16 +50,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHe
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
-@@ -4,8 +4,6 @@
+@@ -6,8 +6,6 @@ package org.chromium.components.signin;
  
  
- package org.chromium.components.signin;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.auth.GoogleAuthException;
 -import com.google.android.gms.auth.GoogleAuthException;
 -import com.google.android.gms.auth.GoogleAuthUtil;
 -import com.google.android.gms.auth.GoogleAuthUtil;
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GoogleApiAvailability;
  import com.google.android.gms.common.GoogleApiAvailability;
  
  
-@@ -40,12 +38,7 @@ public class AccountIdProvider {
+@@ -41,12 +39,7 @@ public class AccountIdProvider {
       * @param accountName The email address of a Google account.
       * @param accountName The email address of a Google account.
       */
       */
      public String getAccountId(String accountName) {
      public String getAccountId(String accountName) {

+ 17 - 18
build/patches/kill-GCM.patch

@@ -24,7 +24,7 @@ Subject: kill GCM
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -369,7 +369,6 @@ android_library("chrome_java") {
+@@ -336,7 +336,6 @@ android_library("chrome_java") {
      "//third_party/android_deps:com_google_protobuf_protobuf_lite_java",
      "//third_party/android_deps:com_google_protobuf_protobuf_lite_java",
      "//third_party/android_deps:javax_inject_javax_inject_java",
      "//third_party/android_deps:javax_inject_javax_inject_java",
      "//third_party/android_media:android_media_java",
      "//third_party/android_media:android_media_java",
@@ -43,7 +43,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
    "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
    "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
    "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
-@@ -1438,11 +1437,6 @@ chrome_java_sources = [
+@@ -1339,11 +1338,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
    "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
    "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
    "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
    "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
    "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
@@ -53,8 +53,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 -  "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
 -  "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
 -  "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
 -  "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
    "java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java",
    "java/src/org/chromium/chrome/browser/sessions/SessionTabHelper.java",
-   "java/src/org/chromium/chrome/browser/share/LensUtils.java",
-   "java/src/org/chromium/chrome/browser/share/OptionalShareTargetsManager.java",
+   "java/src/org/chromium/chrome/browser/settings/ButtonPreference.java",
+   "java/src/org/chromium/chrome/browser/settings/ChromeBaseCheckBoxPreference.java",
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
  
      {% block extra_uses_permissions %}
      {% block extra_uses_permissions %}
-@@ -1019,45 +1014,6 @@ by a child template that "extends" this file.
+@@ -1037,45 +1032,6 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
              android:hardwareAccelerated="false" />
  
  
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Android Notification service listener -->
          <!-- Android Notification service listener -->
          <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
          <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
              android:exported="false"/>
              android:exported="false"/>
-@@ -1079,24 +1035,6 @@ by a child template that "extends" this file.
+@@ -1097,24 +1053,6 @@ by a child template that "extends" this file.
              android:exported="false"
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
  
@@ -175,9 +175,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
-@@ -7,15 +7,10 @@ package org.chromium.chrome.browser.ntp.snippets;
- import android.content.Context;
- import android.net.ConnectivityManager;
+@@ -9,14 +9,9 @@ import android.net.ConnectivityManager;
+ 
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.PeriodicTask;
 -import com.google.android.gms.gcm.PeriodicTask;
@@ -185,13 +185,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/Sn
 -
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.Log;
- import org.chromium.base.VisibleForTesting;
  import org.chromium.base.annotations.CalledByNative;
  import org.chromium.base.annotations.CalledByNative;
 -import org.chromium.chrome.browser.ChromeBackgroundService;
 -import org.chromium.chrome.browser.ChromeBackgroundService;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  
  
  /**
  /**
-@@ -40,8 +35,6 @@ public class SnippetsLauncher {
+@@ -41,8 +36,6 @@ public class SnippetsLauncher {
      // If it is non-null then the browser is running.
      // If it is non-null then the browser is running.
      private static SnippetsLauncher sInstance;
      private static SnippetsLauncher sInstance;
  
  
@@ -200,7 +199,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/Sn
      private boolean mGCMEnabled = true;
      private boolean mGCMEnabled = true;
  
  
      /**
      /**
-@@ -78,7 +71,6 @@ public class SnippetsLauncher {
+@@ -79,7 +72,6 @@ public class SnippetsLauncher {
  
  
      protected SnippetsLauncher() {
      protected SnippetsLauncher() {
          checkGCM();
          checkGCM();
@@ -208,7 +207,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/Sn
      }
      }
  
  
      private void checkGCM() {
      private void checkGCM() {
-@@ -89,32 +81,7 @@ public class SnippetsLauncher {
+@@ -90,32 +82,7 @@ public class SnippetsLauncher {
          }
          }
      }
      }
  
  
@@ -241,7 +240,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/Sn
      }
      }
  
  
      @CalledByNative
      @CalledByNative
-@@ -127,23 +94,12 @@ public class SnippetsLauncher {
+@@ -128,23 +95,12 @@ public class SnippetsLauncher {
                  .edit()
                  .edit()
                  .putBoolean(PREF_IS_SCHEDULED, isScheduled)
                  .putBoolean(PREF_IS_SCHEDULED, isScheduled)
                  .apply();
                  .apply();
@@ -288,7 +287,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
  import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
  import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
  
  
  import org.chromium.base.ContextUtils;
  import org.chromium.base.ContextUtils;
-@@ -28,9 +27,6 @@ import org.chromium.components.signin.OAuth2TokenService;
+@@ -28,9 +27,6 @@ import org.chromium.components.signin.identitymanager.IdentityManager;
  import org.chromium.components.sync.SyncConstants;
  import org.chromium.components.sync.SyncConstants;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  
  
@@ -333,9 +332,9 @@ diff --git a/components/background_task_scheduler/BUILD.gn b/components/backgrou
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
 diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
 --- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
 +++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
-@@ -9,14 +9,6 @@ import android.os.Bundle;
- 
+@@ -10,14 +10,6 @@ import android.os.Bundle;
  import androidx.annotation.NonNull;
  import androidx.annotation.NonNull;
+ import androidx.annotation.VisibleForTesting;
  
  
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -import com.google.android.gms.common.GoogleApiAvailability;
@@ -347,7 +346,7 @@ diff --git a/components/background_task_scheduler/android/java/src/org/chromium/
 -
 -
  import org.chromium.base.Log;
  import org.chromium.base.Log;
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.ThreadUtils;
- import org.chromium.base.VisibleForTesting;
+ 
 @@ -43,212 +35,16 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
 @@ -43,212 +35,16 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
          sClock = clock;
          sClock = clock;
      }
      }

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

@@ -21,7 +21,7 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/
 diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
 diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
 --- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
 --- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
 +++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
 +++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
-@@ -26,19 +26,13 @@ public class LocationProviderFactory {
+@@ -27,19 +27,13 @@ public class LocationProviderFactory {
  
  
      @CalledByNative
      @CalledByNative
      public static void useGmsCoreLocationProvider() {
      public static void useGmsCoreLocationProvider() {

+ 6 - 5
build/patches/kill-Translate.patch

@@ -3,25 +3,26 @@ Date: Fri, 22 Jun 2018 17:16:43 +0200
 Subject: kill Translate
 Subject: kill Translate
 
 
 ---
 ---
- .../org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 3 +++
- 1 file changed, 3 insertions(+)
+ .../chromium/chrome/browser/firstrun/FirstRunActivity.java    | 4 ++++
+ 1 file changed, 4 insertions(+)
 
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
-@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.datareduction.DataReductionProxyUma;
+@@ -25,6 +25,8 @@ import org.chromium.chrome.browser.datareduction.DataReductionProxyUma;
  import org.chromium.chrome.browser.metrics.UmaUtils;
  import org.chromium.chrome.browser.metrics.UmaUtils;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
  import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
++import org.chromium.chrome.browser.preferences.Pref;
 +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
 +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
  import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
  import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
  import org.chromium.ui.base.LocalizationUtils;
  import org.chromium.ui.base.LocalizationUtils;
  
  
-@@ -138,6 +139,8 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
+@@ -138,6 +140,8 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
          if (mPostNativePageSequenceCreated) return;
          if (mPostNativePageSequenceCreated) return;
          mFirstRunFlowSequencer.onNativeInitialized(mFreProperties);
          mFirstRunFlowSequencer.onNativeInitialized(mFreProperties);
  
  
-+        PrefServiceBridge.getInstance().setTranslateEnabled(false);
++        PrefServiceBridge.getInstance().setBoolean(Pref.OFFER_TRANSLATE_ENABLED, false);
 +
 +
          boolean notifyAdapter = false;
          boolean notifyAdapter = false;
          // An optional Data Saver page.
          // An optional Data Saver page.

+ 6 - 24
build/patches/openH264-enable-ARM-ARM64-optimizations.patch

@@ -5,9 +5,9 @@ Subject: openH264: enable ARM/ARM64 optimizations
 Enable the optimizations not only for ChromeOS but for all compatbile ARM/ARM64 architectures
 Enable the optimizations not only for ChromeOS but for all compatbile ARM/ARM64 architectures
 Limit threads auto-detect only for iOS
 Limit threads auto-detect only for iOS
 ---
 ---
- .../modules/mediarecorder/h264_encoder.cc     |  6 ++--
- third_party/openh264/BUILD.gn                 | 31 ++++++++++++++-----
- 2 files changed, 27 insertions(+), 10 deletions(-)
+ .../modules/mediarecorder/h264_encoder.cc     |  6 ++---
+ third_party/openh264/BUILD.gn                 | 24 ++++++++++++++-----
+ 2 files changed, 21 insertions(+), 9 deletions(-)
 
 
 diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
 diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
 --- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
 --- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc
@@ -30,25 +30,7 @@ diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/
 diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
 diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
 --- a/third_party/openh264/BUILD.gn
 --- a/third_party/openh264/BUILD.gn
 +++ b/third_party/openh264/BUILD.gn
 +++ b/third_party/openh264/BUILD.gn
-@@ -16,11 +16,16 @@ config("config") {
-     # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
-     # devices.
-     defines += [
--      "HAVE_NEON",
-       "__chromeos__",
-     ]
-   }
- 
-+  if (target_cpu == "arm" || target_cpu == "arm64") {
-+    defines += [
-+      "HAVE_NEON",
-+    ]
-+  }
-+
-   # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
-   if (!is_win || is_clang) {
-     cflags += [
-@@ -125,8 +130,12 @@ if (use_assembler) {
+@@ -125,8 +125,12 @@ if (use_assembler) {
  
  
  source_set("common") {
  source_set("common") {
    sources = openh264_common_sources
    sources = openh264_common_sources
@@ -63,7 +45,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
    }
    }
    include_dirs = openh264_common_include_dirs
    include_dirs = openh264_common_include_dirs
  
  
-@@ -151,8 +160,12 @@ source_set("common") {
+@@ -151,8 +155,12 @@ source_set("common") {
  
  
  source_set("processing") {
  source_set("processing") {
    sources = openh264_processing_sources
    sources = openh264_processing_sources
@@ -78,7 +60,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
    }
    }
    include_dirs = openh264_processing_include_dirs
    include_dirs = openh264_processing_include_dirs
  
  
-@@ -170,8 +183,12 @@ source_set("processing") {
+@@ -170,8 +178,12 @@ source_set("processing") {
  
  
  source_set("encoder") {
  source_set("encoder") {
    sources = openh264_encoder_sources
    sources = openh264_encoder_sources

+ 2 - 2
build/patches/prefs-only-keep-cookies-until-exit.patch

@@ -14,8 +14,8 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
    // WARNING: The string names of the permissions passed in below are used to
    // WARNING: The string names of the permissions passed in below are used to
    // generate preference names and should never be changed!
    // generate preference names and should never be changed!
  
  
--  Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_ALLOW,
-+  Register(CONTENT_SETTINGS_TYPE_COOKIES, "cookies", CONTENT_SETTING_SESSION_ONLY,
+-  Register(ContentSettingsType::COOKIES, "cookies", CONTENT_SETTING_ALLOW,
++  Register(ContentSettingsType::COOKIES, "cookies", CONTENT_SETTING_SESSION_ONLY,
             WebsiteSettingsInfo::SYNCABLE,
             WebsiteSettingsInfo::SYNCABLE,
             WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
             WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
             ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,

Some files were not shown because too many files changed in this diff