csagan5 преди 4 години
родител
ревизия
7a9188d76e
променени са 100 файла, в които са добавени 2224 реда и са изтрити 4769 реда
  1. 10 0
      CHANGELOG.md
  2. 1 1
      build/GN_ARGS
  3. 1 1
      build/RELEASE
  4. 5 8
      build/bromite_patches_list.txt
  5. 1 2
      build/chromium_patches_list.txt
  6. 2 2
      build/patches/AV1-codec-support.patch
  7. 6 6
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  8. 15 15
      build/patches/Add-a-proxy-configuration-page.patch
  9. 114 61
      build/patches/Add-an-always-incognito-mode.patch
  10. 23 26
      build/patches/Add-bookmark-import-export-actions.patch
  11. 12 12
      build/patches/Add-custom-tab-intents-privacy-option.patch
  12. 22 14
      build/patches/Add-exit-menu-item.patch
  13. 8 8
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  14. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  15. 11 11
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  16. 7 7
      build/patches/Add-flag-to-disable-WebGL.patch
  17. 9 9
      build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch
  18. 35 33
      build/patches/Add-history-support-in-incognito-mode.patch
  19. 23 23
      build/patches/Add-menu-item-to-view-source.patch
  20. 33 26
      build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch
  21. 24 34
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  22. 0 540
      build/patches/Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
  23. 2 2
      build/patches/Allow-playing-audio-in-background.patch
  24. 8 10
      build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch
  25. 496 510
      build/patches/Automated-domain-substitution.patch
  26. 7 7
      build/patches/Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
  27. 27 52
      build/patches/Block-gateway-attacks-via-websockets.patch
  28. 13 13
      build/patches/Bromite-AdBlockUpdaterService.patch
  29. 1 1
      build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch
  30. 4 4
      build/patches/Disable-AImageReader-for-ARM64-P-and-ARM64-Q.patch
  31. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  32. 1 1
      build/patches/Disable-HEAD-requests-for-single-word-Omnibar-searches.patch
  33. 1 1
      build/patches/Disable-Omaha-update-checks.patch
  34. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  35. 2 2
      build/patches/Disable-autofill-assistant-by-default.patch
  36. 2 2
      build/patches/Disable-feeds-support-by-default.patch
  37. 1 1
      build/patches/Disable-fetching-of-all-field-trials.patch
  38. 3 3
      build/patches/Disable-media-router-and-remoting-by-default.patch
  39. 1 1
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  40. 1 1
      build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch
  41. 1 1
      build/patches/Disable-password-reuse-detection-on-android.patch
  42. 1 1
      build/patches/Disable-plugins-enumeration.patch
  43. 6 7
      build/patches/Disable-previews-by-default.patch
  44. 36 37
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  45. 3 3
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  46. 221 360
      build/patches/Disable-safe-browsing.patch
  47. 1 1
      build/patches/Disable-scroll-to-text-fragment.patch
  48. 1 1
      build/patches/Disable-seed-based-field-trials.patch
  49. 2 2
      build/patches/Disable-smart-selection-by-default.patch
  50. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  51. 6 6
      build/patches/Disable-support-for-RAR-files-inspection.patch
  52. 17 18
      build/patches/Disable-sync-services-menu-entry.patch
  53. 1 1
      build/patches/Disable-third-party-cookies-by-default.patch
  54. 16 21
      build/patches/Do-not-compile-QR-code-sharing.patch
  55. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  56. 50 0
      build/patches/Enable-DoH.patch
  57. 1 1
      build/patches/Enable-SPPI-for-devices-with-enough-memory.patch
  58. 5 5
      build/patches/Enable-darken-websites-checkbox-in-themes.patch
  59. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  60. 0 37
      build/patches/Enable-improved-cookie-controls-by-default.patch
  61. 1 1
      build/patches/Enable-legacy-TLS-interstitital-warning.patch
  62. 1 1
      build/patches/Enable-prefetch-privacy-changes-by-default.patch
  63. 7 7
      build/patches/Enable-reduced-referrer-granularity-by-default.patch
  64. 2 2
      build/patches/Enable-user-agent-freeze-by-default.patch
  65. 1 1
      build/patches/Fix-crash-when-accessing-page-info-site-settings.patch
  66. 2 2
      build/patches/Hardening-against-incognito-mode-detection.patch
  67. 2 2
      build/patches/Hide-passwords-manager-link.patch
  68. 2 2
      build/patches/Hide-send-reports-checkbox.patch
  69. 4 4
      build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch
  70. 8 8
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  71. 7 20
      build/patches/Modify-default-preferences.patch
  72. 27 27
      build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
  73. 2 2
      build/patches/Open-YouTube-links-in-Bromite.patch
  74. 52 0
      build/patches/Password-service-build-fixes.patch
  75. 3 3
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
  76. 33 10
      build/patches/Remove-SMS-integration.patch
  77. 9 9
      build/patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch
  78. 45 53
      build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch
  79. 2 112
      build/patches/Remove-dependency-on-com.google.android.gcm.patch
  80. 3 3
      build/patches/Remove-dependency-on-com.google.android.gms.auth.patch
  81. 19 20
      build/patches/Remove-dependency-on-com.google.android.gms.cast.patch
  82. 331 351
      build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
  83. 7 7
      build/patches/Remove-dependency-on-com.google.android.play.patch
  84. 12 38
      build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch
  85. 1 1
      build/patches/Remove-dependency-on-flags-places-and-stats.patch
  86. 2 2
      build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch
  87. 1 1
      build/patches/Remove-google_services_gcm.patch
  88. 24 24
      build/patches/Remove-help-menu-item.patch
  89. 151 153
      build/patches/Remove-signin-and-data-saver-integrations.patch
  90. 26 0
      build/patches/Remove-weblayer-dependency-on-Play-Services.patch
  91. 1 1
      build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch
  92. 1 1
      build/patches/Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch
  93. 14 14
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  94. 1 1
      build/patches/Restore-enable-horizontal-tab-switcher-flag.patch
  95. 51 34
      build/patches/Revert-Remove-flags-to-enable-disable-AImageReader.patch
  96. 0 1767
      build/patches/Revert-Remove-pre-unified-consent-code.patch
  97. 5 5
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  98. 15 15
      build/patches/Revert-gpu-android-Remove-setup-for-disabling-AImageReader.patch
  99. 0 59
      build/patches/Rollback-dav1d-upgrades-that-break-x86.patch
  100. 38 43
      build/patches/Show-site-settings-for-cookies.patch

+ 10 - 0
CHANGELOG.md

@@ -1,3 +1,13 @@
+# 86.0.4240.55
+* switch to upstream UI for DoH URL customization
+* remove weblayer dependency on Play Services
+* build fixes for password service
+* removed obsolete patch to kill Translate
+* removed timezone customization patch
+* removed patch to revert unified consent code
+* removed patch for dav1d library
+* removed patch for improved cookie controls defaults
+
 # 85.0.4183.114
 
 # 85.0.4183.110

+ 1 - 1
build/GN_ARGS

@@ -32,7 +32,7 @@ symbol_level=1
 target_os="android"
 use_debug_fission=true
 use_errorprone_java_compiler=false
-use_jumbo_build=false
 use_official_google_api_keys=false
 use_openh264=true chrome_pgo_phase=0
 use_sysroot=false
+webview_includes_weblayer=false

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-85.0.4183.114
+86.0.4240.55

+ 5 - 8
build/bromite_patches_list.txt

@@ -1,5 +1,5 @@
 Disable-third-party-cookies-by-default.patch
-Revert-Remove-pre-unified-consent-code.patch
+Password-service-build-fixes.patch
 Restore-classic-new-tab-page.patch
 Always-use-new-tab-page-for-default-home-page.patch
 Always-allow-partner-customisation.patch
@@ -72,7 +72,6 @@ autofill-disable-autofill-download-manager.patch
 first_run-deactivate-autoupdate-globally.patch
 translate-disable-fetching-of-translate-languages-from-server.patch
 kill-TOS-and-metrics-opt-out.patch
-kill-Translate.patch
 kill-Vision.patch
 kill-Location-fall-back-to-system.patch
 kill-Auth.patch
@@ -115,14 +114,14 @@ Increase-number-of-autocomplete-matches-from-5-to-10.patch
 Disable-HEAD-requests-for-single-word-Omnibar-searches.patch
 Disable-some-signed-exchange-features.patch
 Add-flag-to-disable-WebGL.patch
-Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
+Enable-DoH.patch
 Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
 Revert-flags-remove-disable-pull-to-refresh-effect.patch
 Use-dummy-DFM-installer.patch
 Disable-password-reuse-detection-on-android.patch
 Disable-feeds-support-by-default.patch
 Disable-autofill-assistant-by-default.patch
-Show-site-settings-for-cookies-javascript-and-ads.patch
+Show-site-settings-for-cookies.patch
 Restore-enable-horizontal-tab-switcher-flag.patch
 Disable-DRM-media-origin-IDs-preprovisioning.patch
 Disable-smart-selection-by-default.patch
@@ -140,14 +139,12 @@ Block-gateway-attacks-via-websockets.patch
 Enable-prefetch-privacy-changes-by-default.patch
 Enable-reduced-referrer-granularity-by-default.patch
 Disable-support-for-RAR-files-inspection.patch
-Enable-improved-cookie-controls-by-default.patch
 Add-history-support-in-incognito-mode.patch
 Enable-darken-websites-checkbox-in-themes.patch
 Remove-blocklisted-URLs-upon-bookmark-creation.patch
 Disable-scroll-to-text-fragment.patch
-Rollback-dav1d-upgrades-that-break-x86.patch
 Disable-the-DIAL-repeating-discovery.patch
-Timezone-customization.patch
 Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
-Automated-domain-substitution.patch
 Hardening-against-incognito-mode-detection.patch
+Automated-domain-substitution.patch
+Remove-weblayer-dependency-on-Play-Services.patch

+ 1 - 2
build/chromium_patches_list.txt

@@ -1,7 +1,6 @@
-Revert-Remove-pre-unified-consent-code.patch
 AV1-codec-support.patch
 Switch-to-fstack-protector-strong.patch
 Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
 Disable-password-reuse-detection-on-android.patch
 Disable-feeds-support-by-default.patch
-Rollback-dav1d-upgrades-that-break-x86.patch
+Password-service-build-fixes.patch

+ 2 - 2
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
 --- a/media/base/mime_util_internal.cc
 +++ b/media/base/mime_util_internal.cc
-@@ -563,9 +563,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
+@@ -565,9 +565,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
      case THEORA:
        return false;
  
@@ -73,7 +73,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
 --- a/third_party/libaom/libaom_srcs.gni
 +++ b/third_party/libaom/libaom_srcs.gni
-@@ -656,6 +656,11 @@ aom_mem_sources = [
+@@ -670,6 +670,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
  

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

@@ -17,7 +17,7 @@ See also:
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -4499,6 +4499,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4920,6 +4920,12 @@ const FeatureEntry kFeatureEntries[] = {
       kOsAll,
       FEATURE_VALUE_TYPE(features::kEnableAmbientAuthenticationInIncognito)},
  
@@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -515,6 +515,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] =
+@@ -548,6 +548,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] =
      "Enables ambient authentication in Incognito mode. This flag may be "
      "overriden by policies.";
  
@@ -48,7 +48,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -316,6 +316,9 @@ extern const char kEnableAccessibilityObjectModelDescription[];
+@@ -333,6 +333,9 @@ extern const char kEnableAccessibilityObjectModelDescription[];
  extern const char kEnableAmbientAuthenticationInIncognitoName[];
  extern const char kEnableAmbientAuthenticationInIncognitoDescription[];
  
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/flags/android/java_templates/ChromeSwitches.java.tmp
 diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
 --- a/chrome/common/chrome_switches.cc
 +++ b/chrome/common/chrome_switches.cc
-@@ -339,6 +339,9 @@ const char kHomePage[]                      = "homepage";
+@@ -343,6 +343,9 @@ const char kHomePage[]                      = "homepage";
  // Causes the browser to launch directly in incognito mode.
  const char kIncognito[]                     = "incognito";
  
@@ -88,14 +88,14 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
 diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
 --- a/chrome/common/chrome_switches.h
 +++ b/chrome/common/chrome_switches.h
-@@ -107,6 +107,7 @@ extern const char kForceFirstRun[];
+@@ -108,6 +108,7 @@ extern const char kForceFirstRun[];
  extern const char kForceStackedTabStripLayout[];
  extern const char kHomePage[];
  extern const char kIncognito[];
 +extern const char kEnableIncognitoSnapshotsInAndroidRecents[];
  extern const char kInstallAutogeneratedTheme[];
  extern const char kInstallChromeApp[];
- extern const char kInstallSupervisedUserWhitelists[];
+ extern const char kInstallSupervisedUserAllowlists[];
 -- 
 2.17.1
 

+ 15 - 15
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
 --- a/chrome/android/java/res/values/values.xml
 +++ b/chrome/android/java/res/values/values.xml
-@@ -66,6 +66,9 @@
+@@ -41,6 +41,9 @@
      <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
      <string name="manage_space_activity"></string>
  
@@ -49,17 +49,17 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -6,6 +6,10 @@
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-     xmlns:app="http://schemas.android.com/apk/res-auto">
+@@ -7,6 +7,10 @@
+     xmlns:app="http://schemas.android.com/apk/res-auto"
+     android:orderingFromXml="false">
  
 +    <org.chromium.chrome.browser.about_settings.HyperlinkPreference
 +        android:key="proxy"
 +        android:title="@string/proxy_title"
 +        app:url="@string/proxy_url" />
      <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-         android:key="search_suggestions"
-         android:title="@string/search_suggestions_title"
+         android:key="can_make_payment"
+         android:title="@string/can_make_payment_title"
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -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
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -111,6 +111,12 @@
+@@ -113,6 +113,12 @@
          <include name="IDR_OFFLINE_INTERNALS_BROWSER_PROXY_JS" file="resources\offline_pages\offline_internals_browser_proxy.js" type="BINDATA" />
        </if>
  
@@ -520,7 +520,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -253,6 +253,8 @@ static_library("ui") {
+@@ -254,6 +254,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -528,11 +528,11 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 +    "webui/proxy_config_ui.h",
      "webui/net_internals/net_internals_ui.cc",
      "webui/net_internals/net_internals_ui.h",
-     "webui/notifications_internals/notifications_internals_ui.cc",
+     "webui/ntp_tiles_internals_ui.cc",
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -62,6 +62,7 @@
+@@ -61,6 +61,7 @@
  #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
  #include "chrome/browser/ui/webui/policy_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
@@ -540,7 +540,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -464,6 +465,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -483,6 +484,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -548,7 +548,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
 +    return &NewWebUI<ProxyConfigUI>;
    if (url.host_piece() == chrome::kChromeUINetInternalsHost)
      return &NewWebUI<NetInternalsUI>;
-   if (url.host_piece() == chrome::kChromeUINotificationsInternalsHost)
+   if (url.host_piece() == chrome::kChromeUINTPTilesInternalsHost)
 diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webui/proxy_config_ui.cc
 new file mode 100644
 --- /dev/null
@@ -1017,7 +1017,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUIChromeURLsHost[] = "chrome-urls";
  const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
  const char kChromeUIComponentsHost[] = "components";
-@@ -301,6 +303,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+@@ -315,6 +317,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
        kChromeUIMobileSetupHost,
        kChromeUIMultiDeviceSetupHost,
        kChromeUINetworkHost,
@@ -1025,7 +1025,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
        kChromeUIOobeHost,
        kChromeUIOSCreditsHost,
        kChromeUIOSSettingsHost,
-@@ -480,6 +483,7 @@ const char* const kChromeHostURLs[] = {
+@@ -501,6 +504,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
@@ -1036,7 +1036,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
 diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
 --- a/chrome/common/webui_url_constants.h
 +++ b/chrome/common/webui_url_constants.h
-@@ -108,6 +108,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -116,6 +116,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -10,18 +10,19 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c
  chrome/android/chrome_java_sources.gni        |  1 +
  .../java/res/xml/privacy_preferences.xml      |  5 ++
  .../AlwaysIncognitoLinkInterceptor.java       | 74 +++++++++++++++++++
- .../chrome/browser/ChromeActivity.java        |  4 +
  .../chrome/browser/ChromeTabbedActivity.java  |  6 +-
+ .../chrome/browser/app/ChromeActivity.java    |  4 +
  .../AppMenuPropertiesDelegateImpl.java        |  6 ++
  .../ChromeContextMenuPopulator.java           |  8 +-
- .../CustomTabIntentDataProvider.java          |  6 ++
+ .../CustomTabIntentDataProvider.java          |  5 +-
  .../browser/init/StartupTabPreloader.java     | 11 ++-
  .../browser/tabmodel/ChromeTabCreator.java    | 16 +++-
  .../tabmodel/TabModelSelectorBase.java        |  8 ++
- .../browser/tabmodel/TabPersistentStore.java  |  9 +++
+ .../browser/tabmodel/TabPersistentStore.java  | 10 +++
+ .../webapps/WebappIntentDataProvider.java     | 14 ++++
  .../flags/android/chrome_feature_list.cc      |  2 +-
  .../strings/android_chrome_strings.grd        |  7 ++
- 14 files changed, 155 insertions(+), 8 deletions(-)
+ 15 files changed, 168 insertions(+), 9 deletions(-)
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
@@ -33,15 +34,15 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
  chrome_java_sources = [
 +  "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
    "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
+   "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
    "java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
-   "java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java",
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -20,6 +20,11 @@
-         android:title="@string/preload_pages_title"
+@@ -18,6 +18,11 @@
          android:summary="@string/preload_pages_summary"
-         android:persistent="false" />
+         android:persistent="false"
+         android:order="1"/>
 +    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
 +        android:key="always_incognito"
 +        android:title="@string/always_incognito_title"
@@ -129,31 +130,10 @@ 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
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -51,6 +51,7 @@ import org.chromium.base.metrics.RecordUserAction;
- import org.chromium.base.supplier.ObservableSupplier;
- import org.chromium.base.supplier.ObservableSupplierImpl;
- import org.chromium.chrome.R;
-+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
- import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
- import org.chromium.chrome.browser.IntentHandler.TabOpenType;
- import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
-@@ -1509,6 +1510,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             throw new IllegalStateException(
-                     "Attempting to access TabCreator before initialization");
-         }
-+        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
-+            return mIncognitoTabCreator;
-+        }
-         return incognito ? mIncognitoTabCreator : mRegularTabCreator;
-     }
- 
 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
-@@ -51,6 +51,7 @@ import org.chromium.base.supplier.OneShotCallback;
+@@ -49,6 +49,7 @@ import org.chromium.base.supplier.OneShotCallback;
  import org.chromium.base.supplier.Supplier;
  import org.chromium.base.task.PostTask;
  import org.chromium.chrome.R;
@@ -161,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
  import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
  import org.chromium.chrome.browser.IntentHandler.TabOpenType;
  import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
-@@ -1664,8 +1665,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1543,8 +1544,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -172,11 +152,32 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 +                && savedInstanceState.getBoolean("is_incognito_selected", false));
          int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
  
-         NextTabPolicySupplier nextTabPolicySupplier =
+         mNextTabPolicySupplier = new ChromeNextTabPolicySupplier(mOverviewModeBehaviorSupplier);
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -83,6 +83,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
+ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
+ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate;
+ import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
+ import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
+ import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides;
+ import org.chromium.chrome.browser.device.DeviceClassManager;
+@@ -1489,6 +1490,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             throw new IllegalStateException(
+                     "Attempting to access TabCreator before initialization");
+         }
++        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
++            return mIncognitoTabCreator;
++        }
+         return incognito ? mIncognitoTabCreator : mRegularTabCreator;
+     }
+ 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -296,6 +296,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -354,6 +354,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
      }
  
      private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -218,8 +219,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
-@@ -50,6 +50,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
- import org.chromium.components.embedder_support.util.UrlConstants;
+@@ -52,6 +52,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
+ import org.chromium.device.mojom.ScreenOrientationLockType;
  import org.chromium.ui.util.ColorUtils;
  
 +import org.chromium.base.ContextUtils;
@@ -228,20 +229,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.ArrayList;
-@@ -409,6 +412,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
-     // TODO(https://crbug.com/1023759): Remove this function and enable
-     // incognito CCT request for all apps.
-     private boolean isValidIncognitoIntent(Intent intent) {
-+        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
-+          return true;
-+        }
-         if (!isIncognitoRequested(intent)) return false;
-         // Incognito requests for payments flow are supported without
-         // INCOGNITO_CCT flag as an exceptional case that can use Chrome
+@@ -764,7 +767,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
+ 
+     @Override
+     public boolean isIncognito() {
+-        return false;
++        return ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false);
+     }
+ 
+     @Nullable
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTabPreloader.java
-@@ -36,6 +36,9 @@ import org.chromium.ui.base.PageTransition;
+@@ -37,6 +37,9 @@ import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.url.GURL;
  
@@ -251,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
  /**
   * This class attempts to preload the tab if the url is known from the intent when the profile
   * is created. This is done to improve startup latency.
-@@ -187,9 +190,11 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
+@@ -188,9 +191,11 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
          Intent intent = mIntentSupplier.get();
          GURL url = UrlFormatter.fixupUrl(getUrlFromIntent(intent));
  
@@ -265,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
  
          mLoadUrlParams = new LoadUrlParams(url.getValidSpecOrEmpty());
          String referrer = IntentHandler.getReferrerUrlIncludingExtraHeaders(intent);
-@@ -203,7 +208,7 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
+@@ -204,7 +209,7 @@ public class StartupTabPreloader implements ProfileManager.Observer, Destroyable
          // Create a detached tab, but don't add it to the tab model yet. We'll do that
          // later if the loadUrlParams etc... match.
          mTab = TabBuilder.createLiveTab(false)
@@ -288,7 +288,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  /**
   * This class creates various kinds of new tabs and adds them to the right {@link TabModel}.
   */
-@@ -59,6 +63,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -59,6 +63,7 @@ public class ChromeTabCreator extends TabCreator {
      private final ChromeActivity mActivity;
      private final StartupTabPreloader mStartupTabPreloader;
      private final boolean mIncognito;
@@ -296,7 +296,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -76,6 +81,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -77,6 +82,10 @@ public class ChromeTabCreator extends TabCreator {
          mNativeWindow = nativeWindow;
          mTabDelegateFactorySupplier = tabDelegateFactory;
          mIncognito = incognito;
@@ -305,9 +305,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
 +        else
 +            mExtraLogic = null;
          mOverviewNTPCreator = overviewNTPCreator;
+         mAsyncTabParamsManager = asyncTabParamsManager;
      }
- 
-@@ -228,6 +237,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -229,6 +238,8 @@ public class ChromeTabCreator extends TabCreator {
              if (creationState == TabCreationState.LIVE_IN_FOREGROUND && !openInForeground) {
                  creationState = TabCreationState.LIVE_IN_BACKGROUND;
              }
@@ -316,7 +316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type, creationState);
              return tab;
          } finally {
-@@ -262,6 +273,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -263,6 +274,8 @@ public class ChromeTabCreator extends TabCreator {
          @TabCreationState
          int creationState = openInForeground ? TabCreationState.LIVE_IN_FOREGROUND
                                               : TabCreationState.LIVE_IN_BACKGROUND;
@@ -325,7 +325,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type, creationState);
          return true;
      }
-@@ -305,7 +318,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -306,7 +319,6 @@ public class ChromeTabCreator extends TabCreator {
      // TODO(crbug.com/1081924): Clean up the launches from SearchActivity/Chrome.
      public Tab launchUrlFromExternalApp(String url, String referer, String headers, String appId,
              boolean forceNewTab, Intent intent, long intentTimestamp) {
@@ -333,8 +333,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          if (forceNewTab && !isLaunchedFromChrome) {
-@@ -412,6 +424,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
-                           .setTabState(state)
+@@ -415,6 +427,8 @@ public class ChromeTabCreator extends TabCreator {
+                           .setSerializedCriticalPersistedTabData(serializedCriticalPersistedTabData)
                            .build();
          }
 +        if (mExtraLogic != null)
@@ -345,7 +345,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
-@@ -247,7 +247,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
+@@ -246,7 +246,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
      public void markTabStateInitialized() {
          if (mTabStateInitialized) return;
          mTabStateInitialized = true;
@@ -364,7 +364,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
-@@ -47,6 +47,8 @@ import org.chromium.components.embedder_support.util.UrlConstants;
+@@ -16,6 +16,7 @@ import androidx.annotation.VisibleForTesting;
+ import androidx.core.util.AtomicFile;
+ 
+ import org.chromium.base.Callback;
++import org.chromium.base.ContextUtils;
+ import org.chromium.base.Log;
+ import org.chromium.base.ObserverList;
+ import org.chromium.base.StreamUtil;
+@@ -49,6 +50,8 @@ import org.chromium.components.embedder_support.util.UrlConstants;
  import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  
@@ -373,7 +381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
  import java.io.BufferedInputStream;
  import java.io.ByteArrayInputStream;
  import java.io.ByteArrayOutputStream;
-@@ -599,6 +601,13 @@ public class TabPersistentStore extends TabPersister {
+@@ -597,6 +600,13 @@ public class TabPersistentStore extends TabPersister {
              }
          }
  
@@ -387,10 +395,55 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
          TabModel model = mTabModelSelector.getModel(isIncognito);
  
          if (model.isIncognito() != isIncognito) {
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
+@@ -19,6 +19,9 @@ import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProv
+ import org.chromium.chrome.browser.flags.ActivityType;
+ import org.chromium.components.browser_ui.widget.TintedDrawable;
+ 
++import org.chromium.base.ContextUtils;
++import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
++
+ /**
+  * Stores info about a web app.
+  */
+@@ -32,6 +35,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
+     private final @ActivityType int mActivityType;
+     private final Intent mIntent;
+ 
++    private boolean mIsIncognito = false;
++
+     /**
+      * Returns the toolbar color to use if a custom color is not specified by the webapp.
+      */
+@@ -51,6 +56,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
+         mWebappExtras = webappExtras;
+         mWebApkExtras = webApkExtras;
+         mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP;
++
++        if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
++            mIsIncognito = true;
++        }
+     }
+ 
+     @Override
+@@ -129,6 +138,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider
+         return mWebApkExtras;
+     }
+ 
++    @Override
++    public boolean isIncognito() {
++        return mIsIncognito;
++    }
++
+     @Override
+     public int getDefaultOrientation() {
+         return mWebappExtras.orientation;
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -333,7 +333,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
+@@ -350,7 +350,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognito{"CCTIncognito",
@@ -402,7 +455,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -773,6 +773,13 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -787,6 +787,13 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY" desc="A text for the basic tab explaining browsing history.">
          Clears history and autocompletions in the address bar.
        </message>

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

@@ -12,7 +12,7 @@ Completely remove contacts picker permission from the file dialog
  .../browser/bookmarks/BookmarkActivity.java   |  15 ++
  .../browser/bookmarks/BookmarkBridge.java     |  47 ++++
  .../browser/bookmarks/BookmarkDelegate.java   |  10 +
- .../browser/bookmarks/BookmarkManager.java    |  20 ++
+ .../browser/bookmarks/BookmarkManager.java    |  19 ++
  .../browser/bookmarks/BookmarkPage.java       |   1 +
  chrome/browser/BUILD.gn                       |   8 +-
  .../android/bookmarks/bookmark_bridge.cc      | 217 ++++++++++++++++++
@@ -28,7 +28,7 @@ Completely remove contacts picker permission from the file dialog
  ui/shell_dialogs/select_file_dialog.h         |   2 +
  .../select_file_dialog_android.cc             |   6 +
  ui/shell_dialogs/select_file_dialog_android.h |   2 +
- 22 files changed, 448 insertions(+), 14 deletions(-)
+ 22 files changed, 447 insertions(+), 14 deletions(-)
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
@@ -263,18 +263,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/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
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
-@@ -33,8 +33,10 @@ import org.chromium.components.browser_ui.util.ConversionUtils;
+@@ -33,6 +33,7 @@ import org.chromium.components.browser_ui.util.ConversionUtils;
  import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate;
  import org.chromium.components.browser_ui.widget.selectable_list.SelectableListLayout;
  import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar.SearchDelegate;
 +import org.chromium.ui.base.ActivityWindowAndroid;
  import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelegate;
  import org.chromium.url.GURL;
-+import org.chromium.chrome.browser.ChromeActivity;
  
- import java.util.Stack;
- 
-@@ -53,6 +55,7 @@ public class BookmarkManager
+@@ -53,6 +54,7 @@ public class BookmarkManager
      private Activity mActivity;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
@@ -282,7 +279,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private BookmarkUndoController mUndoController;
      private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
      private BasicNativePage mNativePage;
-@@ -323,6 +326,13 @@ public class BookmarkManager
+@@ -323,6 +325,13 @@ public class BookmarkManager
          mNativePage = nativePage;
      }
  
@@ -296,7 +293,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
       *         yet in this session, on phone return last used state stored in preference; on tablet
-@@ -495,6 +505,16 @@ public class BookmarkManager
+@@ -495,6 +504,16 @@ public class BookmarkManager
          }
      }
  
@@ -327,7 +324,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -182,6 +182,10 @@ static_library("browser") {
+@@ -190,6 +190,10 @@ static_library("browser") {
      "bitmap_fetcher/bitmap_fetcher_service.h",
      "bitmap_fetcher/bitmap_fetcher_service_factory.cc",
      "bitmap_fetcher/bitmap_fetcher_service_factory.h",
@@ -338,7 +335,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "bluetooth/bluetooth_chooser_context.cc",
      "bluetooth/bluetooth_chooser_context.h",
      "bluetooth/bluetooth_chooser_context_factory.cc",
-@@ -3048,8 +3052,6 @@ static_library("browser") {
+@@ -3126,8 +3130,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -347,7 +344,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "browsing_data/access_context_audit_database.cc",
        "browsing_data/access_context_audit_database.h",
        "browsing_data/access_context_audit_service.cc",
-@@ -3189,8 +3191,6 @@ static_library("browser") {
+@@ -3265,8 +3267,6 @@ static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -752,8 +749,8 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -415,6 +415,9 @@ static_library("common") {
-     sources += [
+@@ -410,6 +410,9 @@ static_library("common") {
+       "android/cpu_affinity_experiments.h",
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
 +      ## Bromite dependencies for bookmark import functionality
@@ -765,7 +762,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
 --- a/chrome/utility/BUILD.gn
 +++ b/chrome/utility/BUILD.gn
-@@ -70,8 +70,6 @@ static_library("utility") {
+@@ -71,8 +71,6 @@ static_library("utility") {
  
    if (!is_android) {
      sources += [
@@ -774,7 +771,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/edge_database_reader_win.cc",
-@@ -172,6 +170,11 @@ static_library("utility") {
+@@ -173,6 +171,11 @@ static_library("utility") {
      }
    }
  
@@ -889,15 +886,15 @@ 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
 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
-@@ -36,6 +36,7 @@ import org.chromium.base.task.PostTask;
+@@ -35,6 +35,7 @@ import org.chromium.base.task.AsyncTask;
+ import org.chromium.base.task.PostTask;
  import org.chromium.base.task.TaskTraits;
- import org.chromium.ui.PhotoPickerListener;
  import org.chromium.ui.R;
 +import org.chromium.ui.widget.Toast;
  import org.chromium.ui.UiUtils;
  
  import java.io.File;
-@@ -55,6 +56,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 VIDEO_TYPE = "video/";
      private static final String AUDIO_TYPE = "audio/";
@@ -905,7 +902,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_VIDEO_TYPES = VIDEO_TYPE + "*";
      private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
-@@ -133,6 +135,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -151,6 +153,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          mFileTypes = fileTypes;
      }
  
@@ -917,7 +914,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.
       * @param fileTypes MIME types requested (i.e. "image/*")
-@@ -160,7 +167,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -178,7 +185,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          List<String> missingPermissions = new ArrayList<>();
          String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
          boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
@@ -926,7 +923,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
              if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
          } else {
              if (((mSupportsImageCapture && shouldShowImageTypes())
-@@ -188,7 +195,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -206,7 +213,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
                          }
  
                          // TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
@@ -935,7 +932,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
                              if (permissions.length != requestPermissions.length) {
                                  throw new RuntimeException(
                                          String.format("Permissions arrays misaligned: %d != %d",
-@@ -202,7 +209,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -220,7 +227,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
                              }
                          }
  
@@ -944,7 +941,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
                              onFileNotSelected();
                              return;
                          }
-@@ -351,6 +358,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -367,6 +374,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
              }
              if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
          }
@@ -952,7 +949,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
          return mimeTypes;
      }
  
-@@ -631,6 +639,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+@@ -647,6 +655,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          return countAcceptTypesFor(specificType) > 0;
      }
  
@@ -966,7 +963,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
 --- a/ui/shell_dialogs/select_file_dialog.h
 +++ b/ui/shell_dialogs/select_file_dialog.h
-@@ -191,6 +191,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
+@@ -198,6 +198,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
                    void* params);
    bool HasMultipleFileTypeChoices();
  

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

@@ -26,10 +26,10 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -29,6 +29,11 @@
-         android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
+@@ -28,6 +28,11 @@
          android:key="do_not_track"
-         android:title="@string/do_not_track_title" />
+         android:title="@string/do_not_track_title"
+         android:order="3"/>
 +    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
 +        android:key="allow_custom_tab_intents"
 +        android:title="@string/allow_custom_tab_intents_title"
@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -50,6 +50,8 @@ public class PrivacySettings
+@@ -49,6 +49,8 @@ public class PrivacySettings
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
@@ -71,19 +71,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
-@@ -90,6 +92,10 @@ public class PrivacySettings
-                     Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+@@ -95,6 +97,10 @@ public class PrivacySettings
+                     .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
 +        } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
 +            sharedPreferencesEditor.apply();
-         } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
-             PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
          }
-@@ -125,6 +131,11 @@ public class PrivacySettings
-                     prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
+ 
+         return true;
+@@ -118,6 +124,11 @@ public class PrivacySettings
+             canMakePaymentPref.setChecked(prefService.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
 +        ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
@@ -93,11 +93,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +
          Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
          if (doNotTrackPref != null) {
-             doNotTrackPref.setSummary(prefServiceBridge.getBoolean(Pref.ENABLE_DO_NOT_TRACK)
+             doNotTrackPref.setSummary(prefService.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
-@@ -3585,6 +3585,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3768,6 +3768,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_NEAR_OOM_REDUCTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can be reloaded.">
           Show original
        </message>

+ 22 - 14
build/patches/Add-exit-menu-item.patch

@@ -5,36 +5,44 @@ Subject: Add exit menu item
 Corrected Exit functionality
 ---
  chrome/android/java/res/menu/main_menu.xml                  | 4 ++++
- .../src/org/chromium/chrome/browser/ChromeActivity.java     | 5 +++++
+ .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
  .../chrome/browser/init/ChromeLifetimeController.java       | 6 +++++-
  .../browser/ui/android/strings/android_chrome_strings.grd   | 3 +++
- 4 files changed, 17 insertions(+), 1 deletion(-)
+ 4 files changed, 18 insertions(+), 1 deletion(-)
 
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -87,6 +87,8 @@
-             android:title="@string/menu_help" />
-         <item android:id="@+id/enter_vr_id"
-             android:title="@string/enter_vr" />
+@@ -116,6 +116,8 @@
+             android:icon="@drawable/vr_headset" />
+         <item android:id="@+id/managed_by_menu_id"
+             android:title="@string/managed" />
 +        <item android:id="@+id/exit_id"
 +            android:title="@string/menu_exit" />
      </group>
  
      <!-- Items shown only in the tab switcher -->
-@@ -104,6 +106,8 @@
-             android:title="@string/menu_group_tabs" />
+@@ -139,6 +141,8 @@
          <item android:id="@id/preferences_id"
-             android:title="@string/menu_settings" />
+             android:title="@string/menu_settings"
+             android:icon="@drawable/settings_cog" />
 +        <item android:id="@+id/exit_id"
 +            android:title="@string/menu_exit" />
      </group>
  
      <!-- Items shown only in the tab switcher when start surface is enabled -->
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1896,6 +1896,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -53,6 +53,7 @@ import org.chromium.base.supplier.ObservableSupplierImpl;
+ import org.chromium.chrome.R;
+ import org.chromium.chrome.browser.ActivityTabProvider;
+ import org.chromium.chrome.browser.AppHooks;
++import org.chromium.chrome.browser.ApplicationLifetime;
+ import org.chromium.chrome.browser.ChromeActivitySessionTracker;
+ import org.chromium.chrome.browser.ChromeApplication;
+ import org.chromium.chrome.browser.ChromeVersionInfo;
+@@ -1874,6 +1875,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              RecordUserAction.record("MobileMenuSettings");
          }
  
@@ -65,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -2551,6 +2551,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -2698,6 +2698,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_SETTINGS" desc="Menu item for opening browser settings. [CHAR-LIMIT=27]">
          Settings
        </message>

+ 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
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -701,6 +701,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -732,6 +732,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  // Ensure that all effective connection types returned by Network Quality
  // Estimator (NQE) are also exposed via flags.
  static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
-@@ -2953,6 +2958,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3249,6 +3254,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidPictureInPictureAPIName,
       flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
@@ -44,7 +44,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -1298,6 +1298,10 @@ const char kMediaHistoryDescription[] =
+@@ -1374,6 +1374,10 @@ const char kMediaHistoryDescription[] =
      "Enables Media History which records data around media playbacks on "
      "websites.";
  
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -770,6 +770,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
+@@ -810,6 +810,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
  extern const char kMediaHistoryName[];
  extern const char kMediaHistoryDescription[];
  
@@ -110,14 +110,14 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
 diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 --- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 +++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
-@@ -72,6 +72,7 @@ executable("make_top_domain_list_variables") {
-     "//base",
-     "//base:i18n",
+@@ -74,6 +74,7 @@ executable("make_top_domain_list_variables") {
+     "//base/util/ranges:ranges",
+     "//components/url_formatter/spoof_checks/common_words:common",
      "//third_party/icu",
 +    "//components/network_session_configurator/common"
    ]
    if (is_ios) {
-     libs = [ "UIKit.framework" ]
+     frameworks = [ "UIKit.framework" ]
 diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
 --- a/net/socket/client_socket_pool_manager.cc
 +++ b/net/socket/client_socket_pool_manager.cc

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

@@ -13,7 +13,7 @@ Disable it by default on Android as it is everywhere else
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2146,6 +2146,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2413,6 +2413,10 @@ const FeatureEntry kFeatureEntries[] = {
       kOsAura,
       FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashWhenMouseEnter)},
  #endif  // USE_AURA
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -912,6 +912,11 @@ const char kMemlogStackModeNative[] = "Native";
+@@ -958,6 +958,11 @@ const char kMemlogStackModeNative[] = "Native";
  const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
  const char kMemlogStackModePseudo[] = "Trace events";
  
@@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -518,6 +518,9 @@ extern const char kEnablePortalsDescription[];
+@@ -541,6 +541,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePortalsCrossOriginName[];
  extern const char kEnablePortalsCrossOriginDescription[];
  
@@ -55,7 +55,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -232,11 +232,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -237,11 +237,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -16,9 +16,9 @@ Subject: Add flag to disable IPv6 probes
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3770,6 +3770,11 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
- #endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+@@ -4151,6 +4151,11 @@ const FeatureEntry kFeatureEntries[] = {
+ #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
+         // defined(OS_CHROMEOS)
  
 +    {"ipv6-probing",
 +     flag_descriptions::kIPv6ProbingName,
@@ -26,12 +26,12 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +     FEATURE_VALUE_TYPE(network::features::kIPv6Probing)},
 +
  #if !defined(OS_ANDROID)
-     {"ntp-confirm-suggestion-removals",
-      flag_descriptions::kNtpConfirmSuggestionRemovalsName,
+     {"ntp-dismiss-promos", flag_descriptions::kNtpDismissPromosName,
+      flag_descriptions::kNtpDismissPromosDescription, kOsDesktop,
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2561,6 +2561,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -2750,6 +2750,10 @@ const char kContextualSearchRankerQueryDescription[] =
  
  const char kContextualSearchSecondTapName[] =
      "Contextual Search second tap triggering";
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -584,6 +584,9 @@ extern const char kEnableWasmThreadsName[];
+@@ -612,6 +612,9 @@ extern const char kEnableWasmThreadsName[];
  extern const char kEnableWasmThreadsDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -88,16 +88,16 @@ diff --git a/components/subresource_filter/tools/BUILD.gn b/components/subresour
 diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 --- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
 +++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
-@@ -72,7 +72,8 @@ executable("make_top_domain_list_variables") {
-     "//base",
-     "//base:i18n",
+@@ -74,7 +74,8 @@ executable("make_top_domain_list_variables") {
+     "//base/util/ranges:ranges",
+     "//components/url_formatter/spoof_checks/common_words:common",
      "//third_party/icu",
 -    "//components/network_session_configurator/common"
 +    "//components/network_session_configurator/common",
 +    "//services/network/public/cpp",
    ]
    if (is_ios) {
-     libs = [ "UIKit.framework" ]
+     frameworks = [ "UIKit.framework" ]
 diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
 --- a/net/dns/host_resolver_manager.cc
 +++ b/net/dns/host_resolver_manager.cc

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

@@ -11,7 +11,7 @@ Subject: Add flag to disable WebGL
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1975,6 +1975,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2240,6 +2240,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAccelerated2dCanvasName,
       flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
@@ -24,9 +24,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -484,6 +484,10 @@ const char kDeviceDiscoveryNotificationsName[] =
- const char kDeviceDiscoveryNotificationsDescription[] =
-     "Device discovery notifications on local network.";
+@@ -517,6 +517,10 @@ const char kForceEnableDevicesPageDescription[] =
+     "content, instead of a warning message. Note: chrome://devices is "
+     "no longer supported, and this flag will be permanently removed in M88.";
  
 +const char kDisableWebGLName[] = "Disable all versions of WebGL";
 +
@@ -38,9 +38,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -301,6 +301,9 @@ extern const char kDebugShortcutsDescription[];
- extern const char kDeviceDiscoveryNotificationsName[];
- extern const char kDeviceDiscoveryNotificationsDescription[];
+@@ -318,6 +318,9 @@ extern const char kDeviceDiscoveryNotificationsDescription[];
+ extern const char kForceEnableDevicesPageName[];
+ extern const char kForceEnableDevicesPageDescription[];
  
 +extern const char kDisableWebGLName[];
 +extern const char kDisableWebGLDescription[];

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

@@ -20,7 +20,7 @@ legacy acceleration events.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2199,6 +2199,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2466,6 +2466,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
       flag_descriptions::kGpuRasterizationDescription, kOsAll,
       MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -705,6 +705,14 @@ const char kWinrtSensorsImplementationDescription[] =
+@@ -739,6 +739,14 @@ const char kWinrtSensorsImplementationDescription[] =
      "Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
      "sensors";
  
@@ -54,7 +54,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -422,6 +422,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
+@@ -439,6 +439,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
  extern const char kWinrtSensorsImplementationName[];
  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
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -92,6 +92,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -94,6 +94,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
        command_line.HasSwitch(
            blink::switches::kEnableGpuMemoryBufferCompositorResources) &&
        !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
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -801,6 +801,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
+@@ -833,6 +833,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
  // TODO(rouslan): Remove this.
  const base::Feature kWebPayments{"WebPayments",
                                   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
 --- a/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
-@@ -175,6 +175,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
+@@ -180,6 +180,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrArModule;
+ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
  CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
- CONTENT_EXPORT extern const base::Feature kWebXrPermissionsApi;
  
 +CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
 +
@@ -127,7 +127,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
 --- a/third_party/blink/renderer/modules/modules_initializer.cc
 +++ b/third_party/blink/renderer/modules/modules_initializer.cc
-@@ -224,9 +224,13 @@ void ModulesInitializer::OnClearWindowObjectInMainWorld(
+@@ -226,9 +226,13 @@ void ModulesInitializer::OnClearWindowObjectInMainWorld(
      Document& document,
      const Settings& settings) const {
    LocalDOMWindow& window = *document.domWindow();
@@ -165,7 +165,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -1256,6 +1256,14 @@
+@@ -1303,6 +1303,14 @@
        name: "OffscreenCanvasCommit",
        status: "experimental",
      },

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

@@ -9,10 +9,10 @@ Subject: Add history support in incognito mode
  chrome/browser/history/history_tab_helper.h    |  4 ++++
  chrome/browser/prefs/browser_prefs.cc          |  2 ++
  .../android/strings/android_chrome_strings.grd |  6 ++++++
- .../translations/android_chrome_strings_it.xtb |  2 ++
+ .../translations/android_chrome_strings_it.xtb |  4 +++-
  chrome/common/pref_names.cc                    |  5 +++++
  chrome/common/pref_names.h                     |  4 ++++
- 9 files changed, 62 insertions(+)
+ 9 files changed, 63 insertions(+), 1 deletion(-)
  mode change 100644 => 100755 chrome/android/java/res/xml/privacy_preferences.xml
  mode change 100644 => 100755 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
  mode change 100644 => 100755 chrome/browser/history/history_tab_helper.cc
@@ -28,7 +28,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -39,6 +39,11 @@
+@@ -32,6 +32,11 @@
          android:title="@string/close_tabs_on_exit_title"
          android:summary="@string/close_tabs_on_exit_summary"
          android:defaultValue="false" />
@@ -45,16 +45,16 @@ old mode 100644
 new mode 100755
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -38,6 +38,8 @@ import org.chromium.ui.text.SpanApplier;
- 
- import java.util.List;
+@@ -35,6 +35,8 @@ import org.chromium.components.user_prefs.UserPrefs;
+ import org.chromium.ui.text.NoUnderlineClickableSpan;
+ import org.chromium.ui.text.SpanApplier;
  
 +import org.chromium.base.Log;
 +
  /**
   * Fragment to keep track of the all the privacy related preferences.
   */
-@@ -54,6 +56,7 @@ public class PrivacySettings
+@@ -53,6 +55,7 @@ public class PrivacySettings
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
      public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
@@ -62,9 +62,9 @@ new mode 100755
  
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-@@ -84,6 +87,11 @@ public class PrivacySettings
-         searchSuggestionsPref.setOnPreferenceChangeListener(this);
-         searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+@@ -89,6 +92,11 @@ public class PrivacySettings
+         Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
+         secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
  
 +        ChromeBaseCheckBoxPreference historyInIncognitoPref =
 +                (ChromeBaseCheckBoxPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED);
@@ -74,17 +74,17 @@ new mode 100755
          updateSummaries();
      }
  
-@@ -105,6 +113,9 @@ public class PrivacySettings
+@@ -108,6 +116,9 @@ public class PrivacySettings
              SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
-             sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
+             sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
              sharedPreferencesEditor.apply();
 +        } else if (PREF_INCOGNITO_TAB_HISTORY_ENABLED.equals(key)) {
-+            PrefServiceBridge.getInstance().setBoolean(
-+                    Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue);
++            UserPrefs.get(Profile.getLastUsedRegularProfile())
++                    .setBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED, (boolean) newValue);
          }
  
          return true;
-@@ -179,6 +190,13 @@ public class PrivacySettings
+@@ -152,6 +163,13 @@ public class PrivacySettings
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
          closeTabsOnExitPref.setOnPreferenceChangeListener(this);
          closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -93,7 +93,7 @@ new mode 100755
 +                (CheckBoxPreference) findPreference(PREF_INCOGNITO_TAB_HISTORY_ENABLED);
 +        if (historyInIncognitoPref != null) {
 +            historyInIncognitoPref.setChecked(
-+                    prefServiceBridge.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
++                    prefService.getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED));
 +        }
      }
  
@@ -103,7 +103,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/history/history_tab_helper.cc
 +++ b/chrome/browser/history/history_tab_helper.cc
-@@ -29,6 +29,9 @@
+@@ -26,6 +26,9 @@
  
  #if defined(OS_ANDROID)
  #include "chrome/browser/android/background_tab_manager.h"
@@ -113,7 +113,7 @@ new mode 100755
  #else
  #include "chrome/browser/ui/browser.h"
  #include "chrome/browser/ui/browser_finder.h"
-@@ -242,6 +245,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
+@@ -227,6 +230,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
  history::HistoryService* HistoryTabHelper::GetHistoryService() {
    Profile* profile =
        Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -127,7 +127,7 @@ new mode 100755
    if (profile->IsOffTheRecord())
      return NULL;
  
-@@ -249,6 +259,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
+@@ -234,6 +244,12 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
        profile, ServiceAccessType::IMPLICIT_ACCESS);
  }
  
@@ -168,7 +168,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/prefs/browser_prefs.cc
 +++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -233,6 +233,7 @@
+@@ -231,6 +231,7 @@
  #include "components/ntp_tiles/popular_sites_impl.h"
  #include "components/permissions/contexts/geolocation_permission_context_android.h"
  #include "components/query_tiles/tile_service_prefs.h"
@@ -176,7 +176,7 @@ new mode 100755
  #if BUILDFLAG(ENABLE_FEED_IN_CHROME)
  #include "components/feed/core/common/pref_names.h"
  #endif  // BUILDFLAG(ENABLE_FEED_IN_CHROME)
-@@ -999,6 +1000,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
+@@ -1015,6 +1016,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
    usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
    variations::VariationsService::RegisterProfilePrefs(registry);
    feed::prefs::RegisterFeedSharedProfilePrefs(registry);
@@ -189,7 +189,7 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -794,6 +794,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -811,6 +811,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
          Opens links in incognito tabs when you click on new tab or on a link
        </message>
@@ -207,21 +207,23 @@ old mode 100644
 new mode 100755
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-@@ -1062,4 +1062,6 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
- <translation id="666268767214822976">Utilizza un servizio di previsione per visualizzare query correlate e siti web popolari durante la digitazione nella barra degli indirizzi</translation>
- <translation id="8283853025636624853">Sincronizzazione con <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
- <translation id="8981454092730389528">Gestione attività di Google</translation>
+@@ -1101,4 +1101,6 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
+ <translation id="983192555821071799">Chiudi tutte le schede</translation>
+ <translation id="987264212798334818">Generali</translation>
+ <translation id="996149300115483134">Menu scheda feed chiuso</translation>
+-</translationbundle>
+\ No newline at end of file
 +<translation id="7889537574758531583">Abilita la cronologia nelle sessioni in incognito</translation>
 +<translation id="5713583121562162330">Abilita la registrazione della navigazione nella cronologia anche per le sessioni in incognito</translation>	
- </translationbundle>
++</translationbundle>
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 old mode 100644
 new mode 100755
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -3038,4 +3038,9 @@ const char kMediaFeedsSafeSearchEnabled[] = "media_feeds_safe_search_enabled";
- // TODO(enne): Remove this once AppCache has been removed.
- const char kAppCacheForceEnabled[] = "app_cache_force_enabled";
+@@ -3100,4 +3100,9 @@ const char kShowCaretBrowsingDialog[] =
+     "settings.a11y.caretbrowsing.show_dialog";
+ #endif
  
 +#if defined(OS_ANDROID)
 +const char kIncognitoTabHistoryEnabled[] =
@@ -234,9 +236,9 @@ old mode 100644
 new mode 100755
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -1074,6 +1074,10 @@ extern const char kMediaFeedsSafeSearchEnabled[];
- 
- extern const char kAppCacheForceEnabled[];
+@@ -1087,6 +1087,10 @@ extern const char kCaretBrowsingEnabled[];
+ extern const char kShowCaretBrowsingDialog[];
+ #endif
  
 +#if defined(OS_ANDROID)
 +extern const char kIncognitoTabHistoryEnabled[];

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

@@ -5,8 +5,8 @@ Subject: Add menu item to view source
 ---
  chrome/android/java/res/menu/custom_tabs_menu.xml  |  3 +++
  chrome/android/java/res/menu/main_menu.xml         |  2 ++
- .../chromium/chrome/browser/ChromeActivity.java    |  2 ++
  .../chrome/browser/ChromeTabbedActivity.java       |  2 ++
+ .../chrome/browser/app/ChromeActivity.java         |  2 ++
  .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
  .../CustomTabAppMenuPropertiesDelegate.java        |  1 +
  .../ui/android/strings/android_chrome_strings.grd  |  3 +++
@@ -28,31 +28,19 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -66,6 +66,8 @@
-             android:title="@string/menu_find_in_page" />
+@@ -88,6 +88,8 @@
          <item android:id="@+id/add_to_homescreen_id"
-             android:title="@string/menu_add_to_homescreen" />
+             android:title="@string/menu_add_to_homescreen"
+             android:icon="@drawable/ic_add_to_home_screen" />
 +        <item android:id="@+id/view_source_id"
 +            android:title="@string/view_source" />
          <item android:id="@+id/open_webapk_id"
-             android:title="@string/menu_open_webapk" />
-         <item android:id="@+id/request_desktop_site_row_menu_id"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1984,6 +1984,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             } catch (ActivityNotFoundException e) {
-                 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
-             }
-+        } else if (id == R.id.view_source_id) {
-+            currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
-         } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
-             final boolean reloadOnChange = !currentTab.isNativePage();
-             final boolean usingDesktopUserAgent =
+             android:title="@string/menu_open_webapk"
+             android:icon="@drawable/ic_add_to_home_screen" />
 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
-@@ -1866,6 +1866,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1747,6 +1747,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -61,10 +49,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
          } else if (id == R.id.open_recently_closed_tab) {
              TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
              if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -1969,6 +1969,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             } catch (ActivityNotFoundException e) {
+                 Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
+             }
++        } else if (id == R.id.view_source_id) {
++            currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
+         } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
+             final boolean reloadOnChange = !currentTab.isNativePage();
+             final boolean usingDesktopUserAgent =
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -287,6 +287,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -334,6 +334,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
                          isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
  
          updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -72,7 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
  
          // Only display reader mode settings menu option if the current page is in reader mode.
          menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
-@@ -622,6 +623,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -703,6 +704,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          }
      }
  
@@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
-@@ -220,6 +220,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+@@ -222,6 +222,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
              }
  
              updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -307,6 +307,9 @@ CHAR-LIMIT guidelines:
+@@ -326,6 +326,9 @@ CHAR-LIMIT guidelines:
        <message name="IDS_SERVICES_CATEGORY_TITLE" desc="Title for the group of preferences that control non-personalized Google services. This group contains preferences for data that is not tied to user's Google Account.">
          Other Google services
        </message>

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

@@ -13,7 +13,7 @@ Subject: Add option to configure the ad blocker filters URL
  .../browser/settings/AdBlockPreferences.java  | 61 ++++++++++++
  chrome/app/generated_resources.grd            | 10 ++
  chrome/browser/browser_process_impl.cc        |  3 +-
- .../flags/android/cached_feature_flags.cc     |  8 ++
+ .../flags/android/cached_feature_flags.cc     | 11 +++
  .../browser/flags/CachedFeatureFlags.java     | 10 ++
  .../net/system_network_context_manager.cc     |  4 +
  .../strings/android_chrome_strings.grd        | 14 +++
@@ -21,7 +21,7 @@ Subject: Add option to configure the ad blocker filters URL
  chrome/common/pref_names.h                    |  1 +
  .../adblock_updater_service.cc                |  6 +-
  .../adblock_updater_service.h                 |  3 +-
- 18 files changed, 313 insertions(+), 5 deletions(-)
+ 18 files changed, 316 insertions(+), 5 deletions(-)
  create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
  create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -30,7 +30,7 @@ Subject: Add option to configure the ad blocker filters URL
 diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
 --- a/chrome/android/chrome_java_resources.gni
 +++ b/chrome/android/chrome_java_resources.gni
-@@ -815,6 +815,7 @@ chrome_java_resources = [
+@@ -826,6 +826,7 @@ chrome_java_resources = [
    "java/res/layout/account_picker_new_account_row_legacy.xml",
    "java/res/layout/account_picker_row.xml",
    "java/res/layout/account_picker_row_legacy.xml",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
    "java/res/layout/add_languages_main.xml",
    "java/res/layout/add_to_homescreen_dialog.xml",
    "java/res/layout/auto_sign_in_first_run_dialog.xml",
-@@ -1102,6 +1103,7 @@ chrome_java_resources = [
+@@ -1106,6 +1107,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
@@ -49,7 +49,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -1318,6 +1318,8 @@ chrome_java_sources = [
+@@ -1307,6 +1307,8 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
    "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java",
@@ -133,7 +133,7 @@ new file mode 100644
 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
 +++ b/chrome/android/java/res/values/values.xml
-@@ -66,6 +66,8 @@
+@@ -41,6 +41,8 @@
      <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
      <string name="manage_space_activity"></string>
  
@@ -175,9 +175,9 @@ new file mode 100644
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -61,6 +61,11 @@
+@@ -88,6 +88,11 @@
          android:key="privacy"
-         android:order="14"
+         android:order="18"
          android:title="@string/prefs_privacy"/>
 +    <Preference
 +        android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
@@ -353,7 +353,7 @@ new file mode 100644
 diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
 --- a/chrome/app/generated_resources.grd
 +++ b/chrome/app/generated_resources.grd
-@@ -9883,6 +9883,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -10047,6 +10047,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -373,7 +373,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -1075,7 +1075,8 @@ BrowserProcessImpl::adblock_updater() {
+@@ -1066,7 +1066,8 @@ BrowserProcessImpl::adblock_updater() {
    adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
            g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
            std::move(scheduler),
@@ -386,10 +386,21 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc
 --- a/chrome/browser/flags/android/cached_feature_flags.cc
 +++ b/chrome/browser/flags/android/cached_feature_flags.cc
-@@ -36,6 +36,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
- }  // namespace android
- }  // namespace chrome
+@@ -8,6 +8,9 @@
  
+ #include "base/android/jni_string.h"
+ #include "base/feature_list.h"
++#include "chrome/browser/browser_process.h"
++#include "chrome/common/pref_names.h"
++#include "components/prefs/pref_service.h"
+ #include "content/public/common/content_features.h"
+ #include "content/public/common/network_service_util.h"
+ 
+@@ -41,3 +44,11 @@ static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled(
+   return content::IsOutOfProcessNetworkService() &&
+          base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
+ }
++
 +static ScopedJavaLocalRef<jstring> JNI_CachedFeatureFlags_GetAdBlockFiltersURL(JNIEnv* env) {
 +  return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL));
 +}
@@ -397,14 +408,10 @@ diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/brows
 +static void JNI_CachedFeatureFlags_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef<jstring>& url) {
 +  g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url));
 +}
-+
- static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled(
-     JNIEnv* env) {
-   return content::IsOutOfProcessNetworkService() &&
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -253,6 +253,14 @@ public class CachedFeatureFlags {
+@@ -260,6 +260,14 @@ public class CachedFeatureFlags {
                          ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0));
      }
  
@@ -419,7 +426,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      /**
       * Caches flags that must take effect on startup but are set via native code.
       */
-@@ -405,5 +413,7 @@ public class CachedFeatureFlags {
+@@ -412,5 +420,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -439,7 +446,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #if !defined(OS_ANDROID)
    // QuicAllowed was not part of Android policy.
    const base::Value* value =
-@@ -392,6 +394,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -393,6 +395,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -451,8 +458,8 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -1958,6 +1958,20 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
-         Work profile
+@@ -214,6 +214,20 @@ CHAR-LIMIT guidelines:
+         Enter VR
        </message>
  
 +      <!-- AdBlock settings -->
@@ -469,13 +476,13 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 +        Visit help page
 +      </message>
 +
-       <!-- Fullscreen -->
-       <message name="IDS_IMMERSIVE_FULLSCREEN_API_NOTIFICATION" desc="Notification message when a site has entered immersive fullscreen and the directions of how to exit.">
-         Drag from top and touch the back button to exit full screen.
+       <!-- Notification channels -->
+       <message name="IDS_NOTIFICATION_CATEGORY_GROUP_GENERAL" desc='Subheading for "General" section of a list of notification categories. [CHAR-LIMIT=32]'>
+         General
 diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 --- a/chrome/common/pref_names.cc
 +++ b/chrome/common/pref_names.cc
-@@ -2069,6 +2069,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2103,6 +2103,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  

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

@@ -3,19 +3,19 @@ Date: Sat, 7 Sep 2019 15:07:42 +0200
 Subject: Add option to not persist tabs across sessions
 
 ---
- chrome/android/java/res/values/values.xml            |  3 +++
- chrome/android/java/res/xml/privacy_preferences.xml  |  5 +++++
- .../chrome/browser/ChromeTabbedActivity.java         |  4 +++-
- .../browser/privacy/settings/PrivacySettings.java    | 12 ++++++++++++
- .../ui/android/strings/android_chrome_strings.grd    |  6 ++++++
- 5 files changed, 29 insertions(+), 1 deletion(-)
+ chrome/android/java/res/values/values.xml                | 3 +++
+ chrome/android/java/res/xml/privacy_preferences.xml      | 5 +++++
+ .../chromium/chrome/browser/ChromeTabbedActivity.java    | 4 +++-
+ .../chrome/browser/privacy/settings/PrivacySettings.java | 9 ++++++++-
+ .../ui/android/strings/android_chrome_strings.grd        | 6 ++++++
+ 5 files changed, 25 insertions(+), 2 deletions(-)
 
 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
 +++ b/chrome/android/java/res/values/values.xml
-@@ -60,6 +60,9 @@
-     <!-- TODO(peconn): Add help section. -->
-     <!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
+@@ -35,6 +35,9 @@
+     <integer name="reload_button_level_reload">0</integer>
+     <integer name="reload_button_level_stop">1</integer>
  
 +    <string name="close_tabs_on_exit_title">Close tabs on exit</string>
 +    <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -25,6 +25,11 @@
+@@ -23,6 +23,11 @@
          android:title="@string/always_incognito_title"
          android:summary="@string/always_incognito_summary"
          android:defaultValue="false" />
@@ -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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1182,8 +1182,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
+@@ -1045,8 +1045,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -72,41 +72,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  import org.chromium.base.BuildInfo;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.flags.ChromeFeatureList;
-@@ -41,6 +43,7 @@ import java.util.List;
+@@ -38,6 +40,7 @@ import org.chromium.ui.text.SpanApplier;
   */
  public class PrivacySettings
          extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
 +    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
-     private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
-@@ -98,6 +101,10 @@ public class PrivacySettings
-             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)) {
+     private static final String PREF_SECURE_DNS = "secure_dns";
+@@ -92,7 +95,11 @@ public class PrivacySettings
+     @Override
+     public boolean onPreferenceChange(Preference preference, Object newValue) {
+         String key = preference.getKey();
+-        if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
++        if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
 +            SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
 +            sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
 +            sharedPreferencesEditor.apply();
-         }
- 
-         return true;
-@@ -167,6 +174,11 @@ public class PrivacySettings
-                         String.format("%s - %s", getString(R.string.text_on), serverName));
-             }
-         }
-+
-+        ChromeBaseCheckBoxPreference closeTabsOnExitPref =
-+                (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
-+        closeTabsOnExitPref.setOnPreferenceChangeListener(this);
-+        closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
-     }
- 
-     private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
++        } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
+             UserPrefs.get(Profile.getLastUsedRegularProfile())
+                     .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+         } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
 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
-@@ -3334,6 +3334,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3499,6 +3499,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
          IMAGE
        </message>

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

@@ -1,540 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Sat, 23 Nov 2019 10:55:16 +0100
-Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
-
----
- chrome/android/chrome_java_resources.gni      |  2 +
- chrome/android/chrome_java_sources.gni        |  2 +
- chrome/android/java/res/layout/doh_editor.xml | 67 ++++++++++++++
- chrome/android/java/res/values/values.xml     |  2 +
- .../android/java/res/xml/doh_preferences.xml  | 25 +++++
- .../java/res/xml/privacy_preferences.xml      |  5 +
- .../chrome/browser/settings/DoHEditor.java    | 92 +++++++++++++++++++
- .../browser/settings/DoHPreferences.java      | 54 +++++++++++
- chrome/app/generated_resources.grd            |  6 ++
- .../flags/android/cached_feature_flags.cc     | 25 +++++
- .../browser/flags/CachedFeatureFlags.java     | 24 +++++
- .../net/stub_resolver_config_reader.cc        | 36 ++------
- .../strings/android_chrome_strings.grd        | 11 +++
- chrome/common/chrome_features.cc              |  4 +-
- 14 files changed, 324 insertions(+), 31 deletions(-)
- create mode 100644 chrome/android/java/res/layout/doh_editor.xml
- create mode 100644 chrome/android/java/res/xml/doh_preferences.xml
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
- create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
-
-diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
---- a/chrome/android/chrome_java_resources.gni
-+++ b/chrome/android/chrome_java_resources.gni
-@@ -881,6 +881,7 @@ chrome_java_resources = [
-   "java/res/layout/date_view.xml",
-   "java/res/layout/default_search_engine_first_run_fragment.xml",
-   "java/res/layout/device_item_list.xml",
-+  "java/res/layout/doh_editor.xml",
-   "java/res/layout/distilled_page_font_family_spinner.xml",
-   "java/res/layout/distilled_page_prefs_view.xml",
-   "java/res/layout/editable_option_editor_footer.xml",
-@@ -1112,6 +1113,7 @@ chrome_java_resources = [
-   "java/res/xml/data_reduction_preferences.xml",
-   "java/res/xml/data_reduction_preferences_off_lite_mode.xml",
-   "java/res/xml/developer_preferences.xml",
-+  "java/res/xml/doh_preferences.xml",
-   "java/res/xml/do_not_track_preferences.xml",
-   "java/res/xml/google_services_preferences.xml",
-   "java/res/xml/homepage_preferences.xml",
-diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
---- a/chrome/android/chrome_java_sources.gni
-+++ b/chrome/android/chrome_java_sources.gni
-@@ -1373,6 +1373,8 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
-   "java/src/org/chromium/chrome/browser/send_tab_to_self/DevicePickerBottomSheetAdapter.java",
-   "java/src/org/chromium/chrome/browser/send_tab_to_self/DevicePickerBottomSheetContent.java",
-+  "java/src/org/chromium/chrome/browser/settings/DoHEditor.java",
-+  "java/src/org/chromium/chrome/browser/settings/DoHPreferences.java",
-   "java/src/org/chromium/chrome/browser/send_tab_to_self/NotificationManager.java",
-   "java/src/org/chromium/chrome/browser/send_tab_to_self/NotificationSharedPrefManager.java",
-   "java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfAndroidBridge.java",
-diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java/res/layout/doh_editor.xml
-new file mode 100644
---- /dev/null
-+++ b/chrome/android/java/res/layout/doh_editor.xml
-@@ -0,0 +1,67 @@
-+<?xml version="1.0" encoding="utf-8"?>
-+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
-+     Use of this source code is governed by a BSD-style license that can be
-+     found in the LICENSE file. -->
-+
-+<FrameLayout
-+    xmlns:android="http://schemas.android.com/apk/res/android"
-+    xmlns:app="http://schemas.android.com/apk/res-auto"
-+    xmlns:tools="http://schemas.android.com/tools"
-+    android:layout_width="match_parent"
-+    android:layout_height="match_parent" >
-+
-+    <ScrollView
-+        android:layout_width="match_parent"
-+        android:layout_height="match_parent"
-+        android:id="@+id/scroll_view"
-+        android:fillViewport="true" >
-+
-+        <LinearLayout
-+            android:layout_width="match_parent"
-+            android:layout_height="wrap_content"
-+            android:orientation="vertical"
-+            android:focusableInTouchMode="true" >
-+
-+            <com.google.android.material.textfield.TextInputLayout
-+                android:id="@+id/doh_url"
-+                android:paddingTop="16dp"
-+                android:paddingStart="@dimen/pref_autofill_content_spacing"
-+                android:paddingEnd="@dimen/pref_autofill_content_spacing"
-+                android:layout_width="match_parent"
-+                android:layout_height="wrap_content" >
-+                <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
-+                <EditText
-+                    tools:ignore="Autofill"
-+                    android:id="@+id/doh_url_edit"
-+                    android:layout_width="match_parent"
-+                    android:layout_height="wrap_content"
-+                    android:inputType="textUri"
-+                    android:singleLine="true"
-+                    android:hint="@string/options_doh_edit_label" />
-+            </com.google.android.material.textfield.TextInputLayout>
-+
-+            <Space style="@style/ButtonBarTopSpacer" />
-+            <View style="@style/ButtonBarTopDivider" />
-+
-+            <LinearLayout style="@style/ButtonBar" >
-+                <org.chromium.ui.widget.ButtonCompat
-+                    android:id="@+id/doh_reset"
-+                    style="@style/ButtonBarButton"
-+                    android:text="@string/reset" />
-+
-+                <org.chromium.ui.widget.ButtonCompat
-+                    android:id="@+id/doh_cancel"
-+                    style="@style/ButtonBarButton"
-+                    android:text="@string/cancel" />
-+
-+                <org.chromium.ui.widget.ButtonCompat
-+                    android:id="@+id/doh_save"
-+                    style="@style/ButtonBarButton"
-+                    android:text="@string/save" />
-+            </LinearLayout>
-+        </LinearLayout>
-+    </ScrollView>
-+
-+    <include layout="@layout/settings_action_bar_shadow"/>
-+
-+</FrameLayout>
-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
-+++ b/chrome/android/java/res/values/values.xml
-@@ -80,6 +80,8 @@
-     <integer name="download_infobar_bar_fill_in_delay">400</integer>
-     <integer name="download_infobar_bar_fill_out_delay">200</integer>
- 
-+    <string name="doh_help_url">https://www.bromite.org/doh</string>
-+
-     <!-- Bottom navigation bar styling. -->
-     <bool name="window_light_navigation_bar">true</bool>
- 
-diff --git a/chrome/android/java/res/xml/doh_preferences.xml b/chrome/android/java/res/xml/doh_preferences.xml
-new file mode 100644
---- /dev/null
-+++ b/chrome/android/java/res/xml/doh_preferences.xml
-@@ -0,0 +1,25 @@
-+<?xml version="1.0" encoding="utf-8"?>
-+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
-+     Use of this source code is governed by a BSD-style license that can be
-+     found in the LICENSE file. -->
-+
-+<PreferenceScreen
-+    xmlns:android="http://schemas.android.com/apk/res/android"
-+    xmlns:app="http://schemas.android.com/apk/res-auto">
-+
-+    <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
-+        android:key="doh_switch"
-+        android:summaryOn="@string/text_on"
-+        android:summaryOff="@string/text_off" />
-+
-+    <org.chromium.chrome.browser.about_settings.HyperlinkPreference
-+        android:key="doh_help"
-+        android:title="@string/doh_help"
-+        app:url="@string/doh_help_url" />
-+
-+    <Preference
-+        android:key="doh_edit"
-+        android:title="@string/options_doh_edit_label"
-+        android:fragment="org.chromium.chrome.browser.settings.DoHEditor" />
-+
-+</PreferenceScreen>
-diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
---- a/chrome/android/java/res/xml/privacy_preferences.xml
-+++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -19,6 +19,11 @@
-         android:key="can_make_payment"
-         android:title="@string/can_make_payment_title"
-         android:summary="@string/settings_can_make_payment_toggle_label" />
-+    <Preference
-+        android:fragment="org.chromium.chrome.browser.settings.DoHPreferences"
-+        android:key="doh"
-+        android:title="@string/options_doh_title"
-+        android:summary="@string/options_doh_summary" />
-     <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-         android:key="preload_pages"
-         android:title="@string/preload_pages_title"
-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
---- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
-@@ -0,0 +1,92 @@
-+// Copyright 2015 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.
-+
-+package org.chromium.chrome.browser.settings;
-+
-+import android.os.Bundle;
-+import androidx.fragment.app.Fragment;
-+import android.text.Editable;
-+import android.text.TextWatcher;
-+import android.view.LayoutInflater;
-+import android.view.View;
-+import android.view.ViewGroup;
-+import android.widget.Button;
-+import android.widget.EditText;
-+
-+import org.chromium.components.browser_ui.settings.SettingsUtils;
-+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
-+import org.chromium.chrome.R;
-+import org.chromium.components.url_formatter.UrlFormatter;
-+
-+/**
-+ * Provides the Java-UI for editing the DNS-over-HTTPS (DoH) preference.
-+ */
-+public class DoHEditor extends Fragment implements TextWatcher {
-+    private EditText mDoHUrlEdit;
-+    private Button mSaveButton;
-+    private Button mResetButton;
-+
-+    @Override
-+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-+            Bundle savedInstanceState) {
-+        super.onCreate(savedInstanceState);
-+        getActivity().setTitle(R.string.options_doh_edit_title);
-+
-+        View v = inflater.inflate(R.layout.doh_editor, container, false);
-+        View scrollView = v.findViewById(R.id.scroll_view);
-+        scrollView.getViewTreeObserver().addOnScrollChangedListener(
-+                SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
-+        mDoHUrlEdit = (EditText) v.findViewById(R.id.doh_url_edit);
-+        mDoHUrlEdit.setText(CachedFeatureFlags.getDoHTemplates());
-+        mDoHUrlEdit.addTextChangedListener(this);
-+        mDoHUrlEdit.requestFocus();
-+
-+        initializeSaveCancelResetButtons(v);
-+        return v;
-+    }
-+
-+    @Override
-+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-+    }
-+
-+    @Override
-+    public void onTextChanged(CharSequence s, int start, int before, int count) {
-+        mSaveButton.setEnabled(s.length() != 0);
-+        mResetButton.setEnabled(true);
-+    }
-+
-+    @Override
-+    public void afterTextChanged(Editable s) {
-+    }
-+
-+    private void initializeSaveCancelResetButtons(View v) {
-+        mResetButton = (Button) v.findViewById(R.id.doh_reset);
-+        mResetButton.setOnClickListener(new View.OnClickListener() {
-+            @Override
-+            public void onClick(View v) {
-+                mDoHUrlEdit.setText(CachedFeatureFlags.getDoHTemplates());
-+                getActivity().finish();
-+            }
-+        });
-+
-+        mSaveButton = (Button) v.findViewById(R.id.doh_save);
-+        mSaveButton.setEnabled(false);
-+        mSaveButton.setOnClickListener(new View.OnClickListener() {
-+            @Override
-+            public void onClick(View v) {
-+                CachedFeatureFlags.setDoHTemplates(
-+                        mDoHUrlEdit.getText().toString());
-+                getActivity().finish();
-+            }
-+        });
-+
-+        Button button = (Button) v.findViewById(R.id.doh_cancel);
-+        button.setOnClickListener(new View.OnClickListener() {
-+            @Override
-+            public void onClick(View v) {
-+                getActivity().finish();
-+            }
-+        });
-+    }
-+}
-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
---- /dev/null
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
-@@ -0,0 +1,54 @@
-+// Copyright 2015 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.
-+
-+package org.chromium.chrome.browser.settings;
-+
-+import android.os.Bundle;
-+import androidx.preference.Preference;
-+import androidx.preference.PreferenceFragmentCompat;
-+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
-+
-+import org.chromium.components.browser_ui.settings.SettingsUtils;
-+import org.chromium.chrome.browser.flags.CachedFeatureFlags;
-+import androidx.annotation.VisibleForTesting;
-+import org.chromium.chrome.R;
-+
-+/**
-+ * Fragment that allows the user to configure DoH related preferences.
-+ */
-+public class DoHPreferences extends PreferenceFragmentCompat {
-+    @VisibleForTesting
-+    public static final String PREF_DOH_SWITCH = "doh_switch";
-+    private static final String PREF_DOH_EDIT = "doh_edit";
-+
-+    private Preference mDoHEdit;
-+
-+    @Override
-+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-+        getActivity().setTitle(R.string.options_doh_title);
-+        SettingsUtils.addPreferencesFromResource(this, R.xml.doh_preferences);
-+
-+        ChromeSwitchPreference mDoHSwitch =
-+                (ChromeSwitchPreference) findPreference(PREF_DOH_SWITCH);
-+        boolean isDoHEnabled = CachedFeatureFlags.getDoHEnabled();
-+        mDoHSwitch.setChecked(isDoHEnabled);
-+        mDoHSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
-+            CachedFeatureFlags.setDoHEnabled((boolean) newValue);
-+            return true;
-+        });
-+
-+        mDoHEdit = findPreference(PREF_DOH_EDIT);
-+        updateCurrentDoHUrl();
-+    }
-+
-+    private void updateCurrentDoHUrl() {
-+        mDoHEdit.setSummary(CachedFeatureFlags.getDoHTemplates());
-+    }
-+
-+    @Override
-+    public void onResume() {
-+        super.onResume();
-+        updateCurrentDoHUrl();
-+    }
-+}
-diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
---- a/chrome/app/generated_resources.grd
-+++ b/chrome/app/generated_resources.grd
-@@ -6977,6 +6977,12 @@ the Bookmarks menu.">
-       </if>
- 
-       <if expr="is_android">
-+        <message name="IDS_OPTIONS_DOH_TITLE" desc="The title of the DNS-over-HTTPS option on Android" formatter_data="android_java">
-+          Secure DNS
-+        </message>
-+        <message name="IDS_OPTIONS_DOH_SUMMARY" desc="The title of the DNS-over-HTTPS summary on Android" formatter_data="android_java">
-+          Configure DNS-over-HTTPS (DoH) secure DNS
-+        </message>
-         <message name="IDS_OPTIONS_HOMEPAGE_TITLE" desc="The title of Chrome's homepage setting screen on Android. " formatter_data="android_java">
-           Homepage
-         </message>
-diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc
---- a/chrome/browser/flags/android/cached_feature_flags.cc
-+++ b/chrome/browser/flags/android/cached_feature_flags.cc
-@@ -11,6 +11,10 @@
- #include "content/public/common/content_features.h"
- #include "content/public/common/network_service_util.h"
- 
-+#include "chrome/browser/browser_process.h"
-+#include "components/prefs/pref_service.h"
-+#include "chrome/common/pref_names.h"
-+
- using base::android::ConvertJavaStringToUTF8;
- using base::android::ConvertUTF8ToJavaString;
- using base::android::JavaParamRef;
-@@ -49,3 +53,24 @@ static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled(
-   return content::IsOutOfProcessNetworkService() &&
-          base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
- }
-+
-+static jboolean JNI_CachedFeatureFlags_GetDoHEnabled(JNIEnv* env) {
-+  std::string doh_mode = g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsMode);
-+  return ((doh_mode == "secure") || (doh_mode == "auto"))
-+         && !g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsTemplates).empty();
-+}
-+
-+static void JNI_CachedFeatureFlags_SetDoHEnabled(JNIEnv* env, jboolean enabled) {
-+  if (enabled)
-+    g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "secure");
-+  else
-+    g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "off");
-+}
-+
-+static ScopedJavaLocalRef<jstring> JNI_CachedFeatureFlags_GetDoHTemplates(JNIEnv* env) {
-+  return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsTemplates));
-+}
-+
-+static void JNI_CachedFeatureFlags_SetDoHTemplates(JNIEnv* env, const JavaParamRef<jstring>& templates) {
-+  g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsTemplates, base::android::ConvertJavaStringToUTF8(env, templates));
-+}
-diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -128,6 +128,26 @@ public class CachedFeatureFlags {
-     private static Map<String, String> sOverridesTestFeatures;
-     private static String sReachedCodeProfilerTrialGroup;
- 
-+     /**
-+     * 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) {
-+         CachedFeatureFlagsJni.get().setDoHEnabled(enabled);
-+     }
-+
-+     public static boolean getDoHEnabled() {
-+         return CachedFeatureFlagsJni.get().getDoHEnabled();
-+     }
-+
-+     public static void setDoHTemplates(String t) {
-+         CachedFeatureFlagsJni.get().setDoHTemplates(t);
-+     }
-+
-+     public static String getDoHTemplates() {
-+         return CachedFeatureFlagsJni.get().getDoHTemplates();
-+     }
-+
-     /**
-      * Checks if a cached feature flag is enabled.
-      *
-@@ -412,6 +432,10 @@ public class CachedFeatureFlags {
- 
-     @NativeMethods
-     interface Natives {
-+        void setDoHEnabled(boolean enabled);
-+        boolean getDoHEnabled();
-+        void setDoHTemplates(String templates);
-+        String getDoHTemplates();
-         boolean isNetworkServiceWarmUpEnabled();
-         void setAdBlockFiltersURL(String url);
-         String getAdBlockFiltersURL();
-diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc
---- a/chrome/browser/net/stub_resolver_config_reader.cc
-+++ b/chrome/browser/net/stub_resolver_config_reader.cc
-@@ -141,28 +141,6 @@ StubResolverConfigReader::StubResolverConfigReader(PrefService* local_state,
-         base::Value(SecureDnsConfig::ModeToString(default_secure_dns_mode)));
-     local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsTemplates,
-                                       base::Value(default_doh_templates));
--
--    // If the user has explicitly enabled or disabled the DoH experiment in
--    // chrome://flags and the DoH UI setting is not visible, store that choice
--    // in the user prefs so that it can be persisted after the experiment ends.
--    // Also make sure to remove the stored prefs value if the user has changed
--    // their chrome://flags selection to the default.
--    if (!features::kDnsOverHttpsShowUiParam.Get()) {
--      flags_ui::PrefServiceFlagsStorage flags_storage(local_state_);
--      std::set<std::string> entries = flags_storage.GetFlags();
--      if (entries.count("dns-over-https@1")) {
--        // The user has "Enabled" selected.
--        local_state_->SetString(prefs::kDnsOverHttpsMode,
--                                SecureDnsConfig::kModeAutomatic);
--      } else if (entries.count("dns-over-https@2")) {
--        // The user has "Disabled" selected.
--        local_state_->SetString(prefs::kDnsOverHttpsMode,
--                                SecureDnsConfig::kModeOff);
--      } else {
--        // The user has "Default" selected.
--        local_state_->ClearPref(prefs::kDnsOverHttpsMode);
--      }
--    }
-   }
- 
-   pref_change_registrar_.Add(prefs::kBuiltInDnsClientEnabled, pref_callback);
-@@ -346,21 +324,21 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration(
-     parental_controls_checked_ = true;
-   }
- 
--  if (record_metrics) {
--    UMA_HISTOGRAM_ENUMERATION("Net.DNS.DnsConfig.SecureDnsMode", mode_details);
--  }
--
-   std::string doh_templates =
-       local_state_->GetString(prefs::kDnsOverHttpsTemplates);
--  std::string server_method;
-+  if (doh_templates.empty()) {
-+    secure_dns_mode = net::DnsConfig::SecureDnsMode::OFF;
-+  }
-+  LOG(INFO) << "DoH templates: '" << doh_templates << "' with mode " << SecureDnsConfig::ModeToString(secure_dns_mode);
-   std::vector<net::DnsOverHttpsServerConfig> dns_over_https_servers;
-   base::Optional<std::vector<network::mojom::DnsOverHttpsServerPtr>>
-       servers_mojo;
--  if (!doh_templates.empty() &&
--      secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
-+  if (secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
-+    std::string server_method;
-     for (base::StringPiece server_template :
-          chrome_browser_net::secure_dns::SplitGroup(doh_templates)) {
-       if (!net::dns_util::IsValidDohTemplate(server_template, &server_method)) {
-+        LOG(WARNING) << "DoH templates: skipping invalid: '" << server_template << "'";
-         continue;
-       }
- 
-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
-@@ -590,6 +590,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_HINT" desc="Hint for the text edit on Homepage Preference setting, guiding user to enter their customized homepage setting">
-         Enter custom web address
-diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
---- a/chrome/common/chrome_features.cc
-+++ b/chrome/common/chrome_features.cc
-@@ -281,12 +281,12 @@ const base::Feature kDesktopPWAsRunOnOsLogin{"DesktopPWAsRunOnOsLogin",
- 
- // Enable DNS over HTTPS (DoH).
- const base::Feature kDnsOverHttps{"DnsOverHttps",
--                                  base::FEATURE_DISABLED_BY_DEFAULT};
-+                                  base::FEATURE_ENABLED_BY_DEFAULT};
- 
- // Set whether fallback to insecure DNS is allowed by default. This setting may
- // be overridden for individual transactions.
- const base::FeatureParam<bool> kDnsOverHttpsFallbackParam{&kDnsOverHttps,
--                                                          "Fallback", true};
-+                                                          "Fallback", false};
- 
- // Supply one or more space-separated DoH server URI templates to use when this
- // feature is enabled. If no templates are specified, then a hardcoded mapping
--- 
-2.17.1
-

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

@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -1053,6 +1053,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -1080,6 +1080,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
    return pipeline_metadata_.has_audio;
  }
  
@@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
  void WebMediaPlayerImpl::EnabledAudioTracksChanged(
      const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
    DCHECK(main_task_runner_->BelongsToCurrentThread());
-@@ -3469,7 +3475,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3493,7 +3499,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
    // Audio only stream is allowed to play when in background.
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // to move the logic of checking video frames out of that function.

+ 8 - 10
build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch

@@ -5,9 +5,9 @@ Subject: AudioBuffer, AnalyserNode: fp mitigations
 Truncate base latency precision to two digits
 ---
  .../blink/renderer/modules/webaudio/analyser_node.idl     | 8 ++++----
- .../blink/renderer/modules/webaudio/audio_buffer.idl      | 4 ++--
+ .../blink/renderer/modules/webaudio/audio_buffer.idl      | 6 ------
  .../blink/renderer/modules/webaudio/audio_context.cc      | 4 +++-
- 3 files changed, 9 insertions(+), 7 deletions(-)
+ 3 files changed, 7 insertions(+), 11 deletions(-)
 
 diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
 --- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -30,18 +30,16 @@ diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/thi
 diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
 --- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
 +++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
-@@ -37,12 +37,12 @@
+@@ -37,12 +37,6 @@
  
      // Channel access
      readonly attribute unsigned long numberOfChannels;
--    [HighEntropy, Measure, RaisesException] Float32Array getChannelData(
-+    /*[HighEntropy, Measure, RaisesException] Float32Array getChannelData(
-         unsigned long channelIndex);
-     [HighEntropy, Measure, RaisesException] void copyFromChannel(
-         Float32Array destination,
-         unsigned long channelNumber,
+-    [HighEntropy=Direct, Measure, RaisesException] Float32Array getChannelData(
+-        unsigned long channelIndex);
+-    [HighEntropy, Measure, RaisesException] void copyFromChannel(
+-        Float32Array destination,
+-        unsigned long channelNumber,
 -        optional unsigned long bufferOffset = 0);
-+        optional unsigned long bufferOffset = 0); */
      [RaisesException] void copyToChannel(
          Float32Array source,
          unsigned long channelNumber,

Файловите разлики са ограничени, защото са твърде много
+ 496 - 510
build/patches/Automated-domain-substitution.patch


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

@@ -62,7 +62,7 @@ diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_t
 diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
 --- a/components/omnibox/browser/autocomplete_input.cc
 +++ b/components/omnibox/browser/autocomplete_input.cc
-@@ -488,7 +488,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
+@@ -486,7 +486,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
    // For the view-source and blob schemes, we should emphasize the host of the
    // URL qualified by the view-source or blob prefix.
    if ((base::LowerCaseEqualsASCII(scheme_str, kViewSourceScheme) ||
@@ -72,7 +72,7 @@ diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnib
        (static_cast<int>(text.length()) > after_scheme_and_colon)) {
      // Obtain the URL prefixed by view-source or blob and parse it.
      base::string16 real_url(text.substr(after_scheme_and_colon));
-@@ -561,7 +562,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
+@@ -559,7 +560,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
  bool AutocompleteInput::HasHTTPScheme(const base::string16& input) {
    std::string utf8_input(base::UTF16ToUTF8(input));
    url::Component scheme;
@@ -100,7 +100,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur
 diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
 --- a/content/browser/child_process_security_policy_impl.cc
 +++ b/content/browser/child_process_security_policy_impl.cc
-@@ -634,6 +634,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
+@@ -672,6 +672,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
  #endif  // BUILDFLAG(ENABLE_WEBSOCKETS)
    RegisterWebSafeScheme(url::kFtpScheme);
    RegisterWebSafeScheme(url::kDataScheme);
@@ -111,7 +111,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1083,6 +1083,8 @@ component("net") {
+@@ -1092,6 +1092,8 @@ component("net") {
        "url_request/report_sender.h",
        "url_request/static_http_user_agent_settings.cc",
        "url_request/static_http_user_agent_settings.h",
@@ -208,7 +208,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
  
  using base::Time;
  using std::string;
-@@ -562,6 +564,12 @@ URLRequest::URLRequest(const GURL& url,
+@@ -570,6 +572,12 @@ URLRequest::URLRequest(const GURL& url,
    // Sanity check out environment.
    DCHECK(base::ThreadTaskRunnerHandle::IsSet());
  
@@ -224,7 +224,7 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
 diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
 --- a/net/url_request/url_request_context_builder.cc
 +++ b/net/url_request/url_request_context_builder.cc
-@@ -43,6 +43,7 @@
+@@ -44,6 +44,7 @@
  #include "net/quic/quic_stream_factory.h"
  #include "net/ssl/ssl_config_service_defaults.h"
  #include "net/url_request/static_http_user_agent_settings.h"
@@ -232,7 +232,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
  #include "net/url_request/url_request_context.h"
  #include "net/url_request/url_request_context_storage.h"
  #include "net/url_request/url_request_job_factory_impl.h"
-@@ -602,6 +603,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -614,6 +615,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }

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

@@ -5,32 +5,32 @@ Subject: Block gateway attacks via websockets
 ---
  services/network/public/cpp/features.cc       |  2 +-
  .../renderer/core/loader/base_fetch_context.h |  1 +
- .../core/loader/frame_fetch_context.cc        | 18 ++++++++++
+ .../core/loader/frame_fetch_context.cc        | 18 +++++++++++++
  .../core/loader/frame_fetch_context.h         |  1 +
- .../core/loader/worker_fetch_context.cc       | 19 +++++++++++
+ .../core/loader/worker_fetch_context.cc       | 19 +++++++++++++
  .../core/loader/worker_fetch_context.h        |  1 +
- .../background_fetch_manager.cc               | 34 +++++++++----------
- .../websockets/websocket_channel_impl.cc      |  5 +++
- .../modules/websockets/websocket_common.cc    | 27 +++++++++++++++
+ .../background_fetch_manager.cc               |  2 --
+ .../websockets/websocket_channel_impl.cc      |  5 ++++
+ .../modules/websockets/websocket_common.cc    | 27 +++++++++++++++++++
  .../modules/websockets/websocket_common.h     |  4 +++
- 10 files changed, 93 insertions(+), 19 deletions(-)
+ 10 files changed, 77 insertions(+), 3 deletions(-)
 
 diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
 --- a/services/network/public/cpp/features.cc
 +++ b/services/network/public/cpp/features.cc
-@@ -123,7 +123,7 @@ const base::Feature kCrossOriginEmbedderPolicy{
+@@ -125,7 +125,7 @@ const base::Feature kCrossOriginIsolated{"CrossOriginIsolated",
  //
  // https://wicg.github.io/cors-rfc1918/#integration-fetch
- const base::Feature kBlockNonSecureExternalRequests{
--    "BlockNonSecureExternalRequests", base::FEATURE_DISABLED_BY_DEFAULT};
-+    "BlockNonSecureExternalRequests", base::FEATURE_ENABLED_BY_DEFAULT};
+ const base::Feature kBlockInsecurePrivateNetworkRequests{
+-    "BlockInsecurePrivateNetworkRequests", base::FEATURE_DISABLED_BY_DEFAULT};
++    "BlockInsecurePrivateNetworkRequests", base::FEATURE_ENABLED_BY_DEFAULT};
  
  // Enables or defaults splittup up server (not proxy) entries in the
  // HttpAuthCache.
 diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third_party/blink/renderer/core/loader/base_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/base_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/base_fetch_context.h
-@@ -65,6 +65,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
+@@ -66,6 +66,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
    virtual PreviewsResourceLoadingHints* GetPreviewsResourceLoadingHints()
        const = 0;
    virtual bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const = 0;
@@ -41,7 +41,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
-@@ -755,6 +755,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -746,6 +746,24 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -69,7 +69,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
 diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/third_party/blink/renderer/core/loader/frame_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h
-@@ -150,6 +150,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext {
+@@ -154,6 +154,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext {
    bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
    std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
        override;
@@ -88,7 +88,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  #include "third_party/blink/renderer/platform/supplementable.h"
  #include "third_party/blink/renderer/platform/weborigin/security_policy.h"
-@@ -95,6 +96,24 @@ bool WorkerFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
+@@ -96,6 +97,24 @@ bool WorkerFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
    return should_block_request;
  }
  
@@ -116,7 +116,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
 diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/third_party/blink/renderer/core/loader/worker_fetch_context.h
 --- a/third_party/blink/renderer/core/loader/worker_fetch_context.h
 +++ b/third_party/blink/renderer/core/loader/worker_fetch_context.h
-@@ -59,6 +59,7 @@ class WorkerFetchContext final : public BaseFetchContext {
+@@ -62,6 +62,7 @@ class WorkerFetchContext final : public BaseFetchContext {
    bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
    std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
        override;
@@ -127,55 +127,30 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/thi
 diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
 --- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
 +++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
-@@ -106,24 +106,22 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
+@@ -106,7 +106,6 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
  
  bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
                                 const KURL& request_url) {
 -  if (RuntimeEnabledFeatures::CorsRFC1918Enabled()) {
--    network::mojom::IPAddressSpace requestor_space =
--        execution_context->GetSecurityContext().AddressSpace();
--
--    // TODO(mkwst): This only checks explicit IP addresses. We'll have to move
--    // all this up to //net and //content in order to have any real impact on
--    // gateway attacks. That turns out to be a TON of work (crbug.com/378566).
--    network::mojom::IPAddressSpace target_space =
--        network::mojom::IPAddressSpace::kPublic;
--    if (network_utils::IsReservedIPAddress(request_url.Host()))
--      target_space = network::mojom::IPAddressSpace::kPrivate;
--    if (SecurityOrigin::Create(request_url)->IsLocalhost())
--      target_space = network::mojom::IPAddressSpace::kLocal;
--
--    bool is_external_request = requestor_space > target_space;
--    if (is_external_request)
--      return true;
+     network::mojom::IPAddressSpace requestor_space =
+         execution_context->AddressSpace();
+ 
+@@ -123,7 +122,6 @@ bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
+     bool is_external_request = requestor_space > target_space;
+     if (is_external_request)
+       return true;
 -  }
-+  network::mojom::IPAddressSpace requestor_space =
-+      execution_context->GetSecurityContext().AddressSpace();
-+
-+  // TODO(mkwst): This only checks explicit IP addresses. We'll have to move
-+  // all this up to //net and //content in order to have any real impact on
-+  // gateway attacks. That turns out to be a TON of work (crbug.com/378566).
-+  network::mojom::IPAddressSpace target_space =
-+      network::mojom::IPAddressSpace::kPublic;
-+  if (network_utils::IsReservedIPAddress(request_url.Host()))
-+    target_space = network::mojom::IPAddressSpace::kPrivate;
-+  if (SecurityOrigin::Create(request_url)->IsLocalhost())
-+    target_space = network::mojom::IPAddressSpace::kLocal;
-+
-+  bool is_external_request = requestor_space > target_space;
-+  if (is_external_request)
-+    return true;
  
    return false;
  }
 diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
 --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
 +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
-@@ -233,6 +233,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
+@@ -202,6 +202,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
      return false;
    }
  
-+  if (GetBaseFetchContext()->ShouldBlockGateWayAttacks(execution_context_->GetSecurityContext().AddressSpace(), url)) {
++  if (GetBaseFetchContext()->ShouldBlockGateWayAttacks(execution_context_->AddressSpace(), url)) {
 +    has_initiated_opening_handshake_ = false;
 +    return false;
 +  }
@@ -191,7 +166,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
    }
  
 +  network::mojom::IPAddressSpace requestor_space =
-+      execution_context->GetSecurityContext().AddressSpace();
++      execution_context->AddressSpace();
 +  if (ShouldBlockGateWayAttacks(requestor_space, url_)) {
 +    state_ = kClosed;
 +    exception_state.ThrowSecurityError(
@@ -199,7 +174,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
 +    return ConnectResult::kException;
 +  }
 +
-   if (!execution_context->GetContentSecurityPolicyForWorld()
+   if (!execution_context->GetContentSecurityPolicyForCurrentWorld()
             ->AllowConnectToSource(url_, url_, RedirectStatus::kNoRedirect)) {
      state_ = kClosed;
 @@ -135,6 +144,24 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect(

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

@@ -47,7 +47,7 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s
  using content::BrowserThread;
  using content::WebContents;
  using content::WebContentsObserver;
-@@ -136,6 +138,9 @@ void SetBrowserStartupIsComplete() {
+@@ -138,6 +140,9 @@ void SetBrowserStartupIsComplete() {
    g_after_startup_tasks.Get().clear();
    g_after_startup_tasks.Get().shrink_to_fit();
  
@@ -91,7 +91,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -1052,6 +1052,34 @@ BrowserProcessImpl::component_updater() {
+@@ -1043,6 +1043,34 @@ BrowserProcessImpl::component_updater() {
    return component_updater_.get();
  }
  
@@ -129,7 +129,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
 --- a/chrome/browser/browser_process_impl.h
 +++ b/chrome/browser/browser_process_impl.h
-@@ -181,6 +181,7 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -180,6 +180,7 @@ class BrowserProcessImpl : public BrowserProcess,
  #endif
  
    component_updater::ComponentUpdateService* component_updater() override;
@@ -137,7 +137,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
  #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
    component_updater::SupervisedUserWhitelistInstaller*
    supervised_user_whitelist_installer() override;
-@@ -368,6 +369,8 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -360,6 +361,8 @@ class BrowserProcessImpl : public BrowserProcess,
    // but some users of component updater only install per-user.
    std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
  
@@ -149,7 +149,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
 diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
 --- a/chrome/browser/chrome_browser_main.cc
 +++ b/chrome/browser/chrome_browser_main.cc
-@@ -1570,6 +1570,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1581,6 +1581,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
      component_updater::RegisterComponentsForUpdate(profile_->IsOffTheRecord(),
                                                     profile_->GetPrefs());
@@ -161,15 +161,15 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -64,7 +64,6 @@
+@@ -65,7 +65,6 @@
  #include "chrome/browser/hid/chrome_hid_delegate.h"
  #include "chrome/browser/interstitials/enterprise_util.h"
  #include "chrome/browser/lifetime/browser_shutdown.h"
 -#include "chrome/browser/lookalikes/lookalike_url_navigation_throttle.h"
+ #include "chrome/browser/media/audio_service_util.h"
  #include "chrome/browser/media/router/media_router_feature.h"
  #include "chrome/browser/media/router/presentation/presentation_service_delegate_impl.h"
- #include "chrome/browser/media/router/presentation/receiver_presentation_service_delegate_impl.h"
-@@ -216,7 +215,6 @@
+@@ -219,7 +218,6 @@
  #include "components/metrics/client_info.h"
  #include "components/metrics_services_manager/metrics_services_manager.h"
  #include "components/net_log/chrome_net_log.h"
@@ -177,7 +177,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/payments/content/payment_request_display_manager.h"
  #include "components/performance_manager/embedder/performance_manager_registry.h"
-@@ -3899,16 +3897,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3931,16 +3929,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -194,7 +194,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if BUILDFLAG(ENABLE_PLUGINS)
    MaybeAddThrottle(FlashDownloadInterception::MaybeCreateThrottleFor(handle),
                     &throttles);
-@@ -4021,10 +4009,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4054,10 +4042,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
                     &throttles);
  #endif
  
@@ -965,7 +965,7 @@ new file mode 100644
 diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
 +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
-@@ -375,6 +375,17 @@ ContentSubresourceFilterThrottleManager::
+@@ -379,6 +379,17 @@ ContentSubresourceFilterThrottleManager::
        throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
                                                  ad_tagging_state);
      }
@@ -1037,7 +1037,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
 +  IndexedRulesetVersion version = IndexAndWriteRulesetInternal(indexed_ruleset_base_dir, unindexed_ruleset_info);
 +  // cleanup temporary file when done
 +  if (unindexed_ruleset_info.delete_ruleset_path) {
-+    base::DeleteFile(unindexed_ruleset_info.ruleset_path, false);
++    base::DeleteFile(unindexed_ruleset_info.ruleset_path);
 +  }
 +  return version;
 +}
@@ -1337,7 +1337,7 @@ diff --git a/components/subresource_filter/core/common/common_features.cc b/comp
 diff --git a/content/browser/frame_host/navigation_throttle_runner.cc b/content/browser/frame_host/navigation_throttle_runner.cc
 --- a/content/browser/frame_host/navigation_throttle_runner.cc
 +++ b/content/browser/frame_host/navigation_throttle_runner.cc
-@@ -123,11 +123,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
+@@ -124,11 +124,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
         devtools_instrumentation::CreateNavigationThrottles(request)) {
      AddThrottle(std::move(throttle));
    }

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

@@ -27,7 +27,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
 +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
-@@ -421,12 +421,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -418,12 +418,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
            port_config.enable_nonproxied_udp = false;
            break;
          case DEFAULT:

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

@@ -11,7 +11,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 --- a/gpu/config/gpu_finch_features.cc
 +++ b/gpu/config/gpu_finch_features.cc
 @@ -15,7 +15,11 @@ namespace features {
- #if defined(OS_ANDROID)
+ 
  // Use android AImageReader when playing videos with MediaPlayer.
  const base::Feature kAImageReaderMediaPlayer{"AImageReaderMediaPlayer",
 +#ifdef ARCH_CPU_ARM64
@@ -20,12 +20,12 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
                                               base::FEATURE_ENABLED_BY_DEFAULT};
 +#endif
  
- // Used only by webview to disable SurfaceControl.
- const base::Feature kDisableSurfaceControlForWebview{
+ #if defined(OS_ANDROID)
+ // Used to limit GL version to 2.0 for skia raster on Android.
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -544,7 +544,11 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
+@@ -549,7 +549,11 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
  
  // Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
  const base::Feature kAImageReaderVideoOutput{"AImageReaderVideoOutput",

+ 1 - 1
build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch

@@ -9,7 +9,7 @@ Subject: Disable DRM media origin IDs preprovisioning
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -533,7 +533,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -538,7 +538,7 @@ const base::Feature kMediaDrmPersistentLicense{
  // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs
  // which will trigger provisioning process after MediaDrmBridge is created.
  const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",

+ 1 - 1
build/patches/Disable-HEAD-requests-for-single-word-Omnibar-searches.patch

@@ -40,7 +40,7 @@ diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc b/c
 diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
 --- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
 +++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
-@@ -127,7 +127,7 @@ class ChromeOmniboxNavigationObserver : public OmniboxNavigationObserver,
+@@ -126,7 +126,7 @@ class ChromeOmniboxNavigationObserver : public OmniboxNavigationObserver,
  
    // Creates a URL loader for |destination_url| and stores it in |loader_|.
    // Does not start the loader.

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

@@ -11,7 +11,7 @@ Do not consider Jelly Bean unsupported
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
-@@ -157,7 +157,7 @@ public class OmahaBase {
+@@ -160,7 +160,7 @@ public class OmahaBase {
  
      /** See {@link #sIsDisabled}. */
      static boolean isDisabled() {

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

@@ -9,7 +9,7 @@ Subject: Disable all promo dialogs
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
-@@ -307,7 +307,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -406,7 +406,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
       * displayed.
       */
      private boolean triggerPromo(boolean intentWithEffect) {
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
              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
-@@ -338,8 +338,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -437,8 +437,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

+ 2 - 2
build/patches/Disable-autofill-assistant-by-default.patch

@@ -9,7 +9,7 @@ Subject: Disable autofill assistant 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
 --- 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
-@@ -15,7 +15,7 @@ class AutofillAssistantPreferencesUtil {
+@@ -22,7 +22,7 @@ class AutofillAssistantPreferencesUtil {
      /** Checks whether the Autofill Assistant switch preference in settings is on. */
      static boolean isAutofillAssistantSwitchOn() {
          return SharedPreferencesManager.getInstance().readBoolean(
@@ -17,7 +17,7 @@ diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chro
 +                ChromePreferenceKeys.AUTOFILL_ASSISTANT_ENABLED, false);
      }
  
-     /** Checks whether the Autofill Assistant onboarding has been accepted. */
+     /** Returns whether the user has seen a lite script before or not. */
 -- 
 2.17.1
 

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

@@ -16,8 +16,8 @@ diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature
 -    "InterestFeedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "InterestFeedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
  // InterestFeedV2 takes precedence over InterestFeedContentSuggestions.
- const base::Feature kInterestFeedV2{"InterestFeedV2",
-                                     base::FEATURE_DISABLED_BY_DEFAULT};
+ // InterestFeedV2 is cached in ChromeCachedFlags. If the default value here is
+ // changed, please update the cached one's default value in CachedFeatureFlags.
 -- 
 2.17.1
 

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

@@ -60,7 +60,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 --- a/components/variations/service/variations_service.cc
 +++ b/components/variations/service/variations_service.cc
-@@ -243,17 +243,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -236,17 +236,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
  // Variations seed fetching is only enabled in official Chrome builds, if a URL
  // is specified on the command line, and for testing.
  bool IsFetchingEnabled() {

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

@@ -11,9 +11,9 @@ Subject: Disable media router and remoting by default
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -50,17 +50,16 @@ const PrefService::Preference* GetMediaRouterPref(
+@@ -67,17 +67,16 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+ #endif  // !defined(OFFICIAL_BUILD) && !defined(OS_ANDROID)
  
- bool MediaRouterEnabled(content::BrowserContext* context) {
  #if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
 -  const PrefService::Preference* pref = GetMediaRouterPref(context);
 -  // Only use the pref value if it set from a mandatory policy.
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -345,7 +345,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -340,7 +340,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kMediaRouterFirstRunFlowAcknowledged,
        false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);

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

@@ -10,7 +10,7 @@ Subject: Disable metrics on all I/O threads
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -944,7 +944,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -935,7 +935,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // defined(OS_CHROMEOS)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,

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

@@ -11,7 +11,7 @@ a corresponding user option to individually disable their usage.
 diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
 --- a/components/url_formatter/url_formatter.cc
 +++ b/components/url_formatter/url_formatter.cc
-@@ -479,13 +479,13 @@ ComponentResult IDNToUnicodeOneComponent(
+@@ -469,13 +469,13 @@ ComponentResult IDNToUnicodeOneComponent(
  }  // namespace
  
  const FormatUrlType kFormatUrlOmitNothing = 0;

+ 1 - 1
build/patches/Disable-password-reuse-detection-on-android.patch

@@ -99,7 +99,7 @@ diff --git a/chrome/browser/ui/android/safe_browsing/password_reuse_dialog_view_
 diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn
 --- a/components/password_manager/core/browser/BUILD.gn
 +++ b/components/password_manager/core/browser/BUILD.gn
-@@ -12,9 +12,9 @@ if (is_android) {
+@@ -11,9 +11,9 @@ if (is_android) {
  
  # TODO(crbug.com/1006430): Fix password reuse detection not fully functional on
  # Android.

+ 1 - 1
build/patches/Disable-plugins-enumeration.patch

@@ -9,7 +9,7 @@ Subject: Disable plugins enumeration
 diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
 --- a/third_party/blink/renderer/core/frame/local_frame.cc
 +++ b/third_party/blink/renderer/core/frame/local_frame.cc
-@@ -1482,10 +1482,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
+@@ -1650,10 +1650,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
  }
  
  PluginData* LocalFrame::GetPluginData() const {

+ 6 - 7
build/patches/Disable-previews-by-default.patch

@@ -3,8 +3,8 @@ Date: Tue, 8 Jan 2019 08:54:50 +0100
 Subject: Disable previews by default
 
 ---
- components/previews/core/previews_features.cc | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
+ components/previews/core/previews_features.cc | 5 -----
+ 1 file changed, 5 deletions(-)
 
 diff --git a/components/previews/core/previews_features.cc b/components/previews/core/previews_features.cc
 --- a/components/previews/core/previews_features.cc
@@ -13,13 +13,12 @@ diff --git a/components/previews/core/previews_features.cc b/components/previews
  // are enabled are controlled by other features.
  const base::Feature kPreviews {
    "Previews",
--#if defined(OS_ANDROID) || defined(OS_LINUX)
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 -      // Previews allowed for Android (but also allow on Linux for dev/debug).
 -      base::FEATURE_ENABLED_BY_DEFAULT
--#else   // !defined(OS_ANDROID) || defined(OS_LINUX)
--      base::FEATURE_DISABLED_BY_DEFAULT
--#endif  // defined(OS_ANDROID) || defined(OS_LINUX)
-+   base::FEATURE_DISABLED_BY_DEFAULT
+-#else   // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
+       base::FEATURE_DISABLED_BY_DEFAULT
+-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
  };
  
  // Enables the Offline previews on android slow connections.

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

@@ -8,17 +8,17 @@ bookmarks, never reach signin thresholds.
  chrome/android/chrome_java_resources.gni      |   1 -
  ...rsonalized_signin_promo_view_bookmarks.xml |  30 -----
  .../bookmarks/BookmarkItemsAdapter.java       |  30 +----
- .../bookmarks/BookmarkPromoHeader.java        | 125 +-----------------
+ .../bookmarks/BookmarkPromoHeader.java        | 124 +-----------------
  .../browser/signin/SigninPromoController.java |  19 +--
- 5 files changed, 5 insertions(+), 200 deletions(-)
+ 5 files changed, 5 insertions(+), 199 deletions(-)
  delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
 
 diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
 --- a/chrome/android/chrome_java_resources.gni
 +++ b/chrome/android/chrome_java_resources.gni
-@@ -977,7 +977,6 @@ chrome_java_resources = [
-   "java/res/layout/payment_request_spinny.xml",
-   "java/res/layout/payments_request_editor_textview.xml",
+@@ -980,7 +980,6 @@ chrome_java_resources = [
+   "java/res/layout/passwords_error_dialog.xml",
+   "java/res/layout/passwords_progress_dialog.xml",
    "java/res/layout/personalized_signin_promo_view_body.xml",
 -  "java/res/layout/personalized_signin_promo_view_bookmarks.xml",
    "java/res/layout/personalized_signin_promo_view_header.xml",
@@ -63,7 +63,7 @@ deleted file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
-@@ -22,7 +22,6 @@ import org.chromium.chrome.R;
+@@ -21,7 +21,6 @@ import org.chromium.chrome.R;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
  import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
  import org.chromium.chrome.browser.bookmarks.BookmarkRow.Location;
@@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.sync.ProfileSyncService;
  import org.chromium.components.bookmarks.BookmarkId;
  import org.chromium.components.bookmarks.BookmarkType;
-@@ -63,7 +62,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -62,7 +61,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
      // ViewType.PERSONALIZED_SIGNIN_PROMO, ViewType.SYNC_PROMO, or ViewType.INVALID_PROMO
      private int mPromoHeaderType = ViewType.INVALID_PROMO;
      private BookmarkDelegate mDelegate;
@@ -79,7 +79,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      private String mSearchText;
      private BookmarkId mCurrentFolder;
      private ProfileSyncService mProfileSyncService;
-@@ -190,9 +188,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -185,9 +183,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
                  // fall through
              case ViewType.PERSONALIZED_SYNC_PROMO:
@@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
              case ViewType.FOLDER:
                  return createViewHolderHelper(parent, R.layout.bookmark_folder_row);
              case ViewType.BOOKMARK:
-@@ -206,11 +204,7 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -201,11 +199,7 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
      @Override
      public void onBindViewHolder(ViewHolder holder, int position) {
          if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
@@ -103,7 +103,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
              BookmarkRow row = ((BookmarkRow) holder.itemView);
              BookmarkId id = getIdByPosition(position);
-@@ -239,7 +233,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -234,7 +228,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
                  // fall through
              case ViewType.PERSONALIZED_SYNC_PROMO:
@@ -111,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
                  break;
              default:
                  // Other view holders don't have special recycling code.
-@@ -265,7 +258,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -260,7 +253,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              updateHeader(!topLevelFoldersShowing());
          };
  
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          populateTopLevelFoldersList();
  
          mElements = new ArrayList<>();
-@@ -281,7 +273,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -275,7 +267,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
          mDelegate.getModel().removeObserver(mBookmarkModelObserver);
          mDelegate.getSelectionDelegate().removeObserver(this);
          mDelegate = null;
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          mProfileSyncService.removeSyncStateChangedListener(this);
      }
  
-@@ -407,23 +398,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+@@ -385,23 +376,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
              return;
          } else if (currentUIState == BookmarkUIState.STATE_SEARCHING) {
              mPromoHeaderType = ViewType.INVALID_PROMO;
@@ -154,9 +154,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
-@@ -21,15 +21,9 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+@@ -22,15 +22,9 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
  import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.signin.IdentityServicesProvider;
 -import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
  import org.chromium.chrome.browser.signin.ProfileDataCache;
@@ -167,10 +167,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.signin.SyncPromoView;
 -import org.chromium.chrome.browser.sync.AndroidSyncSettings;
 -import org.chromium.chrome.browser.sync.AndroidSyncSettings.AndroidSyncSettingsObserver;
+ import org.chromium.components.signin.AccountManagerFacade;
  import org.chromium.components.signin.AccountManagerFacadeProvider;
  import org.chromium.components.signin.AccountsChangeObserver;
- import org.chromium.components.signin.base.CoreAccountInfo;
-@@ -44,7 +38,7 @@ import java.lang.annotation.RetentionPolicy;
+@@ -46,7 +40,7 @@ import java.lang.annotation.RetentionPolicy;
   * Class that manages all the logic and UI behind the signin promo header in the bookmark
   * content UI. The header is shown only on certain situations, (e.g., not signed in).
   */
@@ -179,34 +179,35 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
                                       ProfileDataCache.Observer, AccountsChangeObserver {
      /**
       * Specifies the various states in which the Bookmarks promo can be.
-@@ -65,7 +59,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -67,7 +61,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      private static @Nullable @PromoState Integer sPromoStateForTests;
  
      private final Context mContext;
 -    private final SigninManager mSignInManager;
+     private final AccountManagerFacade mAccountManagerFacade;
      private final Runnable mPromoHeaderChangeAction;
  
-     private @Nullable ProfileDataCache mProfileDataCache;
-@@ -80,11 +73,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -83,12 +76,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          mContext = context;
          mPromoHeaderChangeAction = promoHeaderChangeAction;
  
 -        AndroidSyncSettings.get().registerObserver(this);
 -
--        mSignInManager = IdentityServicesProvider.get().getSigninManager();
+-        mSignInManager = IdentityServicesProvider.get().getSigninManager(
+-                Profile.getLastUsedRegularProfile());
 -        mSignInManager.addSignInStateObserver(this);
 -
+         mAccountManagerFacade = AccountManagerFacadeProvider.getInstance();
+ 
          mPromoState = calculatePromoState();
-         if (mPromoState == PromoState.PROMO_SYNC) {
-             SharedPreferencesManager.getInstance().incrementInt(
-@@ -110,15 +98,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -116,15 +103,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
       * Clean ups the class. Must be called once done using this class.
       */
      void destroy() {
 -        AndroidSyncSettings.get().unregisterObserver(this);
 -
          if (mSigninPromoController != null) {
-             AccountManagerFacadeProvider.getInstance().removeObserver(this);
+             mAccountManagerFacade.removeObserver(this);
              mProfileDataCache.removeObserver(this);
              mSigninPromoController.onPromoDestroyed();
          }
@@ -215,7 +216,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      /**
-@@ -129,18 +113,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -135,18 +118,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return mPromoState;
      }
  
@@ -234,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * @return Sync promo header {@link ViewHolder} instance that can be used with
       *         {@link RecyclerView}.
-@@ -152,56 +124,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -158,54 +129,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return new ViewHolder(view) {};
      }
  
@@ -243,15 +244,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -     * @param view The view to be configured.
 -     */
 -    void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) {
--        SigninPromoUtil.setupPromoViewFromCache(mSigninPromoController, mProfileDataCache, view,
--                this::setPersonalizedSigninPromoDeclined);
+-        SigninPromoUtil.setupSigninPromoViewFromCache(mSigninPromoController, mProfileDataCache,
+-                view, this::setPersonalizedSigninPromoDeclined);
 -    }
 -
 -    void setupPersonalizedSyncPromo(PersonalizedSigninPromoView view) {
--        setupPersonalizedSigninPromo(view);
--        view.getStatusMessage().setVisibility(View.VISIBLE);
--        view.getChooseAccountButton().setVisibility(View.GONE);
--        view.getSigninButton().setText(R.string.sync_promo_turn_on_sync);
+-        SigninPromoUtil.setupSyncPromoViewFromCache(mSigninPromoController, mProfileDataCache, view,
+-                this::setPersonalizedSigninPromoDeclined);
 -    }
 -
 -    /**
@@ -292,11 +291,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      private @PromoState int calculatePromoState() {
-@@ -209,30 +136,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -213,30 +141,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
              return sPromoStateForTests;
          }
  
--        if (!AndroidSyncSettings.get().isMasterSyncEnabled()) {
+-        if (!AndroidSyncSettings.get().doesMasterSyncSettingAllowChromeSync()) {
 -            return PromoState.PROMO_NONE;
 -        }
 -
@@ -323,7 +322,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          return PromoState.PROMO_NONE;
      }
  
-@@ -254,29 +157,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -258,29 +162,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          mProfileDataCache.addObserver(this);
      }
  
@@ -353,7 +352,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      // ProfileDataCache.Observer implementation.
      @Override
      public void onProfileDataUpdated(String accountId) {
-@@ -290,7 +170,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -294,7 +175,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      }
  
      private void triggerPromoUpdate() {

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

@@ -12,7 +12,7 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -337,7 +337,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -291,7 +291,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
  std::string DomDistillerViewerSource::GetContentSecurityPolicy(
      network::mojom::CSPDirectiveName directive) {
    if (directive == network::mojom::CSPDirectiveName::StyleSrc) {
@@ -20,7 +20,7 @@ diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_sourc
 +    return "style-src 'self';";
    } else if (directive == network::mojom::CSPDirectiveName::ChildSrc) {
      return "child-src *;";
-   }
+   } else if (directive ==
 diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
 --- a/components/dom_distiller/core/html/preview.html
 +++ b/components/dom_distiller/core/html/preview.html
@@ -36,7 +36,7 @@ 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
 --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
-@@ -116,7 +116,7 @@ function maybeSetWebFont() {
+@@ -109,7 +109,7 @@ function maybeSetWebFont() {
    }
  
    const e = document.createElement('link');

Файловите разлики са ограничени, защото са твърде много
+ 221 - 360
build/patches/Disable-safe-browsing.patch


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

@@ -22,7 +22,7 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -461,7 +461,7 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) {
+@@ -491,7 +491,7 @@ void SetRuntimeFeaturesFromCommandLine(const base::CommandLine& command_line) {
        {wrf::EnableWebGPU, switches::kEnableUnsafeWebGPU, true},
        {wrf::EnablePresentationAPI, switches::kDisablePresentationAPI, false},
        {wrf::EnableTextFragmentAnchor, switches::kDisableScrollToTextFragment,

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

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

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

@@ -15,7 +15,7 @@ leak information through the TextClassifier set by OEM, if any
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -376,7 +376,7 @@ const base::Feature kChromeSharingHubV15{"ChromeSharingHubV15",
+@@ -396,7 +396,7 @@ const base::Feature kChromeSharingHubV15{"ChromeSharingHubV15",
                                           base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
-@@ -815,7 +815,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
+@@ -814,7 +814,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
              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
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -562,7 +562,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
+@@ -609,7 +609,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
  // Signed Exchange Reporting for distributors
  // https://www.chromestatus.com/features/5687904902840320
  const base::Feature kSignedExchangeReportingForDistributors{
@@ -18,7 +18,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
  
  // Subresource prefetching+loading via Signed HTTP Exchange
  // https://www.chromestatus.com/features/5126805474246656
-@@ -572,7 +572,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
+@@ -619,7 +619,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/features/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",

+ 6 - 6
build/patches/Disable-support-for-RAR-files-inspection.patch

@@ -11,19 +11,19 @@ Subject: Disable support for RAR files inspection
 diff --git a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
 --- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
 +++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
-@@ -87,7 +87,7 @@ void FileAnalyzer::Start(const base::FilePath& target_path,
+@@ -90,7 +90,7 @@ void FileAnalyzer::Start(const base::FilePath& target_path,
    if (inspection_type == DownloadFileType::ZIP) {
      StartExtractZipFeatures();
    } else if (inspection_type == DownloadFileType::RAR) {
 -    StartExtractRarFeatures();
 +    LOG(WARNING) << "Safebrowser inspection of rar files is disabled in this build";
- #if defined(OS_MACOSX)
+ #if defined(OS_MAC)
    } else if (inspection_type == DownloadFileType::DMG) {
      StartExtractDmgFeatures();
 diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/BUILD.gn
 --- a/chrome/common/safe_browsing/BUILD.gn
 +++ b/chrome/common/safe_browsing/BUILD.gn
-@@ -52,38 +52,6 @@ if (safe_browsing_mode == 1) {
+@@ -41,38 +41,6 @@ if (safe_browsing_mode == 1) {
      public_deps = [ "//components/safe_browsing/core:csd_proto" ]
    }
  
@@ -62,7 +62,7 @@ diff --git a/chrome/common/safe_browsing/BUILD.gn b/chrome/common/safe_browsing/
    source_set("disk_image_type_sniffer_mac") {
      sources = [
        "disk_image_type_sniffer_mac.cc",
-@@ -150,7 +118,6 @@ source_set("safe_browsing") {
+@@ -135,7 +103,6 @@ source_set("safe_browsing") {
        ":archive_analyzer_results",
        ":binary_feature_extractor",
        ":download_type_util",
@@ -79,9 +79,9 @@ diff --git a/chrome/services/file_util/safe_archive_analyzer.cc b/chrome/service
  #include "chrome/common/safe_browsing/archive_analyzer_results.h"
 -#include "chrome/common/safe_browsing/rar_analyzer.h"
  #include "chrome/common/safe_browsing/zip_analyzer.h"
- #include "mojo/public/cpp/bindings/strong_binding.h"
  
-@@ -48,8 +47,7 @@ void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
+ #if defined(OS_MAC)
+@@ -47,8 +46,7 @@ void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
                                           AnalyzeRarFileCallback callback) {
    DCHECK(rar_file.IsValid());
  

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

@@ -3,41 +3,40 @@ Date: Mon, 11 Nov 2019 23:09:48 +0100
 Subject: Disable sync services menu entry
 
 ---
- chrome/android/java/res/xml/main_preferences.xml    | 6 ------
- chrome/android/java/res/xml/privacy_preferences.xml | 8 --------
- 2 files changed, 14 deletions(-)
+ chrome/android/java/res/xml/main_preferences.xml    | 8 --------
+ chrome/android/java/res/xml/privacy_preferences.xml | 5 -----
+ 2 files changed, 13 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -14,12 +14,6 @@
+@@ -23,14 +23,6 @@
          android:key="sign_in"
-         android:order="1"
+         android:order="3"
          android:title="@string/sign_in_to_chrome"/>
 -    <org.chromium.components.browser_ui.settings.ChromeBasePreference
 -        android:key="sync_and_services"
--        android:order="2"
+-        android:order="4"
 -        android:layout="@layout/account_management_account_row"
 -        android:title="@string/prefs_sync_and_services"
 -        android:fragment="org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings"/>
- 
-     <PreferenceCategory
-         android:key="basics_section"
+-    <!-- manage_sync and google_services replace sync_and_services if MOBILE_IDENTITY_CONSISTENCY
+-         is enabled. -->
+     <org.chromium.components.browser_ui.settings.ChromeBasePreference
+         android:key="manage_sync"
+         android:order="5"
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -33,12 +33,4 @@
-         android:title="@string/clear_browsing_data_title"
-         android:summary="@string/clear_browsing_data_summary"
-         android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
--    <Preference
--        android:key="sync_and_services_link_divider"
--        android:layout="@layout/divider_preference"
--        android:selectable="false"/>
+@@ -40,9 +40,4 @@
+         android:summary="@string/prefs_safe_browsing_summary"
+         android:fragment="org.chromium.chrome.browser.safe_browsing.settings.SecuritySettingsFragment"
+         android:order="6"/>
 -    <org.chromium.components.browser_ui.settings.TextMessagePreference
 -        android:key="sync_and_services_link"
 -        android:summary="@string/privacy_sync_and_services_link"
--        app:allowDividerBelow="false" />
+-        app:allowDividerBelow="false"
+-        android:order="7"/>
  </PreferenceScreen>
 -- 
 2.17.1

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

@@ -10,7 +10,7 @@ author: Chad Miller <chad.miller@canonical.com>
 diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
 --- a/components/content_settings/core/browser/cookie_settings.cc
 +++ b/components/content_settings/core/browser/cookie_settings.cc
-@@ -63,7 +63,7 @@ void CookieSettings::GetCookieSettings(
+@@ -65,7 +65,7 @@ void CookieSettings::GetCookieSettings(
  void CookieSettings::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

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

@@ -3,15 +3,15 @@ Date: Thu, 27 Feb 2020 23:23:59 +0100
 Subject: Do not compile QR code sharing
 
 ---
- chrome/android/java/AndroidManifest.xml       | 16 ------------
- .../ChromeProvidedSharingOptionsProvider.java | 25 -------------------
- chrome/browser/share/android/java_sources.gni | 18 -------------
- 3 files changed, 59 deletions(-)
+ chrome/android/java/AndroidManifest.xml       | 16 ---------------
+ .../ChromeProvidedSharingOptionsProvider.java | 20 -------------------
+ chrome/browser/share/android/java_sources.gni | 18 -----------------
+ 3 files changed, 54 deletions(-)
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -729,22 +729,6 @@ by a child template that "extends" this file.
+@@ -740,22 +740,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -37,44 +37,39 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
 +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProvider.java
-@@ -22,7 +22,6 @@ import org.chromium.chrome.browser.preferences.Pref;
- import org.chromium.chrome.browser.preferences.PrefServiceBridge;
+@@ -23,7 +23,6 @@ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
  import org.chromium.chrome.browser.share.ChromeShareExtras;
+ import org.chromium.chrome.browser.share.link_to_text.LinkToTextCoordinator;
 -import org.chromium.chrome.browser.share.qrcode.QrCodeCoordinator;
  import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator;
  import org.chromium.chrome.browser.share.share_sheet.ShareSheetPropertyModelBuilder.ContentType;
  import org.chromium.chrome.browser.tab.Tab;
-@@ -145,10 +144,6 @@ class ChromeProvidedSharingOptionsProvider {
-             mOrderedFirstPartyOptions.add(createCopyTextFirstPartyOption());
+@@ -151,10 +150,6 @@ class ChromeProvidedSharingOptionsProvider {
+                 && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_HIGHLIGHTS_ANDROID)) {
+             mOrderedFirstPartyOptions.add(createHighlightsFirstPartyOption());
          }
-         mOrderedFirstPartyOptions.add(createSendTabToSelfFirstPartyOption());
 -        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)
 -                && !mTabProvider.get().getWebContents().isIncognito()) {
 -            mOrderedFirstPartyOptions.add(createQrCodeFirstPartyOption());
 -        }
-         if (mPrefServiceBridge.getBoolean(Pref.PRINTING_ENABLED)) {
+         if (UserPrefs.get(Profile.getLastUsedRegularProfile()).getBoolean(Pref.PRINTING_ENABLED)) {
              mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption());
          }
-@@ -261,26 +256,6 @@ class ChromeProvidedSharingOptionsProvider {
+@@ -265,21 +260,6 @@ class ChromeProvidedSharingOptionsProvider {
                          ContentType.IMAGE));
      }
  
 -    private FirstPartyOption createQrCodeFirstPartyOption() {
 -        PropertyModel propertyModel = ShareSheetPropertyModelBuilder.createPropertyModel(
 -                AppCompatResources.getDrawable(mActivity, R.drawable.qr_code),
--                mActivity.getResources().getString(R.string.qr_code_share_icon_label),
--                (currentActivity)
--                        -> {
+-                mActivity.getResources().getString(R.string.qr_code_share_icon_label), (view) -> {
 -                    RecordUserAction.record("SharingHubAndroid.QRCodeSelected");
--                    RecordHistogram.recordMediumTimesHistogram(
--                            "Sharing.SharingHubAndroid.TimeToShare",
--                            System.currentTimeMillis() - mShareStartTime);
+-                    recordTimeToShare(mShareStartTime);
 -                    mBottomSheetController.hideContent(mBottomSheetContent, true);
 -                    QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity, mUrl);
 -                    qrCodeCoordinator.show();
--                },
--                /*isFirstParty=*/true);
+-                });
 -        return new FirstPartyOption(propertyModel,
 -                Arrays.asList(ContentType.LINK_PAGE_VISIBLE, ContentType.LINK_PAGE_NOT_VISIBLE,
 -                        ContentType.IMAGE));
@@ -88,8 +83,8 @@ diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/shar
 +++ b/chrome/browser/share/android/java_sources.gni
 @@ -8,24 +8,6 @@ share_java_sources = [
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/BitmapDownloadRequest.java",
-   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/BitmapUriRequest.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/clipboard/ClipboardImageFileProvider.java",
+   "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QRCodeGenerationRequest.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeCoordinator.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialog.java",

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

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

+ 50 - 0
build/patches/Enable-DoH.patch

@@ -0,0 +1,50 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Sat, 26 Sep 2020 14:23:19 +0100
+Subject: Enable DoH
+
+---
+ .../chrome/browser/privacy/secure_dns/SecureDnsBridge.java  | 2 +-
+ chrome/common/chrome_features.cc                            | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/chrome/browser/privacy/java/src/org/chromium/chrome/browser/privacy/secure_dns/SecureDnsBridge.java b/chrome/browser/privacy/java/src/org/chromium/chrome/browser/privacy/secure_dns/SecureDnsBridge.java
+--- a/chrome/browser/privacy/java/src/org/chromium/chrome/browser/privacy/secure_dns/SecureDnsBridge.java
++++ b/chrome/browser/privacy/java/src/org/chromium/chrome/browser/privacy/secure_dns/SecureDnsBridge.java
+@@ -46,7 +46,7 @@ class SecureDnsBridge {
+         // Must match features::kDnsOverHttpsShowUiParam.
+         final String showUiParam = "ShowUi";
+         // Must match the default value for this param.
+-        final boolean showUiParamDefault = false;
++        final boolean showUiParamDefault = true;
+ 
+         return ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
+                 ChromeFeatureList.DNS_OVER_HTTPS, showUiParam, showUiParamDefault);
+diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
+--- a/chrome/common/chrome_features.cc
++++ b/chrome/common/chrome_features.cc
+@@ -263,7 +263,7 @@ const base::Feature kDesktopPWAsWithoutExtensions{
+ 
+ // Enable DNS over HTTPS (DoH).
+ const base::Feature kDnsOverHttps{"DnsOverHttps",
+-                                  base::FEATURE_DISABLED_BY_DEFAULT};
++                                  base::FEATURE_ENABLED_BY_DEFAULT};
+ 
+ // Provides a mechanism to remove providers from the dropdown list in the
+ // settings UI. Separate multiple provider ids with commas. See the
+@@ -274,11 +274,11 @@ const base::FeatureParam<std::string> kDnsOverHttpsDisabledProvidersParam{
+ // Set whether fallback to insecure DNS is allowed by default. This setting may
+ // be overridden for individual transactions.
+ const base::FeatureParam<bool> kDnsOverHttpsFallbackParam{&kDnsOverHttps,
+-                                                          "Fallback", true};
++                                                          "Fallback", false};
+ 
+ // Sets whether the DoH setting is displayed in the settings UI.
+ const base::FeatureParam<bool> kDnsOverHttpsShowUiParam{&kDnsOverHttps,
+-                                                        "ShowUi", false};
++                                                        "ShowUi", true};
+ 
+ // Supply one or more space-separated DoH server URI templates to use when this
+ // feature is enabled. If no templates are specified, then a hardcoded mapping
+-- 
+2.17.1
+

+ 1 - 1
build/patches/Enable-SPPI-for-devices-with-enough-memory.patch

@@ -10,7 +10,7 @@ Subject: Enable SPPI for devices with enough memory
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -637,11 +637,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
+@@ -690,11 +690,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
  // browser_features, as they are only used on the browser side.
  const base::Feature kSitePerProcess {
    "site-per-process",

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

@@ -11,19 +11,19 @@ Unexpire #darken-websites-checkbox-in-themes-setting
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -783,7 +783,7 @@
+@@ -898,7 +898,7 @@
    {
-     "name": "darken-websites-checkbox-in-themes-setting",
-     "owners": [ "lazzzis@google.com", "twellington" ],
+     "name": "disable-keepalive-fetch",
+     "owners": [ "yhirano" ],
 -    "expiry_milestone": 83
 +    "expiry_milestone": -1
    },
    {
-     "name": "data-saver-server-previews",
+     "name": "disable-office-editing-component-app",
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -432,7 +432,7 @@ const base::Feature kContextualSearchTranslations{
+@@ -452,7 +452,7 @@ const base::Feature kContextualSearchTranslations{
      "ContextualSearchTranslations", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kDarkenWebsitesCheckboxInThemesSetting{

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

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

+ 0 - 37
build/patches/Enable-improved-cookie-controls-by-default.patch

@@ -1,37 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Fri, 7 Aug 2020 13:41:21 +0200
-Subject: Enable improved cookie controls by default
-
----
- components/content_settings/core/common/features.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc
---- a/components/content_settings/core/common/features.cc
-+++ b/components/content_settings/core/common/features.cc
-@@ -11,7 +11,7 @@ namespace content_settings {
- 
- // Enables an improved UI for third-party cookie blocking in incognito mode.
- const base::Feature kImprovedCookieControls{"ImprovedCookieControls",
--                                            base::FEATURE_DISABLED_BY_DEFAULT};
-+                                            base::FEATURE_ENABLED_BY_DEFAULT};
- 
- // Default setting for improved cookie controls.
- const base::FeatureParam<bool> kImprovedCookieControlsDefaultInIncognito{
-@@ -20,10 +20,10 @@ const base::FeatureParam<bool> kImprovedCookieControlsDefaultInIncognito{
- // Enables an improved UI for existing third-party cookie blocking users.
- const base::Feature kImprovedCookieControlsForThirdPartyCookieBlocking{
-     "ImprovedCookieControlsForThirdPartyCookieBlocking",
--    base::FEATURE_DISABLED_BY_DEFAULT};
-+    base::FEATURE_ENABLED_BY_DEFAULT};
- 
- const base::Feature kDisallowWildcardsInPluginContentSettings{
-     "DisallowWildcardsInPluginContentSettings",
-     base::FEATURE_ENABLED_BY_DEFAULT};
- 
--}  // namespace content_settings
-\ No newline at end of file
-+}  // namespace content_settings
--- 
-2.17.1
-

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

@@ -15,7 +15,7 @@ Expose show-legacy-tls-warnings flag on Android as well
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -5366,11 +5366,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -5790,11 +5790,9 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kElasticOverscrollWin)},
  #endif
  

+ 1 - 1
build/patches/Enable-prefetch-privacy-changes-by-default.patch

@@ -9,7 +9,7 @@ Subject: Enable prefetch-privacy-changes by default
 diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
 --- a/third_party/blink/common/features.cc
 +++ b/third_party/blink/common/features.cc
-@@ -283,7 +283,7 @@ const base::Feature kFontAccess{"FontAccess",
+@@ -303,7 +303,7 @@ const base::Feature kWebComponentsV0{"WebComponentsV0",
  // Prefetch request properties are updated to be privacy-preserving. See
  // crbug.com/988956.
  const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges",

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

@@ -3,21 +3,21 @@ Date: Fri, 31 Jul 2020 08:28:35 +0200
 Subject: Enable reduced-referrer-granularity by default
 
 ---
- content/public/common/content_features.cc | 2 +-
+ third_party/blink/common/features.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
---- a/content/public/common/content_features.cc
-+++ b/content/public/common/content_features.cc
-@@ -456,7 +456,7 @@ const base::Feature kProactivelySwapBrowsingInstance{
+diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
+--- a/third_party/blink/common/features.cc
++++ b/third_party/blink/common/features.cc
+@@ -698,7 +698,7 @@ const base::Feature kCompositingOptimizations{
  // Reduce the amount of information in the default 'referer' header for
  // cross-origin requests.
  const base::Feature kReducedReferrerGranularity{
 -    "ReducedReferrerGranularity", base::FEATURE_DISABLED_BY_DEFAULT};
 +    "ReducedReferrerGranularity", base::FEATURE_ENABLED_BY_DEFAULT};
  
- // Controls whether FileURLLoaderFactory can fetch additional files based on the
- // isolated world's origin. This feature is disabled by default because we want
+ // Enables the user activated exponential delay in the ContentCapture task.
+ const base::Feature kContentCaptureUserActivatedDelay = {
 -- 
 2.17.1
 

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

@@ -16,8 +16,8 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
 -                                     base::FEATURE_DISABLED_BY_DEFAULT};
 +                                     base::FEATURE_ENABLED_BY_DEFAULT};
  
- // When enabled, use the maximum possible bounds in compositing overlap testing
- // for fixed position elements.
+ const base::Feature kMeasureMemoryExperiment{"MeasureMemoryExperiment",
+                                              base::FEATURE_DISABLED_BY_DEFAULT};
 -- 
 2.17.1
 

+ 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/components/permissions/permission_manager.cc b/components/permissions/permission_manager.cc
 --- a/components/permissions/permission_manager.cc
 +++ b/components/permissions/permission_manager.cc
-@@ -682,6 +682,10 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
+@@ -676,6 +676,10 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
    if (status != CONTENT_SETTING_DEFAULT)
      return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
    PermissionContextBase* context = GetPermissionContext(permission);

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

@@ -26,8 +26,8 @@ diff --git a/storage/browser/quota/quota_features.cc b/storage/browser/quota/quo
 -    &kIncognitoDynamicQuota, "IncognitoQuotaRatioUpperBound", 0.2};
 +    &kIncognitoDynamicQuota, "IncognitoQuotaRatioUpperBound", 0.3};
  
- }  // namespace features
- }  // namespace storage
+ // Enables Storage Pressure Event.
+ const base::Feature kStoragePressureEvent{"StoragePressureEvent",
 -- 
 2.17.1
 

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

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

+ 2 - 2
build/patches/Hide-send-reports-checkbox.patch

@@ -9,13 +9,13 @@ Subject: Hide send reports checkbox
 diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
 --- a/chrome/android/java/res/layout/fre_tosanduma.xml
 +++ b/chrome/android/java/res/layout/fre_tosanduma.xml
-@@ -70,7 +70,7 @@
+@@ -91,7 +91,7 @@
                          android:layout_height="wrap_content"
                          android:lineSpacingMultiplier="1.4"
                          android:text="@string/fre_send_report_check"
 -                        android:textAppearance="@style/TextAppearance.TextMedium.Primary" />
 +                        android:textAppearance="@style/TextAppearance.TextMedium.Primary" android:visibility="gone" />
-                     </LinearLayout>
+                 </LinearLayout>
              </LinearLayout>
          </LinearLayout>
 -- 

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

@@ -11,9 +11,9 @@ Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment
 diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
 --- a/components/omnibox/browser/autocomplete_result.cc
 +++ b/components/omnibox/browser/autocomplete_result.cc
-@@ -76,7 +76,8 @@ struct MatchGURLHash {
+@@ -70,7 +70,8 @@ struct MatchGURLHash {
  // static
- size_t AutocompleteResult::GetMaxMatches(bool input_from_omnibox_focus) {
+ size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
  #if (defined(OS_ANDROID))
 -  constexpr size_t kDefaultMaxAutocompleteMatches = 5;
 +  // changed from 6, this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
@@ -24,7 +24,7 @@ diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omni
 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
 +++ b/components/omnibox/browser/omnibox_field_trial.cc
-@@ -361,11 +361,11 @@ void OmniboxFieldTrial::GetDemotionsByType(
+@@ -382,11 +382,11 @@ void OmniboxFieldTrial::GetDemotionsByType(
  
  size_t OmniboxFieldTrial::GetProviderMaxMatches(
      AutocompleteProvider::Type provider) {
@@ -38,7 +38,7 @@ diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omni
      return default_max_matches_per_provider;
  
    std::string param_value = base::GetFieldTrialParamValueByFeature(
-@@ -392,7 +392,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches(
+@@ -413,7 +413,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches(
        else if (k == provider)
          return v;
      }

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

@@ -21,7 +21,7 @@ Send a random key press to circumvent idle status detection
 diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
 --- a/third_party/blink/renderer/core/dom/BUILD.gn
 +++ b/third_party/blink/renderer/core/dom/BUILD.gn
-@@ -140,6 +140,8 @@ blink_core_sources("dom") {
+@@ -178,6 +178,8 @@ blink_core_sources("dom") {
      "global_event_handlers.h",
      "icon_url.cc",
      "icon_url.h",
@@ -33,7 +33,7 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -264,6 +264,7 @@
+@@ -273,6 +273,7 @@
  #include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h"
  #include "third_party/blink/renderer/core/page/scrolling/scroll_state_callback.h"
  #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
@@ -41,7 +41,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
  #include "third_party/blink/renderer/core/page/scrolling/text_fragment_anchor.h"
  #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
-@@ -328,6 +329,8 @@
+@@ -338,6 +339,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/string_buffer.h"
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  
@@ -50,7 +50,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  using WeakDocumentSet = blink::HeapHashSet<blink::WeakMember<blink::Document>>;
  static WeakDocumentSet& liveDocumentSet();
-@@ -6803,6 +6806,61 @@ void Document::MarkFirstPaint() {
+@@ -6874,6 +6877,61 @@ void Document::MarkFirstPaint() {
    MaybeExecuteDelayedAsyncScripts();
  }
  
@@ -112,7 +112,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  void Document::FinishedParsing() {
    DCHECK(!GetScriptableDocumentParser() || !parser_->IsParsing());
    DCHECK(!GetScriptableDocumentParser() || ready_state_ != kLoading);
-@@ -6858,6 +6916,10 @@ void Document::FinishedParsing() {
+@@ -6929,6 +6987,10 @@ void Document::FinishedParsing() {
  
      frame->Loader().FinishedParsing();
  
@@ -126,7 +126,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -1692,6 +1692,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1670,6 +1670,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  
@@ -161,7 +161,7 @@ new file mode 100644
 diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
 --- a/third_party/blink/renderer/core/html/html_script_element.cc
 +++ b/third_party/blink/renderer/core/html/html_script_element.cc
-@@ -167,6 +167,11 @@ void HTMLScriptElement::setTextContent(
+@@ -168,6 +168,11 @@ void HTMLScriptElement::setTextContent(
    }
  }
  
@@ -176,7 +176,7 @@ diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third
 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
 +++ b/third_party/blink/renderer/core/html/html_script_element.h
-@@ -54,6 +54,7 @@ class CORE_EXPORT HTMLScriptElement final : public HTMLElement,
+@@ -53,6 +53,7 @@ class CORE_EXPORT HTMLScriptElement final : public HTMLElement,
    void setInnerText(const StringOrTrustedScript&, ExceptionState&) override;
    void setTextContent(const StringOrTrustedScript&, ExceptionState&) override;
    void setTextContent(const String&) override;

+ 7 - 20
build/patches/Modify-default-preferences.patch

@@ -10,14 +10,13 @@ Subject: Modify default preferences
  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 ++--
  .../safe_browsing/core/common/safe_browsing_prefs.cc     | 4 ++--
- 14 files changed, 18 insertions(+), 25 deletions(-)
+ 13 files changed, 17 insertions(+), 24 deletions(-)
 
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
@@ -34,7 +33,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1277,7 +1277,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1290,7 +1290,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -70,7 +69,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -262,7 +262,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -257,7 +257,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -108,22 +107,10 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
    registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
    registry->RegisterDictionaryPref(prefs::kAppWindowPlacement);
-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
-+++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
-@@ -59,7 +59,7 @@ void NavigationCorrectionTabObserver::SetAllowEnableCorrectionsForTesting(
- void NavigationCorrectionTabObserver::RegisterProfilePrefs(
-     user_prefs::PrefRegistrySyncable* prefs) {
-   prefs->RegisterBooleanPref(embedder_support::kAlternateErrorPagesEnabled,
--                             true,
-+                             false,
-                              user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
- }
- 
 diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
 --- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
 +++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
-@@ -109,10 +109,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
+@@ -147,10 +147,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
    registry->RegisterBooleanPref(prefs::kLocalDiscoveryEnabled, true);
    registry->RegisterBooleanPref(
        prefs::kLocalDiscoveryNotificationsEnabled,
@@ -149,7 +136,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -948,10 +948,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -955,10 +955,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -161,7 +148,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
    }
  
-@@ -1587,8 +1584,8 @@ void AutofillManager::Reset() {
+@@ -1593,8 +1590,8 @@ void AutofillManager::Reset() {
  #if defined(OS_ANDROID) || defined(OS_IOS)
    autofill_assistant_.Reset();
  #endif
@@ -205,7 +192,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
 diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc
 --- a/components/safe_browsing/core/common/safe_browsing_prefs.cc
 +++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc
-@@ -189,9 +189,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -205,9 +205,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(

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

@@ -56,9 +56,9 @@ Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2098,6 +2098,7 @@ static_library("browser") {
-     "//services/data_decoder/public/cpp",
+@@ -2132,6 +2132,7 @@ static_library("browser") {
      "//services/device/public/cpp:device_features",
+     "//services/device/public/cpp/serial:switches",
      "//services/device/public/cpp/usb",
 +    "//third_party/ungoogled:switches",
      "//services/device/public/mojom",
@@ -68,14 +68,14 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
 @@ -164,6 +164,7 @@
+ #include "services/media_session/public/cpp/features.h"
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
- #include "services/service_manager/sandbox/features.h"
 +#include "third_party/ungoogled/ungoogled_switches.h"
- #include "services/service_manager/sandbox/switches.h"
+ #include "storage/browser/quota/quota_features.h"
  #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
  #include "third_party/blink/public/common/features.h"
-@@ -2017,12 +2018,24 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2281,12 +2282,24 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
       flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
       SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
@@ -103,7 +103,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -216,6 +216,7 @@ jumbo_source_set("browser") {
+@@ -221,6 +221,7 @@ source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -114,7 +114,7 @@ diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
 diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
 --- a/content/browser/renderer_host/render_process_host_impl.cc
 +++ b/content/browser/renderer_host/render_process_host_impl.cc
-@@ -224,6 +224,7 @@
+@@ -223,6 +223,7 @@
  #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
  #include "third_party/blink/public/mojom/disk_allocator.mojom.h"
  #include "third_party/blink/public/public_buildflags.h"
@@ -122,7 +122,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
  #include "third_party/skia/include/core/SkBitmap.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/base/ui_base_switches.h"
-@@ -3294,6 +3295,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3333,6 +3334,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisablePreferCompositingToLCDText,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -135,7 +135,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content
 diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 --- a/content/child/BUILD.gn
 +++ b/content/child/BUILD.gn
-@@ -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/strings",
      "//third_party/ced",
@@ -146,7 +146,7 @@ diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
 diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
 --- a/content/child/runtime_features.cc
 +++ b/content/child/runtime_features.cc
-@@ -26,6 +26,7 @@
+@@ -28,6 +28,7 @@
  #include "services/network/public/cpp/features.h"
  #include "services/network/public/cpp/network_switches.h"
  #include "third_party/blink/public/common/features.h"
@@ -154,7 +154,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
  #include "third_party/blink/public/common/switches.h"
  #include "third_party/blink/public/platform/web_runtime_features.h"
  #include "ui/accessibility/accessibility_features.h"
-@@ -535,6 +536,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -582,6 +583,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
    // They're moved here to distinguish them from actual base checks
    WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
  
@@ -171,7 +171,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -223,6 +223,9 @@ class WebRuntimeFeatures {
+@@ -224,6 +224,9 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
@@ -184,7 +184,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -35,6 +35,7 @@
+@@ -41,6 +41,7 @@
  #include "base/auto_reset.h"
  #include "base/macros.h"
  #include "base/optional.h"
@@ -192,7 +192,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/scroll_snap_data.h"
-@@ -2513,6 +2514,23 @@ void Document::UpdateStyleAndLayoutTree() {
+@@ -2475,6 +2476,23 @@ void Document::UpdateStyleAndLayoutTree() {
  #if DCHECK_IS_ON()
    AssertLayoutTreeUpdated(*this);
  #endif
@@ -219,7 +219,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
 --- a/third_party/blink/renderer/core/dom/document.h
 +++ b/third_party/blink/renderer/core/dom/document.h
-@@ -451,6 +451,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -438,6 +438,10 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -230,7 +230,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    String visibilityState() const;
    bool IsPageVisible() const;
    bool hidden() const;
-@@ -1974,6 +1978,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1943,6 +1947,9 @@ class CORE_EXPORT Document : public ContainerNode,
  
    base::ElapsedTimer start_time_;
  
@@ -243,7 +243,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
 diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
 --- a/third_party/blink/renderer/core/dom/element.cc
 +++ b/third_party/blink/renderer/core/dom/element.cc
-@@ -2031,6 +2031,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2019,6 +2019,11 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -255,7 +255,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return MakeGarbageCollected<DOMRectList>(quads);
  }
  
-@@ -2048,6 +2053,9 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -2036,6 +2041,9 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -357,7 +357,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1552,7 +1552,9 @@ jumbo_component("platform") {
+@@ -1548,7 +1548,9 @@ component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -368,7 +368,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
  
    public_deps = [
      ":blink_platform_public_deps",
-@@ -1593,6 +1595,7 @@ jumbo_component("platform") {
+@@ -1592,6 +1594,7 @@ component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -379,8 +379,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -709,4 +709,16 @@ void WebRuntimeFeatures::EnableContentIndex(bool enable) {
-   RuntimeEnabledFeatures::SetContentIndexEnabled(enable);
+@@ -729,4 +729,16 @@ void WebRuntimeFeatures::EnableConversionMeasurementInfraSupport(bool enable) {
+   RuntimeEnabledFeatures::SetConversionMeasurementInfraSupportEnabled(enable);
  }
  
 +void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
@@ -446,10 +446,10 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  #include "v8/include/v8.h"
  
  namespace blink {
-@@ -128,7 +132,162 @@ bool StaticBitmapImage::CopyToByteArray(
-   DCHECK(read_pixels_successful ||
-          !sk_image->bounds().intersect(SkIRect::MakeXYWH(
-              rect.X(), rect.Y(), info.width(), info.height())));
+@@ -129,7 +133,162 @@ bool StaticBitmapImage::CopyToByteArray(
+               .bounds()
+               .intersect(SkIRect::MakeXYWH(rect.X(), rect.Y(), info.width(),
+                                            info.height())));
 +
 +  if (read_pixels_successful && RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
 +    ShuffleSubchannelColorData(dst.data(), info, rect.X(), rect.Y());
@@ -624,7 +624,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -752,6 +752,15 @@
+@@ -795,6 +795,15 @@
        origin_trial_feature_name: "FeaturePolicyReporting",
        status: "experimental"
      },

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

@@ -9,7 +9,7 @@ Subject: Open YouTube links in Bromite
 diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
-@@ -493,6 +493,7 @@ public class ExternalNavigationHandler {
+@@ -499,6 +499,7 @@ public class ExternalNavigationHandler {
              startActivity(intent, false, mDelegate);
              return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT;
          }
@@ -17,7 +17,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component
      }
  
      private static void loadUrlWithReferrer(
-@@ -1060,6 +1061,13 @@ public class ExternalNavigationHandler {
+@@ -1153,6 +1154,13 @@ public class ExternalNavigationHandler {
              return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
          }
  

+ 52 - 0
build/patches/Password-service-build-fixes.patch

@@ -0,0 +1,52 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Wed, 23 Sep 2020 14:47:44 +0200
+Subject: Password service build fixes
+
+---
+ .../safe_browsing/chrome_password_protection_service.h       | 2 --
+ .../password_protection/password_protection_request.cc       | 2 --
+ .../password_protection/password_protection_service.h        | 5 -----
+ 3 files changed, 9 deletions(-)
+
+diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service.h b/chrome/browser/safe_browsing/chrome_password_protection_service.h
+--- a/chrome/browser/safe_browsing/chrome_password_protection_service.h
++++ b/chrome/browser/safe_browsing/chrome_password_protection_service.h
+@@ -250,8 +250,6 @@ class ChromePasswordProtectionService : public PasswordProtectionService {
+   // |NOT_SIGNED_IN|.
+   LoginReputationClientRequest::PasswordReuseEvent::SyncAccountType
+   GetSyncAccountType() const override;
+-  safe_browsing::LoginReputationClientRequest::UrlDisplayExperiment
+-  GetUrlDisplayExperiment() const override;
+ 
+   // Stores |verdict| in the cache based on its |trigger_type|, |url|,
+   // reused |password_type|, |verdict| and |receive_time|.
+diff --git a/components/safe_browsing/content/password_protection/password_protection_request.cc b/components/safe_browsing/content/password_protection/password_protection_request.cc
+--- a/components/safe_browsing/content/password_protection/password_protection_request.cc
++++ b/components/safe_browsing/content/password_protection/password_protection_request.cc
+@@ -132,8 +132,6 @@ PasswordProtectionRequest::PasswordProtectionRequest(
+          password_type_ != PasswordType::SAVED_PASSWORD ||
+          !matching_reused_credentials_.empty());
+   request_proto_->set_trigger_type(trigger_type_);
+-  *request_proto_->mutable_url_display_experiment() =
+-      pps->GetUrlDisplayExperiment();
+ }
+ 
+ PasswordProtectionRequest::~PasswordProtectionRequest() {
+diff --git a/components/safe_browsing/content/password_protection/password_protection_service.h b/components/safe_browsing/content/password_protection/password_protection_service.h
+--- a/components/safe_browsing/content/password_protection/password_protection_service.h
++++ b/components/safe_browsing/content/password_protection/password_protection_service.h
+@@ -423,11 +423,6 @@ class PasswordProtectionService : public history::HistoryServiceObserver {
+   virtual LoginReputationClientRequest::PasswordReuseEvent::SyncAccountType
+   GetSyncAccountType() const = 0;
+ 
+-  // Get information about Delayed Warnings and Omnibox URL display experiments.
+-  // This information is sent in PhishGuard pings.
+-  virtual LoginReputationClientRequest::UrlDisplayExperiment
+-  GetUrlDisplayExperiment() const = 0;
+-
+   // Returns the reason why a ping is not sent based on the |trigger_type|,
+   // |url| and |password_type|. Crash if |CanSendPing| is true.
+   virtual RequestOutcome GetPingNotSentReason(
+-- 
+2.17.1
+

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

@@ -27,7 +27,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -419,7 +419,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -418,7 +418,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      // Disable secure DNS for any DoH server hostname lookups to avoid deadlock.
      request_->SetDisableSecureDns(true);
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
@@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -532,10 +536,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -538,10 +542,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
      } else {
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        bool advertise_brotli = false;
@@ -79,7 +79,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
          }
        }
  
-@@ -553,7 +559,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -559,7 +565,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

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

@@ -3,27 +3,42 @@ Date: Sun, 3 Nov 2019 08:22:29 +0100
 Subject: Remove SMS integration
 
 ---
- .../browser/sms/SmsUserConsentReceiver.java   | 33 ++-----------------
- .../browser/sms/SmsVerificationReceiver.java  | 30 ++---------------
- .../content/browser/sms/Wrappers.java         | 14 +-------
- 3 files changed, 6 insertions(+), 71 deletions(-)
+ .../PasswordManagerLauncher.java              |  3 --
+ .../browser/sms/SmsUserConsentReceiver.java   | 42 ++-----------------
+ .../browser/sms/SmsVerificationReceiver.java  | 30 +------------
+ .../content/browser/sms/Wrappers.java         | 14 +------
+ 4 files changed, 7 insertions(+), 82 deletions(-)
 
+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
+@@ -6,9 +6,6 @@ package org.chromium.chrome.browser.password_manager;
+ 
+ import android.app.Activity;
+ 
+-import com.google.android.gms.common.ConnectionResult;
+-import com.google.android.gms.common.GoogleApiAvailability;
+-
+ import org.chromium.base.ContextUtils;
+ import org.chromium.base.annotations.CalledByNative;
+ import org.chromium.base.metrics.RecordHistogram;
 diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
 --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
 +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java
-@@ -12,11 +12,6 @@ import android.content.IntentFilter;
+@@ -12,12 +12,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.OnFailureListener;
 -import com.google.android.gms.tasks.Task;
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.annotations.CalledByNative;
-@@ -45,18 +40,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -46,18 +40,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
          mSmsProviderAndroid = smsProviderAndroid;
  
          mContext = new Wrappers.SmsReceiverContext(ContextUtils.getApplicationContext());
@@ -42,7 +57,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
      }
  
      @CalledByNative
-@@ -69,7 +52,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -70,7 +52,6 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
      private void destroy() {
          if (DEBUG) Log.d(TAG, "Destroying SmsUserConsentReceiver.");
          mDestroyed = true;
@@ -50,7 +65,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
      }
  
      @Override
-@@ -82,7 +64,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -83,7 +64,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
              return;
          }
  
@@ -59,7 +74,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
              return;
          }
  
-@@ -114,28 +96,19 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
+@@ -115,35 +96,20 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
                  if (DEBUG) Log.d(TAG, "Timeout");
                  SmsUserConsentReceiverJni.get().onTimeout(mSmsProviderAndroid);
                  break;
@@ -74,14 +89,22 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Sm
 -        } else if (resultCode == Activity.RESULT_CANCELED) {
 -            if (DEBUG) Log.d(TAG, "Activity result cancelled.");
 -        }
-+        Log.d(TAG, "Activity result discarded.");
++        if (DEBUG) Log.d(TAG, "Activity result discarded.");
      }
  
      @CalledByNative
      private void listen(WindowAndroid windowAndroid) {
          mWindowAndroid = windowAndroid;
 -        Task<Void> task = getClient().startSmsUserConsent(null);
+-
+-        task.addOnFailureListener(new OnFailureListener() {
+-            @Override
+-            public void onFailure(Exception e) {
+-                Log.e(TAG, "Task failed to start", e);
+-            }
+-        });
 -        if (DEBUG) Log.d(TAG, "Installed task");
++        Log.d(TAG, "Ignored task");
      }
  
      private Wrappers.SmsRetrieverClientWrapper getClient() {

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

@@ -3,13 +3,13 @@ Date: Fri, 21 Aug 2020 22:39:23 +0200
 Subject: Remove blocklisted URLs upon bookmark creation
 
 ---
- .../chromium/chrome/browser/ChromeActivity.java   | 15 +++++++++++++++
+ .../chrome/browser/app/ChromeActivity.java        | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -123,6 +123,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -134,6 +134,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  import org.chromium.chrome.browser.share.ShareDelegate;
  import org.chromium.chrome.browser.share.ShareDelegateImpl;
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
  import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.TabDelegateFactory;
-@@ -228,6 +230,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -241,6 +243,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private TabContentManager mTabContentManager;
      private UmaSessionStats mUmaSessionStats;
      private ContextReporter mContextReporter;
@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
  
      private boolean mPartnerBrowserRefreshNeeded;
  
-@@ -1203,6 +1206,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1186,6 +1189,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              mCompositorViewHolder = null;
          }
  
@@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
          onDestroyInternal();
  
          if (mDidAddPolicyChangeListener) {
-@@ -1437,6 +1445,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1416,6 +1424,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              return;
          }
  
@@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 +            mMostVisitedSites =
 +                SuggestionsDependencyFactory.getInstance().createMostVisitedSites(Profile.getLastUsedRegularProfile());
 +        }
-+        mMostVisitedSites.removeBlacklistedUrl(tabToBookmark.getOriginalUrl());
++        mMostVisitedSites.removeBlocklistedUrl(tabToBookmark.getOriginalUrl());
 +
          // Note we get user bookmark ID over just a bookmark ID here: Managed bookmarks can't be
          // edited. If the current URL is only bookmarked by managed bookmarks, this will return

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

@@ -5,7 +5,7 @@ Subject: Remove dependency on auth, signin, dynamic and tasks
 ---
  chrome/android/BUILD.gn                       |  8 --
  chrome/android/features/media_router/BUILD.gn |  2 -
- .../media/router/ChromeMediaRouter.java       |  7 +-
+ .../media/router/ChromeMediaRouter.java       | 18 +---
  chrome/android/java/AndroidManifest.xml       |  9 --
  .../org/chromium/chrome/browser/AppHooks.java | 14 +---
  .../chrome/browser/ChromeVersionInfo.java     | 12 +--
@@ -29,13 +29,12 @@ Subject: Remove dependency on auth, signin, dynamic and tasks
  services/device/geolocation/BUILD.gn          |  2 -
  services/shape_detection/BUILD.gn             |  2 -
  third_party/android_deps/BUILD.gn             | 41 ----------
- third_party/cacheinvalidation/BUILD.gn        |  1 -
- 27 files changed, 16 insertions(+), 272 deletions(-)
+ 26 files changed, 16 insertions(+), 282 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -272,9 +272,6 @@ android_library("chrome_java") {
+@@ -263,9 +263,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -45,7 +44,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:jni_java",
      "//chrome/android/features/keyboard_accessory:public_java",
-@@ -717,8 +714,6 @@ junit_binary("chrome_junit_tests") {
+@@ -739,8 +736,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_app_java_resources",
      ":chrome_java",
      ":partner_location_descriptor_proto_java",
@@ -54,7 +53,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -895,9 +890,6 @@ android_library("chrome_test_java") {
+@@ -928,9 +923,6 @@ android_library("chrome_test_java") {
      ":chrome_test_util_java",
      ":native_java_unittests_java",
      ":partner_location_descriptor_proto_java",
@@ -67,8 +66,8 @@ 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
 --- a/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
-@@ -10,8 +10,6 @@ import("//chrome/common/features.gni")
- android_library("java") {
+@@ -11,8 +11,6 @@ android_library("java") {
+   resources_package = "org.chromium.chrome.media.router"
    deps = [
      ":java_resources",
 -    "$google_play_services_package:google_play_services_base_java",
@@ -89,21 +88,32 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.StrictModeContext;
-@@ -43,9 +40,7 @@ public class ChromeMediaRouter implements MediaRouteManager {
-                     int googleApiAvailabilityResult =
-                             AppHooks.get().isGoogleApiAvailableWithMinApkVersion(
-                                     MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
+@@ -39,20 +36,7 @@ public class ChromeMediaRouter implements MediaRouteManager {
+             new MediaRouteProvider.Factory() {
+                 @Override
+                 public void addProviders(MediaRouteManager manager) {
+-                    int googleApiAvailabilityResult =
+-                            GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
+-                                    ContextUtils.getApplicationContext(),
+-                                    MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
 -                    if (googleApiAvailabilityResult != ConnectionResult.SUCCESS) {
 -                        GoogleApiAvailability.getInstance().showErrorNotification(
 -                                ContextUtils.getApplicationContext(), googleApiAvailabilityResult);
-+                    if (true) {
-                         return;
-                     }
-                     MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
+-                        return;
+-                    }
+-                    MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
+-                    manager.addMediaRouteProvider(cafProvider);
+-                    MediaRouteProvider remotingProvider =
+-                            CafRemotingMediaRouteProvider.create(manager);
+-                    manager.addMediaRouteProvider(remotingProvider);
++                    return;
+                 }
+             };
+ 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -746,15 +746,6 @@ by a child template that "extends" this file.
+@@ -757,15 +757,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -129,10 +139,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
 -import com.google.android.gms.common.ConnectionResult;
 -import com.google.android.gms.common.GoogleApiAvailability;
 -
- import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.annotations.CalledByNative;
-@@ -304,16 +301,7 @@ public abstract class AppHooks {
+ import org.chromium.chrome.browser.banners.AppDetailsDelegate;
+@@ -325,16 +322,7 @@ public abstract class AppHooks {
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       */
      public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
@@ -499,7 +509,7 @@ 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
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
-@@ -21,8 +21,6 @@ import androidx.annotation.NonNull;
+@@ -19,8 +19,6 @@ import androidx.annotation.NonNull;
  import androidx.annotation.Nullable;
  import androidx.annotation.VisibleForTesting;
  
@@ -508,7 +518,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
  import org.chromium.base.ActivityState;
  import org.chromium.base.ApplicationStatus;
  import org.chromium.base.ApplicationStatus.ActivityStateListener;
-@@ -465,13 +463,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
+@@ -456,13 +454,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
          }
  
          private boolean isGooglePlayStoreAvailable(Context context) {
@@ -522,20 +532,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
 +            return false;
          }
  
-         @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
+         private long getSize(StatFs statFs) {
 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
-@@ -6,8 +6,6 @@ package org.chromium.chrome.browser.password_manager;
- 
- import android.app.Activity;
- 
--import com.google.android.gms.common.ConnectionResult;
--
- import org.chromium.base.annotations.CalledByNative;
- import org.chromium.base.metrics.RecordHistogram;
- import org.chromium.chrome.browser.AppHooks;
-@@ -89,20 +87,6 @@ public class PasswordManagerLauncher {
+@@ -93,22 +93,6 @@ public class PasswordManagerLauncher {
      }
  
      private static boolean tryShowingTheGooglePasswordManager(Activity activity) {
@@ -546,7 +547,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
 -        int minGooglePlayServicesVersion = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
 -                GOOGLE_ACCOUNT_PWM_UI, MIN_GOOGLE_PLAY_SERVICES_VERSION_PARAM,
 -                DEFAULT_MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
--        if (AppHooks.get().isGoogleApiAvailableWithMinApkVersion(minGooglePlayServicesVersion)
+-
+-        if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
+-                    ContextUtils.getApplicationContext(), minGooglePlayServicesVersion)
 -                != ConnectionResult.SUCCESS) {
 -            return false;
 -        }
@@ -560,7 +563,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
 diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 --- a/chrome/test/android/BUILD.gn
 +++ b/chrome/test/android/BUILD.gn
-@@ -239,8 +239,6 @@ android_library("chrome_java_test_support") {
+@@ -249,8 +249,6 @@ android_library("chrome_java_test_support") {
      "javatests/src/org/chromium/chrome/test/util/browser/webapps/WebappTestPage.java",
    ]
    deps = [
@@ -572,7 +575,7 @@ diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
 --- a/components/background_task_scheduler/BUILD.gn
 +++ b/components/background_task_scheduler/BUILD.gn
-@@ -119,10 +119,6 @@ if (is_android) {
+@@ -120,10 +120,6 @@ if (is_android) {
  
      deps = [
        ":background_task_scheduler_task_ids_java",
@@ -586,7 +589,7 @@ diff --git a/components/background_task_scheduler/BUILD.gn b/components/backgrou
 diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components/background_task_scheduler/internal/BUILD.gn
 --- a/components/background_task_scheduler/internal/BUILD.gn
 +++ b/components/background_task_scheduler/internal/BUILD.gn
-@@ -26,9 +26,6 @@ if (is_android) {
+@@ -25,9 +25,6 @@ if (is_android) {
  
      deps = [
        ":proto_java",
@@ -596,7 +599,7 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components
        "//base:base_java",
        "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
        "//components/background_task_scheduler:public_java",
-@@ -96,9 +93,6 @@ if (is_android) {
+@@ -95,9 +92,6 @@ if (is_android) {
  
      deps = [
        ":internal_java",
@@ -654,7 +657,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2515,9 +2515,6 @@ if (is_android) {
+@@ -2535,9 +2535,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -667,7 +670,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -393,8 +393,6 @@ if (is_android) {
+@@ -394,8 +394,6 @@ if (is_android) {
    junit_binary("device_junit_tests") {
      sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      deps = [
@@ -679,7 +682,7 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn
 diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
 --- a/remoting/android/client_java_tmpl.gni
 +++ b/remoting/android/client_java_tmpl.gni
-@@ -102,9 +102,6 @@ template("remoting_android_client_java_tmpl") {
+@@ -104,9 +104,6 @@ template("remoting_android_client_java_tmpl") {
  
      if (defined(invoker.play_services_package)) {
        deps += [
@@ -728,7 +731,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
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -995,37 +995,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -1137,37 +1137,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    ]
  }
  
@@ -766,7 +769,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_gcm_java") {
    aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
-@@ -1044,16 +1013,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1186,16 +1155,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  
@@ -783,17 +786,6 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
    aar_path =
-diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
---- a/third_party/cacheinvalidation/BUILD.gn
-+++ b/third_party/cacheinvalidation/BUILD.gn
-@@ -133,7 +133,6 @@ if (is_android) {
-     jacoco_never_instrument = true
-     deps = [
-       ":cacheinvalidation_proto_java",
--      "$google_play_services_package:google_play_services_tasks_java",
-       "//base:base_java",
-       "//third_party/android_protobuf:protobuf_nano_javalib",
-     ]
 -- 
 2.17.1
 

+ 2 - 112
build/patches/Remove-dependency-on-com.google.android.gcm.patch

@@ -3,11 +3,8 @@ Date: Sat, 2 Nov 2019 09:29:52 +0100
 Subject: Remove dependency on com.google.android.gcm
 
 ---
- third_party/android_sdk/BUILD.gn              |  3 --
- .../client/android2/AndroidManifest.xml       | 35 -------------------
- .../AndroidMessageReceiverService.java        | 17 ---------
- .../channel/AndroidMessageSenderService.java  |  3 +-
- 4 files changed, 1 insertion(+), 57 deletions(-)
+ third_party/android_sdk/BUILD.gn | 3 ---
+ 1 file changed, 3 deletions(-)
 
 diff --git a/third_party/android_sdk/BUILD.gn b/third_party/android_sdk/BUILD.gn
 --- a/third_party/android_sdk/BUILD.gn
@@ -20,113 +17,6 @@ diff --git a/third_party/android_sdk/BUILD.gn b/third_party/android_sdk/BUILD.gn
 -    jar_path = "//third_party/android_sdk/public/extras/google/gcm/gcm-client/dist/gcm.jar"
 -  }
  }
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
-@@ -4,10 +4,6 @@
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-     package="com.google.ipc.invalidation.client.android2">
- 
--  <!-- App receives GCM messages. -->
--  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
--  <!-- GCM connects to Google Services. -->
--  <uses-permission android:name="android.permission.INTERNET" />
-   <!-- Keeps the processor from sleeping when a message is received. -->
-   <uses-permission android:name="android.permission.WAKE_LOCK" />
- 
-@@ -16,40 +12,9 @@
-     <service android:exported="false"
-         android:name="com.google.ipc.invalidation.ticl.android2.TiclService"/>
- 
--    <!-- Ticl sender. -->
--    <service android:exported="false"
--        android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"/>
--
-     <!-- Receiver for scheduler alarms. -->
-     <receiver android:exported="false"
-         android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"/>
- 
--    <!-- GCM Broadcast Receiver -->
--    <receiver android:exported="true"
--        android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
--        android:permission="com.google.android.c2dm.permission.SEND">
--      <intent-filter>
--        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
--        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
--        <category android:name="com.google.ipc.invalidation.ticl.android2" />
--      </intent-filter>
--    </receiver>
--
--    <!-- GCM multiplexer -->
--    <service android:exported="false"
--        android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener">
--      <meta-data android:name="sender_ids" android:value="ipc.invalidation@gmail.com"/>
--    </service>
--
--    <!-- Invalidation service multiplexed GCM receiver -->
--    <service android:exported="false"
--        android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
--        android:enabled="true"/>
--    <receiver android:exported="false"
--        android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver">
--      <intent-filter>
--        <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
--      </intent-filter>
--    </receiver>
-   </application>
- </manifest>
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
-@@ -15,7 +15,6 @@
-  */
- package com.google.ipc.invalidation.ticl.android2.channel;
- 
--import com.google.android.gcm.GCMRegistrar;
- import com.google.ipc.invalidation.external.client.SystemResources.Logger;
- import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
- import com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener;
-@@ -126,20 +125,4 @@ public class AndroidMessageReceiverService extends MultiplexingGcmListener.Abstr
-     // now, there is nothing to do.
-   }
- 
--  /**
--   * Initializes GCM as a convenience method for tests. In production, applications should handle
--   * this.
--   */
--  public static void initializeGcmForTest(Context context, Logger logger, String senderId) {
--    // Initialize GCM.
--    GCMRegistrar.checkDevice(context);
--    GCMRegistrar.checkManifest(context);
--    String regId = GCMRegistrar.getRegistrationId(context);
--    if (regId.isEmpty()) {
--      logger.info("Not registered with GCM; registering");
--      GCMRegistrar.register(context, senderId);
--    } else {
--      logger.fine("Already registered with GCM: %s", regId);
--    }
--  }
- }
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
-@@ -15,7 +15,6 @@
-  */
- package com.google.ipc.invalidation.ticl.android2.channel;
- 
--import com.google.android.gcm.GCMRegistrar;
- import com.google.ipc.invalidation.common.GcmSharedConstants;
- import com.google.ipc.invalidation.external.client.SystemResources.Logger;
- import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
-@@ -395,7 +394,7 @@ public class AndroidMessageSenderService extends IntentService {
-         // No client key when using old style registration id.
-         clientKey = "";
-         try {
--            registrationId = GCMRegistrar.getRegistrationId(context);
-+        registrationId = null;
-         } catch (RuntimeException exception) {
-             // GCMRegistrar#getRegistrationId occasionally throws a runtime exception. Catching the
-             // exception rather than crashing.
 -- 
 2.17.1
 

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

@@ -14,7 +14,7 @@ Subject: Remove dependency on com.google.android.gms.auth
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -272,7 +272,6 @@ android_library("chrome_java") {
+@@ -263,7 +263,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -93,7 +93,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2515,7 +2515,6 @@ if (is_android) {
+@@ -2535,7 +2535,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -104,7 +104,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
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -996,53 +996,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -1138,53 +1138,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    ]
  }
  

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

@@ -22,17 +22,17 @@ Subject: Remove dependency on com.google.android.gms.cast
  .../remoting/FlingingControllerAdapter.java   |  74 -------------
  .../caf/remoting/RemotingMediaSource.java     |   8 +-
  .../remoting/RemotingSessionController.java   |  26 -----
- chrome/android/java/AndroidManifest.xml       |  28 -----
+ chrome/android/java/AndroidManifest.xml       |  27 -----
  .../settings/PasswordSettings.java            |  14 ---
  .../modules/chrome_feature_modules.gni        |   3 -
  chrome/test/android/cast_emulator/BUILD.gn    |   1 -
  third_party/android_deps/BUILD.gn             |  39 -------
- 24 files changed, 29 insertions(+), 814 deletions(-)
+ 24 files changed, 29 insertions(+), 813 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -274,14 +274,11 @@ android_library("chrome_java") {
+@@ -265,14 +265,11 @@ android_library("chrome_java") {
      ":usage_stats_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -47,7 +47,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//chrome/android/modules/image_editor/provider:java",
      "//chrome/android/modules/image_editor/public:java",
      "//chrome/android/modules/stack_unwinder/provider:java",
-@@ -722,8 +719,6 @@ junit_binary("chrome_junit_tests") {
+@@ -744,8 +741,6 @@ junit_binary("chrome_junit_tests") {
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -56,7 +56,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -902,8 +897,6 @@ android_library("chrome_test_java") {
+@@ -935,8 +930,6 @@ android_library("chrome_test_java") {
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -68,7 +68,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
 --- a/chrome/android/features/media_router/BUILD.gn
 +++ b/chrome/android/features/media_router/BUILD.gn
-@@ -12,8 +12,6 @@ android_library("java") {
+@@ -13,8 +13,6 @@ android_library("java") {
      ":java_resources",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -77,7 +77,7 @@ diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/feat
      "//base:base_java",
      "//base:jni_java",
      "//chrome/android:chrome_java",
-@@ -123,9 +121,6 @@ junit_binary("media_router_junit_tests") {
+@@ -130,9 +128,6 @@ junit_binary("media_router_junit_tests") {
  
    deps = [
      ":java",
@@ -656,7 +656,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -                this, CastSession.class);
 -
          mPendingCreateRouteRequestInfo = new CreateRouteRequestInfo(source, sink, presentationId,
-                 origin, tabId, isIncognito, nativeRequestId, targetRouteInfo);
+                 origin, tabId, isOffTheRecord, nativeRequestId, targetRouteInfo);
  
 @@ -212,100 +205,6 @@ public abstract class CafBaseMediaRouteProvider
          removeRoute(routeId, /* error= */ null);
@@ -1452,7 +1452,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -164,12 +164,6 @@ by a child template that "extends" this file.
+@@ -165,12 +165,6 @@ by a child template that "extends" this file.
          <meta-data android:name="com.google.ar.core" android:value="optional" />
          {% endif %}
  
@@ -1465,7 +1465,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Note: All activities directly or indirectly derived from ChromeActivity
               must specify android:hardwareAccelerated="false".
  
-@@ -672,16 +666,6 @@ by a child template that "extends" this file.
+@@ -683,16 +677,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -1482,11 +1482,10 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- This activity is used to restart the main Chrome process.  Should never be exported. -->
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
              android:launchMode="singleInstance"
-@@ -1094,18 +1078,6 @@ by a child template that "extends" this file.
-         {% endif %}
+@@ -1107,17 +1091,6 @@ by a child template that "extends" this file.
  
          {% block extra_application_definitions %}
--
+ 
 -        <!-- Media route controllers to use for remote playback (cast).
 -             This is here, rather than in code, since it varies between upstream and downstream,
 -             yet we need this list of classes in the notification service, which belongs upstream
@@ -1498,21 +1497,21 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 -        <meta-data android:name="org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
 -            android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>
 -
-         {% endblock %}
-         {% block extra_application_definitions_for_test %}
-         {% endblock %}
+         <!-- Downloads Google Sans from GMS Core -->
+         <meta-data android:name="preloaded_fonts"
+             android:resource="@array/preloaded_google_sans_fonts" />
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
-@@ -35,7 +35,6 @@ import org.chromium.chrome.browser.profiles.Profile;
+@@ -42,7 +42,6 @@ import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  import org.chromium.chrome.browser.settings.SettingsLauncher;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
--import org.chromium.chrome.modules.cablev2_authenticator.CableAuthenticatorModuleProvider;
+-import org.chromium.chrome.browser.webauthn.CableAuthenticatorModuleProvider;
  import org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference;
  import org.chromium.components.browser_ui.settings.ChromeBasePreference;
  import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
-@@ -509,19 +508,6 @@ public class PasswordSettings
+@@ -558,19 +557,6 @@ public class PasswordSettings
      }
  
      private void displaySecurityKeyLink() {
@@ -1566,7 +1565,7 @@ diff --git a/chrome/test/android/cast_emulator/BUILD.gn b/chrome/test/android/ca
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1026,45 +1026,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
+@@ -1168,45 +1168,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
  }
  

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

@@ -5,26 +5,24 @@ Subject: Remove dependency on com.google.android.gms.gcm
 It also disalbes Snippets, auto-update of offline pages and launching browser from background service.
 The snippets are already disabled in native codes, this will disable it on Java level.
 ---
- chrome/android/BUILD.gn                       |  3 -
- .../browser/ChromeBackgroundService.java      |  4 -
- .../ntp/snippets/SnippetsLauncher.java        |  2 +-
- .../gcm/ChromeGcmListenerService.java         | 58 +-----------
- components/background_task_scheduler/BUILD.gn |  1 -
- .../internal/BUILD.gn                         |  2 -
- .../BackgroundTaskGcmTaskService.java         | 78 +---------------
- ...ackgroundTaskSchedulerFactoryInternal.java |  6 +-
- ...kgroundTaskSchedulerGcmNetworkManager.java | 14 +--
- third_party/cacheinvalidation/BUILD.gn        |  1 -
- .../android2/AndroidManifestUpdatedGcm.xml    | 20 -----
- .../channel/AndroidGcmController.java         | 42 +--------
- .../AndroidInstanceIDListenerService.java     | 13 +--
- .../channel/GcmRegistrationTaskService.java   | 89 +------------------
- 14 files changed, 11 insertions(+), 322 deletions(-)
+ chrome/android/BUILD.gn                       |   3 -
+ .../browser/ChromeBackgroundService.java      |   4 -
+ .../ntp/snippets/SnippetsLauncher.java        |   2 +-
+ .../gcm/ChromeGcmListenerService.java         | 220 ------------------
+ components/background_task_scheduler/BUILD.gn |   1 -
+ .../internal/BUILD.gn                         |   3 -
+ .../BackgroundTaskGcmTaskService.java         | 160 -------------
+ ...ackgroundTaskSchedulerFactoryInternal.java |   6 +-
+ ...kgroundTaskSchedulerGcmNetworkManager.java |  55 -----
+ 9 files changed, 2 insertions(+), 452 deletions(-)
+ delete mode 100644 chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
+ delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
+ delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -277,7 +277,6 @@ android_library("chrome_java") {
+@@ -268,7 +268,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -32,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -910,7 +909,6 @@ android_library("chrome_test_java") {
+@@ -943,7 +942,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -40,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -1808,7 +1806,6 @@ android_library("browser_java_test_support") {
+@@ -1870,7 +1868,6 @@ android_library("browser_java_test_support") {
    ]
    deps = [
      ":chrome_java",
@@ -75,24 +73,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/Sn
      /**
       * Create a SnippetsLauncher object, which is owned by C++.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
+deleted file mode 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
-@@ -10,7 +10,6 @@ import android.os.Build;
- import android.os.Bundle;
- import android.text.TextUtils;
- 
++++ /dev/null
+@@ -1,220 +0,0 @@
+-// Copyright 2015 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.
+-
+-package org.chromium.chrome.browser.services.gcm;
+-
+-import android.content.Context;
+-import android.content.Intent;
+-import android.os.Build;
+-import android.os.Bundle;
+-import android.text.TextUtils;
+-
 -import com.google.android.gms.gcm.GcmListenerService;
- import com.google.ipc.invalidation.ticl.android2.channel.AndroidGcmController;
- 
- import org.chromium.base.ContextUtils;
-@@ -33,62 +32,9 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
- /**
-  * Receives Downstream messages and status of upstream messages from GCM.
-  */
+-
+-import org.chromium.base.ContextUtils;
+-import org.chromium.base.Log;
+-import org.chromium.base.ThreadUtils;
+-import org.chromium.base.task.PostTask;
+-import org.chromium.chrome.browser.DeviceConditions;
+-import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
+-import org.chromium.chrome.browser.init.ProcessInitializationHandler;
+-import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
+-import org.chromium.components.background_task_scheduler.TaskIds;
+-import org.chromium.components.background_task_scheduler.TaskInfo;
+-import org.chromium.components.gcm_driver.GCMDriver;
+-import org.chromium.components.gcm_driver.GCMMessage;
+-import org.chromium.components.gcm_driver.InstanceIDFlags;
+-import org.chromium.components.gcm_driver.LazySubscriptionsManager;
+-import org.chromium.components.gcm_driver.SubscriptionFlagManager;
+-import org.chromium.content_public.browser.UiThreadTaskTraits;
+-
+-/**
+- * Receives Downstream messages and status of upstream messages from GCM.
+- */
 -public class ChromeGcmListenerService extends GcmListenerService {
-+public class ChromeGcmListenerService {
-     private static final String TAG = "ChromeGcmListener";
- 
+-    private static final String TAG = "ChromeGcmListener";
+-
 -    @Override
 -    public void onCreate() {
 -        ProcessInitializationHandler.getInstance().initializePreNative();
@@ -104,12 +125,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/Ch
 -        boolean hasCollapseKey = !TextUtils.isEmpty(data.getString("collapse_key"));
 -        GcmUma.recordDataMessageReceived(ContextUtils.getApplicationContext(), hasCollapseKey);
 -
--        String invalidationSenderId = AndroidGcmController.get(this).getSenderId();
--        if (from.equals(invalidationSenderId)) {
--            AndroidGcmController.get(this).onMessageReceived(data);
--            return;
--        }
--
 -        // Dispatch the message to the GCM Driver for native features.
 -        PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
 -            GCMMessage message = null;
@@ -146,22 +161,146 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/Ch
 -        GcmUma.recordDeletedMessages(ContextUtils.getApplicationContext());
 -    }
 -
-     /**
-      * Returns if we deliver the GCMMessage with a background service by calling
-      * Context#startService. This will only work if Android has put us in a whitelist to allow
-@@ -218,7 +164,7 @@ public class ChromeGcmListenerService extends GcmListenerService {
-     static void dispatchMessageToDriver(GCMMessage message) {
-         ThreadUtils.assertOnUiThread();
-         ChromeBrowserInitializer.getInstance().handleSynchronousStartup();
+-    /**
+-     * Returns if we deliver the GCMMessage with a background service by calling
+-     * Context#startService. This will only work if Android has put us in a whitelist to allow
+-     * background services to be started.
+-     */
+-    private static boolean maybeBypassScheduler(GCMMessage message) {
+-        // Android only puts us on a whitelist for high priority messages.
+-        if (message.getOriginalPriority() != GCMMessage.Priority.HIGH) {
+-            return false;
+-        }
+-
+-        final String subscriptionId = SubscriptionFlagManager.buildSubscriptionUniqueId(
+-                message.getAppId(), message.getSenderId());
+-        if (!SubscriptionFlagManager.hasFlags(subscriptionId, InstanceIDFlags.BYPASS_SCHEDULER)) {
+-            return false;
+-        }
+-
+-        try {
+-            Context context = ContextUtils.getApplicationContext();
+-            Intent intent = new Intent(context, GCMBackgroundService.class);
+-            intent.putExtras(message.toBundle());
+-            context.startService(intent);
+-            return true;
+-        } catch (IllegalStateException e) {
+-            // Failed to start service, maybe we're not whitelisted? Fallback to using
+-            // BackgroundTaskScheduler to start Chrome.
+-            // TODO(knollr): Add metrics for this.
+-            Log.e(TAG, "Could not start background service", e);
+-            return false;
+-        }
+-    }
+-
+-    /**
+-     * Returns if the |message| is sent from a lazy subscription and we persist it to be delivered
+-     * the next time Chrome is launched into foreground.
+-     */
+-    private static boolean maybePersistLazyMessage(GCMMessage message) {
+-        if (isFullBrowserLoaded()) {
+-            return false;
+-        }
+-
+-        final String subscriptionId = LazySubscriptionsManager.buildSubscriptionUniqueId(
+-                message.getAppId(), message.getSenderId());
+-
+-        boolean isSubscriptionLazy = LazySubscriptionsManager.isSubscriptionLazy(subscriptionId);
+-        boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH;
+-        // TODO(crbug.com/945402): Add metrics for the new high priority message logic.
+-        boolean shouldPersistMessage = isSubscriptionLazy && !isHighPriority;
+-        if (shouldPersistMessage) {
+-            LazySubscriptionsManager.persistMessage(subscriptionId, message);
+-        }
+-
+-        return shouldPersistMessage;
+-    }
+-
+-    /**
+-     * Schedules a background task via Job Scheduler to deliver the |message|. Delivery might get
+-     * delayed by Android if the device is currently in doze mode.
+-     */
+-    private static void scheduleBackgroundTask(GCMMessage message) {
+-        // TODO(peter): Add UMA for measuring latency introduced by the BackgroundTaskScheduler.
+-        TaskInfo backgroundTask =
+-                TaskInfo.createOneOffTask(TaskIds.GCM_BACKGROUND_TASK_JOB_ID, 0 /* immediately */)
+-                        .setExtras(message.toBundle())
+-                        .build();
+-        BackgroundTaskSchedulerFactory.getScheduler().schedule(
+-                ContextUtils.getApplicationContext(), backgroundTask);
+-    }
+-
+-    private static void recordWebPushMetrics(GCMMessage message) {
+-        Context context = ContextUtils.getApplicationContext();
+-        boolean inIdleMode = DeviceConditions.isCurrentlyInIdleMode(context);
+-        boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH;
+-
+-        @GcmUma.WebPushDeviceState
+-        int state;
+-        if (inIdleMode) {
+-            state = isHighPriority ? GcmUma.WebPushDeviceState.IDLE_HIGH_PRIORITY
+-                                   : GcmUma.WebPushDeviceState.IDLE_NOT_HIGH_PRIORITY;
+-        } else {
+-            state = isHighPriority ? GcmUma.WebPushDeviceState.NOT_IDLE_HIGH_PRIORITY
+-                                   : GcmUma.WebPushDeviceState.NOT_IDLE_NOT_HIGH_PRIORITY;
+-        }
+-        GcmUma.recordWebPushReceivedDeviceState(state);
+-    }
+-
+-    /**
+-     * If Chrome is backgrounded, messages coming from lazy subscriptions are
+-     * persisted on disk and replayed next time Chrome is forgrounded. If Chrome is forgrounded or
+-     * if the message isn't coming from a lazy subscription, this method either schedules |message|
+-     * to be dispatched through the Job Scheduler, which we use on Android N and beyond, or
+-     * immediately dispatches the message on other versions of Android. Some subscriptions bypass
+-     * the Job Scheduler and use Context#startService instead if the |message| has a high priority.
+-     * Must be called on the UI thread both for the BackgroundTaskScheduler and for dispatching the
+-     * |message| to the GCMDriver.
+-     */
+-    static void scheduleOrDispatchMessageToDriver(GCMMessage message) {
+-        ThreadUtils.assertOnUiThread();
+-
+-        // GCMMessage#getAppId never returns null.
+-        if (message.getAppId().startsWith("wp:")) {
+-            recordWebPushMetrics(message);
+-        }
+-
+-        // Check if we should only persist the message for now.
+-        if (maybePersistLazyMessage(message)) {
+-            return;
+-        }
+-
+-        // Dispatch message immediately on pre N versions of Android.
+-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
+-            dispatchMessageToDriver(message);
+-            return;
+-        }
+-
+-        // Check if we should bypass the scheduler for high priority messages.
+-        if (!maybeBypassScheduler(message)) {
+-            scheduleBackgroundTask(message);
+-        }
+-    }
+-
+-    /**
+-     * To be called when a GCM message is ready to be dispatched. Will initialise the native code
+-     * of the browser process, and forward the message to the GCM Driver. Must be called on the UI
+-     * thread.
+-     */
+-    static void dispatchMessageToDriver(GCMMessage message) {
+-        ThreadUtils.assertOnUiThread();
+-        ChromeBrowserInitializer.getInstance().handleSynchronousStartup();
 -        GCMDriver.dispatchMessage(message);
-+        //GCMDriver.dispatchMessage(message);
-     }
- 
-     private static boolean isFullBrowserLoaded() {
+-    }
+-
+-    private static boolean isFullBrowserLoaded() {
+-        return ChromeBrowserInitializer.getInstance().isFullBrowserInitialized();
+-    }
+-}
 diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
 --- a/components/background_task_scheduler/BUILD.gn
 +++ b/components/background_task_scheduler/BUILD.gn
-@@ -122,7 +122,6 @@ if (is_android) {
+@@ -123,7 +123,6 @@ if (is_android) {
        "$google_play_services_package:google_play_services_auth_base_java",
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -172,7 +311,15 @@ diff --git a/components/background_task_scheduler/BUILD.gn b/components/backgrou
 diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components/background_task_scheduler/internal/BUILD.gn
 --- a/components/background_task_scheduler/internal/BUILD.gn
 +++ b/components/background_task_scheduler/internal/BUILD.gn
-@@ -28,7 +28,6 @@ if (is_android) {
+@@ -11,7 +11,6 @@ if (is_android) {
+   android_library("internal_java") {
+     sources = [
+       "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskBroadcastReceiver.java",
+-      "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java",
+       "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService.java",
+       "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerAlarmManager.java",
+       "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerDelegate.java",
+@@ -28,7 +27,6 @@ if (is_android) {
        ":proto_java",
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -180,7 +327,7 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components
        "$google_play_services_package:google_play_services_tasks_java",
        "//base:base_java",
        "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
-@@ -99,7 +98,6 @@ if (is_android) {
+@@ -99,7 +97,6 @@ if (is_android) {
        ":internal_java",
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -189,27 +336,38 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components
        "//base:base_java",
        "//base:base_java_test_support",
 diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
+deleted file mode 100644
 --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
-+++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
-@@ -8,10 +8,6 @@ import android.os.Build;
- 
- import androidx.annotation.VisibleForTesting;
- 
++++ /dev/null
+@@ -1,160 +0,0 @@
+-// Copyright 2017 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.
+-
+-package org.chromium.components.background_task_scheduler.internal;
+-
+-import android.os.Build;
+-
+-import androidx.annotation.VisibleForTesting;
+-
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.GcmTaskService;
 -import com.google.android.gms.gcm.TaskParams;
 -
- import org.chromium.base.ContextUtils;
- import org.chromium.base.Log;
- import org.chromium.base.ThreadUtils;
-@@ -23,16 +19,9 @@ import java.util.concurrent.TimeUnit;
- import java.util.concurrent.atomic.AtomicBoolean;
- 
- /** Delegates calls out to various tasks that need to run in the background. */
+-import org.chromium.base.ContextUtils;
+-import org.chromium.base.Log;
+-import org.chromium.base.ThreadUtils;
+-import org.chromium.components.background_task_scheduler.BackgroundTask;
+-import org.chromium.components.background_task_scheduler.TaskParameters;
+-
+-import java.util.concurrent.CountDownLatch;
+-import java.util.concurrent.TimeUnit;
+-import java.util.concurrent.atomic.AtomicBoolean;
+-
+-/** Delegates calls out to various tasks that need to run in the background. */
 -public class BackgroundTaskGcmTaskService extends GcmTaskService {
-+public class BackgroundTaskGcmTaskService {
-     private static final String TAG = "BkgrdTaskGcmTS";
- 
+-    private static final String TAG = "BkgrdTaskGcmTS";
+-
 -    private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
 -
 -    @VisibleForTesting
@@ -217,13 +375,65 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/
 -        mClock = clock;
 -    }
 -
-     /** Class that waits for the processing to be done. */
-     private static class Waiter {
-         // Wakelock is only held for 3 minutes by default for GcmTaskService.
-@@ -92,69 +81,4 @@ public class BackgroundTaskGcmTaskService extends GcmTaskService {
-         }
-     }
- 
+-    /** Class that waits for the processing to be done. */
+-    private static class Waiter {
+-        // Wakelock is only held for 3 minutes by default for GcmTaskService.
+-        private static final long MAX_TIMEOUT_SECONDS = 179;
+-        private final CountDownLatch mLatch;
+-        private long mWaiterTimeoutSeconds;
+-        private boolean mIsRescheduleNeeded;
+-        private boolean mHasTaskTimedOut;
+-
+-        public Waiter(long waiterTimeoutSeconds) {
+-            mLatch = new CountDownLatch(1);
+-            mWaiterTimeoutSeconds = Math.min(waiterTimeoutSeconds, MAX_TIMEOUT_SECONDS);
+-        }
+-
+-        /** Start waiting for the processing to finish. */
+-        public void startWaiting() {
+-            try {
+-                mHasTaskTimedOut = !mLatch.await(mWaiterTimeoutSeconds, TimeUnit.SECONDS);
+-            } catch (InterruptedException e) {
+-                Log.d(TAG, "Waiter interrupted while waiting.");
+-            }
+-        }
+-
+-        /** Called to finish waiting. */
+-        public void onWaitDone(boolean needsRescheduling) {
+-            mIsRescheduleNeeded = needsRescheduling;
+-            mLatch.countDown();
+-        }
+-
+-        /** @return Whether last task timed out. */
+-        public boolean hasTaskTimedOut() {
+-            return mHasTaskTimedOut;
+-        }
+-
+-        /** @return Whether task needs to be rescheduled. */
+-        public boolean isRescheduleNeeded() {
+-            return mIsRescheduleNeeded;
+-        }
+-    }
+-
+-    private static class TaskFinishedCallbackGcmTaskService
+-            implements BackgroundTask.TaskFinishedCallback {
+-        private final Waiter mWaiter;
+-
+-        public TaskFinishedCallbackGcmTaskService(Waiter waiter) {
+-            mWaiter = waiter;
+-        }
+-
+-        @Override
+-        public void taskFinished(final boolean needsReschedule) {
+-            ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+-                @Override
+-                public void run() {
+-                    mWaiter.onWaitDone(needsReschedule);
+-                }
+-            });
+-        }
+-    }
+-
 -    @Override
 -    public int onRunTask(TaskParams params) {
 -        final TaskParameters taskParams =
@@ -289,7 +499,7 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/
 -        BackgroundTaskSchedulerFactoryInternal.getScheduler().reschedule(
 -                ContextUtils.getApplicationContext());
 -    }
- }
+-}
 diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
 --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
 +++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
@@ -302,26 +512,54 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/
 -        } else {
 -            return new BackgroundTaskSchedulerGcmNetworkManager();
 -        }
-+        return new BackgroundTaskSchedulerJobService(); /* minSDK is 24 */
++        return new BackgroundTaskSchedulerJobService();
      }
  
      /**
 diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
+deleted file mode 100644
 --- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
-+++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
-@@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit;
-  * An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
-  * {@link GcmNetworkManager} to schedule jobs.
-  */
++++ /dev/null
+@@ -1,55 +0,0 @@
+-// Copyright 2017 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.
+-
+-package org.chromium.components.background_task_scheduler.internal;
+-
+-import android.content.Context;
+-import android.os.Bundle;
+-
+-import androidx.annotation.NonNull;
+-import androidx.annotation.VisibleForTesting;
+-
+-import org.chromium.base.Log;
+-import org.chromium.base.ThreadUtils;
+-import org.chromium.components.background_task_scheduler.TaskInfo;
+-import org.chromium.components.background_task_scheduler.TaskParameters;
+-
+-import java.util.concurrent.TimeUnit;
+-
+-/**
+- * An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
+- * {@link GcmNetworkManager} to schedule jobs.
+- */
 -class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedulerDelegate {
-+class BackgroundTaskSchedulerGcmNetworkManager {
-     private static final String TAG = "BkgrdTaskSchedGcmNM";
- 
-     /** Delta time for expiration checks, after the end time. */
-@@ -37,18 +37,6 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
-         sClock = clock;
-     }
- 
+-    private static final String TAG = "BkgrdTaskSchedGcmNM";
+-
+-    /** Delta time for expiration checks, after the end time. */
+-    static final long DEADLINE_DELTA_MS = 1000;
+-
+-    /** Clock to use so we can mock time in tests. */
+-    public interface Clock { long currentTimeMillis(); }
+-
+-    private static Clock sClock = System::currentTimeMillis;
+-
+-    @VisibleForTesting
+-    static void setClockForTesting(Clock clock) {
+-        sClock = clock;
+-    }
+-
 -    @Override
 -    public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
 -        ThreadUtils.assertOnUiThread();
@@ -334,268 +572,10 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/
 -        ThreadUtils.assertOnUiThread();
 -    }
 -
-     private static String taskIdToTaskTag(int taskId) {
-         return Integer.toString(taskId);
-     }
-diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
---- a/third_party/cacheinvalidation/BUILD.gn
-+++ b/third_party/cacheinvalidation/BUILD.gn
-@@ -133,7 +133,6 @@ if (is_android) {
-     jacoco_never_instrument = true
-     deps = [
-       ":cacheinvalidation_proto_java",
--      "$google_play_services_package:google_play_services_gcm_java",
-       "$google_play_services_package:google_play_services_iid_java",
-       "$google_play_services_package:google_play_services_tasks_java",
-       "//base:base_java",
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
-@@ -24,17 +24,6 @@
-     <receiver android:exported="false"
-         android:name="com.google.ipc.invalidation.ticl2.android2.AndroidInternalScheduler$AlarmReceiver"/>
- 
--    <!-- GCM Broadcast Receiver -->
--    <receiver android:exported="true"
--        android:name="com.google.android.gms.gcm.GcmReceiver"
--        android:permission="com.google.android.c2dm.permission.SEND">
--        <intent-filter>
--            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
--            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
--            <category android:name="com.google.ipc.invalidation.client2.android2"/>
--        </intent-filter>
--    </receiver>
--
-     <!-- InstanceID Listener Service -->
-     <service android:exported="false"
-         android:name="com.google.ipc.invalidation.ticl2.android2.channel.AndroidInstanceIDListenerService">
-@@ -42,14 +31,5 @@
-             <action android:name="com.google.android.gms.iid.InstanceID"/>
-         </intent-filter>
-     </service>
--
--    <!-- GcmTaskService for registration -->
--    <service android:name="com.google.ipc.invalidation.ticl2.android2.channel.GcmRegistrationTaskService"
--        android:exported="true"
--        android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
--        <intent-filter>
--            <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
--        </intent-filter>
--    </service>
-   </application>
- </manifest>
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
-@@ -15,8 +15,6 @@
-  */
- package com.google.ipc.invalidation.ticl.android2.channel;
- 
--import com.google.android.gms.gcm.GcmNetworkManager;
--import com.google.android.gms.gcm.OneoffTask;
- import com.google.ipc.invalidation.common.GcmSharedConstants;
- import com.google.ipc.invalidation.external.client.SystemResources.Logger;
- import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
-@@ -50,7 +48,7 @@ public class AndroidGcmController {
- 
-   private static AndroidGcmController androidGcmController;
- 
--  private GcmNetworkManager gcmNetworkManager;
-+//  private GcmNetworkManager gcmNetworkManager;
- 
-   private Context context;
- 
-@@ -64,32 +62,12 @@ public class AndroidGcmController {
-   public static AndroidGcmController get(Context context) {
-     synchronized (lock) {
-       if (androidGcmController == null) {
--        androidGcmController =
--            new AndroidGcmController(context, GcmNetworkManager.getInstance(context));
-+        androidGcmController = null;
-       }
-     }
-     return androidGcmController;
-   }
- 
--  /**
--   * Override AndroidGcmController with a custom GcmNetworkManager in tests. This overrides the
--   * existing instance of AndroidGcmController if any.
--   *
--   * @param context the application context.
--   * @param gcmNetworkManager the custom GcmNetworkManager to use.
--   */
--  public static void overrideAndroidGcmControllerForTests(
--      Context context, GcmNetworkManager gcmNetworkManager) {
--    synchronized (lock) {
--      androidGcmController = new AndroidGcmController(context, gcmNetworkManager);
--    }
--  }
--
--  private AndroidGcmController(Context context, GcmNetworkManager gcmNetworkManager) {
--    this.context = context;
--    this.gcmNetworkManager = gcmNetworkManager;
--  }
--
-   /**
-    * Returns true if no registration token is stored or the current application version is higher
-    * than the version for the token stored.
-@@ -142,21 +120,7 @@ public class AndroidGcmController {
-       return;
-     }
- 
--    OneoffTask registrationTask =
--        new OneoffTask.Builder()
--            .setExecutionWindow(0, 1)
--            .setTag(AndroidChannelConstants.GCM_REGISTRATION_TASK_SERVICE_TAG)
--            .setService(GcmRegistrationTaskService.class)
--            .build();
--
--    try {
--      gcmNetworkManager.schedule(registrationTask);
--    } catch (IllegalArgumentException exception) {
--      // Scheduling the service can throw an exception due to a framework error on Android when
--      // the the look up for the GCMTaskService being scheduled to be run fails.
--      // See crbug/548314.
--      logger.warning("Failed to schedule GCM registration task. Exception: %s", exception);
--    }
-+    logger.warning("Failed to schedule GCM registration task.");
-   }
- 
-   /**
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
-@@ -15,7 +15,6 @@
-  */
- package com.google.ipc.invalidation.ticl.android2.channel;
- 
--import com.google.android.gms.iid.InstanceIDListenerService;
- import com.google.ipc.invalidation.external.client.SystemResources.Logger;
- import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
- 
-@@ -23,16 +22,6 @@ import com.google.ipc.invalidation.external.client.android.service.AndroidLogger
-  * Implementation of {@link InstanceIDListenerService} to receive notifications from GCM to
-  * update the registration token.
-  */
--public class AndroidInstanceIDListenerService extends InstanceIDListenerService {
-+public class AndroidInstanceIDListenerService {
-   private static final Logger logger = AndroidLogger.forTag("InstanceIDListener");
--  
--  /**
--   * Called when the token needs to updated. {@link AndroidGcmController#fetchToken} clears the
--   * current token and schedules a task to fetch a new token.
--   */
--  @Override
--  public void onTokenRefresh() {
--    logger.info("Received token refresh request");
--    AndroidGcmController.get(this).fetchToken();
--  }
- }
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
-@@ -15,11 +15,6 @@
-  */
- package com.google.ipc.invalidation.ticl.android2.channel;
- 
--import com.google.android.gms.gcm.GcmNetworkManager;
--import com.google.android.gms.gcm.GcmTaskService;
--import com.google.android.gms.gcm.GoogleCloudMessaging;
--import com.google.android.gms.gcm.TaskParams;
--import com.google.android.gms.iid.InstanceID;
- import com.google.ipc.invalidation.common.GcmSharedConstants;
- import com.google.ipc.invalidation.external.client.SystemResources.Logger;
- import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
-@@ -42,88 +37,6 @@ import java.io.IOException;
-  * failure to fetch the token, the task is rescheduled using the GcmNetworkManager which uses
-  * exponential back-offs to control when the task is executed.
-  */
--public class GcmRegistrationTaskService extends GcmTaskService {
-+public class GcmRegistrationTaskService {
-   private static final Logger logger = AndroidLogger.forTag("RegistrationTaskService");
--
--  public InstanceID getInstanceID(Context context) {
--    return InstanceID.getInstance(context);
--  }
--
--  /**
--   * Called when the task is ready to be executed. Registers with GCM using
--   * {@link InstanceID#getToken} and stores the registration token.
--   *
--   * <p>Returns {@link GcmNetworkManager#RESULT_SUCCESS} when the token is successfully retrieved.
--   * On failure {@link GcmNetworkManager#RESULT_RESCHEDULE} is used which reschedules the service
--   * to be executed again using exponential back-off.
--   */
--  @Override
--  public int onRunTask(TaskParams params) {
--    if (!AndroidChannelConstants.GCM_REGISTRATION_TASK_SERVICE_TAG.equals(params.getTag())) {
--     logger.warning("Unknown task received with tag: %s", params.getTag());
--     return GcmNetworkManager.RESULT_FAILURE;
--    }
--
--    String senderId = GcmSharedConstants.GCM_UPDATED_SENDER_ID;
--    try {
--      String token = getInstanceID(this).getToken(
--          senderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
--      storeToken(token);
--      return GcmNetworkManager.RESULT_SUCCESS;
--    } catch (IOException exception) {
--      logger.warning("Failed to get token for sender: %s. Exception : %s", senderId, exception);
--      return GcmNetworkManager.RESULT_RESCHEDULE;
--    } catch (SecurityException exception) {
--      // InstanceID#getToken occasionally throws a security exception when trying send the
--      // registration intent to GMSCore. Catching the exception here to prevent crashes.
--      logger.warning("Security exception when fetching token: %s", exception);
--      return GcmNetworkManager.RESULT_RESCHEDULE;
--    }
--  }
--
--  /** Stores the registration token and the current application version in Shared Preferences. */
--  private void storeToken(String token) {
--      AndroidChannelPreferences.setRegistrationToken(token);
--      AndroidChannelPreferences.setAppVersion(
--              CommonUtils.getPackageVersion(this, getPackageName()));
--      // Send the updated token to the server.
--      updateServer();
--  }
--
--  /** Sends a message to the server to update the GCM registration token. */
--  private void updateServer() {
--    // Inform the sender service that the registration token has changed. If the sender service
--    // had buffered a message because no registration token was previously available, this intent
--    // will cause it to send that message.
--    Intent sendBuffered = new Intent();
--    final String ignoredData = "";
--    sendBuffered.putExtra(AndroidChannelConstants.MESSAGE_SENDER_SVC_GCM_REGID_CHANGE, ignoredData);
--
--    // Select the sender service to use for upstream message.
--    if (AndroidChannelPreferences.getGcmChannelType() == GcmChannelType.GCM_UPSTREAM) {
--        String upstreamServiceClass = new AndroidTiclManifest(this).getGcmUpstreamServiceClass();
--        if (upstreamServiceClass == null) {
--            logger.warning("GcmUpstreamSenderService class not found.");
--            return;
--        }
--        sendBuffered.setClassName(this, upstreamServiceClass);
--    } else {
--        sendBuffered.setClass(this, AndroidMessageSenderService.class);
--    }
--    try {
--      startService(sendBuffered);
--    } catch (IllegalStateException exception) {
--      logger.warning("Unable to send buffered message(s): %s", exception);
--    }
--
--    // Inform the Ticl service that the registration id has changed. This will cause it to send
--    // a message to the data center and update the GCM registration id stored at the data center.
--    Intent updateServer = ProtocolIntents.InternalDowncalls.newNetworkAddrChangeIntent();
--    updateServer.setClassName(this, new AndroidTiclManifest(this).getTiclServiceClass());
--    try {
--      startService(updateServer);
--    } catch (IllegalStateException exception) {
--      logger.warning("Unable to inform server about new registration id: %s", exception);
+-    private static String taskIdToTaskTag(int taskId) {
+-        return Integer.toString(taskId);
 -    }
--  }
- }
+-}
 -- 
 2.17.1
 

+ 7 - 7
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
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -471,7 +471,6 @@ android_library("chrome_java") {
-     "//third_party/cacheinvalidation:cacheinvalidation_javalib",
-     "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
+@@ -482,7 +482,6 @@ android_library("chrome_java") {
+     "//third_party/blink/public/mojom:android_mojo_bindings_java",
+     "//third_party/blink/public/mojom:mojom_platform_java",
      "//third_party/gif_player:gif_player_java",
 -    "//third_party/google_android_play_core:com_google_android_play_core_java",
      "//ui/android:ui_java",
@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Fa
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.task.PostTask;
- import org.chromium.chrome.browser.ChromeActivity;
+ import org.chromium.chrome.browser.app.ChromeActivity;
 @@ -31,7 +26,7 @@ import java.lang.ref.WeakReference;
   * wrapper isn't meant to be used for a full integration test, but simulating all of the possible
   * error cases is a bit easier to do here.
@@ -471,15 +471,15 @@ 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
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -36,7 +36,6 @@ android_library("module_installer_java") {
-     "//base:base_java",
+@@ -37,7 +37,6 @@ android_library("module_installer_java") {
      "//base:jni_java",
      "//components/crash/android:java",
+     "//third_party/android_deps:androidx_annotation_annotation_java",
 -    "//third_party/google_android_play_core:com_google_android_play_core_java",
    ]
  
    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
-@@ -59,7 +58,6 @@ junit_binary("module_installer_junit_tests") {
+@@ -60,7 +59,6 @@ junit_binary("module_installer_junit_tests") {
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",

+ 12 - 38
build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch

@@ -16,14 +16,12 @@ Subject: Remove dependency on fido, iid, instantapps, location
  services/device/geolocation/BUILD.gn          |   1 -
  .../geolocation/LocationProviderGmsCore.java  | 103 +-----------------
  third_party/android_deps/BUILD.gn             |  75 -------------
- third_party/cacheinvalidation/BUILD.gn        |   1 -
- .../android2/AndroidManifestUpdatedGcm.xml    |   3 -
- 15 files changed, 15 insertions(+), 305 deletions(-)
+ 13 files changed, 15 insertions(+), 301 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -276,8 +276,6 @@ android_library("chrome_java") {
+@@ -267,8 +267,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -32,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:jni_java",
-@@ -726,7 +724,6 @@ junit_binary("chrome_junit_tests") {
+@@ -748,7 +746,6 @@ junit_binary("chrome_junit_tests") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -40,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -907,8 +904,6 @@ android_library("chrome_test_java") {
+@@ -940,8 +937,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -52,7 +50,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -1755,9 +1755,6 @@ chrome_java_sources = [
+@@ -1728,9 +1728,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewDelegate.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
@@ -65,7 +63,7 @@ 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/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
-@@ -282,12 +282,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
+@@ -216,12 +216,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
  
      @Override
      public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
@@ -251,7 +249,7 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm
      "//base:base_java",
      "//base:jni_java",
      "//components/gcm_driver/android:gcm_driver_java",
-@@ -33,7 +32,6 @@ android_library("instance_id_driver_java") {
+@@ -34,7 +33,6 @@ android_library("instance_id_driver_java") {
  android_library("instance_id_driver_test_support_java") {
    deps = [
      ":instance_id_driver_java",
@@ -347,7 +345,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
 diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
 --- a/content/public/common/content_features.cc
 +++ b/content/public/common/content_features.cc
-@@ -750,7 +750,7 @@ const base::Feature kWebContentsOcclusion {
+@@ -782,7 +782,7 @@ const base::Feature kWebContentsOcclusion {
  // Controls whether the WebAuthentication API is enabled:
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuth{"WebAuthentication",
@@ -359,7 +357,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -395,7 +395,6 @@ if (is_android) {
+@@ -396,7 +396,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -552,7 +550,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
      ":org_robolectric_utils_java",
      ":org_robolectric_utils_reflector_java",
      "//third_party/robolectric:android-all-10-robolectric-5803371_java",
-@@ -1066,20 +1065,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
+@@ -1208,20 +1207,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
    strip_resources = !is_java_debug
  }
  
@@ -573,7 +571,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_gcm_java") {
    aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
-@@ -1098,52 +1083,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1240,52 +1225,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  
@@ -626,7 +624,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("google_play_services_tasks_java") {
    aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.0.0.aar"
-@@ -1454,20 +1393,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") {
+@@ -1660,20 +1599,6 @@ java_prebuilt("org_robolectric_shadows_multidex_java") {
    bypass_platform_checks = true
  }
  
@@ -647,30 +645,6 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  java_prebuilt("org_robolectric_utils_java") {
    jar_path = "libs/org_robolectric_utils/utils-4.3.1.jar"
-diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
---- a/third_party/cacheinvalidation/BUILD.gn
-+++ b/third_party/cacheinvalidation/BUILD.gn
-@@ -133,7 +133,6 @@ if (is_android) {
-     jacoco_never_instrument = true
-     deps = [
-       ":cacheinvalidation_proto_java",
--      "$google_play_services_package:google_play_services_iid_java",
-       "$google_play_services_package:google_play_services_tasks_java",
-       "//base:base_java",
-       "//third_party/android_protobuf:protobuf_nano_javalib",
-diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
---- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
-+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
-@@ -27,9 +27,6 @@
-     <!-- InstanceID Listener Service -->
-     <service android:exported="false"
-         android:name="com.google.ipc.invalidation.ticl2.android2.channel.AndroidInstanceIDListenerService">
--        <intent-filter>
--            <action android:name="com.google.android.gms.iid.InstanceID"/>
--        </intent-filter>
-     </service>
-   </application>
- </manifest>
 -- 
 2.17.1
 

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

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

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

@@ -494,7 +494,7 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1154,36 +1154,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
+@@ -1296,36 +1296,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
    strip_drawables = true
  }
  
@@ -531,7 +531,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
    aar_path =
-@@ -2132,62 +2102,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
+@@ -2226,62 +2196,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
    visibility = [ ":*" ]
  }
  

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

@@ -9,7 +9,7 @@ Subject: Remove google_services_gcm
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -995,24 +995,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -1137,24 +1137,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    ]
  }
  

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

@@ -4,8 +4,8 @@ Subject: Remove help menu item
 
 ---
  chrome/android/java/res/menu/main_menu.xml               | 2 --
- .../src/org/chromium/chrome/browser/ChromeActivity.java  | 9 ---------
  .../org/chromium/chrome/browser/KeyboardShortcuts.java   | 3 ---
+ .../org/chromium/chrome/browser/app/ChromeActivity.java  | 9 ---------
  .../chrome/browser/customtabs/BaseCustomTabActivity.java | 2 +-
  .../browser/directactions/MenuDirectActionHandler.java   | 2 --
  5 files changed, 1 insertion(+), 17 deletions(-)
@@ -13,19 +13,32 @@ Subject: Remove help menu item
 diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
 --- a/chrome/android/java/res/menu/main_menu.xml
 +++ b/chrome/android/java/res/menu/main_menu.xml
-@@ -83,8 +83,6 @@
-             android:icon="@drawable/reader_mode_prefs_icon" />
+@@ -108,8 +108,6 @@
          <item android:id="@+id/preferences_id"
-             android:title="@string/menu_settings" />
+             android:title="@string/menu_settings"
+             android:icon="@drawable/settings_cog" />
 -        <item android:id="@+id/help_id"
--            android:title="@string/menu_help" />
+-            android:title="@string/menu_help"
+             android:icon="@drawable/help_outline" />
          <item android:id="@+id/enter_vr_id"
-             android:title="@string/enter_vr" />
-         <item android:id="@+id/exit_id"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1908,15 +1908,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+             android:title="@string/enter_vr"
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
+@@ -343,9 +343,6 @@ public class KeyboardShortcuts {
+                     tab = activity.getActivityTab();
+                     if (tab != null && tab.canGoForward()) tab.goForward();
+                     return true;
+-                case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH:  // i.e. Ctrl+?
+-                    activity.onMenuOrKeyboardAction(R.id.help_id, false);
+-                    return true;
+             }
+         }
+ 
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -1887,15 +1887,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
@@ -41,19 +54,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
          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
---- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
-@@ -342,9 +342,6 @@ public class KeyboardShortcuts {
-                     tab = activity.getActivityTab();
-                     if (tab != null && tab.canGoForward()) tab.goForward();
-                     return true;
--                case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH:  // i.e. Ctrl+?
--                    activity.onMenuOrKeyboardAction(R.id.help_id, false);
--                    return true;
-             }
-         }
- 
 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

+ 151 - 153
build/patches/Remove-signin-and-data-saver-integrations.patch

@@ -16,27 +16,27 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
 >>> referenced by invalidation_service_util.cc:17 (../../components/invalidation/impl/invalidation_service_util.cc:17)
 >>>               impl/invalidation_service_util.o:(invalidation::ParseNotifierOptions(base::CommandLine const&)) in archive obj/components/invalidation/impl/libimpl.a
 ---
- chrome/android/BUILD.gn                       |  3 +-
- chrome/android/java/AndroidManifest.xml       | 28 ------
- .../android/java/res/xml/main_preferences.xml | 14 ---
- .../chrome/browser/ChromeActivity.java        | 34 -------
- .../DataReductionPreferenceFragment.java      | 24 ++---
- .../privacy/settings/PrivacySettings.java     |  6 --
- .../chrome/browser/settings/MainSettings.java | 90 +------------------
- .../chrome/browser/signin/SigninManager.java  | 59 ++----------
- .../browser/sync/AndroidSyncSettings.java     | 24 +----
- .../settings/SyncAndServicesSettings.java     |  8 --
- .../android/signin/signin_manager_android.cc  |  1 -
- .../strings/android_chrome_strings.grd        | 15 ----
- .../signin/SystemAccountManagerDelegate.java  | 38 +-------
- .../net/HttpNegotiateAuthenticator.java       | 88 +-----------------
- .../chromoting/base/OAuthTokenFetcher.java    |  2 -
- 15 files changed, 25 insertions(+), 409 deletions(-)
+ chrome/android/BUILD.gn                       |   3 +-
+ chrome/android/java/AndroidManifest.xml       |  18 ---
+ .../android/java/res/xml/main_preferences.xml |   9 --
+ .../chrome/browser/app/ChromeActivity.java    |  34 ------
+ .../DataReductionPreferenceFragment.java      |  24 +---
+ .../privacy/settings/PrivacySettings.java     |  10 --
+ .../chrome/browser/settings/MainSettings.java | 108 +-----------------
+ .../chrome/browser/signin/SigninManager.java  |  62 ++--------
+ .../browser/sync/AndroidSyncSettings.java     |  24 +---
+ .../settings/SyncAndServicesSettings.java     |   8 --
+ .../android/signin/signin_manager_android.cc  |   1 -
+ .../strings/android_chrome_strings.grd        |  12 --
+ .../signin/SystemAccountManagerDelegate.java  |  38 +-----
+ .../net/HttpNegotiateAuthenticator.java       |  88 +-------------
+ .../chromoting/base/OAuthTokenFetcher.java    |   2 -
+ 15 files changed, 27 insertions(+), 414 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -1364,8 +1364,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1426,8 +1426,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -49,7 +49,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -43,23 +43,17 @@ by a child template that "extends" this file.
+@@ -44,23 +44,17 @@ by a child template that "extends" this file.
      {% if target_sdk_version|int > 27 or target_sdk_version == "Q" %}
          <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
      {% endif %}
@@ -73,7 +73,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% set enable_vr = enable_vr|default(0) %}
      {% if enable_vr == "true" %}
      <!-- Indicates use of Android's VR-mode, available only on Android N+. -->
-@@ -100,8 +94,6 @@ by a child template that "extends" this file.
+@@ -101,8 +95,6 @@ by a child template that "extends" this file.
      <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% block extra_uses_permissions %}
      {% endblock %}
  
-@@ -870,16 +862,6 @@ by a child template that "extends" this file.
+@@ -881,16 +873,6 @@ by a child template that "extends" this file.
                  android:resource="@xml/file_paths" />
          </provider>
  
@@ -99,58 +99,36 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Broadcast receiver that will be notified of account changes -->
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
              <intent-filter>
-@@ -987,16 +969,6 @@ by a child template that "extends" this file.
-         <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
-             android:exported="false"/>
- 
--        <!-- Notification service for sync. -->
--        <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
--            android:exported="false"/>
--        <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
--            android:exported="false"/>
--        <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
--            android:exported="false"/>
--        <receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
--            android:exported="false"/>
--
-         <!-- Android Notification service listener -->
-         <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
-             android:exported="false"/>
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -6,15 +6,6 @@
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-     android:orderingFromXml="false">
- 
--    <PreferenceCategory
--        android:key="account_section"
--        android:order="0"
--        android:title="@string/prefs_section_account"/>
+@@ -19,10 +19,6 @@
+         android:order="2"
+         android:title="@string/prefs_section_account_and_google_services"
+         app:isPreferenceVisible="false"/>
 -    <org.chromium.chrome.browser.sync.settings.SignInPreference
 -        android:key="sign_in"
--        android:order="1"
+-        android:order="3"
 -        android:title="@string/sign_in_to_chrome"/>
--
-     <PreferenceCategory
-         android:key="basics_section"
-         android:order="3"
-@@ -85,11 +76,6 @@
+     <org.chromium.components.browser_ui.settings.ChromeBasePreference
+         android:key="manage_sync"
+         android:order="5"
+@@ -107,11 +103,6 @@
          android:key="languages"
-         android:order="17"
+         android:order="21"
          android:title="@string/language_settings"/>
 -    <org.chromium.components.browser_ui.settings.ChromeBasePreference
 -        android:fragment="org.chromium.chrome.browser.datareduction.settings.DataReductionPreferenceFragment"
 -        android:key="data_reduction"
--        android:order="18"
+-        android:order="22"
 -        android:title="@string/data_reduction_title_lite_mode"/>
      <org.chromium.components.browser_ui.settings.ChromeBasePreference
          android:fragment="org.chromium.chrome.browser.download.settings.DownloadSettings"
          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
---- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -122,8 +122,6 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+@@ -132,8 +132,6 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
  import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  import org.chromium.chrome.browser.share.ShareDelegate;
  import org.chromium.chrome.browser.share.ShareDelegateImpl;
@@ -159,17 +137,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
  import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.TabDelegateFactory;
-@@ -245,9 +243,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -257,9 +255,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private boolean mRemoveWindowBackgroundDone;
      protected AccessibilityVisibilityHandler mAccessibilityVisibilityHandler;
  
 -    // Observes when sync becomes ready to create the mContextReporter.
 -    private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
 -
-     @Nullable
-     private ChromeFullscreenManager mFullscreenManager;
+     // The PictureInPictureController is initialized lazily https://crbug.com/729738.
+     private PictureInPictureController mPictureInPictureController;
  
-@@ -868,28 +863,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -846,28 +841,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private void createContextReporterIfNeeded() {
          if (!mStarted) return; // Sync state reporting should work only in started state.
          if (mContextReporter != null || getActivityTab() == null) return;
@@ -198,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      }
  
      @Override
-@@ -955,13 +928,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -933,13 +906,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
              GSAAccountChangeListener.getInstance().disconnect();
          }
@@ -256,30 +234,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/s
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -47,9 +47,6 @@ public class PrivacySettings
-     private static final String PREF_SECURE_DNS = "secure_dns";
-     private static final String PREF_DO_NOT_TRACK = "do_not_track";
-     private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
--    private static final String PREF_SYNC_AND_SERVICES_LINK_DIVIDER =
--            "sync_and_services_link_divider";
--    private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
- 
-     private ManagedPreferenceDelegate mManagedPreferenceDelegate;
- 
-@@ -77,9 +74,6 @@ public class PrivacySettings
+@@ -84,16 +84,6 @@ public class PrivacySettings
          Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
-         secureDnsPref.setVisible(privacyPrefManager.isDnsOverHttpsUiEnabled());
+         secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
+ 
+-        Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
+-        NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
+-            SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
+-            settingsLauncher.launchSettingsActivity(getActivity(), SyncAndServicesSettings.class,
+-                    SyncAndServicesSettings.createArguments(false));
+-        });
+-        syncAndServicesLink.setSummary(
+-                SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
+-                        new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
+-
+         updateSummaries();
+     }
  
--        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
--        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
--
-         ChromeBaseCheckBoxPreference searchSuggestionsPref =
-                 (ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
-         searchSuggestionsPref.setOnPreferenceChangeListener(this);
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
-@@ -17,19 +17,13 @@ import androidx.preference.PreferenceFragmentCompat;
+@@ -18,10 +18,8 @@ import androidx.preference.PreferenceFragmentCompat;
  
  import org.chromium.base.ContextUtils;
  import org.chromium.chrome.R;
@@ -289,29 +264,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
 -import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.night_mode.NightModeUtils;
  import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchConfiguration;
- import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
- import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
+ import org.chromium.chrome.browser.password_check.PasswordCheck;
+@@ -31,10 +29,6 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
+ import org.chromium.chrome.browser.profiles.Profile;
+ import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment;
  import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
 -import org.chromium.chrome.browser.signin.IdentityServicesProvider;
 -import org.chromium.chrome.browser.signin.SigninManager;
 -import org.chromium.chrome.browser.sync.ProfileSyncService;
 -import org.chromium.chrome.browser.sync.settings.SignInPreference;
+ import org.chromium.chrome.browser.sync.settings.SyncPromoPreference;
  import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
  import org.chromium.chrome.browser.tracing.settings.DeveloperSettings;
- import org.chromium.components.browser_ui.settings.ChromeBasePreference;
-@@ -45,18 +39,13 @@ import java.util.Map;
+@@ -51,8 +45,7 @@ import java.util.Map;
   * The main settings screen, shown when the user first opens Settings.
   */
  public class MainSettings extends PreferenceFragmentCompat
 -        implements TemplateUrlService.LoadListener, ProfileSyncService.SyncStateChangedListener,
 -                   SigninManager.SignInStateObserver {
--    public static final String PREF_ACCOUNT_SECTION = "account_section";
--    public static final String PREF_SIGN_IN = "sign_in";
--    public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
 +        implements TemplateUrlService.LoadListener {
-     public static final String PREF_SEARCH_ENGINE = "search_engine";
-     public static final String PREF_PASSWORDS = "passwords";
-     public static final String PREF_HOMEPAGE = "homepage";
+     public static final String PREF_SYNC_PROMO = "sync_promo";
+     public static final String PREF_ACCOUNT_SECTION = "account_section";
+     public static final String PREF_ACCOUNT_AND_GOOGLE_SERVICES_SECTION =
+@@ -67,7 +60,6 @@ public class MainSettings extends PreferenceFragmentCompat
      public static final String PREF_UI_THEME = "ui_theme";
      public static final String PREF_PRIVACY = "privacy";
      public static final String PREF_SAFETY_CHECK = "safety_check";
@@ -319,27 +294,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      public static final String PREF_NOTIFICATIONS = "notifications";
      public static final String PREF_DOWNLOADS = "downloads";
      public static final String PREF_DEVELOPER = "developer";
-@@ -67,7 +56,6 @@ public class MainSettings extends PreferenceFragmentCompat
- 
+@@ -79,7 +71,6 @@ public class MainSettings extends PreferenceFragmentCompat
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
+     private SyncPromoPreference mSyncPromoPreference;
 -    private SignInPreference mSignInPreference;
+     private ChromeBasePreference mManageSync;
+     private @Nullable PasswordCheck mPasswordCheck;
  
-     public MainSettings() {
-         setHasOptionsMenu(true);
-@@ -90,35 +78,16 @@ public class MainSettings extends PreferenceFragmentCompat
-     @Override
+@@ -111,7 +102,6 @@ public class MainSettings extends PreferenceFragmentCompat
      public void onDestroy() {
          super.onDestroy();
+         mSyncPromoPreference.onPreferenceFragmentDestroyed();
 -        mSignInPreference.onPreferenceFragmentDestroyed();
-     }
- 
+         // The component should only be destroyed when the activity has been closed by the user
+         // (e.g. by pressing on the back button) and not when the activity is temporarily destroyed
+         // by the system.
+@@ -121,33 +111,11 @@ public class MainSettings extends PreferenceFragmentCompat
      @Override
      public void onStart() {
          super.onStart();
--        SigninManager signinManager = IdentityServicesProvider.get().getSigninManager();
+-        SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
+-                Profile.getLastUsedRegularProfile());
 -        if (signinManager.isSigninSupported()) {
 -            signinManager.addSignInStateObserver(this);
+-            mSyncPromoPreference.registerForUpdates();
 -            mSignInPreference.registerForUpdates();
 -        }
 -        ProfileSyncService syncService = ProfileSyncService.get();
@@ -351,9 +330,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      @Override
      public void onStop() {
          super.onStop();
--        SigninManager signinManager = IdentityServicesProvider.get().getSigninManager();
+-        SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
+-                Profile.getLastUsedRegularProfile());
 -        if (signinManager.isSigninSupported()) {
 -            signinManager.removeSignInStateObserver(this);
+-            mSyncPromoPreference.unregisterForUpdates();
 -            mSignInPreference.unregisterForUpdates();
 -        }
 -        ProfileSyncService syncService = ProfileSyncService.get();
@@ -363,7 +344,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      }
  
      @Override
-@@ -146,12 +115,9 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -182,12 +150,9 @@ public class MainSettings extends PreferenceFragmentCompat
  
          cachePreferences();
  
@@ -376,29 +357,42 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
  
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              // If we are on Android O+ the Notifications preference should lead to the Android
-@@ -202,7 +168,6 @@ public class MainSettings extends PreferenceFragmentCompat
-             Preference preference = getPreferenceScreen().getPreference(index);
+@@ -255,7 +220,6 @@ public class MainSettings extends PreferenceFragmentCompat
              mAllPreferences.put(preference.getKey(), preference);
          }
+         mSyncPromoPreference = (SyncPromoPreference) mAllPreferences.get(PREF_SYNC_PROMO);
 -        mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
+         mManageSync = (ChromeBasePreference) findPreference(PREF_MANAGE_SYNC);
      }
  
-     private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -211,13 +176,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -265,24 +229,12 @@ public class MainSettings extends PreferenceFragmentCompat
      }
  
      private void updatePreferences() {
--        if (IdentityServicesProvider.get().getSigninManager().isSigninSupported()) {
+-        if (IdentityServicesProvider.get()
+-                        .getSigninManager(Profile.getLastUsedRegularProfile())
+-                        .isSigninSupported()) {
 -            addPreferenceIfAbsent(PREF_SIGN_IN);
 -        } else {
 -            removePreferenceIfPresent(PREF_SIGN_IN);
 -        }
 -
+-        boolean hasPrimaryAccount = IdentityServicesProvider.get()
+-                                            .getIdentityManager(Profile.getLastUsedRegularProfile())
+-                                            .hasPrimaryAccount();
+-        boolean isSyncPromoHidden =
+-                mSyncPromoPreference.getState() == SyncPromoPreference.State.PROMO_HIDDEN;
++        boolean hasPrimaryAccount = false;
++        boolean isSyncPromoHidden = true;
+         mManageSync.setVisible(
+                 ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)
+                 && hasPrimaryAccount && isSyncPromoHidden);
+ 
 -        updateSyncAndServicesPreference();
          updateSearchEnginePreference();
  
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
-@@ -234,10 +192,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -299,10 +251,6 @@ public class MainSettings extends PreferenceFragmentCompat
          } else {
              removePreferenceIfPresent(PREF_DEVELOPER);
          }
@@ -409,21 +403,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      }
  
      private Preference addPreferenceIfAbsent(String key) {
-@@ -251,13 +205,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -316,15 +264,6 @@ public class MainSettings extends PreferenceFragmentCompat
          if (preference != null) getPreferenceScreen().removePreference(preference);
      }
  
 -    private void updateSyncAndServicesPreference() {
--        ChromeBasePreference syncAndServices =
--                (ChromeBasePreference) findPreference(PREF_SYNC_AND_SERVICES);
--        syncAndServices.setIcon(SyncSettingsUtils.getSyncStatusIcon(getActivity()));
--        syncAndServices.setSummary(SyncSettingsUtils.getSyncStatusSummary(getActivity()));
+-        ChromeBasePreference preference = findPreference(
+-                ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)
+-                        ? PREF_MANAGE_SYNC
+-                        : PREF_SYNC_AND_SERVICES);
+-        preference.setIcon(SyncSettingsUtils.getSyncStatusIcon(getActivity()));
+-        preference.setSummary(SyncSettingsUtils.getSyncStatusSummary(getActivity()));
 -    }
 -
      private void updateSearchEnginePreference() {
          if (!TemplateUrlServiceFactory.get().isLoaded()) {
              ChromeBasePreference searchEnginePref =
-@@ -289,28 +236,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -356,34 +295,6 @@ public class MainSettings extends PreferenceFragmentCompat
          pref.setSummary(isOn ? R.string.text_on : R.string.text_off);
      }
  
@@ -441,8 +437,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
 -    }
 -
 -    private void onSignInPreferenceStateChanged() {
--        // Remove "Account" section header if the personalized sign-in promo is shown.
--        if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
+-        // Remove "Account" section header if the personalized sign-in promo is shown. Remove
+-        // "You and Google" section header if the personalized sync promo is shown.
+-        boolean isShowingPersonalizedPromo =
+-                mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO;
+-        if (ChromeFeatureList.isEnabled(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)) {
+-            findPreference(PREF_ACCOUNT_AND_GOOGLE_SERVICES_SECTION)
+-                    .setVisible(!isShowingPersonalizedPromo);
+-        } else if (isShowingPersonalizedPromo) {
 -            removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
 -        } else {
 -            addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
@@ -452,7 +454,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      // TemplateUrlService.LoadListener implementation.
      @Override
      public void onTemplateUrlServiceLoaded() {
-@@ -318,11 +243,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -391,11 +302,6 @@ public class MainSettings extends PreferenceFragmentCompat
          updateSearchEnginePreference();
      }
  
@@ -464,7 +466,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
      @VisibleForTesting
      public ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
          return mManagedPreferenceDelegate;
-@@ -332,9 +252,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -405,9 +311,6 @@ public class MainSettings extends PreferenceFragmentCompat
          return new ChromeManagedPreferenceDelegate() {
              @Override
              public boolean isPreferenceControlledByPolicy(Preference preference) {
@@ -474,7 +476,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                      return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
                  }
-@@ -343,11 +260,6 @@ public class MainSettings extends PreferenceFragmentCompat
+@@ -416,11 +319,6 @@ public class MainSettings extends PreferenceFragmentCompat
  
              @Override
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
@@ -489,17 +491,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
-@@ -23,9 +23,7 @@ import org.chromium.base.metrics.RecordUserAction;
+@@ -23,7 +23,6 @@ import org.chromium.base.metrics.RecordUserAction;
  import org.chromium.base.task.PostTask;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.sync.AndroidSyncSettings;
 -import org.chromium.components.signin.AccountTrackerService;
  import org.chromium.components.signin.AccountUtils;
--import org.chromium.components.signin.ChromeSigninController;
  import org.chromium.components.signin.base.CoreAccountInfo;
  import org.chromium.components.signin.identitymanager.ClearAccountsAction;
- import org.chromium.components.signin.identitymanager.ConsentLevel;
-@@ -51,7 +49,7 @@ import java.util.List;
+@@ -50,7 +49,7 @@ import java.util.List;
   * See chrome/browser/signin/signin_manager_android.h for more details.
   */
  public class SigninManager
@@ -508,7 +508,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private static final String TAG = "SigninManager";
  
      /**
-@@ -169,7 +167,6 @@ public class SigninManager
+@@ -168,7 +167,6 @@ public class SigninManager
       * This is not final, as destroy() updates this.
       */
      private long mNativeSigninManagerAndroid;
@@ -516,7 +516,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private final IdentityManager mIdentityManager;
      private final IdentityMutator mIdentityMutator;
      private final AndroidSyncSettings mAndroidSyncSettings;
-@@ -207,24 +204,22 @@ public class SigninManager
+@@ -206,24 +204,22 @@ public class SigninManager
       */
      @CalledByNative
      private static SigninManager create(long nativeSigninManagerAndroid,
@@ -544,7 +544,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mIdentityManager = identityManager;
          mIdentityMutator = identityMutator;
          mAndroidSyncSettings = androidSyncSettings;
-@@ -233,7 +228,6 @@ public class SigninManager
+@@ -232,7 +228,6 @@ public class SigninManager
          mSigninAllowedByPolicy =
                  SigninManagerJni.get().isSigninAllowedByPolicy(mNativeSigninManagerAndroid);
  
@@ -552,7 +552,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mIdentityManager.addObserver(this);
  
          reloadAllAccountsFromSystem();
-@@ -246,7 +240,6 @@ public class SigninManager
+@@ -245,7 +240,6 @@ public class SigninManager
      @CalledByNative
      public void destroy() {
          mIdentityManager.removeObserver(this);
@@ -560,7 +560,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mNativeSigninManagerAndroid = 0;
      }
  
-@@ -285,9 +278,7 @@ public class SigninManager
+@@ -284,9 +278,7 @@ public class SigninManager
       * Returns true if signin can be started now.
       */
      public boolean isSignInAllowed() {
@@ -571,7 +571,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      /**
-@@ -342,17 +333,6 @@ public class SigninManager
+@@ -341,17 +333,6 @@ public class SigninManager
          });
      }
  
@@ -589,7 +589,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.
       *
-@@ -421,11 +401,8 @@ public class SigninManager
+@@ -420,11 +401,8 @@ public class SigninManager
      }
  
      private void progressSignInFlowSeedSystemAccounts() {
@@ -603,7 +603,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      /**
-@@ -462,18 +439,6 @@ public class SigninManager
+@@ -461,19 +439,6 @@ public class SigninManager
          // The user should not be already signed in
          assert !mIdentityManager.hasPrimaryAccount();
  
@@ -613,27 +613,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
 -            return;
 -        }
 -
--        // Cache the signed-in account name. This must be done after the native call, otherwise
--        // sync tries to start without being signed in natively and crashes.
--        ChromeSigninController.get().setSignedInAccountName(
+-        // TODO(https://crbug.com/1091858): Remove this after migrating the legacy code that uses
+-        //                                  the sync account before the native is loaded.
+-        SigninPreferencesManager.getInstance().setLegacySyncAccountEmail(
 -                mSignInState.mCoreAccountInfo.getEmail());
+-
 -        enableSync(mSignInState.mCoreAccountInfo);
 -
          if (mSignInState.mCallback != null) {
              mSignInState.mCallback.onSignInComplete();
          }
-@@ -631,10 +596,8 @@ public class SigninManager
+@@ -629,13 +594,8 @@ public class SigninManager
  
-         // Native sign-out must happen before resetting the account so data is deleted correctly.
-         // http://crbug.com/589028
--        ChromeSigninController.get().setSignedInAccountName(null);
+         Log.d(TAG, "On native signout, wipe user data: " + mSignOutState.mShouldWipeUserData);
+ 
+-        // TODO(https://crbug.com/1091858): Remove this after migrating the legacy code that uses
+-        //                                  the sync account before the native is loaded.
+-        SigninPreferencesManager.getInstance().setLegacySyncAccountEmail(null);
+-
          if (mSignOutState.mSignOutCallback != null) mSignOutState.mSignOutCallback.preWipeData();
          disableSyncAndWipeData(mSignOutState.mShouldWipeUserData, this::finishSignOut);
 -        mAccountTrackerService.invalidateAccountSeedStatus(true);
      }
  
      void finishSignOut() {
-@@ -694,14 +657,6 @@ public class SigninManager
+@@ -695,14 +655,6 @@ public class SigninManager
          SigninManagerJni.get().stopApplyingCloudPolicy(mNativeSigninManagerAndroid);
      }
  
@@ -651,7 +655,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyncSettings.java
-@@ -215,13 +215,7 @@ public class AndroidSyncSettings {
+@@ -216,13 +216,7 @@ public class AndroidSyncSettings {
  
      private void setChromeSyncEnabled(boolean value) {
          synchronized (mLock) {
@@ -666,7 +670,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyn
          }
          notifyObservers();
      }
-@@ -302,19 +296,9 @@ public class AndroidSyncSettings {
+@@ -307,19 +301,9 @@ public class AndroidSyncSettings {
              boolean oldChromeSyncEnabled = mChromeSyncEnabled;
              boolean oldMasterSyncEnabled = mMasterSyncEnabled;
  
@@ -674,7 +678,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyn
 -            if (mAccount != null) {
 -                mIsSyncable =
 -                        mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority)
--                        == 1;
+-                        > 0;
 -                mChromeSyncEnabled = mSyncContentResolverDelegate.getSyncAutomatically(
 -                        mAccount, mContractAuthority);
 -            } else {
@@ -692,7 +696,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/AndroidSyn
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SyncAndServicesSettings.java
-@@ -165,15 +165,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat
+@@ -170,15 +170,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat
  
          mPrivacyPrefManager.migrateNetworkPredictionPreferences();
  
@@ -711,7 +715,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/S
 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
-@@ -139,7 +139,6 @@ SigninManagerAndroid::SigninManagerAndroid(
+@@ -140,7 +140,6 @@ SigninManagerAndroid::SigninManagerAndroid(
  
    java_signin_manager_ = Java_SigninManager_create(
        base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
@@ -722,13 +726,7 @@ diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/br
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -261,18 +261,9 @@ CHAR-LIMIT guidelines:
-       </message>
- 
-       <!-- Sign-in, sync and personalization preferences -->
--      <message name="IDS_PREFS_SECTION_ACCOUNT" desc="Title for the group of account-related entries in Settings. [CHAR-LIMIT=32]">
--        Account
--      </message>
+@@ -269,12 +269,6 @@ CHAR-LIMIT guidelines:
        <message name="IDS_SIGN_IN_TO_CHROME" desc="Title for the button to sign in to Chrome using one's Google account. [CHAR-LIMIT=27]">
          Sign in to Chrome
        </message>
@@ -741,7 +739,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_SIGNIN_PREF_SUMMARY" desc="Summary for the entry in Settings to sign in to Chrome, explaining benefits of signing in.">
          Sync and personalize across devices
        </message>
-@@ -331,9 +322,6 @@ CHAR-LIMIT guidelines:
+@@ -333,9 +327,6 @@ CHAR-LIMIT guidelines:
        <message name="IDS_URL_KEYED_ANONYMIZED_DATA_SUMMARY" desc="Summary for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
          Sends URLs of pages you visit to Google
        </message>
@@ -751,7 +749,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_CANCEL_SYNC_DIALOG_TITLE" desc="The title of a dialog that is shown when users tries closing 'Sync and Google services' preferences without confirming the changes.">
          Cancel sync?
        </message>
-@@ -964,9 +952,6 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1108,9 +1099,6 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_DATA_REDUCTION_DESCRIPTION_LITE_MODE" desc="Text describing how the Lite mode feature works. Seen only before the user has enabled the feature.">
          When Lite mode is on, Chrome uses Google servers to make pages load faster. Lite mode rewrites very slow pages to load only essential content. Lite mode does not apply to Incognito tabs.
        </message>

+ 26 - 0
build/patches/Remove-weblayer-dependency-on-Play-Services.patch

@@ -0,0 +1,26 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Sun, 27 Sep 2020 09:24:16 +0200
+Subject: Remove weblayer dependency on Play Services
+
+---
+ weblayer/shell/android/BUILD.gn | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/weblayer/shell/android/BUILD.gn b/weblayer/shell/android/BUILD.gn
+--- a/weblayer/shell/android/BUILD.gn
++++ b/weblayer/shell/android/BUILD.gn
+@@ -36,11 +36,8 @@ android_library("weblayer_shell_java") {
+   testonly = true
+   resources_package = "org.chromium.weblayer.shell"
+ 
+-  # The play services dependency is necessary for the
+-  # google_play_services_version definition in the manifest.
+   deps = [
+     ":weblayer_shell_resources",
+-    "$google_play_services_package:google_play_services_base_java",
+     "//base:base_java",
+     "//third_party/android_deps:android_support_v4_java",
+     "//third_party/android_deps:android_support_v7_appcompat_java",
+-- 
+2.17.1
+

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

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

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

@@ -13,7 +13,7 @@ See discussion at https://github.com/bromite/bromite/issues/445
 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
 --- a/gpu/config/gpu_driver_bug_list.json
 +++ b/gpu/config/gpu_driver_bug_list.json
-@@ -3537,6 +3537,22 @@
+@@ -3286,6 +3286,22 @@
          "dont_delete_source_texture_for_egl_image"
        ]
      },

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

@@ -20,7 +20,7 @@ Disable search-ready omnibox by default
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
-@@ -61,6 +61,7 @@ class DropdownItemViewInfoListBuilder {
+@@ -62,6 +62,7 @@ class DropdownItemViewInfoListBuilder {
      private int mDropdownHeight;
      private boolean mEnableAdaptiveSuggestionsCount;
      private boolean mBuiltListHasFullyConcealedElements;
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest
  
      DropdownItemViewInfoListBuilder() {
          mPriorityOrderedSuggestionProcessors = new ArrayList<>();
-@@ -89,8 +90,8 @@ class DropdownItemViewInfoListBuilder {
+@@ -90,8 +91,8 @@ class DropdownItemViewInfoListBuilder {
                  () -> mShareDelegateSupplier == null ? null : mShareDelegateSupplier.get();
  
          mHeaderProcessor = new HeaderProcessor(context, host, delegate);
@@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest
          registerSuggestionProcessor(
                  new AnswerSuggestionProcessor(context, host, textProvider, imageFetcherSupplier));
          registerSuggestionProcessor(
-@@ -218,6 +219,10 @@ class DropdownItemViewInfoListBuilder {
+@@ -219,6 +220,10 @@ class DropdownItemViewInfoListBuilder {
  
      /** Signals that native initialization has completed. */
      void onNativeInitialized() {
@@ -53,7 +53,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
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2539,6 +2539,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2811,6 +2811,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -67,8 +67,8 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
 @@ -1884,6 +1884,11 @@
-     "owners": [ "peter", "finnur" ],
-     "expiry_milestone": 84
+     //  with neural net palm detection.
+     "expiry_milestone": 90
    },
 +  {
 +    "name": "enable-search-ready-omnibox",
@@ -76,12 +76,12 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +    "expiry_milestone": -1
 +  },
    {
-     "name": "enable-navigation-predictor",
-     "owners": [ "tbansal", "ryansturm", "instant-nav" ],
+     "name": "enable-parallel-downloading",
+     "owners": [ "qinmin", "xingliu", "dtrainor" ],
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2890,6 +2890,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
+@@ -3109,6 +3109,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
      "process to check the Safe Browsing reputation of URLs without calling "
      "into GmsCore for every URL.";
  
@@ -96,7 +96,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1673,6 +1673,9 @@ extern const char kReportFeedUserActionsDescription[];
+@@ -1791,6 +1791,9 @@ extern const char kSafeBrowsingSecuritySectionUiAndroidDescription[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  
@@ -109,7 +109,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
 --- a/chrome/browser/flags/android/chrome_feature_list.cc
 +++ b/chrome/browser/flags/android/chrome_feature_list.cc
-@@ -183,6 +183,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
+@@ -187,6 +187,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kReachedCodeProfiler,
      &kReaderModeInCCT,
      &kReengagementNotification,
@@ -117,7 +117,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kRelatedSearches,
      &kRevampedContextMenu,
      &kSearchEnginePromoExistingDevice,
-@@ -552,6 +553,9 @@ const base::Feature kRelatedSearches{"RelatedSearches",
+@@ -569,6 +570,9 @@ const base::Feature kRelatedSearches{"RelatedSearches",
  const base::Feature kRevampedContextMenu{"RevampedContextMenu",
                                           base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -130,7 +130,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
 diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
 --- a/chrome/browser/flags/android/chrome_feature_list.h
 +++ b/chrome/browser/flags/android/chrome_feature_list.h
-@@ -104,6 +104,7 @@ extern const base::Feature kRelatedSearches;
+@@ -106,6 +106,7 @@ extern const base::Feature kRelatedSearches;
  extern const base::Feature kRevampedContextMenu;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
@@ -141,7 +141,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -324,6 +324,7 @@ public abstract class ChromeFeatureList {
+@@ -330,6 +330,7 @@ public abstract class ChromeFeatureList {
      public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT =
              "OmniboxAdaptiveSuggestionsCount";
      public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch";

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

@@ -9,7 +9,7 @@ Subject: Restore enable-horizontal-tab-switcher flag
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1746,7 +1746,7 @@
+@@ -1651,7 +1651,7 @@
    {
      "name": "enable-horizontal-tab-switcher",
      "owners": [ "memex-team@google.com" ],

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

@@ -4,14 +4,14 @@ Subject: Revert "Remove flags to enable/disable AImageReader."
 
 This reverts commit 463fa0f2e3b9e418bc26e2c8954463f0b0f76634.
 ---
- .../service/image_reader_gl_owner_unittest.cc          |  5 +++++
- gpu/config/gpu_finch_features.cc                       |  4 ++++
- gpu/config/gpu_finch_features.h                        |  1 +
- gpu/ipc/service/stream_texture_android.cc              | 10 ++++++++--
- media/base/media_switches.cc                           |  4 ++++
- media/base/media_switches.h                            |  1 +
- media/gpu/android/video_frame_factory_impl.cc          |  3 ++-
- 7 files changed, 25 insertions(+), 3 deletions(-)
+ .../service/image_reader_gl_owner_unittest.cc         |  5 +++++
+ gpu/config/gpu_finch_features.cc                      |  4 ++++
+ gpu/config/gpu_finch_features.h                       |  1 +
+ gpu/ipc/service/stream_texture_android.cc             | 11 ++++++++++-
+ media/base/media_switches.cc                          |  4 ++++
+ media/base/media_switches.h                           |  1 +
+ media/gpu/android/video_frame_factory_impl.cc         |  5 ++++-
+ 7 files changed, 29 insertions(+), 2 deletions(-)
 
 diff --git a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc b/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
 --- a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
@@ -26,10 +26,10 @@ diff --git a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc b/gpu/
  #include "gpu/command_buffer/service/image_reader_gl_owner.h"
  #include "gpu/command_buffer/service/mock_abstract_texture.h"
 +#include "media/base/media_switches.h"
+ #include "media/base/android/media_codec_util.h"
  #include "testing/gtest/include/gtest/gtest.h"
  #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_context_egl.h"
-@@ -30,6 +32,8 @@ class ImageReaderGLOwnerTest : public testing::Test {
+@@ -31,6 +33,8 @@ class ImageReaderGLOwnerTest : public testing::Test {
      if (!IsImageReaderSupported())
        return;
  
@@ -38,7 +38,7 @@ diff --git a/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc b/gpu/
      gl::init::InitializeStaticGLBindingsImplementation(
          gl::kGLImplementationEGLGLES2, false);
      gl::init::InitializeGLOneOffPlatformImplementation(false, false, true);
-@@ -69,6 +73,7 @@ class ImageReaderGLOwnerTest : public testing::Test {
+@@ -70,6 +74,7 @@ class ImageReaderGLOwnerTest : public testing::Test {
      return base::android::AndroidImageReader::GetInstance().IsSupported();
    }
  
@@ -50,16 +50,16 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 --- a/gpu/config/gpu_finch_features.cc
 +++ b/gpu/config/gpu_finch_features.cc
 @@ -13,6 +13,10 @@
+ 
  namespace features {
  
- #if defined(OS_ANDROID)
 +// Use android AImageReader when playing videos with MediaPlayer.
 +const base::Feature kAImageReaderMediaPlayer{"AImageReaderMediaPlayer",
 +                                             base::FEATURE_ENABLED_BY_DEFAULT};
 +
- // Used only by webview to disable SurfaceControl.
- const base::Feature kDisableSurfaceControlForWebview{
-     "DisableSurfaceControlForWebview", base::FEATURE_DISABLED_BY_DEFAULT};
+ #if defined(OS_ANDROID)
+ // Used to limit GL version to 2.0 for skia raster on Android.
+ const base::Feature kUseGles2ForOopR{"UseGles2ForOopR",
 diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
 --- a/gpu/config/gpu_finch_features.h
 +++ b/gpu/config/gpu_finch_features.h
@@ -68,33 +68,41 @@ diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
  // alongside the definition of their values in the .cc file.
  #if defined(OS_ANDROID)
 +GPU_EXPORT extern const base::Feature kAImageReaderMediaPlayer;
- GPU_EXPORT extern const base::Feature kDisableSurfaceControlForWebview;
- 
  GPU_EXPORT extern const base::Feature kUseGles2ForOopR;
+ GPU_EXPORT extern const base::Feature kAndroidSurfaceControl;
+ GPU_EXPORT extern const base::Feature kAImageReader;
 diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc
 --- a/gpu/ipc/service/stream_texture_android.cc
 +++ b/gpu/ipc/service/stream_texture_android.cc
-@@ -51,8 +51,14 @@ TextureOwner::Mode GetTextureOwnerMode() {
-   const bool a_image_reader_supported =
-       base::android::AndroidImageReader::GetInstance().IsSupported();
+@@ -6,6 +6,7 @@
+ 
+ #include <string.h>
+ 
++#include "base/android/android_image_reader_compat.h"
+ #include "base/android/scoped_hardware_buffer_fence_sync.h"
+ #include "base/bind.h"
+ #include "base/feature_list.h"
+@@ -47,7 +48,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
+ }
  
--  return a_image_reader_supported ? TextureOwner::Mode::kAImageReaderInsecure
--                                  : TextureOwner::Mode::kSurfaceTextureInsecure;
+ TextureOwner::Mode GetTextureOwnerMode() {
+-  return features::IsAImageReaderEnabled()
++  const bool a_image_reader_supported =
++      base::android::AndroidImageReader::GetInstance().IsSupported();
++
 +  // TODO(vikassoni) : Currently we have 2 different flags to enable/disable
 +  // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2
 +  // flags into a single flag. Keeping the 2 flags separate for now since finch
 +  // experiment using this flag is in progress.
-+  return a_image_reader_supported && base::FeatureList::IsEnabled(
-+                                         features::kAImageReaderMediaPlayer)
-+             ? TextureOwner::Mode::kAImageReaderInsecure
-+             : TextureOwner::Mode::kSurfaceTextureInsecure;
++  return a_image_reader_supported && features::IsAImageReaderEnabled() &&
++             base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer)
+              ? TextureOwner::Mode::kAImageReaderInsecure
+              : TextureOwner::Mode::kSurfaceTextureInsecure;
  }
- 
- }  // namespace
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -542,6 +542,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -547,6 +547,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  const base::Feature kMediaDrmPreprovisioningAtStartup{
      "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -108,7 +116,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 diff --git a/media/base/media_switches.h b/media/base/media_switches.h
 --- a/media/base/media_switches.h
 +++ b/media/base/media_switches.h
-@@ -186,6 +186,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
+@@ -192,6 +192,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPersistentLicense;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioning;
  MEDIA_EXPORT extern const base::Feature kMediaDrmPreprovisioningAtStartup;
@@ -119,13 +127,22 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h
 diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc
 --- a/media/gpu/android/video_frame_factory_impl.cc
 +++ b/media/gpu/android/video_frame_factory_impl.cc
-@@ -41,7 +41,8 @@ gpu::TextureOwner::Mode GetTextureOwnerMode(
+@@ -6,6 +6,7 @@
+ 
+ #include <memory>
+ 
++#include "base/android/android_image_reader_compat.h"
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
+ #include "base/callback.h"
+@@ -65,7 +66,9 @@ gpu::TextureOwner::Mode GetTextureOwnerMode(
    switch (overlay_mode) {
      case VideoFrameFactory::OverlayMode::kDontRequestPromotionHints:
      case VideoFrameFactory::OverlayMode::kRequestPromotionHints:
--      return a_image_reader_supported
-+      return a_image_reader_supported && base::FeatureList::IsEnabled(
-+                                             media::kAImageReaderVideoOutput)
+-      return features::IsAImageReaderEnabled()
++      return base::android::AndroidImageReader::GetInstance().IsSupported() &&
++             features::IsAImageReaderEnabled() &&
++             base::FeatureList::IsEnabled(media::kAImageReaderVideoOutput)
                   ? gpu::TextureOwner::Mode::kAImageReaderInsecure
                   : gpu::TextureOwner::Mode::kSurfaceTextureInsecure;
      case VideoFrameFactory::OverlayMode::kSurfaceControlSecure:

+ 0 - 1767
build/patches/Revert-Remove-pre-unified-consent-code.patch

@@ -1,1767 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Wed, 25 Sep 2019 10:59:28 +0200
-Subject: Revert "Remove pre-unified consent code"
-
-This reverts commit c672a0683e89eba3554e2562156b3c8532136f21.
-
-Restore translations
-Disable unified consent on Android
-Unified consent miscellanous backport fixes
----
- .../java/res/xml/privacy_preferences.xml      | 25 +++++
- .../privacy/settings/PrivacySettings.java     | 95 +++++++++++++++++--
- .../sync/SyncNotificationController.java      |  6 +-
- .../chrome/browser/sync/SyncTestRule.java     | 10 +-
- .../strings/android_chrome_strings.grd        | 15 +++
- .../android_chrome_strings_am.xtb             | 19 +++-
- .../android_chrome_strings_ar.xtb             | 19 +++-
- .../android_chrome_strings_bg.xtb             | 19 +++-
- .../android_chrome_strings_bn.xtb             | 19 +++-
- .../android_chrome_strings_ca.xtb             | 19 +++-
- .../android_chrome_strings_cs.xtb             | 19 +++-
- .../android_chrome_strings_da.xtb             | 19 +++-
- .../android_chrome_strings_de.xtb             | 19 +++-
- .../android_chrome_strings_el.xtb             | 19 +++-
- .../android_chrome_strings_en-GB.xtb          | 19 +++-
- .../android_chrome_strings_es-419.xtb         | 19 +++-
- .../android_chrome_strings_es.xtb             | 19 +++-
- .../android_chrome_strings_et.xtb             | 19 +++-
- .../android_chrome_strings_fa.xtb             | 19 +++-
- .../android_chrome_strings_fi.xtb             | 19 +++-
- .../android_chrome_strings_fil.xtb            | 19 +++-
- .../android_chrome_strings_fr.xtb             | 19 +++-
- .../android_chrome_strings_gu.xtb             | 19 +++-
- .../android_chrome_strings_hi.xtb             | 19 +++-
- .../android_chrome_strings_hr.xtb             | 19 +++-
- .../android_chrome_strings_hu.xtb             | 19 +++-
- .../android_chrome_strings_id.xtb             | 19 +++-
- .../android_chrome_strings_it.xtb             | 19 +++-
- .../android_chrome_strings_iw.xtb             | 19 +++-
- .../android_chrome_strings_ja.xtb             | 19 +++-
- .../android_chrome_strings_kn.xtb             | 19 +++-
- .../android_chrome_strings_ko.xtb             | 19 +++-
- .../android_chrome_strings_lt.xtb             | 19 +++-
- .../android_chrome_strings_lv.xtb             | 19 +++-
- .../android_chrome_strings_ml.xtb             | 19 +++-
- .../android_chrome_strings_mr.xtb             | 19 +++-
- .../android_chrome_strings_ms.xtb             | 19 +++-
- .../android_chrome_strings_nl.xtb             | 19 +++-
- .../android_chrome_strings_no.xtb             | 19 +++-
- .../android_chrome_strings_pl.xtb             | 19 +++-
- .../android_chrome_strings_pt-BR.xtb          | 19 +++-
- .../android_chrome_strings_pt-PT.xtb          | 19 +++-
- .../android_chrome_strings_ro.xtb             | 19 +++-
- .../android_chrome_strings_ru.xtb             | 19 +++-
- .../android_chrome_strings_sk.xtb             | 19 +++-
- .../android_chrome_strings_sl.xtb             | 19 +++-
- .../android_chrome_strings_sr.xtb             | 19 +++-
- .../android_chrome_strings_sv.xtb             | 19 +++-
- .../android_chrome_strings_sw.xtb             | 19 +++-
- .../android_chrome_strings_ta.xtb             | 19 +++-
- .../android_chrome_strings_te.xtb             | 19 +++-
- .../android_chrome_strings_th.xtb             | 19 +++-
- .../android_chrome_strings_tr.xtb             | 19 +++-
- .../android_chrome_strings_uk.xtb             | 19 +++-
- .../android_chrome_strings_vi.xtb             | 19 +++-
- .../android_chrome_strings_zh-CN.xtb          | 19 +++-
- .../android_chrome_strings_zh-TW.xtb          | 19 +++-
- .../unified_consent_service_factory.cc        |  5 +-
- 58 files changed, 1073 insertions(+), 71 deletions(-)
-
-diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
---- a/chrome/android/java/res/xml/privacy_preferences.xml
-+++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -6,6 +6,24 @@
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-     xmlns:app="http://schemas.android.com/apk/res-auto">
- 
-+    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-+        android:key="navigation_error"
-+        android:title="@string/navigation_error_title"
-+        android:summary="@string/navigation_error_summary"
-+        android:defaultValue="true" />
-+    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-+        android:key="search_suggestions"
-+        android:title="@string/search_suggestions_title"
-+        android:summary="@string/search_suggestions_summary"
-+        android:defaultValue="true" />
-+    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-+        android:key="safe_browsing_scout_reporting"
-+        android:title="@string/safe_browsing_scout_reporting_title"
-+        android:summary="@string/safe_browsing_scout_reporting_summary" />
-+    <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-+        android:key="safe_browsing"
-+        android:title="@string/safe_browsing_title"
-+        android:summary="@string/safe_browsing_summary" />
-     <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
-         android:key="can_make_payment"
-         android:title="@string/can_make_payment_title"
-@@ -19,6 +37,9 @@
-         android:key="usage_stats_reporting"
-         android:title="@string/usage_stats_setting_title"
-         android:persistent="false" />
-+    <org.chromium.components.browser_ui.settings.ChromeBasePreference
-+        android:key="usage_and_crash_reports"
-+        android:title="@string/usage_and_crash_reports_title" />
-     <Preference
-         android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
-         android:key="do_not_track"
-@@ -32,6 +53,10 @@
-         android:title="@string/clear_browsing_data_title"
-         android:summary="@string/clear_browsing_data_summary"
-         android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
-+    <Preference
-+        android:key="sync_and_services_link_divider"
-+        android:layout="@layout/divider_preference"
-+        android:selectable="false"/>
-     <org.chromium.components.browser_ui.settings.TextMessagePreference
-         android:key="sync_and_services_link"
-         android:summary="@string/privacy_sync_and_services_link"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -16,11 +16,13 @@ import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
- 
- import org.chromium.base.BuildInfo;
- import org.chromium.chrome.R;
-+import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.help.HelpAndFeedback;
- import org.chromium.chrome.browser.preferences.Pref;
- import org.chromium.chrome.browser.preferences.PrefServiceBridge;
- import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager.DohEntry;
- import org.chromium.chrome.browser.profiles.Profile;
-+import org.chromium.chrome.browser.safe_browsing.SafeBrowsingBridge;
- import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
- import org.chromium.chrome.browser.settings.SettingsLauncher;
- import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
-@@ -40,11 +42,19 @@ import java.util.List;
-  */
- public class PrivacySettings
-         extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
-+    private static final String PREF_NAVIGATION_ERROR = "navigation_error";
-+    private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
-+    private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
-+            "safe_browsing_scout_reporting";
-+    private static final String PREF_SAFE_BROWSING = "safe_browsing";
-     private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
-     private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
-     private static final String PREF_SECURE_DNS = "secure_dns";
--    private static final String PREF_USAGE_STATS = "usage_stats_reporting";
-     private static final String PREF_DO_NOT_TRACK = "do_not_track";
-+    private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
-+    private static final String PREF_SYNC_AND_SERVICES_LINK_DIVIDER =
-+            "sync_and_services_link_divider";
-+    private static final String PREF_USAGE_STATS = "usage_stats_reporting";
-     private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
- 
-     private ManagedPreferenceDelegate mManagedPreferenceDelegate;
-@@ -73,15 +83,30 @@ public class PrivacySettings
-         Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
-         secureDnsPref.setVisible(privacyPrefManager.isDnsOverHttpsUiEnabled());
- 
--        Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
--        NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
--            SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
--            settingsLauncher.launchSettingsActivity(getActivity(), SyncAndServicesSettings.class,
--                    SyncAndServicesSettings.createArguments(false));
--        });
--        syncAndServicesLink.setSummary(
--                SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
--                        new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
-+        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
-+        getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
-+
-+        ChromeBaseCheckBoxPreference navigationErrorPref =
-+                (ChromeBaseCheckBoxPreference) findPreference(PREF_NAVIGATION_ERROR);
-+        navigationErrorPref.setOnPreferenceChangeListener(this);
-+        navigationErrorPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
-+
-+        ChromeBaseCheckBoxPreference searchSuggestionsPref =
-+                (ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
-+        searchSuggestionsPref.setOnPreferenceChangeListener(this);
-+        searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
-+
-+        // Listen to changes to the Extended Reporting pref.
-+        ChromeBaseCheckBoxPreference scoutReportingPref =
-+                (ChromeBaseCheckBoxPreference) findPreference(
-+                        PREF_SAFE_BROWSING_SCOUT_REPORTING);
-+        scoutReportingPref.setOnPreferenceChangeListener(this);
-+        scoutReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
-+
-+        ChromeBaseCheckBoxPreference safeBrowsingPref =
-+                (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
-+        safeBrowsingPref.setOnPreferenceChangeListener(this);
-+        safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- 
-         updateSummaries();
-     }
-@@ -94,6 +119,15 @@ public class PrivacySettings
-                     Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
-         } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
-             PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
-+        } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
-+            PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
-+        } else if (PREF_SAFE_BROWSING.equals(key)) {
-+            PrefServiceBridge.getInstance().setBoolean(Pref.SAFE_BROWSING_ENABLED, (boolean) newValue);
-+        } else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
-+            SafeBrowsingBridge.setSafeBrowsingExtendedReportingEnabled(
-+                    (boolean) newValue);
-+        } else if (PREF_NAVIGATION_ERROR.equals(key)) {
-+            PrefServiceBridge.getInstance().setBoolean(Pref.ALTERNATE_ERROR_PAGES_ENABLED, (boolean) newValue);
-         }
- 
-         return true;
-@@ -111,6 +145,35 @@ public class PrivacySettings
-     public void updateSummaries() {
-         PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
- 
-+        CharSequence textOn = getActivity().getResources().getText(R.string.text_on);
-+        CharSequence textOff = getActivity().getResources().getText(R.string.text_off);
-+
-+        CheckBoxPreference navigationErrorPref = (CheckBoxPreference) findPreference(
-+                PREF_NAVIGATION_ERROR);
-+        if (navigationErrorPref != null) {
-+            navigationErrorPref.setChecked(
-+                    prefServiceBridge.getBoolean(Pref.ALTERNATE_ERROR_PAGES_ENABLED));
-+        }
-+
-+        CheckBoxPreference searchSuggestionsPref = (CheckBoxPreference) findPreference(
-+                PREF_SEARCH_SUGGESTIONS);
-+        if (searchSuggestionsPref != null) {
-+            searchSuggestionsPref.setChecked(prefServiceBridge.getBoolean(Pref.SEARCH_SUGGEST_ENABLED));
-+        }
-+
-+        CheckBoxPreference extendedReportingPref =
-+                (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
-+        if (extendedReportingPref != null) {
-+            extendedReportingPref.setChecked(
-+                    SafeBrowsingBridge.isSafeBrowsingExtendedReportingEnabled());
-+        }
-+
-+        CheckBoxPreference safeBrowsingPref =
-+                (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
-+        if (safeBrowsingPref != null) {
-+            safeBrowsingPref.setChecked(prefServiceBridge.getBoolean(Pref.SAFE_BROWSING_ENABLED));
-+        }
-+
-         CheckBoxPreference canMakePaymentPref =
-                 (CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
-         if (canMakePaymentPref != null) {
-@@ -173,6 +236,18 @@ public class PrivacySettings
-     private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
-         return preference -> {
-             String key = preference.getKey();
-+            if (PREF_NAVIGATION_ERROR.equals(key)) {
-+                return PrefServiceBridge.getInstance().isManagedPreference(Pref.ALTERNATE_ERROR_PAGES_ENABLED);
-+            }
-+            if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
-+                return PrefServiceBridge.getInstance().isManagedPreference(Pref.SEARCH_SUGGEST_ENABLED);
-+            }
-+            if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
-+                return SafeBrowsingBridge.isSafeBrowsingExtendedReportingManaged();
-+            }
-+            if (PREF_SAFE_BROWSING.equals(key)) {
-+                return PrefServiceBridge.getInstance().isManagedPreference(Pref.SAFE_BROWSING_ENABLED);
-+            }
-             if (PREF_NETWORK_PREDICTIONS.equals(key)) {
-                 return PrivacyPreferencesManager.getInstance().isNetworkPredictionManaged();
-             }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
-@@ -193,10 +193,12 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
-      * @return the intent for opening the settings
-      */
-     private Intent createSettingsIntent() {
-+        final String fragmentName = SyncNotificationController.class.getName();
-+
-         SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
-         return settingsLauncher.createSettingsActivityIntent(ContextUtils.getApplicationContext(),
--                SyncAndServicesSettings.class.getName(),
--                SyncAndServicesSettings.createArguments(false));
-+                fragmentName);
-+
-     }
- 
-     /**
-diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
---- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
-+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncTestRule.java
-@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.ChromeActivity;
- import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
- import org.chromium.chrome.browser.autofill.PersonalDataManager;
- import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
-+import org.chromium.chrome.browser.ChromeFeatureList;
- import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
- import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
- import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
-@@ -430,9 +431,12 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
-                             Assert.fail("Sign-in was aborted");
-                         }
-                     });
--            // Outside of tests, URL-keyed anonymized data collection is enabled by sign-in UI.
--            UnifiedConsentServiceBridge.setUrlKeyedAnonymizedDataCollectionEnabled(
--                    Profile.getLastUsedRegularProfile(), true);
-+            if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
-+                // Outside of tests, URL-keyed anonymized data collection is enabled by sign-in UI.
-+                // Note: If unified consent is not enabled, then UKM will be enabled based on
-+                // the history sync state.
-+                UnifiedConsentServiceBridge.setUrlKeyedAnonymizedDataCollectionEnabled(true);
-+            }
-         });
-         if (setFirstSetupComplete) {
-             SyncTestUtil.waitForSyncActive();
-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
-@@ -681,6 +681,18 @@ CHAR-LIMIT guidelines:
-       <message name="IDS_PREFS_PRIVACY" desc="Title for the Privacy preferences. [CHAR-LIMIT=32]">
-         Privacy
-       </message>
-+      <message name="IDS_NAVIGATION_ERROR_TITLE" desc="Title for checkbox to enable or disable navigation error suggestions.">
-+        Navigation error suggestions
-+      </message>
-+      <message name="IDS_NAVIGATION_ERROR_SUMMARY" desc="Summary for navigation error suggestions.">
-+        Show suggestions when a web address does not resolve or a connection cannot be made
-+      </message>
-+      <message name="IDS_SEARCH_SUGGESTIONS_TITLE" desc="Title for search and url suggestions.">
-+        Search and URL suggestions
-+      </message>
-+      <message name="IDS_SEARCH_SUGGESTIONS_SUMMARY" desc="Summary for search and url suggestions.">
-+        Use a prediction service to show related queries and popular websites as you type in the address bar
-+      </message>
-       <message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_TITLE" desc="Title for checkbox that controls reporting data to detect bad apps/sites. Please ensure ‘Safe Browsing’ in this message matches the ‘Safe Browsing’ settings title.">
-         Help improve Chrome security
-       </message>
-@@ -1217,6 +1229,9 @@ Your Google account may have other forms of browsing history like searches and a
-       <message name="IDS_ACCOUNT_MANAGEMENT_TITLE" desc="Header title for the account management screen. [CHAR-LIMIT=32]">
-         Signed in to Google as
-       </message>
-+      <message name="IDS_ACCOUNT_MANAGEMENT_SYNC_SUMMARY" desc="Description for which account the data is being synced to">
-+        Syncing to <ph name="SYNC_ACCOUNT_USER_NAME">%1$s<ex>johndoe@gmail.com</ex></ph>
-+      </message>
-       <message name="IDS_ACCOUNT_MANAGEMENT_SIGN_OUT" desc="Button text for signing out of Chrome">
-         Sign out of Chrome
-       </message>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">ሁሉንም ትሮች ይዝጉ</translation>
- <translation id="987264212798334818">አጠቃላይ</translation>
- <translation id="996149300115483134">የምግብ ካርድ ምናሌ ተዘግቷል</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">ትሮችዎን ከሌሎች መሣሪያዎችዎ ለማግኘት ወደ Chrome ይግቡ።</translation>
-+<translation id="136248372334525878">ለበለጠ ፈጣን ጭነት እና የመስመር ውጭ ንባብ ገጾችን አስቀድመው ይጫኑ</translation>
-+<translation id="1946005195648379376">Google ፍለጋን እና ሌሎች የGoogle አገልግሎቶችን ግላዊነት ለማላበስ ብሎ የአሰሳ ታሪክዎን እንዴት እንደሚጠቀምበት ይቆጣጠሩት።</translation>
-+<translation id="2086652334978798447">በGoogle የሚጠቆም ግላዊነት የተላበሰ ይዘትን ለማግኘት በመለያ ወደ Chrome ይግቡ።</translation>
-+<translation id="2342981853652716282">የእርስዎን ዕልባቶች፣ የይለፍ ቃላት እና በሁሉም የእርስዎ መሣሪያዎች ላይ ተጨማሪ ለማግኘት ወደ Chrome በመለያ ይግቡ።</translation>
-+<translation id="3148434565183091099">የእርስዎን ዕልባቶች በሁሉም መሣሪያዎችዎ ላይ ለማግኘት ወደ Chrome ይግቡ።</translation>
-+<translation id="3672452749423051839">የአሰሳ ስህተት ጥቆማ አስተያየቶች</translation>
-+<translation id="4042870126885713738">አንድ የድር አድራሻ መፍትሔ ካላመጣ ወይም ግንኙነት ሊፈጠር ካልቻለ ጥቆማዎችን አሳይ</translation>
-+<translation id="424864128008805179">ከChrome ተዘግቶ ይወጣ?</translation>
-+<translation id="4409723563706114196">የገጽ ግመታዎችን ይጠቀሙ</translation>
-+<translation id="5222676887888702881">ዘግተህ ውጣ</translation>
-+<translation id="5284584623296338184">በእርስዎ ዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎች ቅንብሮች ላይ የተደረጉ ለውጦች ከአሁን በኋላ ከእርስዎ የGoogle መለያ ጋር አይሠምሩም። ሆኖም ግን ነባር ውሂብዎ በእርስዎ የGoogle መለያ ላይ እንደተከማቸ ይቆያል።</translation>
-+<translation id="5777170031995031090">Google ፍለጋን፣ ማስታወቂያዎችን እና ሌሎች የGoogle አገልግሎቶችን ግላዊነት ለማላበስ ብሎ የአሰሳ ታሪክዎን እንዴት እንደሚጠቀምበት ይቆጣጠሩት።</translation>
-+<translation id="6448273550210938826">የፍለጋ እና ዩአርኤል ጥቆማዎች</translation>
-+<translation id="666268767214822976">በአድራሻ አሞሌው ላይ እየተየቡ ሳለ ተዛማጅ መጠይቆችን ለማሳየት እና ታዋቂ ድር ጣቢያዎችን ለማሳየት የመገመቻ አገልግሎት ይጠቀሙ</translation>
-+<translation id="8283853025636624853">ከ<ph name="SYNC_ACCOUNT_USER_NAME" /> ጋር ማሥመር</translation>
-+<translation id="8981454092730389528">የGoogle እንቅስቃሴ መቆጣጠሪያዎች</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">إغلاق جميع علامات التبويب</translation>
- <translation id="987264212798334818">عام</translation>
- <translation id="996149300115483134">قائمة بطاقات الخلاصة مغلقة</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">‏للحصول على علامات التبويب من أجهزتك الأخرى، سجّل الدخول إلى Chrome.</translation>
-+<translation id="136248372334525878">يتم تحميل الصفحات بشكل مسبق لضمان تحميلها على نحو أسرع وإتاحة قراءتها بلا اتصال بالإنترنت.</translation>
-+<translation id="1946005195648379376">‏التحكّم في الطريقة التي تتّبعها Google عند استخدام سجلّ التصفّح لتخصيص البحث وخدمات Google الأخرى</translation>
-+<translation id="2086652334978798447">‏للحصول على محتوى مخصص اقترحته Google، سجِّلْ الدخول إلى Chrome.</translation>
-+<translation id="2342981853652716282">‏سجّل الدخول إلى Chrome للحصول على الإشارات المرجعية وكلمات المرور والإعدادات الأخرى واستخدامها على جميع أجهزتك.</translation>
-+<translation id="3148434565183091099">‏للحصول على الإشارات المرجعية على جميع أجهزتك، سجِّل الدخول إلى Chrome.</translation>
-+<translation id="3672452749423051839">اقتراحات عن الأخطاء في التنقل</translation>
-+<translation id="4042870126885713738">يتم عرض اقتراحات عند تعذّر فتح عنوان ويب أو تعذّر الاتصال بالإنترنت.</translation>
-+<translation id="424864128008805179">‏هل تريد تسجيل الخروج من Chrome؟</translation>
-+<translation id="4409723563706114196">استخدام ميزة توقّع الصفحات</translation>
-+<translation id="5222676887888702881">تسجيل الخروج</translation>
-+<translation id="5284584623296338184">‏لن تتم بعد الآن مزامنة التغييرات التي تطرأ على الإشارات المرجعية والسجلّ وكلمات المرور وغيرها من الإعدادات مع حسابك على Google، ولكن ستظل بياناتك الحالية مخزّنة في حسابك على Google.</translation>
-+<translation id="5777170031995031090">‏التحكّم في الطريقة التي تتّبعها Google عند استخدام سجلّ التصفّح لتخصيص البحث والإعلانات وخدمات Google الأخرى</translation>
-+<translation id="6448273550210938826">‏اقتراحات عن طلبات البحث وعناوين URL</translation>
-+<translation id="666268767214822976">يمكنك استخدام خدمة التوقّعات لعرض طلبات البحث ذات الصلة ومواقع الويب الشائعة أثناء الكتابة في شريط العناوين.</translation>
-+<translation id="8283853025636624853">تتم المزامنة مع <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">‏عناصر التحكم في النشاط على Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">Затваряне на всички раздели</translation>
- <translation id="987264212798334818">Общи</translation>
- <translation id="996149300115483134">Менюто на картата за емисията е затворено</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Влезте в Chrome, за да получите разделите си от другите си устройства.</translation>
-+<translation id="136248372334525878">Предварително зареждане на страниците с цел по-бързо отваряне и четене офлайн</translation>
-+<translation id="1946005195648379376">Контролирайте начина, по който използваме историята ви на сърфиране, за да персонализираме търсенето и други услуги на Google.</translation>
-+<translation id="2086652334978798447">За да получавате персонализирано съдържание, предлагано от Google, влезте в Chrome.</translation>
-+<translation id="2342981853652716282">Влезте в Chrome, за да получите отметките, паролите и др. на всичките си устройства.</translation>
-+<translation id="3148434565183091099">Влезте в Chrome, за да получите отметките си на всичките си устройства.</translation>
-+<translation id="3672452749423051839">Предложения в случай на грешки при сърфиране</translation>
-+<translation id="4042870126885713738">Показване на предложения, когато даден уеб адрес не може да бъде преобразуван или не може да бъде осъществена връзка</translation>
-+<translation id="424864128008805179">Искате ли да излезете от Chrome?</translation>
-+<translation id="4409723563706114196">Използване на предвижданията за страници</translation>
-+<translation id="5222676887888702881">Изход</translation>
-+<translation id="5284584623296338184">Промените в отметките, историята, паролите и другите ви настройки вече няма да се синхронизират с профила ви в Google. Съществуващите ви данни обаче ще продължат да се съхраняват в него.</translation>
-+<translation id="5777170031995031090">Контролирайте начина, по който използваме историята ви на сърфиране, за да персонализираме търсенето, рекламите и други услуги на Google.</translation>
-+<translation id="6448273550210938826">Предложения за търсене и за URL адреси</translation>
-+<translation id="666268767214822976">Използване на услуга за предвиждания за показване на сродни заявки и популярни уебсайтове, докато пишете в адресната лента</translation>
-+<translation id="8283853025636624853">Синхронизира се със: <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Контроли за активността в Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
-@@ -1047,4 +1047,21 @@
- <translation id="983192555821071799">সমস্ত ট্যাবগুলি বন্ধ করুন</translation>
- <translation id="987264212798334818">সাধারণ</translation>
- <translation id="996149300115483134">ফিড কার্ডের মেনু বন্ধ করা আছে</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">আপনার অন্য ডিভাইসগুলি থেকে আপনার ট্যাবগুলি পেতে, Chrome-এ সাইন-ইন করুন।</translation>
-+<translation id="136248372334525878">দ্রুত লোডিং এবং অফলাইনে পড়ার জন্য পৃষ্ঠাটি আগে লোড করুন</translation>
-+<translation id="1946005195648379376">সার্চ এবং অন্যান্য Google পরিষেবা নিজের মতো করতে Google কিভাবে আপনার ব্রাউজিং ইতিহাস ব্যবহার করে তা নিয়ন্ত্রণ করুন।</translation>
-+<translation id="2086652334978798447">Google-এর প্রস্তাবিত নিজের মতো করা কন্টেন্ট পেতে, Chrome-এ সাইন-ইন করুন।</translation>
-+<translation id="2342981853652716282">আপনার বুকমার্ক, পাসওয়ার্ড এবং অন্যান্য জিনিস আপনার সমস্ত ডিভাইসে পেতে Chrome-এ সাইন-ইন করুন।</translation>
-+<translation id="3148434565183091099">সব ডিভাইসে আপনার বুকমার্কগুলি পেতে Chrome-এ সাইন-ইন করুন।</translation>
-+<translation id="3672452749423051839">নেভিগেশান ত্রুটির পরামর্শগুলি</translation>
-+<translation id="4042870126885713738">যখন কোনো ওয়েব ঠিকানা সমাধান করা না গেলে অথবা কোনো সংযোগ স্থাপন করা না গেলে সেক্ষেত্রে প্রস্তাবগুলি দেখান</translation>
-+<translation id="424864128008805179">Chrome থেকে সাইন-আউট করবেন?</translation>
-+<translation id="4409723563706114196">পৃষ্ঠার প্রস্তাবনা ব্যবহার করুন</translation>
-+<translation id="5222676887888702881">সাইন-আউট করুন</translation>
-+<translation id="5284584623296338184">আপনার বুকমার্ক, ইতিহাস, পাসওয়ার্ড এবং অন্যান্য সেটিংসে করা পরিবর্তন আর আপনার Google অ্যাকাউন্টের সাথে সিঙ্ক করা হবে না। অবশ্য, আপনার বর্তমান ডেটা আপনার Google অ্যাকাউন্টে সঞ্চিত থাকবে।</translation>
-+<translation id="5777170031995031090">সার্চ, বিজ্ঞাপন এবং অন্যান্য Google পরিষেবা নিজের মতো করতে Google কিভাবে আপনার ব্রাউজিং ইতিহাস ব্যবহার করে তা নিয়ন্ত্রণ করুন।</translation>
-+<translation id="6448273550210938826">সার্চ এবং URL পরামর্শগুলি</translation>
-+<translation id="666268767214822976">সম্পর্কিত কোয়েরি এবং অ্যাড্রেস বারের মধ্যে আপনার টাইপ করা জনপ্রিয় ওয়েবসাইটগুলি দেখাতে একটি পূর্বাভাস পরিষেবা ব্যবহার করুন</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> এ সিঙ্ক হচ্ছে</translation>
-+<translation id="8981454092730389528">Google অ্যাক্টিভিটির নিয়ন্ত্রণগুলি</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
-@@ -1045,4 +1045,21 @@ Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud
- <translation id="983192555821071799">Tanca totes les pestanyes</translation>
- <translation id="987264212798334818">General</translation>
- <translation id="996149300115483134">El menú de la targeta del tauler està tancat</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Inicia la sessió a Chrome per accedir a les pestanyes dels altres dispositius que tinguis.</translation>
-+<translation id="136248372334525878">Carrega les pàgines prèviament perquè es mostrin més ràpid i per poder llegir-les sense connexió</translation>
-+<translation id="1946005195648379376">Controla com Google utilitza l'historial de navegació per personalitzar la Cerca i altres serveis de Google.</translation>
-+<translation id="2086652334978798447">Inicia la sessió a Chrome perquè Google et suggereixi contingut personalitzat</translation>
-+<translation id="2342981853652716282">Inicia la sessió a Chrome per accedir a les adreces d'interès, les contrasenyes i altres continguts des de tots els teus dispositius.</translation>
-+<translation id="3148434565183091099">Inicia la sessió a Chrome per accedir a les adreces d'interès des de tots els dispositius.</translation>
-+<translation id="3672452749423051839">Suggeriments d'errors de navegació</translation>
-+<translation id="4042870126885713738">Mostra suggeriments quan no es resol una adreça web o quan no es pot establir una connexió</translation>
-+<translation id="424864128008805179">Vols tancar la sessió de Chrome?</translation>
-+<translation id="4409723563706114196">Utilitza les prediccions de pàgines</translation>
-+<translation id="5222676887888702881">Tanca la sessió</translation>
-+<translation id="5284584623296338184">Els canvis que es facin a les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració es deixaran de sincronitzar amb el Compte de Google. No obstant això, les dades actuals hi continuaran emmagatzemades.</translation>
-+<translation id="5777170031995031090">Controla com Google utilitza l'historial de navegació per personalitzar la Cerca, els anuncis i altres serveis de Google.</translation>
-+<translation id="6448273550210938826">Suggeriments de cerca i d'URL</translation>
-+<translation id="666268767214822976">Utilitza un servei de predicció per mostrar consultes relacionades i llocs web populars mentre escrius a la barra d'adreces</translation>
-+<translation id="8283853025636624853">Se sincronitza amb <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Controls d'activitat de Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
-@@ -1045,4 +1045,21 @@ Některé weby mohou například na tento požadavek reagovat tak, že vám zobr
- <translation id="983192555821071799">Zavřít všechny karty</translation>
- <translation id="987264212798334818">Všeobecné</translation>
- <translation id="996149300115483134">Nabídka karty informačních kanálů je zavřená</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Chcete-li získat přístup ke kartám ze svých ostatních zařízení, přihlaste se do Chromu.</translation>
-+<translation id="136248372334525878">Načítat stránky předem kvůli rychlejšímu načítání a čtení offline</translation>
-+<translation id="1946005195648379376">Nastavte, jak má Google využívat vaši historii procházení k personalizaci Vyhledávání a dalších služeb Google.</translation>
-+<translation id="2086652334978798447">Chcete-li od Googlu získat personalizované návrhy obsahu, přihlaste se do Chromu.</translation>
-+<translation id="2342981853652716282">Chcete-li mít své záložky, hesla a další obsah na všech zařízeních, přihlaste se do Chromu.</translation>
-+<translation id="3148434565183091099">Chcete-li záložky synchronizovat do všech zařízení, přihlaste se do Chromu.</translation>
-+<translation id="3672452749423051839">Návrhy při chybách navigace</translation>
-+<translation id="4042870126885713738">Zobrazovat návrhy, pokud nelze vyhledat webovou adresu nebo navázat připojení.</translation>
-+<translation id="424864128008805179">Odhlásit se z Chromu?</translation>
-+<translation id="4409723563706114196">Předvídat stránky</translation>
-+<translation id="5222676887888702881">Odhlásit se</translation>
-+<translation id="5284584623296338184">Změny záložek, historie, hesel a dalších nastavení se již nebudou synchronizovat do vašeho účtu Google. Vaše existující data však v účtu Google uložena zůstanou.</translation>
-+<translation id="5777170031995031090">Nastavte, jak má Google využívat vaši historii procházení k personalizaci Vyhledávání, reklam a dalších služeb Google.</translation>
-+<translation id="6448273550210938826">Vyhledávání a návrhy adres URL</translation>
-+<translation id="666268767214822976">Používat službu předpovídání k zobrazení souvisejících dotazů a oblíbených webových stránek.</translation>
-+<translation id="8283853025636624853">Data se synchronizují do účtu <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Ovládací prvky aktivity Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
-@@ -1045,4 +1045,21 @@ Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer,
- <translation id="983192555821071799">Luk alle faner</translation>
- <translation id="987264212798334818">Generelt</translation>
- <translation id="996149300115483134">Feedkortmenuen er lukket</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Log ind på Chrome for at få adgang til dine faner på dine andre enheder.</translation>
-+<translation id="136248372334525878">Forudindlæs sider, så de indlæses hurtigere og kan ses offline</translation>
-+<translation id="1946005195648379376">Administrer, hvordan Google bruger din browserhistorik til at tilpasse Søgning og andre Google-tjenester personligt til dig.</translation>
-+<translation id="2086652334978798447">Log ind på Chrome for at hente brugertilpasset indhold, som er foreslået af Chrome.</translation>
-+<translation id="2342981853652716282">Log ind på Chrome for at få dine bogmærker, adgangskoder og meget mere på alle dine enheder.</translation>
-+<translation id="3148434565183091099">Log ind på Chrome for at se dine bogmærker på alle dine enheder.</translation>
-+<translation id="3672452749423051839">Forslag ved navigationsfejl</translation>
-+<translation id="4042870126885713738">Vis forslag, hvis en webadresse ikke bliver fundet, eller hvis der ikke kan oprettes forbindelse</translation>
-+<translation id="424864128008805179">Vil du logge ud af Chrome?</translation>
-+<translation id="4409723563706114196">Brug sideforslag</translation>
-+<translation id="5222676887888702881">Log ud</translation>
-+<translation id="5284584623296338184">Ændringer i dine bogmærker, din historik, dine adgangskoder og andre indstillinger synkroniseres ikke længere til din Google-konto, men dine eksisterende data er stadig gemt på din Google-konto.</translation>
-+<translation id="5777170031995031090">Administrer, hvordan Google bruger din browserhistorik til at tilpasse Søgning, annoncer og andre Google-tjenester personligt til dig.</translation>
-+<translation id="6448273550210938826">Forslag til søgning og webadresser</translation>
-+<translation id="666268767214822976">Brug en forslagstjeneste til at få vist relaterede forespørgsler og populære websites, mens du skriver i adresselinjen</translation>
-+<translation id="8283853025636624853">Synkroniserer til <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Aktivitetsadministration på Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
-@@ -1045,4 +1045,21 @@ Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht dara
- <translation id="983192555821071799">Alle Tabs schließen</translation>
- <translation id="987264212798334818">Allgemein</translation>
- <translation id="996149300115483134">Feedkartenmenü ist geschlossen</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Melden Sie sich in Chrome an, um Tabs von Ihren anderen Geräten abzurufen.</translation>
-+<translation id="136248372334525878">Seiten vorab laden, um das Surfen und die Suche zu beschleunigen</translation>
-+<translation id="1946005195648379376">Legen Sie fest, wie Google anhand des Browserverlaufs die Suche und andere Google-Dienste für Sie personalisieren soll.</translation>
-+<translation id="2086652334978798447">Melden Sie sich in Chrome an, um personalisierte, von Google vorgeschlagene Inhalte zu erhalten.</translation>
-+<translation id="2342981853652716282">Melden Sie sich in Chrome an, um Daten wie Lesezeichen und Passwörter auf allen Ihren Geräten zu nutzen.</translation>
-+<translation id="3148434565183091099">Melden Sie sich in Chrome an, um auf all Ihren Geräten auf Ihre Lesezeichen zugreifen zu können.</translation>
-+<translation id="3672452749423051839">Vorschläge bei Navigationsfehlern</translation>
-+<translation id="4042870126885713738">Vorschläge einblenden, wenn eine Webadresse nicht gefunden oder keine Verbindung hergestellt werden kann</translation>
-+<translation id="424864128008805179">Von Chrome abmelden?</translation>
-+<translation id="4409723563706114196">Vervollständigungen für Seiten verwenden</translation>
-+<translation id="5222676887888702881">Abmelden</translation>
-+<translation id="5284584623296338184">Änderungen an Ihren Lesezeichen, Ihrem Verlauf, Ihren Passwörtern und anderen Einstellungen werden nicht mehr mit Ihrem Google-Konto synchronisiert. Ihre vorhandenen Daten bleiben aber in Ihrem Google-Konto gespeichert.</translation>
-+<translation id="5777170031995031090">Sie können festlegen, wie Google Ihren Browserverlauf nutzt, um die Suche, Werbung und andere Google-Dienste zu personalisieren.</translation>
-+<translation id="6448273550210938826">Such- und URL-Vorschläge</translation>
-+<translation id="666268767214822976">Während der Eingabe in die Adressleiste mithilfe einer Vervollständigungsfunktion ähnliche Suchanfragen und beliebte Websites einblenden</translation>
-+<translation id="8283853025636624853">Synchronisierung mit <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google-Aktivitätseinstellungen</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">Κλείσιμο όλων των καρτελών</translation>
- <translation id="987264212798334818">Γενικά</translation>
- <translation id="996149300115483134">Το μενού της κάρτας ροής είναι κλειστό</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Για να εμφανίζονται οι καρτέλες από τις άλλες συσκευές σας, συνδεθείτε στο Chrome.</translation>
-+<translation id="136248372334525878">Προφόρτωση ιστοσελίδων για ταχύτερη φόρτωση και ανάγνωση εκτός σύνδεσης</translation>
-+<translation id="1946005195648379376">Ελέγξτε τον τρόπο με τον οποίο η Google χρησιμοποιεί το ιστορικό περιήγησής σας για να εξατομικεύει την Αναζήτηση και άλλες υπηρεσίες Google.</translation>
-+<translation id="2086652334978798447">Για να λάβετε εξατομικευμένο περιεχόμενο που προτείνεται από την Google, συνδεθείτε στο Chrome.</translation>
-+<translation id="2342981853652716282">Συνδεθείτε στο Chrome, για να έχετε τους σελιδοδείκτες, τους κωδικούς πρόσβασης κ.ά. σε όλες τις συσκευές σας.</translation>
-+<translation id="3148434565183091099">Για να εμφανίζονται οι σελιδοδείκτες σας σε όλες τις συσκευές σας, συνδεθείτε στο Chrome.</translation>
-+<translation id="3672452749423051839">Προτάσεις σφάλματος πλοήγησης</translation>
-+<translation id="4042870126885713738">Εμφάνιση προτάσεων όταν μια διεύθυνση ιστού δεν αναλύεται σωστά ή δεν είναι δυνατό να πραγματοποιηθεί σύνδεση</translation>
-+<translation id="424864128008805179">Αποσύνδεση από το Chrome;</translation>
-+<translation id="4409723563706114196">Χρήση προβλέψεων σελίδας</translation>
-+<translation id="5222676887888702881">Έξοδος</translation>
-+<translation id="5284584623296338184">Οι αλλαγές σε σελιδοδείκτες, ιστορικό, κωδικούς πρόσβασης και άλλες ρυθμίσεις δεν θα συγχρονίζονται πλέον με το Λογαριασμό σας Google. Ωστόσο, τα υπάρχοντα δεδομένα σας θα παραμείνουν αποθηκευμένα στο λογαριασμό σας Google.</translation>
-+<translation id="5777170031995031090">Ελέγξτε τον τρόπο με τον οποίο η Google χρησιμοποιεί το ιστορικό περιήγησής σας για την εξατομίκευση της Αναζήτησης, των διαφημίσεων και άλλων υπηρεσιών Google.</translation>
-+<translation id="6448273550210938826">Αναζήτηση και προτάσεις διευθύνσεων URL</translation>
-+<translation id="666268767214822976">Χρήση υπηρεσίας προβλέψεων για την εμφάνιση σχετικών ερωτημάτων και δημοφιλών ιστοτόπων, καθώς πληκτρολογείτε στη γραμμή διευθύνσεων</translation>
-+<translation id="8283853025636624853">Συγχρονισμός με <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Στοιχεία ελέγχου δραστηριότητας Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
-@@ -1045,4 +1045,21 @@ For example, some websites may respond to this request by showing you ads that a
- <translation id="983192555821071799">Close all tabs</translation>
- <translation id="987264212798334818">General</translation>
- <translation id="996149300115483134">Feed card menu is closed</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">To get your tabs from your other devices, sign in to Chrome.</translation>
-+<translation id="136248372334525878">Preload pages for faster loading and offline reading</translation>
-+<translation id="1946005195648379376">Control how Google uses your browsing history to personalise Search and other Google services.</translation>
-+<translation id="2086652334978798447">To get personalised content suggested by Google, sign in to Chrome.</translation>
-+<translation id="2342981853652716282">Sign in to Chrome to get your bookmarks, passwords and more on all your devices.</translation>
-+<translation id="3148434565183091099">To get your bookmarks on all your devices, sign in to Chrome.</translation>
-+<translation id="3672452749423051839">Navigation error suggestions</translation>
-+<translation id="4042870126885713738">Show suggestions when a web address does not resolve or a connection cannot be made</translation>
-+<translation id="424864128008805179">Sign out of Chrome?</translation>
-+<translation id="4409723563706114196">Use page predictions</translation>
-+<translation id="5222676887888702881">Sign out</translation>
-+<translation id="5284584623296338184">Changes to your bookmarks, history, passwords and other settings will no longer be synced to your  Google Account. However, your existing data will remain stored in your Google Account.</translation>
-+<translation id="5777170031995031090">Control how Google uses your browsing history to personalise Search, ads and other Google services.</translation>
-+<translation id="6448273550210938826">Search and URL suggestions</translation>
-+<translation id="666268767214822976">Use a prediction service to show related queries and popular websites as you type in the address bar</translation>
-+<translation id="8283853025636624853">Syncing to <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google Activity Controls</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
-@@ -1045,4 +1045,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncio
- <translation id="983192555821071799">Cerrar todas las pestañas</translation>
- <translation id="987264212798334818">General</translation>
- <translation id="996149300115483134">Se cerró el menú de la tarjeta de feed</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Accede a Chrome para obtener las pestañas de tus otros dispositivos.</translation>
-+<translation id="136248372334525878">Carga las páginas previamente para acelerar la carga y leerlas sin conexión</translation>
-+<translation id="1946005195648379376">Controla la forma en que Google usa tu historial de navegación para personalizar Búsqueda y otros servicios de Google.</translation>
-+<translation id="2086652334978798447">Para obtener contenido personalizado y sugerido por Google, accede a tu cuenta en Chrome.</translation>
-+<translation id="2342981853652716282">Accede a tu cuenta en Chrome para obtener tus favoritos, contraseñas y mucho más desde todos tus dispositivos.</translation>
-+<translation id="3148434565183091099">Para usar tus favoritos en todos los dispositivos, accede a Chrome.</translation>
-+<translation id="3672452749423051839">Sugerencias relacionadas con errores de navegación</translation>
-+<translation id="4042870126885713738">Mostrar sugerencias cuando no se resuelve una dirección web o cuando no se puede establecer una conexión</translation>
-+<translation id="424864128008805179">¿Quieres salir de Chrome?</translation>
-+<translation id="4409723563706114196">Usar las predicciones de página</translation>
-+<translation id="5222676887888702881">Salir</translation>
-+<translation id="5284584623296338184">Los cambios que hagas en tus favoritos, historial, contraseñas y otras opciones de configuración se seguirán sincronizando con tu cuenta de Google. Sin embargo, tus datos existentes seguirán almacenados en tu cuenta de Google.</translation>
-+<translation id="5777170031995031090">Controla la forma en que Google usa tu historial de navegación para personalizar Búsqueda, Ads y otros servicios de Google.</translation>
-+<translation id="6448273550210938826">Sugerencias de URL y de búsqueda</translation>
-+<translation id="666268767214822976">Usar un servicio de predicción para ver consultas relacionadas y sitios web populares a medida que escribes en la barra de direcciones.</translation>
-+<translation id="8283853025636624853">Sincronizando con <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Controles de actividad de Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
-@@ -1045,4 +1045,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anu
- <translation id="983192555821071799">Cerrar todas las pestañas</translation>
- <translation id="987264212798334818">General</translation>
- <translation id="996149300115483134">El menú de la tarjeta del feed está cerrado</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Inicia sesión en Chrome para ver las pestañas de tus otros dispositivos.</translation>
-+<translation id="136248372334525878">Carga las páginas previamente para mostrarlas más rápido y poder leerlas sin conexión</translation>
-+<translation id="1946005195648379376">Controla cómo utiliza Google tu historial de navegación para personalizar la Búsqueda y otros servicios de Google.</translation>
-+<translation id="2086652334978798447">Para obtener contenido personalizado sugerido por Google, inicia sesión en Chrome.</translation>
-+<translation id="2342981853652716282">Inicia sesión en Chrome para sincronizar los marcadores, las contraseñas y mucho más en todos tus dispositivos.</translation>
-+<translation id="3148434565183091099">Inicia sesión en Chrome para ver tus marcadores en todos tus dispositivos.</translation>
-+<translation id="3672452749423051839">Sugerencias para errores de navegación</translation>
-+<translation id="4042870126885713738">Muestra sugerencias cuando no se puede resolver una dirección web o no se puede establecer una conexión</translation>
-+<translation id="424864128008805179">¿Quieres cerrar sesión en Chrome?</translation>
-+<translation id="4409723563706114196">Utilizar predicciones de página</translation>
-+<translation id="5222676887888702881">Cerrar sesión</translation>
-+<translation id="5284584623296338184">Los cambios que realices en los marcadores, el historial, las contraseñas y otras opciones no se sincronizarán con tu cuenta de Google. Sin embargo, tus datos actuales seguirán almacenados en tu cuenta.</translation>
-+<translation id="5777170031995031090">Controla cómo utiliza Google tu historial de navegación para personalizar la Búsqueda, los anuncios y otros servicios de Google.</translation>
-+<translation id="6448273550210938826">Sugerencias de URL y de búsqueda</translation>
-+<translation id="666268767214822976">Utiliza un servicio de predicciones para mostrar consultas relacionadas y sitios web populares a medida que escribes en la barra de direcciones</translation>
-+<translation id="8283853025636624853">Sincronizando con <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Gestión de tu actividad en Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
-@@ -1045,4 +1045,21 @@ Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teil
- <translation id="983192555821071799">Sule kõik vahelehed</translation>
- <translation id="987264212798334818">Üldine</translation>
- <translation id="996149300115483134">Voo kaardimenüü on suletud</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Vahelehtede hankimiseks oma teistest seadmetest logige Chrome'i sisse.</translation>
-+<translation id="136248372334525878">Eellaaditakse lehti kiiremaks laadimiseks ja võrguühenduseta lugemiseks</translation>
-+<translation id="1946005195648379376">Saate juhtida seda, kuidas Google kasutab teie sirvimisajalugu otsingu ja muude Google'i teenuste isikupärastamiseks.</translation>
-+<translation id="2086652334978798447">Google'i soovitatud isikupärastatud sisu hankimiseks logige Chrome'i sisse.</translation>
-+<translation id="2342981853652716282">Logige Chrome'i sisse, et kõikides oma seadmetes kasutada järjehoidjaid, paroole ja muud.</translation>
-+<translation id="3148434565183091099">Järjehoidjate hankimiseks kõikidesse seadmetesse logige Chrome'i sisse.</translation>
-+<translation id="3672452749423051839">Soovitused navigeerimisvigade korral</translation>
-+<translation id="4042870126885713738">Soovituste näitamine, kui veebiaadressi ei saa lahendada või ühendust ei õnnestu luua</translation>
-+<translation id="424864128008805179">Kas logida Chrome'ist välja?</translation>
-+<translation id="4409723563706114196">Kasuta lehe ennustusi</translation>
-+<translation id="5222676887888702881">Logi välja</translation>
-+<translation id="5284584623296338184">Järjehoidjates, ajaloos, paroolides ja muudes seadetes tehtud muudatusi ei sünkroonita enam teie Google'i kontoga. Teie olemasolevad andmed jäävad siiski teie Google'i kontole.</translation>
-+<translation id="5777170031995031090">Juhtige seda, kuidas Google kasutab teie sirvimisajalugu otsingu, reklaamide ja muude Google'i teenuste isikupärastamiseks.</translation>
-+<translation id="6448273550210938826">Otsingu ja URL-i soovitused</translation>
-+<translation id="666268767214822976">Aadressiribale teksti sisestamisel ennustusteenuse abil seotud päringute ja populaarsete veebisaitide kuvamine</translation>
-+<translation id="8283853025636624853">Sünkroonimine kontoga <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google'i kontotegevuste haldus</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">بستن همه برگه‌ها</translation>
- <translation id="987264212798334818">موارد کلی</translation>
- <translation id="996149300115483134">منوی کارت فید بسته شد</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">‏برای دسترسی به برگه‌هایتان در دستگاه‌های دیگر، به سیستم Chrome وارد شوید.</translation>
-+<translation id="136248372334525878">برای بارگیری سریع‌تر و خواندن درحالت آفلاین، صفحات را پیش‌بارگیری کنید</translation>
-+<translation id="1946005195648379376">‏نحوه استفاده Google از سابقه مرورتان را برای شخصی‌سازی جستجو و سایر سرویس‌های Google کنترل کنید.</translation>
-+<translation id="2086652334978798447">‏برای دریافت محتوای شخصی‌سازی‌شده پیشنهادی Google، به Chrome وارد شوید.</translation>
-+<translation id="2342981853652716282">‏برای دریافت نشانک‌ها، گذرواژه‌ها و موارد دیگر در همه دستگاه‌هایتان، به سیستم Chrome وارد شوید.</translation>
-+<translation id="3148434565183091099">‏برای اینکه نشانک‌ها را در همه دستگاه‌هایتان دریافت کنید به سیستم Chrome وارد شوید.</translation>
-+<translation id="3672452749423051839">پیشنهادات خطای پیمایش</translation>
-+<translation id="4042870126885713738">وقتی آدرس وب شناسایی نمی‌شود یا اتصال برقرار نمی‌شود، پیشنهاداتی نشان داده می‌شود</translation>
-+<translation id="424864128008805179">‏از سیستم Chrome خارج می شوید؟</translation>
-+<translation id="4409723563706114196">استفاده از پیش‌بینی صفحه</translation>
-+<translation id="5222676887888702881">خروج از سیستم</translation>
-+<translation id="5284584623296338184">‏تغییرات در نشانک‌ها، سابقه، گذرواژه و سایر تنظیمات دیگر با حساب Google شما همگام‌سازی نخواهد شد. با این حال، داده‌های موجودتان در حساب Google شما باقی خواهند ماند.</translation>
-+<translation id="5777170031995031090">‏نحوه استفاده Google را از سابقه مرورتان برای شخصی‌سازی جستجو، آگهی‌ها و سایر سرویس‌های Google کنترل کنید.</translation>
-+<translation id="6448273550210938826">پیشنهادات جستجو و نشانی وب</translation>
-+<translation id="666268767214822976">از یک سرویس پیش‌بینی استفاده می‌شود تا هم‌زمان با تایپ کردن شما در نوار آدرس، عبارت‌های جستجوی مرتبط و وب‌سایت‌های محبوب نشان داده شوند</translation>
-+<translation id="8283853025636624853">در حال همگام‌سازی در <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">‏کنترل‌های فعالیت Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
-@@ -1045,4 +1045,21 @@ Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämäl
- <translation id="983192555821071799">Sulje kaikki välilehdet</translation>
- <translation id="987264212798334818">Yleistä</translation>
- <translation id="996149300115483134">Fiidikorttien valikko on suljettu</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Käytä välilehtiä muilta laitteiltasi kirjautumalla Chromeen.</translation>
-+<translation id="136248372334525878">Sivujen esilataaminen nopeuttaa lataamista ja mahdollistaa lukemisen offline-tilassa.</translation>
-+<translation id="1946005195648379376">Hallinnoi tapaa, jolla Google käyttää selaushistoriaasi haun ja muiden Googlen palveluiden muokkaamiseen.</translation>
-+<translation id="2086652334978798447">Kirjaudu Chromeen, niin voit lisätä Googlen suosittelemaa sisältöä.</translation>
-+<translation id="2342981853652716282">Kirjaudu sisään Chromeen, jotta voit käyttää kirjanmerkkejäsi, salasanojasi ja muita asetuksiasi kaikilla laitteillasi.</translation>
-+<translation id="3148434565183091099">Kirjaudu sisään Chromeen, niin voit käyttää kirjanmerkkejäsi kaikilla laitteilla.</translation>
-+<translation id="3672452749423051839">Selausvirheiden ehdotukset</translation>
-+<translation id="4042870126885713738">Näytä ehdotuksia, jos verkko-osoitetta ei tunnisteta tai yhteyttä ei voi muodostaa.</translation>
-+<translation id="424864128008805179">Kirjaudutaanko ulos Chromesta?</translation>
-+<translation id="4409723563706114196">Sivujen ennakoivan esilatauksen käyttö</translation>
-+<translation id="5222676887888702881">Kirjaudu ulos</translation>
-+<translation id="5284584623296338184">Kirjanmerkkeihin, historiaan, salasanoihin ja muihin asetuksiin tehtäviä muutoksia ei enää synkronoida Google-tilillesi. Olemassa olevia tietojasi säilytetään kuitenkin Google-tililläsi.</translation>
-+<translation id="5777170031995031090">Hallinnoi tapaa, jolla Google käyttää selaushistoriaasi haun, mainosten ja muiden Googlen palveluiden muokkaamiseen.</translation>
-+<translation id="6448273550210938826">Haku ja URL-ehdotukset</translation>
-+<translation id="666268767214822976">Käytä ennakointipalvelua, joka näyttää sinulle aiheeseen liittyviä kyselyitä sekä suosittuja verkkosivustoja kirjoittaessasi osoitepalkkiin.</translation>
-+<translation id="8283853025636624853">Synkronoidaan tietoja tilille <ph name="SYNC_ACCOUNT_USER_NAME" />.</translation>
-+<translation id="8981454092730389528">Googlen toimintojen hallinta</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
-@@ -1045,4 +1045,21 @@ Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan
- <translation id="983192555821071799">Isara ang lahat ng tab</translation>
- <translation id="987264212798334818">Pangkalahatan</translation>
- <translation id="996149300115483134">Nakasara ang menu ng feed card</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Upang makuha ang iyong mga tab mula sa iba mo pang mga device, mag-sign in sa Chrome.</translation>
-+<translation id="136248372334525878">Mag-preload ng mga page para sa mas mabilis na pag-load at offline na pagbabasa</translation>
-+<translation id="1946005195648379376">Kontrolin kung paano ginagamit ng Google ang iyong history ng pag-browse para i-personalize ang Search at iba pang serbisyo ng Google.</translation>
-+<translation id="2086652334978798447">Upang makakuha ng naka-personalize na content na iminumungkahi ng Google, mag-sign in sa Chrome.</translation>
-+<translation id="2342981853652716282">Mag-sign in sa Chrome upang makuha ang iyong mga bookmark, password, at higit pa sa lahat ng device mo.</translation>
-+<translation id="3148434565183091099">Para mailagay ang iyong mga bookmark sa lahat ng device mo, mag-sign in sa Chrome.</translation>
-+<translation id="3672452749423051839">Mga suhestyon para sa error sa pag-navigate</translation>
-+<translation id="4042870126885713738">Magpakita ng mga suhestyon kapag hindi ma-resolve ang isang website o kung hindi makakonekta</translation>
-+<translation id="424864128008805179">Mag-sign out sa Chrome?</translation>
-+<translation id="4409723563706114196">Gamitin ang mga hula sa page</translation>
-+<translation id="5222676887888702881">Mag-sign out</translation>
-+<translation id="5284584623296338184">Hindi na masi-sync sa Google Account mo ang mga pagbabago sa iyong mga bookmark, history, password, at iba pang setting. Gayunpaman, mananatiling naka-store sa Google account mo ang iyong kasalukuyang data.</translation>
-+<translation id="5777170031995031090">Kontrolin kung paano ginagamit ng Google ang iyong history ng pag-browse para i-personalize ang Search, mga ad, at iba pang serbisyo ng Google.</translation>
-+<translation id="6448273550210938826">Mga suhestyon sa paghahanap at URL</translation>
-+<translation id="666268767214822976">Gumamit ng serbisyo sa paghula para magpakita ng mga nauugnay na query at sikat na website habang nagta-type ka sa address bar</translation>
-+<translation id="8283853025636624853">Sini-sync sa <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Mga Kontrol ng Aktibidad ng Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
-@@ -1045,4 +1045,21 @@ Par exemple, certains sites Web peuvent répondre à cette demande en diffusant
- <translation id="983192555821071799">Fermer tous les onglets</translation>
- <translation id="987264212798334818">Général</translation>
- <translation id="996149300115483134">Le menu de la carte de flux est fermé</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Connectez-vous à Chrome pour accéder à vos onglets sur vos autres appareils.</translation>
-+<translation id="136248372334525878">Précharge des pages pour accélérer leur chargement ou les lire hors connexion</translation>
-+<translation id="1946005195648379376">Contrôlez la façon dont Google utilise votre historique de navigation pour personnaliser la recherche et d'autres services Google.</translation>
-+<translation id="2086652334978798447">Pour obtenir une recommandation de contenu personnalisé de la part de Google, connectez-vous à Chrome.</translation>
-+<translation id="2342981853652716282">Connectez-vous à Chrome pour accéder à vos favoris, mots de passe et bien plus sur tous vos appareils.</translation>
-+<translation id="3148434565183091099">Connectez-vous à Chrome pour synchroniser vos favoris sur tous vos appareils.</translation>
-+<translation id="3672452749423051839">Suggestions en cas d'erreur de navigation</translation>
-+<translation id="4042870126885713738">Afficher d'autres solutions lorsqu'une adresse Web ne peut pas être résolue ou qu'une connexion ne peut pas être établie</translation>
-+<translation id="424864128008805179">Se déconnecter de Chrome ?</translation>
-+<translation id="4409723563706114196">Utiliser le service de prédiction</translation>
-+<translation id="5222676887888702881">Déconnexion</translation>
-+<translation id="5284584623296338184">Les modifications apportées à vos favoris, votre historique, vos mots de passe et d'autres paramètres ne seront plus synchronisées avec votre compte Google. Vos données seront cependant conservées dans votre compte Google.</translation>
-+<translation id="5777170031995031090">Contrôlez la façon dont Google utilise votre historique de navigation pour personnaliser la recherche, les annonces et d'autres services Google.</translation>
-+<translation id="6448273550210938826">Suggestions de recherche et d'URL</translation>
-+<translation id="666268767214822976">Utiliser un service de prédiction pour suggérer des requêtes associées et des sites populaires lorsque vous saisissez des termes dans la barre d'adresse</translation>
-+<translation id="8283853025636624853">Synchronisation avec <ph name="SYNC_ACCOUNT_USER_NAME" />…</translation>
-+<translation id="8981454092730389528">Commandes Google relatives à l'activité</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">બધા ટેબ્સ બંધ કરો</translation>
- <translation id="987264212798334818">સામાન્ય</translation>
- <translation id="996149300115483134">ફીડ કાર્ડ મેનૂ બંધ છે</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">તમારા અન્ય ઉપકરણો પરથી તમારા ટૅબ્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
-+<translation id="136248372334525878">ઝડપી લોડ કરવા અને ઑફલાઇન વાંચન માટે પેજને પહેલેથી લોડ કરો</translation>
-+<translation id="1946005195648379376">Google, શોધ અને અન્ય Google સેવાઓને મનગમતી બનાવવા માટે તમારા બ્રાઉઝિંગ ઇતિહાસનો ઉપયોગ કેવી રીતે કરે છે તે નિયંત્રિત કરો.</translation>
-+<translation id="2086652334978798447">Google દ્વારા સૂચવેલ વ્યક્તિગત કરેલ કન્ટેન્ટ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
-+<translation id="2342981853652716282">તમારા બધા ઉપકરણો પર તમારા બુકમાર્ક, પાસવર્ડ અને બીજુ ઘણું મેળવવા માટે Chromeમાં સાઇન ઇન કરો.</translation>
-+<translation id="3148434565183091099">તમારા સમગ્ર ઉપકરણો પર તમારા બુકમાર્ક્સ મેળવવા માટે, Chrome માં સાઇન ઇન કરો.</translation>
-+<translation id="3672452749423051839">નેવિગેશન ભૂલ સૂચનો</translation>
-+<translation id="4042870126885713738">જ્યારે વેબ ઍડ્રેસ ન ઉકેલાય અથવા કનેક્શન કરી શકાતું ન હોય ત્યારે સૂચનો દર્શાવો</translation>
-+<translation id="424864128008805179">Chromeમાંથી સાઇન આઉટ કરીએ?</translation>
-+<translation id="4409723563706114196">પેજના પૂર્વાનુમાનનો ઉપયોગ કરો</translation>
-+<translation id="5222676887888702881">સાઇન આઉટ</translation>
-+<translation id="5284584623296338184">તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને બીજા સેટિંગમાં ફેરફારને હવે તમારા Google એકાઉન્ટ પર સિંક કરવામાં આવશે નહિ. જોકે, તમારો અસ્તિત્વમાંનો ડેટા તમારા Google એકાઉન્ટમાં સ્ટોર રહેશે.</translation>
-+<translation id="5777170031995031090">શોધ, જાહેરાતો અને અન્ય Google સેવાઓને મનગમતી બનાવવા માટે Google, તમારા બ્રાઉઝિંગ ઇતિહાસનો ઉપયોગ કેવી રીતે કરે છે તે નિયંત્રિત કરો.</translation>
-+<translation id="6448273550210938826">શોધ અને URL સૂચનો</translation>
-+<translation id="666268767214822976">સરનામાં બારમાં લખતાંની સાથે સંબંધિત ક્વેરીઝ અને લોકપ્રિય વેબસાઇટ્સ દર્શાવવા માટે પૂર્વાનુમાન સેવાનો ઉપયોગ કરો.</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> પર સમન્વયિત કરી રહ્યાં છે</translation>
-+<translation id="8981454092730389528">Google પ્રવૃત્તિ નિયંત્રણો</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">सभी टैब बंद करें</translation>
- <translation id="987264212798334818">सामान्य</translation>
- <translation id="996149300115483134">फ़ीड कार्ड मेन्यू बंद हो गया है</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">अपने दूसरे डिवाइस से अपने टैब पाने के लिए, Chrome में साइन इन करें.</translation>
-+<translation id="136248372334525878">पेजों को पहले से लोड करके रखा जाता है ताकि वे तेज़ी से लोड हों और उन्हें ऑफ़लाइन पढ़ा जा सके</translation>
-+<translation id="1946005195648379376">नियंत्रित करें कि खोज और अन्य Google सेवाओं को मनमुताबिक बनाने के लिए Google आपके ब्राउज़िंग इतिहास का उपयोग कैसे करता है.</translation>
-+<translation id="2086652334978798447">Google द्वारा सुझाई गई मनमुताबिक सामग्री पाने के लिए, Chrome में साइन इन करें.</translation>
-+<translation id="2342981853652716282">अपने सभी डिवाइस पर बुकमार्क, पासवर्ड और ज़्यादा चीज़ें पाने के लिए Chrome में साइन इन करें.</translation>
-+<translation id="3148434565183091099">अपने सभी डिवाइस पर बुकमार्क पाने के लिए, Chrome में साइन इन करें.</translation>
-+<translation id="3672452749423051839">नेविगेशन की गड़बड़ी से जुड़े सुझाव</translation>
-+<translation id="4042870126885713738">जब कोई वेब पता काम नहीं करता है या उससे कनेक्शन नहीं हो पाता है, तो आपको सुझाव दिखाए जाते हैं</translation>
-+<translation id="424864128008805179">Chrome से साइन आउट करें?</translation>
-+<translation id="4409723563706114196">पेज पूर्वानुमानों का इस्तेमाल करें</translation>
-+<translation id="5222676887888702881">साइन आउट करें</translation>
-+<translation id="5284584623296338184">आपके बुकमार्क, इतिहास, पासवर्ड और अन्य सेटिंग में किए गए बदलाव अब आपके Google खाते में सिंक नहीं किए जाएंगे. हालांकि, आपका मौजूदा डेटा आपके Google खाते में संग्रहित रहेगा.</translation>
-+<translation id="5777170031995031090">नियंत्रित करें कि खोज, विज्ञापन और दूसरी Google सेवाओं को मनमुताबिक बनाने के लिए Google आपके ब्राउज़िंग इतिहास का इस्तेमाल कैसे करता है.</translation>
-+<translation id="6448273550210938826">खोज और URL सुझाव</translation>
-+<translation id="666268767214822976">जैसे ही आप पता बार में लिखना शुरू करते हैं, पूर्वानुमान सेवा का इस्तेमाल करके आपको संबंधित क्वेरी और लोकप्रिय वेबसाइटें दिखाई जाती हैं</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> से समन्वयित हो रहा है</translation>
-+<translation id="8981454092730389528">Google गतिविधि नियंत्रण</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
-@@ -1045,4 +1045,21 @@ Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikaž
- <translation id="983192555821071799">Zatvori sve kartice</translation>
- <translation id="987264212798334818">Općenito</translation>
- <translation id="996149300115483134">Izbornik kartice feeda je zatvoren</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Da bi se prikazale kartice s vaših ostalih uređaja, prijavite se na Chrome.</translation>
-+<translation id="136248372334525878">Prethodno učitajte stranice za brže učitavanje i čitanje izvan mreže</translation>
-+<translation id="1946005195648379376">Upravljajte načinom na koji Google upotrebljava vašu povijest pregledavanja za prilagodbu Pretraživanja i drugih Googleovih usluga.</translation>
-+<translation id="2086652334978798447">Prijavite se u Chrome ako želite da vam Google predlaže sadržaje.</translation>
-+<translation id="2342981853652716282">Prijavite se na Chrome kako biste mogli pristupati svojim oznakama, zaporkama i ostalom na svim svojim uređajima.</translation>
-+<translation id="3148434565183091099">Da biste imali svoje oznake na svim svojim uređajima, prijavite se na Chrome.</translation>
-+<translation id="3672452749423051839">Prijedlozi pogreške kretanja</translation>
-+<translation id="4042870126885713738">Prikaži prijedloge kada se ne razriješi web-adresa ili nije moguće uspostaviti vezu</translation>
-+<translation id="424864128008805179">Želite li se odjaviti s Chromea?</translation>
-+<translation id="4409723563706114196">Upotrebljavajte predviđanja za stranice</translation>
-+<translation id="5222676887888702881">Odjava</translation>
-+<translation id="5284584623296338184">Promjene oznaka, povijesti, zaporki i drugih postavki više se neće sinkronizirati s vašim Google računom. No vaši postojeći podaci ostat će pohranjeni na vašem Google računu.</translation>
-+<translation id="5777170031995031090">Upravljajte načinom na koji Google upotrebljava vašu povijest pregledavanja za prilagodbu Pretraživanja, oglasa i drugih Googleovih usluga.</translation>
-+<translation id="6448273550210938826">Prijedlozi za pretraživanje i URL</translation>
-+<translation id="666268767214822976">Upotrijebi uslugu predviđanja za prikaz srodnih upita i popularnih web-lokacija prilikom upisivanja u adresnu traku</translation>
-+<translation id="8283853025636624853">Sinkronizira se s računom <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google kontrole aktivnosti</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
-@@ -1045,4 +1045,21 @@ Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jel
- <translation id="983192555821071799">Az összes lap bezárása</translation>
- <translation id="987264212798334818">Általános</translation>
- <translation id="996149300115483134">A hírcsatornakártya menüje be van csukva</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Ha a többi eszközéről is szeretné elérni a lapjait, jelentkezzen be a Chrome-ba.</translation>
-+<translation id="136248372334525878">Oldalak előtöltése a gyorsabb betöltés és az offline módban történő olvasás érdekében</translation>
-+<translation id="1946005195648379376">Annak szabályozása, hogy a Google hogyan használhatja fel a böngészési előzményeket a Keresés és más Google-szolgáltatások személyre szabására.</translation>
-+<translation id="2086652334978798447">A Google által javasolt, személyre szabott tartalmak fogadásához jelentkezzen be a Chrome-ba.</translation>
-+<translation id="2342981853652716282">Jelentkezzen be a Chrome-ba, hogy az összes eszközén hozzáférhessen könyvjelzőihez, jelszavaihoz és más beállításaihoz.</translation>
-+<translation id="3148434565183091099">Ha az összes eszközén szeretné elérni könyvjelzőit, jelentkezzen be a Chrome-ba.</translation>
-+<translation id="3672452749423051839">Navigálási hibákkal kapcsolatos javaslatok</translation>
-+<translation id="4042870126885713738">Javaslatok megjelenítése, ha egy internetcímet nem lehet feloldani, vagy nem lehet kapcsolódni</translation>
-+<translation id="424864128008805179">Kijelentkezés a Chrome-ból</translation>
-+<translation id="4409723563706114196">Várható oldalak használata</translation>
-+<translation id="5222676887888702881">Kijelentkezés</translation>
-+<translation id="5284584623296338184">Könyvjelzői, előzményei, jelszavai és más beállításai a továbbiakban már nem lesznek szinkronizálva Google-fiókjával. Meglévő adatainak tárolása azonban továbbra is megmarad Google-fiókjában.</translation>
-+<translation id="5777170031995031090">Annak szabályozása, hogy a Google hogyan használhatja fel az Ön böngészési előzményeit a Keresés, a hirdetések és más Google-szolgáltatások személyre szabására.</translation>
-+<translation id="6448273550210938826">Keresési és URL-javaslatok</translation>
-+<translation id="666268767214822976">„Várható kifejezések” szolgáltatás használata a kapcsolódó lekérdezések és népszerű webhelyek megjelenítéséhez a címsávban történő gépelés során.</translation>
-+<translation id="8283853025636624853">Szinkronizálás a következővel: <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google Tevékenységvezérlők</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
-@@ -1045,4 +1045,21 @@ Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangka
- <translation id="983192555821071799">Tutup semua tab</translation>
- <translation id="987264212798334818">Umum</translation>
- <translation id="996149300115483134">Menu kartu feed ditutup</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Untuk mengakses tab Anda dari perangkat lainnya, login ke Chrome.</translation>
-+<translation id="136248372334525878">Pramuat halaman agar memuat lebih cepat dan untuk membaca offline</translation>
-+<translation id="1946005195648379376">Kontrol cara Google menggunakan histori penjelajahan Anda untuk mempersonalisasi Penelusuran dan layanan Google lainnya.</translation>
-+<translation id="2086652334978798447">Untuk mendapatkan konten hasil personalisasi yang disarankan oleh Google, masuk ke Chrome.</translation>
-+<translation id="2342981853652716282">Login ke Chrome untuk mendapatkan bookmark, sandi, dan lainnya di semua perangkat Anda.</translation>
-+<translation id="3148434565183091099">Untuk dapat mengakses bookmark Anda di semua perangkat, login ke Chrome.</translation>
-+<translation id="3672452749423051839">Saran untuk kesalahan navigasi</translation>
-+<translation id="4042870126885713738">Tampilkan saran saat alamat web tidak ditemukan atau koneksi bermasalah</translation>
-+<translation id="424864128008805179">Logout dari Chrome?</translation>
-+<translation id="4409723563706114196">Gunakan prediksi halaman</translation>
-+<translation id="5222676887888702881">Logout</translation>
-+<translation id="5284584623296338184">Perubahan pada bookmark, histori, sandi, dan setelan lainnya tidak akan disinkronkan lagi dengan Akun Google Anda. Namun, data yang sudah ada akan tetap disimpan di akun Google Anda.</translation>
-+<translation id="5777170031995031090">Kontrol cara Google menggunakan histori penjelajahan Anda untuk mempersonalisasi Penelusuran, iklan, dan layanan Google lainnya.</translation>
-+<translation id="6448273550210938826">Saran URL dan penelusuran</translation>
-+<translation id="666268767214822976">Gunakan pencarian otomatis untuk menunjukkan situs web populer saat Anda mengetik alamat situs</translation>
-+<translation id="8283853025636624853">Menyinkronkan dengan <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Kontrol Aktivitas Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-@@ -1045,4 +1045,21 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
- <translation id="983192555821071799">Chiudi tutte le schede</translation>
- <translation id="987264212798334818">Generali</translation>
- <translation id="996149300115483134">Menu scheda feed chiuso</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Accedi a Chrome per trovare le tue schede degli altri dispositivi.</translation>
-+<translation id="136248372334525878">Le pagine vengono precaricate per velocizzare il caricamento e per la lettura offline</translation>
-+<translation id="1946005195648379376">Controlla il modo in cui Google utilizza la cronologia di navigazione per personalizzare la Ricerca e altri servizi Google.</translation>
-+<translation id="2086652334978798447">Per ricevere contenuti suggeriti appositamente per te da Google, accedi a Chrome.</translation>
-+<translation id="2342981853652716282">Accedi a Chrome per trovare i tuoi preferiti, le password e altre impostazioni su tutti i tuoi dispositivi.</translation>
-+<translation id="3148434565183091099">Accedi a Chrome per trovare i tuoi preferiti su tutti i dispositivi.</translation>
-+<translation id="3672452749423051839">Suggerimenti per gli errori di navigazione</translation>
-+<translation id="4042870126885713738">Mostra suggerimenti quando un indirizzo web non viene trovato o non è possibile stabilire una connessione</translation>
-+<translation id="424864128008805179">Uscire da Chrome?</translation>
-+<translation id="4409723563706114196">Usa previsioni di pagina</translation>
-+<translation id="5222676887888702881">Esci</translation>
-+<translation id="5284584623296338184">Le modifiche ai preferiti, alla cronologia, alle password e ad altre impostazioni non verranno più sincronizzate con il tuo Account Google. Tuttavia, i dati esistenti rimarranno memorizzati.</translation>
-+<translation id="5777170031995031090">Controlla il modo in cui Google utilizza la tua cronologia di navigazione per personalizzare la Ricerca, gli annunci e altri servizi Google.</translation>
-+<translation id="6448273550210938826">Suggerimenti di ricerca e URL</translation>
-+<translation id="666268767214822976">Utilizza un servizio di previsione per visualizzare query correlate e siti web popolari durante la digitazione nella barra degli indirizzi</translation>
-+<translation id="8283853025636624853">Sincronizzazione con <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Gestione attività di Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">סגירת כל הכרטיסיות</translation>
- <translation id="987264212798334818">כללי</translation>
- <translation id="996149300115483134">תפריט כרטיס הפיד סגור</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">‏כדי לקבל את הכרטיסיות מהמכשירים האחרים שלך, יש להיכנס ל-Chrome.</translation>
-+<translation id="136248372334525878">טעינה מקדימה של דפים מאפשרת טעינה מהירה יותר וקריאה במצב לא מקוון</translation>
-+<translation id="1946005195648379376">‏קבע כיצד Google משתמשת בהיסטוריית הגלישה שלך כדי להתאים אישית את החיפוש ושירותים אחרים של Google.</translation>
-+<translation id="2086652334978798447">‏כדי לקבל מ-Google הצעות לתוכן מותאם אישית, היכנס אל Chrome.</translation>
-+<translation id="2342981853652716282">‏יש להיכנס אל Chrome כדי לקבל גישה אל הסימניות, הסיסמאות ונתונים נוספים בכל המכשירים שלך.</translation>
-+<translation id="3148434565183091099">‏כדי שהסימניות שלך יופיעו בכל המכשירים, היכנס ל-Chrome.</translation>
-+<translation id="3672452749423051839">הצעות לשגיאת ניווט</translation>
-+<translation id="4042870126885713738">הצעות יופיעו כאשר כתובת אינטרנט אינה מזוהה או כשלא ניתן ליצור חיבור</translation>
-+<translation id="424864128008805179">‏האם לצאת מ-Chrome?</translation>
-+<translation id="4409723563706114196">שימוש בחיזויי דפים</translation>
-+<translation id="5222676887888702881">יציאה</translation>
-+<translation id="5284584623296338184">‏שינויים בסימניות, בהיסטוריה, בסיסמאות ובהגדרות נוספות לא יסונכרנו עוד עם חשבון Google. עם זאת, הנתונים הקיימים עדיין יאוחסנו בחשבון Google שלך.</translation>
-+<translation id="5777170031995031090">‏בידיך השליטה איך Google משתמשת בהיסטוריית הגלישה לצורך התאמה אישית של חיפוש Google, מודעות Google ושירותי Google אחרים.</translation>
-+<translation id="6448273550210938826">הצעות חיפוש וכתובות אתר</translation>
-+<translation id="666268767214822976">שימוש בשירות חיזוי כדי להציג שאילתות קשורות ואתרים פופולריים תוך כדי ההקלדה בשורת כתובת האתר</translation>
-+<translation id="8283853025636624853">מסנכרן עם <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">‏בחירת הפעילויות ב-Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">すべてのタブを閉じる</translation>
- <translation id="987264212798334818">全般</translation>
- <translation id="996149300115483134">フィードカード メニューは閉じています</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">他のデバイスと同じタブを使用するには、Chrome にログインします。</translation>
-+<translation id="136248372334525878">ページをプリロードして、すばやく読み込んだりオフラインで閲覧したりできるようにします</translation>
-+<translation id="1946005195648379376">Google が閲覧履歴をどのような方法で使用し、検索やその他の Google サービスをカスタマイズするかを設定します。</translation>
-+<translation id="2086652334978798447">ユーザーに合わせた Google からのおすすめコンテンツを表示するには、Chrome にログインします。</translation>
-+<translation id="2342981853652716282">Chrome にログインすると、ブックマーク、パスワード、その他の設定をどのデバイスからでもご利用いただけます。</translation>
-+<translation id="3148434565183091099">お使いのどのデバイスでも同じブックマークを使用するには、Chrome にログインします。</translation>
-+<translation id="3672452749423051839">アクセスエラー時の候補表示</translation>
-+<translation id="4042870126885713738">ウェブアドレスが解決されない場合や接続を確立できない場合にアドバイスを表示します</translation>
-+<translation id="424864128008805179">Chrome からログアウトしますか?</translation>
-+<translation id="4409723563706114196">ページ予測の使用</translation>
-+<translation id="5222676887888702881">ログアウト</translation>
-+<translation id="5284584623296338184">今後、ブックマーク、履歴、パスワードなどの設定への変更は Google アカウントに同期されません。ただし、既存のデータは Google アカウントに保存されたままとなります。</translation>
-+<translation id="5777170031995031090">検索、広告、その他の Google サービスをカスタマイズするために Google が閲覧履歴をどのような方法で使用するかを設定します。</translation>
-+<translation id="6448273550210938826">検索と URL の候補表示</translation>
-+<translation id="666268767214822976">予測サービスを使用し、アドレスバーへの入力時に関連性の高い検索キーワードや人気のウェブサイトを表示します</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> に同期しています</translation>
-+<translation id="8981454092730389528">Google アクティビティ管理</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">ಎಲ್ಲ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
- <translation id="987264212798334818">ಸಾಮಾನ್ಯ</translation>
- <translation id="996149300115483134">ಫೀಡ್ ಕಾರ್ಡ್ ಮೆನು ಅನ್ನು ಮುಚ್ಚಲಾಗಿದೆ</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಿಂದ ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
-+<translation id="136248372334525878">ವೇಗವಾಗಿ ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿ ಓದುವುದಕ್ಕಾಗಿ ಪೂರ್ವಲೋಡ್ ಆಗಿರುವಂತಹ ಪುಟಗಳು</translation>
-+<translation id="1946005195648379376">ಹುಡುಕಾಟ ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು Google ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಿ.</translation>
-+<translation id="2086652334978798447">Google ಸಲಹೆ ನೀಡಲಾದ ವೈಯಕ್ತೀಕರಿಸಲಾದ ವಿಷಯವನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
-+<translation id="2342981853652716282">ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಇನ್ನಷ್ಟನ್ನು ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ಪಡೆದುಕೊಳ್ಳಲು Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
-+<translation id="3148434565183091099">ನಿಮ್ಮ ಎಲ್ಲ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಲು, Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation>
-+<translation id="3672452749423051839">ನ್ಯಾವಿಗೇಶನ್ ದೋಷ ಸಲಹೆಗಳು</translation>
-+<translation id="4042870126885713738">ವೆಬ್ ವಿಳಾಸವು ಪೂರೈಸದಿದ್ದರೆ ಅಥವಾ ಸಂಪರ್ಕಪಡಿಸಲು ಆಗದಿದ್ದರೆ ಸಲಹೆಗಳನ್ನು ತೋರಿಸಿ</translation>
-+<translation id="424864128008805179">Chrome ನಿಂದ ಸೈನ್ ಔಟ್ ಮಾಡುವುದೇ?</translation>
-+<translation id="4409723563706114196">ಪುಟದ ಮುನ್ನೋಟಗಳನ್ನು ಬಳಸಿ</translation>
-+<translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation>
-+<translation id="5284584623296338184">ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಬದಲಾವಣೆಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಗೆ ಇನ್ನು ಮುಂದೆ ಸಿಂಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಆದರೂ, ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಡೇಟಾ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿಯೇ ಇರುತ್ತದೆ.</translation>
-+<translation id="5777170031995031090">ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು Google ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಿ.</translation>
-+<translation id="6448273550210938826">ಹುಡುಕಾಟ ಮತ್ತು URL ಸಲಹೆಗಳು</translation>
-+<translation id="666268767214822976">ನೀವು ವಿಳಾಸ ಬಾರ್‌ನಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದಂತೆ ಸಂಬಂಧಿಸಿದ ಪ್ರಶ್ನೆಗಳು ಮತ್ತು ಜನಪ್ರಿಯ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ತೋರಿಸಲು ಪೂರ್ವಸೂಚನೆಯ ಸೇವೆಯನ್ನು ಬಳಸಿ</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> ಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
-+<translation id="8981454092730389528">Google ಚಟುವಟಿಕೆ ನಿಯಂತ್ರಣಗಳು</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">탭 모두 닫기</translation>
- <translation id="987264212798334818">일반</translation>
- <translation id="996149300115483134">피드 카드 메뉴가 닫힘</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">다른 기기에서 탭을 가져오려면 Chrome에 로그인하세요.</translation>
-+<translation id="136248372334525878">더 빠른 로드와 오프라인 읽기를 위해 페이지를 미리 로드</translation>
-+<translation id="1946005195648379376">Google이 검색 및 다른 Google 서비스를 맞춤설정하기 위하여 내 인터넷 사용 기록을 사용하는 방법을 제어하세요.</translation>
-+<translation id="2086652334978798447">Google에서 추천한 맞춤설정 콘텐츠를 받으려면 Chrome에 로그인합니다.</translation>
-+<translation id="2342981853652716282">Chrome에 로그인하여 모든 기기에서 내 북마크, 비밀번호 등을 사용하세요.</translation>
-+<translation id="3148434565183091099">어느 기기에서나 내 북마크를 사용하려면 Chrome에 로그인하세요.</translation>
-+<translation id="3672452749423051839">탐색 오류 시 추천사항 표시</translation>
-+<translation id="4042870126885713738">웹 주소가 확인되지 않거나 연결되지 않는 경우 추천 주소 표시</translation>
-+<translation id="424864128008805179">Chrome에서 로그아웃하시겠습니까?</translation>
-+<translation id="4409723563706114196">페이지 예측 사용</translation>
-+<translation id="5222676887888702881">로그아웃</translation>
-+<translation id="5284584623296338184">북마크, 방문 기록, 비밀번호, 기타 설정이 더 이상 Google 계정에 동기화되지 않습니다. 하지만 기존 데이터는 Google 계정에 계속 저장됩니다.</translation>
-+<translation id="5777170031995031090">Google이 검색, 광고 및 다른 Google 서비스를 맞춤설정하기 위하여 내 인터넷 사용 기록을 사용하는 방법을 제어하세요.</translation>
-+<translation id="6448273550210938826">추천 검색어 및 추천 URL</translation>
-+<translation id="666268767214822976">예상 검색어 서비스를 사용하여 검색주소창에 입력할 때 관련 검색어 및 인기 웹사이트 표시</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" />에 동기화 중</translation>
-+<translation id="8981454092730389528">Google 활동 제어</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
-@@ -1045,4 +1045,21 @@ Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos j
- <translation id="983192555821071799">Uždar. visų skirtukų lapus</translation>
- <translation id="987264212798334818">Bendra</translation>
- <translation id="996149300115483134">Sklaidos kanalo kortelės meniu uždarytas</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Prisijunkite prie „Chrome“, kad pasiektumėte skirtukus iš kitų įrenginių.</translation>
-+<translation id="136248372334525878">Iš anksto įkeliami puslapiai, kad įkėlimo procesas vyktų greičiau ir būtų galima skaityti neprisijungus</translation>
-+<translation id="1946005195648379376">Galite pasirinkti, kaip „Google“ turėtų naudoti jūsų naršymo istoriją, kad suasmenintų Paiešką ir kitas „Google“ paslaugas.</translation>
-+<translation id="2086652334978798447">Jei norite gauti „Google“ siūlomo suasmeninto turinio, prisijunkite prie „Chrome“.</translation>
-+<translation id="2342981853652716282">Prisijunkite prie „Chrome“, kad galėtumėte naudoti žymes, slaptažodžius ir kitus nustatymus visuose įrenginiuose.</translation>
-+<translation id="3148434565183091099">Prisijunkite naršyklėje „Chrome“, kad pasiektumėte žymes visuose įrenginiuose.</translation>
-+<translation id="3672452749423051839">Naršymo klaidų pasiūlymai</translation>
-+<translation id="4042870126885713738">Rodyti pasiūlymus, kai žiniatinklio adresas nepasiekiamas arba nepavyksta užmegzti ryšio</translation>
-+<translation id="424864128008805179">Atsijungti nuo „Chrome“?</translation>
-+<translation id="4409723563706114196">Naudoti puslapių numatymą</translation>
-+<translation id="5222676887888702881">Atsijungti</translation>
-+<translation id="5284584623296338184">Žymių, istorijos, slaptažodžių ir kitų nustatymų pakeitimai nebebus sinchronizuojami su „Google“ paskyra. Tačiau esami duomenys ir toliau bus saugomi „Google“ paskyroje.</translation>
-+<translation id="5777170031995031090">Valdykite, kaip „Google“ turėtų naudoti jūsų naršymo istoriją, kad suasmenintų Paiešką, skelbimus ir kitas „Google“ paslaugas.</translation>
-+<translation id="6448273550210938826">Paieškos ir URL pasiūlymai</translation>
-+<translation id="666268767214822976">Naudoti numatymo paslaugą, kad adreso juostoje įvedant tekstą būtų rodomos susijusios užklausos ir populiarios svetainės</translation>
-+<translation id="8283853025636624853">Sinchronizuojama su <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">„Google“ veiklos valdikliai</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
-@@ -1045,4 +1045,21 @@ Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums rek
- <translation id="983192555821071799">Aizvērt visas cilnes</translation>
- <translation id="987264212798334818">Vispārīgi</translation>
- <translation id="996149300115483134">Plūsmas kartītes izvēlne ir aizvērta</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Pierakstieties pārlūkā Chrome, lai būtu pieejamas cilnes no citām jūsu ierīcēm.</translation>
-+<translation id="136248372334525878">Veiciet lapu pirmsielādi, lai ātrāk ielādētu lapas un lasītu tās bezsaistē.</translation>
-+<translation id="1946005195648379376">Kontrolējiet to, kā Google var izmantot jūsu pārlūkošanas vēsturi, lai personalizētu Meklēšanu un citus Google pakalpojumus.</translation>
-+<translation id="2086652334978798447">Lai saņemtu Google ieteikto personalizēto saturu, pierakstieties pārlūkā Chrome.</translation>
-+<translation id="2342981853652716282">Pierakstieties pārlūkā Chrome, lai iegūtu savas grāmatzīmes, paroles un citu saturu visās savās ierīcēs.</translation>
-+<translation id="3148434565183091099">Pierakstieties pārlūkā Chrome, lai grāmatzīmes būtu pieejamas visās jūsu ierīcēs.</translation>
-+<translation id="3672452749423051839">Navigācijas kļūdu ieteikumi</translation>
-+<translation id="4042870126885713738">Rādīt ieteikumus, ja nedarbojas tīmekļa adrese vai nevar izveidot savienojumu.</translation>
-+<translation id="424864128008805179">Vai izrakstīties no pārlūka Chrome?</translation>
-+<translation id="4409723563706114196">Lapu ieteikumu izmantošana</translation>
-+<translation id="5222676887888702881">Izrakstīties</translation>
-+<translation id="5284584623296338184">Grāmatzīmju, vēstures, paroļu un citu iestatījumu izmaiņas vairs netiks sinhronizētas ar jūsu Google kontu. Tomēr esošie dati joprojām tiks glabāti jūsu Google kontā.</translation>
-+<translation id="5777170031995031090">Kontrolējiet to, kā Google izmanto jūsu pārlūkošanas vēsturi, lai personalizētu Meklēšanu, reklāmas un citus Google pakalpojumus.</translation>
-+<translation id="6448273550210938826">Meklēšana un URL ieteikumi</translation>
-+<translation id="666268767214822976">Izmantojiet ieteikumus, lai skatītu saistītos vaicājumus un populāras vietnes, kad rakstāt adreses joslā.</translation>
-+<translation id="8283853025636624853">Sinhronizēšana ar <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google aktivitātes vadīklas</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">ടാബെല്ലാം അടയ്‌ക്കൂ</translation>
- <translation id="987264212798334818">പൊതുവായ</translation>
- <translation id="996149300115483134">ഫീഡ് കാർഡ് മെനു അടച്ചു</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">നിങ്ങളുടെ മറ്റ് ഉപകരണങ്ങളിൽ നിന്നുള്ള ടാബുകൾ ലഭിക്കാൻ, Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
-+<translation id="136248372334525878">വേഗത്തിൽ ലോഡ് ചെയ്യാനും ഓഫ്‍ലൈന്‍ വായനക്കുമായി പേജുകൾ മുൻകൂട്ടി ലോഡ് ചെയ്യുക</translation>
-+<translation id="1946005195648379376">തിരയലും മറ്റ് Google സേവനങ്ങളും വ്യക്തിപരമാക്കാൻ, Google നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം ഉപയോഗിക്കുന്ന രീതി നിയന്ത്രിക്കുക.</translation>
-+<translation id="2086652334978798447">Google നിർദ്ദേശിച്ച, വ്യക്തിപരമാക്കിയ ഉള്ളടക്കം സ്വന്തമാക്കാൻ, Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
-+<translation id="2342981853652716282">നിങ്ങളുടെ ബുക്ക്‌മാർക്കുകളും  ‌പാസ്‌വേഡുകളും മറ്റും എല്ലാ ഉപകരണങ്ങളിലും ലഭ്യമാക്കുന്നതിന് Chrome-ൽ സൈൻ ഇൻ ചെയ്യുക.</translation>
-+<translation id="3148434565183091099">നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്‌മാർക്കുകൾ ലഭിക്കാൻ, Chrome-ലേക്ക് സൈൻ ഇൻ ചെയ്യുക.</translation>
-+<translation id="3672452749423051839">നാവിഗേഷൻ പിശക് നിർദ്ദേശങ്ങൾ</translation>
-+<translation id="4042870126885713738">ഒരു വെബ് വിലാസം വ്യക്തമാക്കാത്തപ്പോഴോ ഒരു കണക്ഷൻ സ്ഥാപിക്കാൻ കഴിയാത്തപ്പോഴോ നിർദ്ദേശങ്ങൾ ദൃശ്യമാക്കുക</translation>
-+<translation id="424864128008805179">Chrome-ൽ നിന്ന് സൈൻ ഔട്ട് ചെയ്യണോ?</translation>
-+<translation id="4409723563706114196">പേജ് പ്രവചനങ്ങൾ ഉപയോഗിക്കുക</translation>
-+<translation id="5222676887888702881">പുറത്തുകടക്കുക</translation>
-+<translation id="5284584623296338184">ബുക്ക്‌മാർക്കുകൾ, ചരിത്രം, പാസ്‌വേഡുകൾ, മറ്റ് ക്രമീകരണം എന്നിവയിലുള്ള മാറ്റങ്ങൾ ഇനി നിങ്ങളുടെ Google അക്കൗണ്ടിലേക്ക് സമന്വയിപ്പിക്കില്ല. എന്നിരുന്നാലും, നിങ്ങളുടെ നിലവിലെ ഡാറ്റ Google അക്കൗണ്ടിൽ തുടർന്നും സൂക്ഷിക്കും.</translation>
-+<translation id="5777170031995031090">തിരയലും പരസ്യങ്ങളും മറ്റ് Google സേവനങ്ങളും വ്യക്തിപരമാക്കാൻ, Google നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം ഉപയോഗിക്കുന്ന രീതി നിയന്ത്രിക്കുക.</translation>
-+<translation id="6448273550210938826">തിരയലും URL നിർദ്ദേശങ്ങളും</translation>
-+<translation id="666268767214822976">നിങ്ങൾ വിലാസ ബാറിൽ ടൈപ്പുചെയ്യുന്നതിനനുസരിച്ച് ബന്ധപ്പെട്ട അന്വേഷണങ്ങളും ജനപ്രിയ വെബ്‌സൈറ്റുകളും കാണിക്കുന്നതിന് ഒരു പ്രവചന സേവനം ഉപയോഗിക്കുക</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> അക്കൗണ്ടിലേക്ക് സമന്വയിപ്പിക്കുന്നു</translation>
-+<translation id="8981454092730389528">Google പ്രവർത്തന നിയന്ത്രണങ്ങൾ</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">सर्व टॅब बंद करा</translation>
- <translation id="987264212798334818">सामान्य</translation>
- <translation id="996149300115483134">फीड कार्ड मेनू बंद केला गेला आहे</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">आपल्या इतर डिव्हाइसेसवरील तुमचे टॅब प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
-+<translation id="136248372334525878">जलद लोडिंग आणि ऑफलाइन वाचनासाठी पेज प्रीलोड करा</translation>
-+<translation id="1946005195648379376">शोध आणि इतर Google सेवा पर्सनलाइझ करण्यासाठी Google तुमच्या ब्राउझिंग इतिहासाचा कसा वापर करू शकते ते नियंत्रित करा.</translation>
-+<translation id="2086652334978798447">Google ने सुचविलेली पर्सनलाइझ आशय मिळविण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
-+<translation id="2342981853652716282">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क, पासवर्ड आणि अधिक मिळवण्यासाठी Chromeमध्ये साइन इन करा.</translation>
-+<translation id="3148434565183091099">आपल्या सर्व डिव्हाइसेसवर तुमचे बुकमार्क प्राप्त करण्यासाठी, Chrome मध्ये साइन इन करा.</translation>
-+<translation id="3672452749423051839">नेव्हिगेशन एरर सूचना</translation>
-+<translation id="4042870126885713738">वेब पत्ता निराकरण करत नाही किंवा कनेक्शन केले जाऊ शकत नाही तेव्हा सूचना दर्शवा</translation>
-+<translation id="424864128008805179">Chrome मधून साइन आउट करायचे?</translation>
-+<translation id="4409723563706114196">पेज पूर्वानुमान वापरा</translation>
-+<translation id="5222676887888702881">साइन आउट करा</translation>
-+<translation id="5284584623296338184">तुमचे बुकमार्क, इतिहास, पासवर्ड आणि अन्य सेटिंग्ज मधील बदल यापुढे आपल्या Google खात्यात संकालित केले जाणार नाहीत. तथापि, तुमचा विद्यमान डेटा आपल्या Google खात्यात संचयित केलेला असेल.</translation>
-+<translation id="5777170031995031090">शोध, जाहिरात आणि इतर Google सेवा पर्सनलाइझ करण्यासाठी Google तुमच्या ब्राउझिंग इतिहासाचा कसा वापर करते ते नियंत्रित करा.</translation>
-+<translation id="6448273550210938826">शोध आणि URL सूचना</translation>
-+<translation id="666268767214822976">तुम्ही अ‍ॅड्रेस बारमध्ये टाइप करता त्याप्रमाणे संबंधित क्वेरी आणि लोकप्रिय वेबसाइट दर्शविण्यासाठी एक पूर्वानुमान सेवा वापरा</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> वर संकालित करीत आहे</translation>
-+<translation id="8981454092730389528">Google ॲक्टिव्हिटी नियंत्रणे</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
-@@ -1045,4 +1045,21 @@ Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan i
- <translation id="983192555821071799">Tutup semua tab</translation>
- <translation id="987264212798334818">Umum</translation>
- <translation id="996149300115483134">Menu kad suapan ditutup</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Log masuk ke Chrome untuk mendapatkan tab daripada peranti anda yang lain.</translation>
-+<translation id="136248372334525878">Pramuat halaman untuk pemuatan yang lebih cepat dan bacaan luar talian</translation>
-+<translation id="1946005195648379376">Kawal cara Google menggunakan sejarah penyemakan imbas anda untuk memperibadikan Carian dan perkhidmatan Google yang lain.</translation>
-+<translation id="2086652334978798447">Untuk mendapatkan kandungan diperibadikan yang dicadangkan oleh Google, log masuk ke Chrome.</translation>
-+<translation id="2342981853652716282">Log masuk ke Chrome untuk mendapatkan penanda halaman, kata laluan anda dan pelbagai lagi pada semua peranti anda.</translation>
-+<translation id="3148434565183091099">Log masuk ke Chrome untuk mendapatkan penanda halaman pada semua peranti anda.</translation>
-+<translation id="3672452749423051839">Cadangan ralat navigasi</translation>
-+<translation id="4042870126885713738">Tunjukkan cadangan apabila alamat web tidak selesai atau sambungan tidak boleh dibuat</translation>
-+<translation id="424864128008805179">Log keluar daripada Chrome?</translation>
-+<translation id="4409723563706114196">Gunakan ramalan halaman</translation>
-+<translation id="5222676887888702881">Log keluar</translation>
-+<translation id="5284584623296338184">Perubahan kepada penanda halaman, sejarah, kata laluan dan tetapan anda yang lain tidak akan disegerakkan ke Akaun Google anda lagi. Walau bagaimanapun, data sedia ada akan kekal disimpan dalam akaun Google anda.</translation>
-+<translation id="5777170031995031090">Kawal cara Google menggunakan sejarah penyemakan imbas anda untuk memperibadikan Carian, iklan dan perkhidmatan Google yang lain.</translation>
-+<translation id="6448273550210938826">Cadangan carian dan URL</translation>
-+<translation id="666268767214822976">Gunakan khidmat ramalan untuk menunjukkan pertanyaan berkaitan dan tapak web popular semasa anda menaip dalam bar alamat</translation>
-+<translation id="8283853025636624853">Menyegerakkan ke <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Kawalan Aktiviti Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
-@@ -1045,4 +1045,21 @@ Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te gev
- <translation id="983192555821071799">Alle tabbladen sluiten</translation>
- <translation id="987264212798334818">Algemeen</translation>
- <translation id="996149300115483134">Feedkaartmenu is gesloten</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Log in bij Chrome om de tabbladen van je andere apparaten te bekijken.</translation>
-+<translation id="136248372334525878">Pagina's vooraf laden voor sneller laden en offline lezen</translation>
-+<translation id="1946005195648379376">Beheer hoe Google je browsegeschiedenis gebruikt om Google Zoeken en andere Google-services te personaliseren.</translation>
-+<translation id="2086652334978798447">Log in bij Chrome om suggesties met gepersonaliseerde content van Google te ontvangen.</translation>
-+<translation id="2342981853652716282">Log in bij Chrome om je bladwijzers, wachtwoorden en meer op al je apparaten te gebruiken.</translation>
-+<translation id="3148434565183091099">Log in bij Chrome om al je bladwijzers op al je apparaten te bekijken.</translation>
-+<translation id="3672452749423051839">Suggesties bij navigatiefouten</translation>
-+<translation id="4042870126885713738">Suggesties weergeven wanneer een webadres onjuist is of er geen verbinding kan worden gemaakt</translation>
-+<translation id="424864128008805179">Uitloggen bij Chrome?</translation>
-+<translation id="4409723563706114196">Paginavoorspellingen gebruiken</translation>
-+<translation id="5222676887888702881">Uitloggen</translation>
-+<translation id="5284584623296338184">Wijzigingen in je bladwijzers, geschiedenis, wachtwoorden en andere instellingen worden niet meer gesynchroniseerd met je Google-account. Je bestaande gegevens blijven echter opgeslagen in je Google-account.</translation>
-+<translation id="5777170031995031090">Beheer hoe Google je browsegeschiedenis gebruikt om Google Zoeken, advertenties en andere Google-services te personaliseren.</translation>
-+<translation id="6448273550210938826">Zoek- en URL-suggesties</translation>
-+<translation id="666268767214822976">Een voorspellingsservice gebruiken om gerelateerde zoekopdrachten en populaire websites te tonen terwijl je in de adresbalk typt</translation>
-+<translation id="8283853025636624853">Synchroniseren met <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google-activiteitsopties</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
-@@ -1045,4 +1045,21 @@ Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg
- <translation id="983192555821071799">Lukk alle faner</translation>
- <translation id="987264212798334818">Generelt</translation>
- <translation id="996149300115483134">Feedkortmenyen er lukket</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">For å få fanene dine fra de andre enhetene du bruker, logg på Chrome.</translation>
-+<translation id="136248372334525878">Last inn sider på forhånd for raskere innlasting og lesing uten nett</translation>
-+<translation id="1946005195648379376">Kontrollér hvordan Google bruker nettlesingsloggen din for å gi Søk og andre Google-tjenester et personlig preg.</translation>
-+<translation id="2086652334978798447">For å få forslag om personlig tilpasset innhold fra Google, logg på Chrome.</translation>
-+<translation id="2342981853652716282">Logg på Chrome for å hente blant annet bokmerkene og passordene dine på alle enhetene du bruker.</translation>
-+<translation id="3148434565183091099">Logg på Chrome for å få bokmerkene dine på alle enhetene du bruker.</translation>
-+<translation id="3672452749423051839">Forslag ved navigasjonsfeil</translation>
-+<translation id="4042870126885713738">Vis forslag når en nettadresse ikke fungerer eller en tilkobling ikke kan opprettes</translation>
-+<translation id="424864128008805179">Vil du logge av Chrome?</translation>
-+<translation id="4409723563706114196">Bruk sideforslag</translation>
-+<translation id="5222676887888702881">Logg av</translation>
-+<translation id="5284584623296338184">Endringer i bokmerker, loggoppføringer, passord og andre innstillinger blir ikke synkronisert med Google-kontoen din lenger. Data som allerede er lagret i Google-kontoen din, blir imidlertid ikke fjernet.</translation>
-+<translation id="5777170031995031090">Kontrollér hvordan Google bruker nettlesingsloggen din for å gi Søk, annonser og andre Google-tjenester et personlig preg.</translation>
-+<translation id="6448273550210938826">Nettadresse- og søkeforslag</translation>
-+<translation id="666268767214822976">Bruk en forslagstjeneste for å vise relaterte søkeord og populære nettsteder mens du skriver i adressefeltet</translation>
-+<translation id="8283853025636624853">Synkroniserer til <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google Aktivitetslagring</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
-@@ -1045,4 +1045,21 @@ Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy b
- <translation id="983192555821071799">Zamknij wszystkie karty</translation>
- <translation id="987264212798334818">Ogólne</translation>
- <translation id="996149300115483134">Menu karty kanału jest zamknięte</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Aby korzystać z kart ze swoich innych urządzeń, zaloguj się w Chrome.</translation>
-+<translation id="136248372334525878">Ładuj wstępnie strony, by szybciej się wczytywały i były dostępne do czytania w trybie offline</translation>
-+<translation id="1946005195648379376">Określ, jak Google może korzystać z Twojej historii przeglądania, by dostosowywać wyniki wyszukiwania i działanie innych usług.</translation>
-+<translation id="2086652334978798447">Aby uzyskać dostęp do spersonalizowanej treści proponowanej przez Google, zaloguj się w Chrome.</translation>
-+<translation id="2342981853652716282">Zaloguj się w Chrome, by mieć dostęp do swoich zakładek, haseł i innych ustawień na wszystkich swoich urządzeniach.</translation>
-+<translation id="3148434565183091099">Aby korzystać ze swoich zakładek na wszystkich urządzeniach, zaloguj się w Chrome.</translation>
-+<translation id="3672452749423051839">Podpowiedzi przy błędach nawigacji</translation>
-+<translation id="4042870126885713738">Pokazuj podpowiedzi, gdy nie można znaleźć adresu internetowego lub nawiązać połączenia</translation>
-+<translation id="424864128008805179">Wylogować z Chrome?</translation>
-+<translation id="4409723563706114196">Używaj przewidywania stron</translation>
-+<translation id="5222676887888702881">Wyloguj się</translation>
-+<translation id="5284584623296338184">Zmiany w zakładkach, historii, hasłach i innych ustawieniach nie będą już synchronizowane z kontem Google. Twoje obecne dane będą jednak nadal na nim przechowywane.</translation>
-+<translation id="5777170031995031090">Określ, jak Google może korzystać z Twojej historii przeglądania, by dostosowywać wyniki wyszukiwania, reklamy i działanie innych usług.</translation>
-+<translation id="6448273550210938826">Podpowiedzi wyszukiwania i adresów URL</translation>
-+<translation id="666268767214822976">Gdy piszesz na pasku adresu, korzystaj z podpowiedzi, by wyświetlać podobne zapytania i adresy popularnych stron</translation>
-+<translation id="8283853025636624853">Synchronizacja z kontem <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Zarządzanie aktywnością w Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
-@@ -1046,4 +1046,21 @@ Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que
- <translation id="983192555821071799">Fechar todas as guias</translation>
- <translation id="987264212798334818">Geral</translation>
- <translation id="996149300115483134">O menu do card do feed está fechado</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Para ver as guias dos seus outros dispositivos, faça login no Chrome.</translation>
-+<translation id="136248372334525878">Pré-carrega as páginas para um carregamento mais rápido e leitura off-line</translation>
-+<translation id="1946005195648379376">Controle a maneira como o Google usa seu histórico de navegação para personalizar a Pesquisa e outros serviços do Google.</translation>
-+<translation id="2086652334978798447">Para receber conteúdo personalizado sugerido pelo Google, faça login no Chrome.</translation>
-+<translation id="2342981853652716282">Faça login no Chrome para ver seus favoritos, senhas e muito mais em todos os seus dispositivos.</translation>
-+<translation id="3148434565183091099">Para ter seus favoritos em todos os seus dispositivos, faça login no Chrome.</translation>
-+<translation id="3672452749423051839">Sugerir opções quando houver erro de navegação</translation>
-+<translation id="4042870126885713738">Mostra sugestões quando houver falha em um endereço da Web ou uma conexão não puder ser estabelecida</translation>
-+<translation id="424864128008805179">Sair do Google Chrome?</translation>
-+<translation id="4409723563706114196">Usar predições de páginas</translation>
-+<translation id="5222676887888702881">Sair</translation>
-+<translation id="5284584623296338184">Alterações feitas nos seus favoritos, histórico, senhas e outras configurações não serão mais sincronizadas com sua Conta do Google. No entanto, os dados já existentes permanecerão armazenados na Conta do Google.</translation>
-+<translation id="5777170031995031090">Controle a maneira como o Google usa seu histórico de navegação para personalizar a Pesquisa Google, os anúncios e outros serviços nossos.</translation>
-+<translation id="6448273550210938826">Sugestões de pesquisa e URL</translation>
-+<translation id="666268767214822976">Prevê as palavras da consulta à medida que você digita</translation>
-+<translation id="8283853025636624853">Sincronizando com <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Controles de atividades do Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
-@@ -1045,4 +1045,21 @@ Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios
- <translation id="983192555821071799">Fechar todos os separadores</translation>
- <translation id="987264212798334818">Geral</translation>
- <translation id="996149300115483134">O menu do cartão do feed está fechado.</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Para obter os separadores dos seus outros dispositivos, inicie sessão no Chrome.</translation>
-+<translation id="136248372334525878">Pré-carregar páginas para um carregamento mais rápido e para leitura offline</translation>
-+<translation id="1946005195648379376">Controle a forma como a Google utiliza o seu histórico de navegação para personalizar a Pesquisa Google e outros serviços Google.</translation>
-+<translation id="2086652334978798447">Para obter conteúdo personalizado sugerido pelo Google, inicie sessão no Chrome.</translation>
-+<translation id="2342981853652716282">Inicie sessão no Chrome para obter os seus marcadores, palavras-passe e muito mais em todos os dispositivos.</translation>
-+<translation id="3148434565183091099">Para obter os seus marcadores em todos os dispositivos, inicie sessão no Chrome.</translation>
-+<translation id="3672452749423051839">Sugestões de erros de navegação</translation>
-+<translation id="4042870126885713738">Mostrar sugestões quando um endereço Web não responder ou não for possível estabelecer ligação</translation>
-+<translation id="424864128008805179">Pretende terminar sessão no Chrome?</translation>
-+<translation id="4409723563706114196">Utilizar previsões de páginas</translation>
-+<translation id="5222676887888702881">Terminar sessão</translation>
-+<translation id="5284584623296338184">As alterações aos marcadores, ao histórico, às palavras-passe e a outras definições deixam de ser sincronizadas com a Conta Google. Contudo, os dados existentes permanecem armazenados na Conta Google.</translation>
-+<translation id="5777170031995031090">Controle a forma como a Google utiliza o seu histórico de navegação para personalizar a Pesquisa Google, os anúncios e outros serviços Google.</translation>
-+<translation id="6448273550210938826">Pesquisa e sugestões de URL</translation>
-+<translation id="666268767214822976">Utilizar um serviço de previsão para mostrar consultas relacionadas e Sites populares à medida que escreve na barra de endereço</translation>
-+<translation id="8283853025636624853">A sincronizar com <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Controlos da atividade Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
-@@ -1045,4 +1045,21 @@ De exemplu, unele site-uri pot răspunde la această solicitare afișând anunț
- <translation id="983192555821071799">Închide toate filele</translation>
- <translation id="987264212798334818">General</translation>
- <translation id="996149300115483134">Meniul cardului din feed este închis</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Pentru a accesa filele de pe alte dispozitive, conectează-te la Chrome.</translation>
-+<translation id="136248372334525878">Preîncarcă paginile pentru încărcare mai rapidă și lectură offline</translation>
-+<translation id="1946005195648379376">Controlează cum poate folosi Google istoricul de navigare pentru a personaliza Căutarea și alte servicii Google.</translation>
-+<translation id="2086652334978798447">Pentru a obține sugestii de conținut personalizat de la Google, conectează-te la Chrome.</translation>
-+<translation id="2342981853652716282">Conectează-te la Chrome pentru a accesa marcajele, parolele și altele pe toate dispozitivele tale.</translation>
-+<translation id="3148434565183091099">Pentru a accesa marcajele pe toate dispozitivele, conectează-te la Chrome.</translation>
-+<translation id="3672452749423051839">Sugestii pentru erori de navigare</translation>
-+<translation id="4042870126885713738">Afișează sugestii atunci când o adresă web nu se rezolvă sau nu poate fi stabilită o conexiune</translation>
-+<translation id="424864128008805179">Te deconectezi de la Chrome?</translation>
-+<translation id="4409723563706114196">Folosește predicțiile pentru pagini</translation>
-+<translation id="5222676887888702881">Deconectează-te</translation>
-+<translation id="5284584623296338184">Modificările marcajelor, istoricului, parolelor sau ale altor setări nu vor mai fi sincronizate cu Contul Google. Totuși, datele existente vor rămâne stocate în Contul Google.</translation>
-+<translation id="5777170031995031090">Stabilește cum poate folosi Google istoricul de navigare pentru a personaliza Căutarea, anunțurile și alte servicii Google.</translation>
-+<translation id="6448273550210938826">Sugestii de căutare și pentru adrese URL</translation>
-+<translation id="666268767214822976">Folosește un serviciu de predicții pentru a afișa interogări similare și site-uri populare în timp ce introduci text în bara de adrese.</translation>
-+<translation id="8283853025636624853">Se sincronizează cu <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Opțiuni privind activitatea Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">Закрыть все вкладки</translation>
- <translation id="987264212798334818">Общие</translation>
- <translation id="996149300115483134">Меню карточки из ленты закрыто</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Чтобы получить доступ к вкладкам на всех ваших устройствах, войдите в Chrome.</translation>
-+<translation id="136248372334525878">Загружать страницы предварительно для повышения скорости работы и просмотра офлайн</translation>
-+<translation id="1946005195648379376">Укажите, как Google может использовать историю просмотров для персонализации Поиска и других сервисов.</translation>
-+<translation id="2086652334978798447">Чтобы мы могли рекомендовать вам интересный контент, войдите в свой аккаунт в Chrome.</translation>
-+<translation id="2342981853652716282">Войдите в Chrome, чтобы синхронизировать закладки, пароли и другую информацию на всех ваших устройствах.</translation>
-+<translation id="3148434565183091099">Чтобы получить доступ к закладкам на всех ваших устройствах, войдите в Chrome.</translation>
-+<translation id="3672452749423051839">Подсказки при ошибке навигации</translation>
-+<translation id="4042870126885713738">Предлагать альтернативы, если веб-адрес недоступен или с ним не удается установить соединение</translation>
-+<translation id="424864128008805179">Выйти из Chrome?</translation>
-+<translation id="4409723563706114196">Загружать страницы предварительно</translation>
-+<translation id="5222676887888702881">Выйти</translation>
-+<translation id="5284584623296338184">Изменения в ваших закладках, паролях, истории и других настройках больше не будут синхронизироваться с аккаунтом Google. Это изменение не затронет данные, сохраненные в аккаунте ранее.</translation>
-+<translation id="5777170031995031090">Укажите, как Google может использовать историю браузера для персонализации Поиска, Рекламы и других сервисов.</translation>
-+<translation id="6448273550210938826">Поиск и предложения URL</translation>
-+<translation id="666268767214822976">Показывать подсказки с похожими запросами и часто посещаемыми сайтами по мере ввода в адресную строку</translation>
-+<translation id="8283853025636624853">Синхронизация с аккаунтом <ph name="SYNC_ACCOUNT_USER_NAME" />…</translation>
-+<translation id="8981454092730389528">Отслеживание действий в Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
-@@ -1045,4 +1045,21 @@ Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobr
- <translation id="983192555821071799">Zavrieť všetky karty</translation>
- <translation id="987264212798334818">Všeobecné</translation>
- <translation id="996149300115483134">Ponuka karty feedu je zatvorená</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Ak chcete získať karty z ďalších svojich zariadení, prihláste sa do Chromu.</translation>
-+<translation id="136248372334525878">Vopred načítavať stránky na zrýchlenie načítania a offline čítania</translation>
-+<translation id="1946005195648379376">Nastavte, ako má Google používať vašu históriu prehliadania na prispôsobenie Vyhľadávania a ďalších služieb Googlu.</translation>
-+<translation id="2086652334978798447">Ak chcete získavať prispôsobený obsah navrhnutý Googlom, prihláste sa do Chromu.</translation>
-+<translation id="2342981853652716282">Prihláste sa do Chromu a získajte svoje záložky, heslá a ďalšie nastavenia na všetkých zariadeniach.</translation>
-+<translation id="3148434565183091099">Ak chcete mať záložky na všetkých zariadeniach, prihláste sa do Chromu.</translation>
-+<translation id="3672452749423051839">Návrhy v prípade chýb navigácie</translation>
-+<translation id="4042870126885713738">Zobrazovať návrhy, ak sa nedá nájsť webová adresa alebo nadviazať spojenie</translation>
-+<translation id="424864128008805179">Odhlásiť sa z Chromu?</translation>
-+<translation id="4409723563706114196">Používať predpovede stránok</translation>
-+<translation id="5222676887888702881">Odhlásiť sa</translation>
-+<translation id="5284584623296338184">Záložky, história, heslá a ďalšie nastavenia sa už nebudú ďalej synchronizovať do vášho účtu Google. Vaše súčasné údaje však zostanú v účte Google zachované.</translation>
-+<translation id="5777170031995031090">Nastavte, ako má Google používať vašu históriu prehliadania na prispôsobenie Vyhľadávania, reklám a ďalších služieb Googlu.</translation>
-+<translation id="6448273550210938826">Návrhy dopytov a webových adries</translation>
-+<translation id="666268767214822976">Predpovedať súvisiace dopyty a populárne weby pri zadávaní textu do panela s adresou</translation>
-+<translation id="8283853025636624853">Synchronizácia do účtu <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Riadenie aktivity Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
-@@ -1045,4 +1045,21 @@ Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažej
- <translation id="983192555821071799">Zapri vse zavihke</translation>
- <translation id="987264212798334818">Splošno</translation>
- <translation id="996149300115483134">Meni kartice vira je zaprt</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Če želite dostopati do zavihkov v drugih napravah, se prijavite v Chrome.</translation>
-+<translation id="136248372334525878">Vnaprejšnje nalaganje strani za hitrejše nalaganje in branje brez povezave</translation>
-+<translation id="1946005195648379376">Nadzirajte, kako Google na podlagi vaše zgodovine brskanja prilagaja Iskanje Google in druge Googlove storitve.</translation>
-+<translation id="2086652334978798447">Če želite prejemati prilagojeno vsebino, ki jo predlaga Google, se prijavite v Chrome.</translation>
-+<translation id="2342981853652716282">Prijavite se v Chrome, če želite dostopati do svojih zaznamkov, gesel in drugega v vseh napravah.</translation>
-+<translation id="3148434565183091099">Če želite dostopati do zaznamkov v vseh napravah, se prijavite v Chrome.</translation>
-+<translation id="3672452749423051839">Predlogi za napake pri krmarjenju</translation>
-+<translation id="4042870126885713738">Pokaži predloge, ko spletnega naslova ni mogoče najti ali povezave ni mogoče vzpostaviti</translation>
-+<translation id="424864128008805179">Se želite odjaviti iz Chroma?</translation>
-+<translation id="4409723563706114196">Uporabite predvidevanja strani</translation>
-+<translation id="5222676887888702881">Odjava</translation>
-+<translation id="5284584623296338184">Spremembe zaznamkov, zgodovine, gesel in drugih nastavitev ne bodo več sinhronizirane z Google Računom. Obstoječi podatki bodo še naprej shranjeni v Google Računu.</translation>
-+<translation id="5777170031995031090">Nadzirajte, kako Google na podlagi vaše zgodovine brskanja prilagaja Iskanje Google, oglase in druge Googlove storitve.</translation>
-+<translation id="6448273550210938826">Predlogi za iskanje in URL-je</translation>
-+<translation id="666268767214822976">Uporabite storitev predvidevanja za prikaz povezanih poizvedb in priljubljenih spletnih mest med vnašanjem v naslovno vrstico</translation>
-+<translation id="8283853025636624853">Sinhronizacija z računom <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Googlovi kontrolniki za dejavnost</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
-@@ -1045,4 +1045,21 @@ Google налог можда има друге облике историје п
- <translation id="983192555821071799">Затвори све картице</translation>
- <translation id="987264212798334818">Опште</translation>
- <translation id="996149300115483134">Мени картице фида је затворен</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Да би вам картице биле доступне на другим уређајима, пријавите се у Chrome.</translation>
-+<translation id="136248372334525878">Странице се учитавају унапред за брже учитавање и офлајн читање</translation>
-+<translation id="1946005195648379376">Контролишите како Google користи историју прегледања за персонализацију Претраге и других Google услуга</translation>
-+<translation id="2086652334978798447">Да бисте добијали персонализовани садржај који предлаже Google, пријавите се у Chrome.</translation>
-+<translation id="2342981853652716282">Пријавите се у Chrome да би вам обележивачи, лозинке и други садржај били доступни на свим уређајима.</translation>
-+<translation id="3148434565183091099">Да би вам обележивачи били доступни на свим уређајима, пријавите се у Chrome.</translation>
-+<translation id="3672452749423051839">Предлози за грешке при навигацији</translation>
-+<translation id="4042870126885713738">Приказивање предлога када се веб-адреса не разреши или када није могуће успоставити везу</translation>
-+<translation id="424864128008805179">Желите ли да се одјавите из Chrome-а?</translation>
-+<translation id="4409723563706114196">Користите предвиђања страница</translation>
-+<translation id="5222676887888702881">Одјави ме</translation>
-+<translation id="5284584623296338184">Промене обележивача, историје, лозинки и других подешавања се више неће синхронизовати са Google налогом. Међутим, постојећи подаци ће остати сачувани на Google налогу.</translation>
-+<translation id="5777170031995031090">Контролишите како Google користи историју прегледања за персонализацију Претраге, огласа и других Google услуга.</translation>
-+<translation id="6448273550210938826">Предлози за претрагу и URL-ове</translation>
-+<translation id="666268767214822976">Коришћење услуге предвиђања за приказивање сродних упита и популарних веб-сајтова док куцате у траци за адресу</translation>
-+<translation id="8283853025636624853">Синхронизује се са <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google контроле активности</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
-@@ -1045,4 +1045,21 @@ Vissa webbplatser kan till exempel svara på begäran genom att visa annonser so
- <translation id="983192555821071799">Stäng alla flikar</translation>
- <translation id="987264212798334818">Allmänt</translation>
- <translation id="996149300115483134">Menyn med flödeskort är stängd</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Logga in i Chrome om du vill ha samma flikar tillgängliga på alla enheter.</translation>
-+<translation id="136248372334525878">Genom att läsa in sidor i förväg går det snabbare att läsa in sidor och läsa offline</translation>
-+<translation id="1946005195648379376">Styr hur Google anpassar Sök och andra Google-tjänster utifrån webbhistoriken.</translation>
-+<translation id="2086652334978798447">Logga in i Chrome om du vill få förslag på anpassat innehåll från Google.</translation>
-+<translation id="2342981853652716282">Logga in i Chrome om du vill få dina bokmärken, lösenord med mera på alla dina enheter.</translation>
-+<translation id="3148434565183091099">Logga in i Chrome om du vill få tillgång till samma bokmärken på alla enheter.</translation>
-+<translation id="3672452749423051839">Förslag vid navigeringsfel</translation>
-+<translation id="4042870126885713738">Visa förslag när det inte går att öppna en webbadress eller upprätta en anslutning</translation>
-+<translation id="424864128008805179">Vill du logga ut från Chrome?</translation>
-+<translation id="4409723563706114196">Använd sidförslag</translation>
-+<translation id="5222676887888702881">Logga ut</translation>
-+<translation id="5284584623296338184">Ändringar i bokmärken, historik, lösenord och andra inställningar synkroniseras inte längre med ditt Google-konto. Befintlig data fortsätter dock att lagras i Google-kontot.</translation>
-+<translation id="5777170031995031090">Styr hur Google anpassar Sök, annonser och andra Google-tjänster utifrån webbhistoriken.</translation>
-+<translation id="6448273550210938826">Sökning och webbadressförslag</translation>
-+<translation id="666268767214822976">Använd en tjänst som ger förslag på relaterade sökfrågor och populära webbplatser när du skriver i adressfältet</translation>
-+<translation id="8283853025636624853">Synkroniseras med <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Googles aktivitetsinställningar</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
-@@ -1045,4 +1045,21 @@ Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo
- <translation id="983192555821071799">Funga vichupo vyote</translation>
- <translation id="987264212798334818">Jumla</translation>
- <translation id="996149300115483134">Menyu ya kadi ya mipasho imefungwa</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Ili upate vichupo kutoka kwenye vifaa vyako vingine, ingia katika Chrome.</translation>
-+<translation id="136248372334525878">Pakia mapema kurasa ili zipakie kwa haraka na kwa usomaji wa nje ya mtandao</translation>
-+<translation id="1946005195648379376">Dhibiti namna Google inavyotumia historia yako ya kuvinjari ili uweke mapendeleo kwenye huduma ya Tafuta na huduma nyingine za Google.</translation>
-+<translation id="2086652334978798447">Ili Google ikupendekezee maudhui yanayokufaa, ingia katika Chrome.</translation>
-+<translation id="2342981853652716282">Ingia katika Chrome ili upate alamisho, manenosiri yako na mengine mengi kwenye vifaa vyako vyote.</translation>
-+<translation id="3148434565183091099">Ingia katika Chrome ili upate alamisho zako kwenye vifaa vyako vyote.</translation>
-+<translation id="3672452749423051839">Mapendekezo ya hitilafu ya kuelekea unapotaka</translation>
-+<translation id="4042870126885713738">Onyesha mapendekezo wakati anwani ya wavuti inaposhindwa kutatuliwa au muunganisho ukiwa hauwezi kufanyika</translation>
-+<translation id="424864128008805179">Ungependa kuondoka kwenye Chrome?</translation>
-+<translation id="4409723563706114196">Tumia utabiri wa ukurasa</translation>
-+<translation id="5222676887888702881">Ondoka</translation>
-+<translation id="5284584623296338184">Mabadiliko kwenye alamisho, historia, manenosiri na mipangilio yako mingine haitasawazishwa tena kwenye Akaunti yako ya Google. Hata hivyo, data yako iliyopo itaendelea kuhifadhiwa katika akaunti yako ya Google.</translation>
-+<translation id="5777170031995031090">Dhibiti namna Google inavyotumia historia ya jinsi unavyovinjari ili kuweka mapendeleo kwenye huduma ya Tafuta na Google, matangazo na huduma nyingine za Google.</translation>
-+<translation id="6448273550210938826">Mapendekezo ya utafutaji na URL</translation>
-+<translation id="666268767214822976">Tumia huduma ya ubashiri ili kuonyesha hoja zinazohusiana na tovuti maarufu unapocharaza katika sehemu ya anwani</translation>
-+<translation id="8283853025636624853">Inasawazisha kwenye <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Vidhibiti vya Shughuli za Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">எல்லா தாவல்களையும் மூடு</translation>
- <translation id="987264212798334818">பொது</translation>
- <translation id="996149300115483134">ஃபீட் கார்டு மெனு மூடப்பட்டுள்ளது</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">உங்கள் பிற சாதனங்களிலிருந்து தாவல்களைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
-+<translation id="136248372334525878">விரைவாக ஏற்றுவதற்கும் ஆஃப்லைனில் படிப்பதற்கும் பக்கங்களை முன்னதாக ஏற்றும்</translation>
-+<translation id="1946005195648379376">தேடல் மற்றும் பிற Google சேவைகளைத் தனிப்பயனாக்க, உங்கள் உலாவல் வரலாற்றை Google எவ்வாறு பயன்படுத்துகிறது என்பதைக் கட்டுப்படுத்தலாம்.</translation>
-+<translation id="2086652334978798447">Google பரிந்துரைக்கும் தனிப்பயனாக்கிய உள்ளடக்கத்தைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
-+<translation id="2342981853652716282">உங்கள் எல்லாச் சாதனங்களிலும் உங்கள் புக்மார்க்குகள், கடவுச்சொற்கள் மற்றும் பலவற்றைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
-+<translation id="3148434565183091099">உங்கள் எல்லா சாதனங்களிலும் புத்தகக்குறிகளைப் பெற, Chrome இல் உள்நுழையவும்.</translation>
-+<translation id="3672452749423051839">வழிநடத்தல் பிழை பரிந்துரைகள்</translation>
-+<translation id="4042870126885713738">இணைய முகவரியைத் தீர்க்க முடியாதபோது அல்லது இணைப்பை உருவாக்க முடியவில்லையெனில் பரிந்துரைகளைக் காட்டு</translation>
-+<translation id="424864128008805179">Chrome இலிருந்து வெளியேறவா?</translation>
-+<translation id="4409723563706114196">பக்கக் கணிப்புகளைப் பயன்படுத்தவும்</translation>
-+<translation id="5222676887888702881">வெளியேறு</translation>
-+<translation id="5284584623296338184">புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் ஆகியவற்றிலும் பிற அமைப்புகளிலும் செய்யும் மாற்றங்கள், இனி உங்கள் Google கணக்குடன் ஒத்திசைக்கப்படாது. எனினும், ஏற்கனவே சேமிக்கப்பட்ட உங்கள் தரவு Google கணக்கில் அப்படியே இருக்கும்.</translation>
-+<translation id="5777170031995031090">தேடல், விளம்பரங்கள் மற்றும் பிற Google சேவைகளைத் தனிப்பயனாக்க, உங்கள் உலாவல் வரலாற்றை Google எவ்வாறு பயன்படுத்துகிறது என்பதைக் கட்டுப்படுத்தலாம்.</translation>
-+<translation id="6448273550210938826">தேடலும் URL பரிந்துரைகளும்</translation>
-+<translation id="666268767214822976">முகவரிப்பட்டியில் நீங்கள் உள்ளிடும்போதே தொடர்புடைய கேள்விகளையும், பிரபலமான இணையதளங்களையும் காட்டுவதற்கு, யூக சேவையைப் பயன்படுத்தவும்</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> உடன் ஒத்திசைக்கிறது</translation>
-+<translation id="8981454092730389528">Google செயல்பாட்டுக் கட்டுப்பாடுகள்</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">అన్ని ట్యాబ్‌లను మూసివేయి</translation>
- <translation id="987264212798334818">సాధారణం</translation>
- <translation id="996149300115483134">ఫీడ్ కార్డ్ మెనూ మూసివేయబడింది</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">మీ ఇతర పరికరాల నుండి మీ ట్యాబ్‌లను పొందడానికి, Chromeకు సైన్ ఇన్ చేయండి.</translation>
-+<translation id="136248372334525878">వేగమైన లోడింగ్, ఆఫ్‌లైన్‌లో చదవడం కోసం పేజీలను ప్రీలోడ్ చేయండి</translation>
-+<translation id="1946005195648379376">శోధన మరియు ఇతర Google సేవలను వ్యక్తిగతీకరించడం కోసం Google మీ బ్రౌజింగ్ చరిత్రను ఉపయోగించే విధానాన్ని నియంత్రించండి.</translation>
-+<translation id="2086652334978798447">Google సూచించే వ్యక్తిగతీకరించిన కంటెంట్‌ను పొందడానికి, Chromeకు సైన్ ఇన్ చేయండి.</translation>
-+<translation id="2342981853652716282">మీ పరికరాలన్నింటిలో మీ బుక్‌మార్క్‌లు, పాస్‌వర్డ్‌లు మరియు మరిన్నింటిని పొందడానికి Chromeకు సైన్ ఇన్ చేయండి.</translation>
-+<translation id="3148434565183091099">మీ అన్ని పరికరాలలో మీ బుక్‌మార్క్‌లను పొందడానికి, Chromeకు సైన్ ఇన్ చేయండి.</translation>
-+<translation id="3672452749423051839">నావిగేషన్ ఎర్రర్ సూచనలు</translation>
-+<translation id="4042870126885713738">వెబ్ చిరునామా సంశయాత్మకంగా ఉన్నప్పుడు లేదా కనెక్షన్ సాధ్యం కానప్పుడు సూచనలను చూపుతుంది</translation>
-+<translation id="424864128008805179">Chrome నుండి సైన్ అవుట్ చేయాలా?</translation>
-+<translation id="4409723563706114196">పేజీ సూచనలను ఉపయోగించండి</translation>
-+<translation id="5222676887888702881">సైన్ ఔట్</translation>
-+<translation id="5284584623296338184">మీ బుక్‌మార్క్‌లు, చరిత్ర, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లకు చేసే మార్పులు ఇకపై మీ Google ఖాతాకు సింక్ చేయ‌బడవు. అయితే, ఇప్పటికే ఉన్న మీ డేటా మీ Google ఖాతాలో అలాగే నిల్వ చేయబడి ఉంటుంది.</translation>
-+<translation id="5777170031995031090">శోధన, ప్రకటనలు మరియు ఇతర Google సేవలను వ్యక్తిగతీకరించడం కోసం Google మీ బ్రౌజింగ్ చరిత్రను ఉపయోగించే విధానాన్ని నియంత్రించండి.</translation>
-+<translation id="6448273550210938826">శోధన మరియు URL సూచనలు</translation>
-+<translation id="666268767214822976">మీరు చిరునామా పట్టీలో టైప్ చేస్తున్నప్పుడు సంబంధిత ప్రశ్నలను మరియు జనాదరణ పొందిన వెబ్‌సైట్‌లను చూపడానికి సూచన సేవను ఉపయోగించండి</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" />కు సమకాలీకరిస్తోంది</translation>
-+<translation id="8981454092730389528">Google కార్య‌క‌లాపాల నియంత్రణలు</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">ปิดแท็บทั้งหมด</translation>
- <translation id="987264212798334818">ทั่วไป</translation>
- <translation id="996149300115483134">เมนูของการ์ดฟีดปิดอยู่</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">ลงชื่อเข้าใช้ Chrome เพื่อรับแท็บจากอุปกรณ์เครื่องอื่นๆ ของคุณ</translation>
-+<translation id="136248372334525878">โหลดหน้าเว็บไว้ล่วงหน้าเพื่อให้โหลดได้เร็วและไว้อ่านแบบออฟไลน์</translation>
-+<translation id="1946005195648379376">ควบคุมวิธีที่ Google ใช้ประวัติการท่องเว็บของคุณเพื่อปรับเปลี่ยนการค้นหาในแบบของคุณและบริการอื่นๆ ของ Google</translation>
-+<translation id="2086652334978798447">หากต้องการรับคำแนะนำเนื้อหาที่เหมาะสำหรับคุณจาก Google ให้ลงชื่อเข้าใช้ Chrome</translation>
-+<translation id="2342981853652716282">ลงชื่อเข้าใช้ Chrome เพื่อรับบุ๊กมาร์ก รหัสผ่าน และข้อมูลอื่นๆ ในอุปกรณ์ทุกเครื่องของคุณ</translation>
-+<translation id="3148434565183091099">ลงชื่อเข้าใช้ Chrome เพื่อรับบุ๊กมาร์กในอุปกรณ์ทุกเครื่องของคุณ</translation>
-+<translation id="3672452749423051839">คำแนะนำเมื่อเกิดข้อผิดพลาดในการนำทาง</translation>
-+<translation id="4042870126885713738">แสดงคำแนะนำเมื่อไม่สามารถระบุที่อยู่เว็บหรือไม่สามารถเชื่อมต่อได้</translation>
-+<translation id="424864128008805179">ต้องการออกจากระบบ Chrome ไหม</translation>
-+<translation id="4409723563706114196">ใช้การคาดคะเนหน้า</translation>
-+<translation id="5222676887888702881">ออกจากระบบ</translation>
-+<translation id="5284584623296338184">การเปลี่ยนแปลงบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ จะไม่ซิงค์กับบัญชี Google ของคุณอีกต่อไป อย่างไรก็ตาม ข้อมูลที่คุณมีจะยังคงจัดเก็บอยู่ในบัญชี Google ของคุณ</translation>
-+<translation id="5777170031995031090">ควบคุมวิธีที่ Google ใช้ประวัติการท่องเว็บของคุณเพื่อปรับเปลี่ยนการค้นหา โฆษณา และบริการอื่นๆ ของ Google ในแบบของคุณ</translation>
-+<translation id="6448273550210938826">การค้นหาและคำแนะนำ URL</translation>
-+<translation id="666268767214822976">ใช้บริการการคาดคะเนเพื่อแสดงคำค้นหาที่เกี่ยวข้องและเว็บไซต์ยอดนิยมขณะที่คุณพิมพ์ในแถบที่อยู่</translation>
-+<translation id="8283853025636624853">กำลังซิงค์กับ <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">ส่วนควบคุมกิจกรรมของ Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
-@@ -1045,4 +1045,21 @@ Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlay
- <translation id="983192555821071799">Tüm sekmeleri kapat</translation>
- <translation id="987264212798334818">Genel</translation>
- <translation id="996149300115483134">Akış kartı menüsü kapalı</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Diğer cihazlarınızdaki sekmelerinize ulaşmak için Chrome'da oturum açın.</translation>
-+<translation id="136248372334525878">Daha hızlı yükleme ve çevrimdışı okuma için sayfaları önceden yükle</translation>
-+<translation id="1946005195648379376">Google'ın, Arama ve diğer Google hizmetlerini kişiselleştirmek için tarama geçmişinizi nasıl kullanacağını kontrol edin.</translation>
-+<translation id="2086652334978798447">Google tarafından önerilen kişiselleştirilmiş içeriği almak için Chrome'da oturum açın.</translation>
-+<translation id="2342981853652716282">Tüm cihazlarınızda yer işaretlerinizi, şifrelerinizi almak ve daha pek çok şey yapmak için Chrome'da oturum açın.</translation>
-+<translation id="3148434565183091099">Yer işaretlerinizi tüm cihazlarınızda almak için Chrome'da oturum açın.</translation>
-+<translation id="3672452749423051839">Gezinme hataları ile ilgili öneriler</translation>
-+<translation id="4042870126885713738">Bir web adresi çözümlenemezse veya bağlantı yapılamazsa öneriler göster</translation>
-+<translation id="424864128008805179">Chrome oturumu kapatılsın mı?</translation>
-+<translation id="4409723563706114196">Sayfa tahminlerini kullan</translation>
-+<translation id="5222676887888702881">Çıkış</translation>
-+<translation id="5284584623296338184">Yer işaretleri, geçmiş, şifreler ve diğer ayarlarınızda yaptığınız değişiklikler artık Google Hesabınız ile senkronize edilmeyecek. Ancak, mevcut verileriniz Google hesabınızda saklanmaya devam edecek.</translation>
-+<translation id="5777170031995031090">Google'ın Arama, reklamlar ve diğer Google hizmetlerini kişiselleştirmek için tarama geçmişinizi nasıl kullanacağını kontrol edin.</translation>
-+<translation id="6448273550210938826">Arama ve URL önerileri</translation>
-+<translation id="666268767214822976">Adres çubuğuna yazarken ilgili sorguları ve popüler siteleri göstermek için bir tahmin hizmeti kullan</translation>
-+<translation id="8283853025636624853"><ph name="SYNC_ACCOUNT_USER_NAME" /> ile senkronize ediliyor</translation>
-+<translation id="8981454092730389528">Google Etkinlik Kontrolleri</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">Закрити всі вкладки</translation>
- <translation id="987264212798334818">Загальне</translation>
- <translation id="996149300115483134">Меню картки зі стрічки закрито</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Щоб мати доступ до вкладок з інших пристроїв, увійдіть в обліковий запис Chrome.</translation>
-+<translation id="136248372334525878">Попередньо завантажує сторінки, щоб швидше завантажувати та переглядати їх у режимі офлайн</translation>
-+<translation id="1946005195648379376">Укажіть, як Google має використовувати вашу історію веб-перегляду, щоб персоналізувати Пошук та інші служби Google.</translation>
-+<translation id="2086652334978798447">Щоб отримувати персоналізовані пропозиції від Google, увійдіть в обліковий запис Chrome.</translation>
-+<translation id="2342981853652716282">Увійдіть в обліковий запис у Chrome, щоб мати доступ до своїх закладок, паролів та інших даних на всіх пристроях.</translation>
-+<translation id="3148434565183091099">Щоб мати доступ до закладок на всіх своїх пристроях, увійдіть в обліковий запис Chrome.</translation>
-+<translation id="3672452749423051839">Пропозиції у випадку помилок навігації</translation>
-+<translation id="4042870126885713738">Показувати пропозиції, коли неможливо перейти за веб-адресою чи не вдається встановити з’єднання</translation>
-+<translation id="424864128008805179">Вийти з Chrome?</translation>
-+<translation id="4409723563706114196">Використання передбачень сторінки</translation>
-+<translation id="5222676887888702881">Вийти</translation>
-+<translation id="5284584623296338184">Зміни в закладках, історії, паролях та інших налаштуваннях більше не синхронізуватимуться з вашим обліковим записом Google. Однак наявні дані залишаться у вашому обліковому записі Google.</translation>
-+<translation id="5777170031995031090">Укажіть, як Google може використовувати вашу історію веб-перегляду, щоб персоналізувати Пошук, рекламні оголошення й інші сервіси Google.</translation>
-+<translation id="6448273550210938826">Пропозиції пошуку та URL-адрес</translation>
-+<translation id="666268767214822976">Показувати підказки зі схожими запитами та популярними веб-сайтами під час введення запиту в адресному рядку</translation>
-+<translation id="8283853025636624853">Синхронізація з обліковим записом <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Відстеження дій у Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
-@@ -1045,4 +1045,21 @@ Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cá
- <translation id="983192555821071799">Đóng tất cả các thẻ</translation>
- <translation id="987264212798334818">Chung</translation>
- <translation id="996149300115483134">Trình đơn thẻ nguồn cấp dữ liệu đang đóng</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">Để có các tab từ các thiết bị khác của bạn, hãy đăng nhập vào Chrome.</translation>
-+<translation id="136248372334525878">Tải trước trang để tải nhanh hơn và đọc ngoại tuyến</translation>
-+<translation id="1946005195648379376">Kiểm soát cách Google sử dụng lịch sử duyệt web của bạn để cá nhân hóa Tìm kiếm và các dịch vụ khác của Google.</translation>
-+<translation id="2086652334978798447">Để nhận nội dung được cá nhân hóa do Google đề xuất, hãy đăng nhập vào Chrome.</translation>
-+<translation id="2342981853652716282">Đăng nhập vào Chrome để nhận dấu trang, mật khẩu và nhiều nội dung khác trên tất cả các thiết bị của bạn.</translation>
-+<translation id="3148434565183091099">Để nhận dấu trang trên tất cả các thiết bị của bạn, hãy đăng nhập vào Chrome.</translation>
-+<translation id="3672452749423051839">Đề xuất cho lỗi điều hướng</translation>
-+<translation id="4042870126885713738">Hiển thị các đề xuất khi địa chỉ web không khắc phục được hoặc kết nối không thể được thực hiện</translation>
-+<translation id="424864128008805179">Đăng xuất khỏi Chrome?</translation>
-+<translation id="4409723563706114196">Sử dụng truy vấn dự đoán trang</translation>
-+<translation id="5222676887888702881">Đăng xuất</translation>
-+<translation id="5284584623296338184">Các thay đổi đối với dấu trang, lịch sử, mật khẩu và các tùy chọn cài đặt khác sẽ không đồng bộ hóa với Tài khoản Google của bạn nữa. Tuy nhiên, dữ liệu hiện có của bạn sẽ vẫn được lưu trữ trong tài khoản Google của bạn.</translation>
-+<translation id="5777170031995031090">Kiểm soát cách Google sử dụng lịch sử duyệt web của bạn để cá nhân hóa Tìm kiếm, quảng cáo và các dịch vụ khác của Google.</translation>
-+<translation id="6448273550210938826">Đề xuất tìm kiếm và URL</translation>
-+<translation id="666268767214822976">Sử dụng dịch vụ gợi ý để hiển thị các truy vấn có liên quan và các trang web phổ biến khi bạn nhập vào thanh địa chỉ</translation>
-+<translation id="8283853025636624853">Đang đồng bộ hóa với <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Kiểm soát hoạt động trên Google</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">关闭所有标签页</translation>
- <translation id="987264212798334818">常规</translation>
- <translation id="996149300115483134">动态卡片上的菜单已关闭</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">要访问您在其他设备上的标签页,请登录 Chrome。</translation>
-+<translation id="136248372334525878">预加载网页,以便更快地加载并实现离线阅读</translation>
-+<translation id="1946005195648379376">控制 Google 如何使用您的浏览记录对 Google 搜索和其他 Google 服务进行个性化设置。</translation>
-+<translation id="2086652334978798447">要获取 Google 推荐的个性化内容,请登录 Chrome。</translation>
-+<translation id="2342981853652716282">登录 Chrome 即可获取您在所有设备上保存的书签、密码等。</translation>
-+<translation id="3148434565183091099">要将您的书签同步到您所有的设备上,请登录 Chrome。</translation>
-+<translation id="3672452749423051839">导航错误建议</translation>
-+<translation id="4042870126885713738">无法解析网址或无法建立连接时显示建议</translation>
-+<translation id="424864128008805179">退出 Chrome?</translation>
-+<translation id="4409723563706114196">使用网页联想查询功能</translation>
-+<translation id="5222676887888702881">退出</translation>
-+<translation id="5284584623296338184">对您的书签、历史记录、密码和其他设置所做的更改将不再同步到您的 Google 帐号。但是,您的现有数据将继续存储在您的 Google 帐号中。</translation>
-+<translation id="5777170031995031090">控制 Google 如何利用您的浏览记录为您提供个性化的 Google 搜索、广告和其他 Google 服务。</translation>
-+<translation id="6448273550210938826">搜索和网址建议</translation>
-+<translation id="666268767214822976">当您在地址栏中输入查询内容时,使用联想查询服务显示相关查询和热门网站</translation>
-+<translation id="8283853025636624853">正在同步到 <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google 活动控件</translation>
-+</translationbundle>
-diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
---- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
-+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
-@@ -1045,4 +1045,21 @@
- <translation id="983192555821071799">關閉所有分頁</translation>
- <translation id="987264212798334818">一般</translation>
- <translation id="996149300115483134">已關閉動態消息資訊卡選單</translation>
--</translationbundle>
-\ No newline at end of file
-+<translation id="1326317727527857210">如要存取您在其他裝置上開啟的分頁,請登入 Chrome。</translation>
-+<translation id="136248372334525878">預先載入網頁,以加快載入速度,並提供離線瀏覽功能</translation>
-+<translation id="1946005195648379376">控制 Google 如何使用您的瀏覽記錄,為您提供個人化的搜尋服務和其他各項 Google 服務。</translation>
-+<translation id="2086652334978798447">如要取得個人化的 Google 推薦內容,請登入 Chrome。</translation>
-+<translation id="2342981853652716282">無論使用任何裝置,只要登入 Chrome,即可取得你的書籤、密碼,並沿用其他設定。</translation>
-+<translation id="3148434565183091099">登入 Chrome 之後即可在你的所有裝置上使用自己的書籤。</translation>
-+<translation id="3672452749423051839">瀏覽錯誤建議</translation>
-+<translation id="4042870126885713738">在無法解析網址或建立連線時顯示建議</translation>
-+<translation id="424864128008805179">要登出 Chrome 嗎?</translation>
-+<translation id="4409723563706114196">使用網頁預測功能</translation>
-+<translation id="5222676887888702881">登出</translation>
-+<translation id="5284584623296338184">你更改過的書籤、歷史記錄、密碼和其他設定不會繼續與 Google 帳戶中的資料保持同步,但是 Google 帳戶現有的資料仍會保留。</translation>
-+<translation id="5777170031995031090">控管 Google 使用您瀏覽記錄的方式,針對 Google 所提供的個人化搜尋服務、廣告內容和其他各項 Google 服務調整相關設定。</translation>
-+<translation id="6448273550210938826">搜尋與網址建議</translation>
-+<translation id="666268767214822976">啟用預測查詢字串服務,讓您在網址列中輸入查詢內容時,能夠即時看到相關查詢和熱門網站</translation>
-+<translation id="8283853025636624853">同步的帳戶:<ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
-+<translation id="8981454092730389528">Google 活動控制項</translation>
-+</translationbundle>
-diff --git a/chrome/browser/unified_consent/unified_consent_service_factory.cc b/chrome/browser/unified_consent/unified_consent_service_factory.cc
---- a/chrome/browser/unified_consent/unified_consent_service_factory.cc
-+++ b/chrome/browser/unified_consent/unified_consent_service_factory.cc
-@@ -36,10 +36,7 @@ std::vector<std::string> GetSyncedServicePrefNames() {
-   return {
-     prefs::kSearchSuggestEnabled, embedder_support::kAlternateErrorPagesEnabled,
-         prefs::kSafeBrowsingEnabled, prefs::kSafeBrowsingScoutReportingEnabled,
--        spellcheck::prefs::kSpellCheckUseSpellingService,
--#if defined(OS_ANDROID)
--        prefs::kContextualSearchEnabled
--#endif
-+        spellcheck::prefs::kSpellCheckUseSpellingService
-   };
- }
- 
--- 
-2.17.1
-

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

@@ -13,9 +13,9 @@ This reverts commit 4e598f38a0e6dd3dbede009c6a99b2a520a94e1f.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2564,6 +2564,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2836,6 +2836,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
- #endif  // OS_MACOSX
+ #endif  // OS_MAC
  #if defined(OS_ANDROID)
 +    {"disable-pull-to-refresh-effect",
 +     flag_descriptions::kPullToRefreshEffectName,
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -945,6 +945,11 @@
+@@ -890,6 +890,11 @@
      // enable-javascript-harmony.
      "expiry_milestone": -1
    },
@@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2848,6 +2848,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch";
+@@ -3053,6 +3053,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch";
  const char kQueryTilesInstantFetchDescription[] =
      "Immediately schedule background task to fetch query tiles";
  
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -1650,6 +1650,9 @@ extern const char kQueryTilesCountryCodeIndonesia[];
+@@ -1762,6 +1762,9 @@ extern const char kQueryTilesCountryCodeIndonesia[];
  extern const char kQueryTilesInstantFetchName[];
  extern const char kQueryTilesInstantFetchDescription[];
  

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

@@ -65,20 +65,20 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
  #if !defined(OS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
-+  if (blacklisted_features.count(GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL))
-+    return kGpuFeatureStatusBlacklisted;
++  if (blocklisted_features.count(GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL))
++    return kGpuFeatureStatusBlocklisted;
 +
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -371,6 +374,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -374,6 +377,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] =
-         kGpuFeatureStatusBlacklisted;
+         kGpuFeatureStatusBlocklisted;
    }
 +
 +  if (gpu_feature_info->IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
 +    gpu_feature_info->status_values[GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] =
-+        kGpuFeatureStatusBlacklisted;
++        kGpuFeatureStatusBlocklisted;
 +  }
  }
  
@@ -92,14 +92,14 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
  disable_accelerated_av1_decode
 +disable_aimagereader
  disable_accelerated_vp8_decode
+ disable_accelerated_vp8_encode
  disable_accelerated_vp9_decode
- disable_async_readpixels
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
-@@ -561,6 +561,12 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
-   ui::OzonePlatform::GetInstance()->AfterSandboxEntry();
- #endif
+@@ -708,6 +708,12 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
+     AdjustInfoToSwiftShader();
+   }
  
 +#if defined(OS_ANDROID)
 +  // Disable AImageReader if the workaround is enabled.
@@ -108,11 +108,11 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 +  }
 +#endif
  #if defined(USE_OZONE)
-   gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
-       std::move(supported_buffer_formats_for_texturing);
-@@ -587,6 +593,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
-   DisableInProcessGpuVulkan(&gpu_feature_info_, &gpu_preferences_);
-   default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
+   if (features::IsUsingOzonePlatform()) {
+     const std::vector<gfx::BufferFormat>
+@@ -727,6 +733,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
+     gl::DirectCompositionSurfaceWin::DisableDecodeSwapChain();
+ #endif
  
 +  // Disable AImageReader if the workaround is enabled.
 +  if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
@@ -121,7 +121,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 +
    UMA_HISTOGRAM_ENUMERATION("GPU.GLImplementation", gl::GetGLImplementation());
  }
- #else
+ #endif  // OS_ANDROID
 -- 
 2.17.1
 

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

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

+ 38 - 43
build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch → build/patches/Show-site-settings-for-cookies.patch

@@ -1,26 +1,26 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Sat, 28 Dec 2019 10:23:04 +0100
-Subject: Show site settings for cookies, javascript and ads
+Subject: Show site settings for cookies
 
 Avoid displaying info about intrusive ads
 ---
- .../site_settings/SingleWebsiteSettings.java  | 59 +++++++++----------
- .../browser_ui/site_settings/Website.java     | 20 +++++++
- 2 files changed, 47 insertions(+), 32 deletions(-)
+ .../site_settings/SingleWebsiteSettings.java  | 58 +++++++++----------
+ .../browser_ui/site_settings/Website.java     | 14 +++--
+ 2 files changed, 36 insertions(+), 36 deletions(-)
 
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
-@@ -349,6 +349,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -418,6 +418,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
                      setUpSoundPreference(preference);
-                 } else if (i == ContentSettingException.Type.JAVASCRIPT) {
+                 } else if (type == ContentSettingsType.JAVASCRIPT) {
                      setUpJavascriptPreference(preference);
-+                } else if (i == ContentSettingException.Type.COOKIE) {
++                } else if (type == ContentSettingsType.COOKIES) {
 +                    setUpCookiePreference(preference);
                  } else {
                      // ContentSettingException can not be embargoed.
-                     setUpListPreference(preference, mSite.getContentSettingPermission(i),
-@@ -671,19 +673,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+                     setUpListPreference(preference, mSite.getContentSettingPermission(type),
+@@ -727,18 +729,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
      }
  
      private void setUpAdsInformationalBanner() {
@@ -30,8 +30,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 -                && WebsitePreferenceBridge.getAdBlockingActivated(
 -                        getSiteSettingsClient().getBrowserContextHandle(),
 -                        mSite.getAddress().getOrigin())
--                && findPreference(PERMISSION_PREFERENCE_KEYS[ContentSettingException.Type.ADS])
--                        != null;
+-                && findPreference(getPreferenceKey(ContentSettingsType.ADS)) != null;
 -
 -        if (!adBlockingActivated) {
 -            removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO);
@@ -42,10 +41,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
      }
  
      private SiteSettingsCategory getWarningCategory() {
-@@ -838,13 +829,29 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -899,13 +891,29 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+         @ContentSettingValues
          @Nullable
-         Integer currentValue =
-                 mSite.getContentSettingPermission(ContentSettingException.Type.JAVASCRIPT);
+         Integer currentValue = mSite.getContentSettingPermission(ContentSettingsType.JAVASCRIPT);
 -        // If Javascript is blocked by default, then always show a Javascript permission.
 -        // To do this, set it to the default value (blocked).
 -        if ((currentValue == null)
@@ -68,7 +67,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 +        @ContentSettingValues
 +        @Nullable
 +        Integer currentValue =
-+                mSite.getContentSettingPermission(ContentSettingException.Type.COOKIE);
++                mSite.getContentSettingPermission(ContentSettingsType.COOKIES);
 +	// Always show the cookies permission
 +        if (currentValue == null) {
 +            currentValue = WebsitePreferenceBridge.isCategoryEnabled(
@@ -79,7 +78,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
          }
          // Not possible to embargo JAVASCRIPT.
          setUpListPreference(preference, currentValue, false /* isEmbargoed */);
-@@ -863,22 +870,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -924,22 +932,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              setUpListPreference(preference, null, false);
              return;
          }
@@ -89,7 +88,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 -                getSiteSettingsClient().getBrowserContextHandle(), mSite.getAddress().getOrigin());
          @ContentSettingValues
          @Nullable
-         Integer permission = mSite.getContentSettingPermission(ContentSettingException.Type.ADS);
+         Integer permission = mSite.getContentSettingPermission(ContentSettingsType.ADS);
  
 -        // If |permission| is null, there is no explicit (non-default) permission set for this site.
 -        // If the site is not considered a candidate for blocking, do the standard thing and remove
@@ -105,33 +104,29 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
 +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java
-@@ -220,6 +220,26 @@ public class Website implements Serializable {
-             } else {
-                 RecordUserAction.record("JavascriptContentSetting.DisableBy.SiteSettings");
-             }
-+        } else if (type == ContentSettingException.Type.COOKIE) {
-+            // It is possible to set the permission without having an existing exception,
-+            // because we can show the ALLOW state even when this permission is set to the
-+            // default. In that case, just set an exception now to ALLOW to enable changing the
-+            // permission.
-+            if (mContentSettingException[type] == null) {
-+                mContentSettingException[type] =
-+                        new ContentSettingException(ContentSettingsType.COOKIES,
-+                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
+@@ -197,13 +197,17 @@ public final class Website implements Serializable {
+         // ContentSettingsType.
+         ContentSettingException exception = getContentSettingException(type);
+         if (type == ContentSettingsType.ADS) {
+-            // It is possible to set the permission without having an existing exception,
+-            // because we can show the BLOCK state even when this permission is set to the
+-            // default. In that case, just set an exception now to BLOCK to enable changing the
+-            // permission.
++            // It is possible to set the permission without having an existing exception
+             if (exception == null) {
+                 exception = new ContentSettingException(ContentSettingsType.ADS,
+-                        getAddress().getOrigin(), ContentSettingValues.BLOCK, "");
++                        getAddress().getOrigin(), value, "");
++                setContentSettingException(type, exception);
 +            }
-+        } else if (type == ContentSettingException.Type.JAVASCRIPT) {
-+            // It is possible to set the permission without having an existing exception,
-+            // because we can show the ALLOW state even when this permission is set to the
-+            // default. In that case, just set an exception now to ALLOW to enable changing the
-+            // permission.
-+            if (mContentSettingException[type] == null) {
-+                mContentSettingException[type] =
-+                        new ContentSettingException(ContentSettingsType.JAVASCRIPT,
-+                                getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
-+            }
-         } else if (type == ContentSettingException.Type.SOUND) {
-             // It is possible to set the permission without having an existing exception,
-             // because we always show the sound permission in Site Settings.
++        } else if (type == ContentSettingsType.COOKIES) {
++            // It is possible to set the permission without having an existing exception
++            if (exception == null) {
++                exception = new ContentSettingException(ContentSettingsType.COOKIES,
++                        getAddress().getOrigin(), value, "");
+                 setContentSettingException(type, exception);
+             }
+         } else if (type == ContentSettingsType.JAVASCRIPT) {
 -- 
 2.17.1
 

Някои файлове не бяха показани, защото твърде много файлове са промени