Selaa lähdekoodia

Release 84.0.4147.90

csagan5 5 vuotta sitten
vanhempi
commit
265ab75e24
100 muutettua tiedostoa jossa 2003 lisäystä ja 3482 poistoa
  1. 5 0
      CHANGELOG.md
  2. 0 2
      build/GN_ARGS
  3. 1 1
      build/RELEASE
  4. 3 2
      build/bromite_patches_list.txt
  5. 4 4
      build/patches/AV1-codec-support.patch
  6. 5 5
      build/patches/Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
  7. 24 24
      build/patches/Add-a-proxy-configuration-page.patch
  8. 28 28
      build/patches/Add-an-always-incognito-mode.patch
  9. 21 21
      build/patches/Add-bookmark-import-export-actions.patch
  10. 7 7
      build/patches/Add-custom-tab-intents-privacy-option.patch
  11. 2 2
      build/patches/Add-exit-menu-item.patch
  12. 15 15
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  13. 4 4
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  14. 5 5
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  15. 3 3
      build/patches/Add-flag-to-disable-WebGL.patch
  16. 24 23
      build/patches/Add-flags-to-disable-device-motion-orientation-APIs.patch
  17. 121 0
      build/patches/Add-menu-item-to-view-source.patch
  18. 35 30
      build/patches/Add-option-to-configure-the-ad-blocker-filters-URL.patch
  19. 6 6
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  20. 62 136
      build/patches/Add-site-settings-option-for-session-only-cookies.patch
  21. 39 44
      build/patches/Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
  22. 8 68
      build/patches/Allow-building-without-feed-support.patch
  23. 3 3
      build/patches/Allow-playing-audio-in-background.patch
  24. 3 3
      build/patches/Allow-website-sign-in-without-account-sign-in.patch
  25. 3 3
      build/patches/Always-allow-partner-customisation.patch
  26. 2 2
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  27. 1 1
      build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch
  28. 508 1987
      build/patches/Automated-domain-substitution.patch
  29. 7 6
      build/patches/Battery-API-return-nothing.patch
  30. 7 7
      build/patches/Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
  31. 15 15
      build/patches/Bromite-AdBlockUpdaterService.patch
  32. 1 1
      build/patches/Change-default-webRTC-policy-to-not-use-any-address.patch
  33. 1 1
      build/patches/Disable-AImageReader-for-ARM64-P-and-ARM64-Q.patch
  34. 1 1
      build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch
  35. 2 2
      build/patches/Disable-all-promo-dialogs.patch
  36. 8 8
      build/patches/Disable-fetching-of-all-field-trials.patch
  37. 4 4
      build/patches/Disable-media-router-and-remoting-by-default.patch
  38. 1 1
      build/patches/Disable-plugins-enumeration.patch
  39. 63 104
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  40. 1 1
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  41. 203 212
      build/patches/Disable-safe-browsing.patch
  42. 3 3
      build/patches/Disable-smart-selection-by-default.patch
  43. 2 2
      build/patches/Disable-some-signed-exchange-features.patch
  44. 1 1
      build/patches/Disable-sync-services-menu-entry.patch
  45. 1 1
      build/patches/Disable-third-party-cookies-by-default.patch
  46. 68 37
      build/patches/Do-not-compile-QR-code-sharing.patch
  47. 1 1
      build/patches/Do-not-grant-notifications-to-default-search-engine.patch
  48. 8 8
      build/patches/Do-not-ignore-download-location-prompt-setting.patch
  49. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  50. 1 1
      build/patches/Enable-changing-default-downloads-storage-location-by-default.patch
  51. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  52. 2 2
      build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
  53. 2 2
      build/patches/Enable-user-agent-freeze-by-default.patch
  54. 1 1
      build/patches/Fix-crash-when-accessing-page-info-site-settings.patch
  55. 13 11
      build/patches/Increase-number-of-autocomplete-matches-from-5-to-10.patch
  56. 5 5
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video.patch
  57. 8 8
      build/patches/Modify-default-preferences.patch
  58. 21 21
      build/patches/Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
  59. 1 1
      build/patches/Offer-builtin-autocomplete-for-chrome-flags.patch
  60. 7 7
      build/patches/Open-YouTube-links-in-Bromite.patch
  61. 4 4
      build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
  62. 28 30
      build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch
  63. 3 3
      build/patches/Remove-dependency-on-com.google.android.gms.auth.patch
  64. 142 78
      build/patches/Remove-dependency-on-com.google.android.gms.cast.patch
  65. 4 4
      build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
  66. 3 3
      build/patches/Remove-dependency-on-com.google.android.play.patch
  67. 35 49
      build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch
  68. 1 1
      build/patches/Remove-dependency-on-flags-places-and-stats.patch
  69. 4 4
      build/patches/Remove-dependency-on-vision-clearcut-and-phenotype.patch
  70. 1 1
      build/patches/Remove-google_services_gcm.patch
  71. 2 2
      build/patches/Remove-help-menu-item.patch
  72. 32 31
      build/patches/Remove-signin-and-data-saver-integrations.patch
  73. 1 1
      build/patches/Replace-DoH-probe-domain-with-RIPE-domain.patch
  74. 1 1
      build/patches/Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch
  75. 14 14
      build/patches/Restore-Search-Ready-Omnibox-flag.patch
  76. 2 2
      build/patches/Restore-classic-new-tab-page.patch
  77. 1 1
      build/patches/Restore-enable-horizontal-tab-switcher-flag.patch
  78. 3 3
      build/patches/Revert-Remove-flags-to-enable-disable-AImageReader.patch
  79. 136 150
      build/patches/Revert-Remove-pre-unified-consent-code.patch
  80. 8 8
      build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch
  81. 4 4
      build/patches/Revert-gpu-android-Remove-setup-for-disabling-AImageReader.patch
  82. 26 22
      build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch
  83. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  84. 3 3
      build/patches/Update-i18n-zh_CN-support.patch
  85. 9 9
      build/patches/Use-4-tile-rows-never-show-logo.patch
  86. 53 75
      build/patches/Use-dummy-DFM-installer.patch
  87. 10 9
      build/patches/autofill-disable-autofill-download-manager.patch
  88. 6 25
      build/patches/build-remove-calling-untrusted-hooks.patch
  89. 3 3
      build/patches/disable-AdsBlockedInfoBar.patch
  90. 2 2
      build/patches/disable-background-sync-by-default.patch
  91. 2 2
      build/patches/disable-sensors-access-site-setting-by-default.patch
  92. 1 1
      build/patches/kill-Auth.patch
  93. 40 15
      build/patches/kill-GCM.patch
  94. 1 1
      build/patches/kill-Location-fall-back-to-system.patch
  95. 1 1
      build/patches/kill-TOS-and-metrics-opt-out.patch
  96. 2 2
      build/patches/kill-Vision.patch
  97. 1 1
      build/patches/net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch
  98. 2 2
      build/patches/prefs-always-prompt-for-download-directory-by-default.patch
  99. 2 2
      build/patches/prefs-only-keep-cookies-until-exit.patch
  100. 6 6
      build/patches/show-download-prompt-again-by-default.patch

+ 5 - 0
CHANGELOG.md

@@ -1,3 +1,8 @@
+# 84.0.4147.90
+* added menu item to view source of current page
+* fixed dialog for SSL/TLS errors (fixes https://github.com/bromite/bromite/issues/638)
+* build with feeds support due to upstream build flags combination bugs
+
 # 83.0.4103.119
 * restored non-CFI builds for x86
 

+ 0 - 2
build/GN_ARGS

@@ -8,7 +8,6 @@ disable_autofill_assistant_dfm=true
 disable_tab_ui_dfm=true
 enable_av1_decoder=true
 enable_dav1d_decoder=true
-enable_feed_in_chrome=false
 enable_gvr_services=false
 enable_hangout_services_extension=false
 enable_iterator_debugging=false
@@ -24,7 +23,6 @@ enable_resource_whitelist_generation=false
 enable_vr=false
 fieldtrial_testing_like_official_build=true
 icu_use_data_file=true
-is_cfi=true
 is_component_build=false
 is_debug=false
 is_official_build=true

+ 1 - 1
build/RELEASE

@@ -1 +1 @@
-83.0.4103.119
+84.0.4147.90

+ 3 - 2
build/bromite_patches_list.txt

@@ -54,7 +54,7 @@ Add-exit-menu-item.patch
 Remove-help-menu-item.patch
 AudioBuffer-AnalyserNode-fp-mitigations.patch
 Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
-Add-flags-to-disable-device-motion-and-orientation-APIs.patch
+Add-flags-to-disable-device-motion-orientation-APIs.patch
 Disable-metrics-on-all-I-O-threads.patch
 Always-respect-async-dns-flag-regardless-of-SDK-version.patch
 Add-flag-to-configure-maximum-connections-per-host.patch
@@ -86,7 +86,7 @@ Remove-dependency-on-com.google.android.gms.gcm.patch
 Remove-dependency-on-com.google.android.play.patch
 Remove-dependency-on-vision-clearcut-and-phenotype.patch
 Remove-dependency-on-flags-places-and-stats.patch
-Remove-dependency-on-fido-iid-instantapps-and-location.patch
+Remove-dependency-on-fido-iid-instantapps-location.patch
 Remove-dependency-on-com.google.android.gms.cast.patch
 Remove-dependency-on-auth-signin-dynamic-and-tasks.patch
 Remove-google_services_gcm.patch
@@ -140,4 +140,5 @@ Disable-AImageReader-for-ARM64-P-and-ARM64-Q.patch
 Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch
 Update-i18n-zh_CN-support.patch
 Add-a-flag-to-allow-screenshots-in-Incognito-mode.patch
+Add-menu-item-to-view-source.patch
 Automated-domain-substitution.patch

+ 4 - 4
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
-@@ -562,9 +562,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
+@@ -563,9 +563,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
      case THEORA:
        return false;
  
@@ -43,9 +43,9 @@ diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
 diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 --- a/third_party/libaom/BUILD.gn
 +++ b/third_party/libaom/BUILD.gn
-@@ -82,7 +82,7 @@ if (enable_libaom) {
+@@ -81,7 +81,7 @@ if (enable_libaom) {
+         sources += aom_dsp_encoder_asm_sse2_x86_64
          sources += aom_dsp_encoder_asm_ssse3_x86_64
-         sources += aom_dsp_encoder_avx_asm_x86_64
        }
 -      defines = [ "CHROMIUM" ]
 +      defines = [ "CHROMIUM", "PIC" ]
@@ -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
-@@ -645,6 +645,11 @@ aom_mem_sources = [
+@@ -641,6 +641,11 @@ aom_mem_sources = [
  
  aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
  

+ 5 - 5
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
-@@ -4124,6 +4124,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -4437,6 +4437,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
-@@ -432,6 +432,11 @@ const char kEnableAmbientAuthenticationInIncognitoDescription[] =
+@@ -483,6 +483,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
-@@ -270,6 +270,9 @@ extern const char kEnableAccessibilityObjectModelDescription[];
+@@ -301,6 +301,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
-@@ -343,6 +343,9 @@ const char kHomePage[]                      = "homepage";
+@@ -338,6 +338,9 @@ const char kHomePage[]                      = "homepage";
  // Causes the browser to launch directly in incognito mode.
  const char kIncognito[]                     = "incognito";
  
@@ -88,7 +88,7 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
 diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
 --- a/chrome/common/chrome_switches.h
 +++ b/chrome/common/chrome_switches.h
-@@ -108,6 +108,7 @@ extern const char kForceFirstRun[];
+@@ -107,6 +107,7 @@ extern const char kForceFirstRun[];
  extern const char kForceStackedTabStripLayout[];
  extern const char kHomePage[];
  extern const char kIncognito[];

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

@@ -36,9 +36,9 @@ 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
-@@ -72,6 +72,9 @@
-     <!-- Value for scaleX to mirror drawables correctly for LTR / RTL layouts. -->
-     <integer name="automirror_scale_x_reverse">-1</integer>
+@@ -66,6 +66,9 @@
+     <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
+     <string name="manage_space_activity"></string>
  
 +    <string name="proxy_title">Proxy configuration</string>
 +    <string name="proxy_url">chrome://proxy</string>
@@ -63,7 +63,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
-@@ -231,6 +231,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
+@@ -239,6 +239,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
    std::vector<base::string16> builtins_to_provide;
    builtins_to_provide.push_back(
        base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
 diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
-@@ -110,6 +110,12 @@
+@@ -111,6 +111,12 @@
          <include name="IDR_OFFLINE_INTERNALS_BROWSER_PROXY_JS" file="resources\offline_pages\offline_internals_browser_proxy.js" type="BINDATA" compress="gzip" />
        </if>
  
@@ -509,7 +509,7 @@ new file mode 100644
 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 --- a/chrome/browser/ui/BUILD.gn
 +++ b/chrome/browser/ui/BUILD.gn
-@@ -267,6 +267,8 @@ jumbo_static_library("ui") {
+@@ -263,6 +263,8 @@ static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -529,7 +529,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
  #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -430,6 +431,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -452,6 +453,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -979,24 +979,24 @@ new file mode 100644
 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
-@@ -189,6 +189,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
-     "chrome-native://physical-web-diagnostics/";
- const char kChromeUIOfflineInternalsHost[] = "offline-internals";
- const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
+@@ -33,6 +33,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
+ const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
+ const char kChromeUIChromeSigninHost[] = "chrome-signin";
+ const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
 +const char kChromeUIProxyConfigHost[] = "proxy";
 +const char kChromeUIProxyConfigURL[] = "chrome://proxy/";
- const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
- const char kChromeUIWebApksHost[] = "webapks";
- #endif
-@@ -490,6 +492,7 @@ bool IsOSSettingsSubPage(const std::string& sub_page) {
-       kPowerSubPage,
-       kSmartLockSettingsSubPage,
-       kSmbSharesSubPage,
+ const char kChromeUIChromeURLsHost[] = "chrome-urls";
+ const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
+ const char kChromeUIComponentsHost[] = "components";
+@@ -301,6 +303,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+       kChromeUIMobileSetupHost,
+       kChromeUIMultiDeviceSetupHost,
+       kChromeUINetworkHost,
 +      kChromeUIProxyConfigHost,
-       kStorageSubPage,
-       kStylusSubPage,
-       kSwitchAccessSubPage,
-@@ -592,6 +595,7 @@ const char* const kChromeHostURLs[] = {
+       kChromeUIOobeHost,
+       kChromeUIOSCreditsHost,
+       kChromeUIOSSettingsHost,
+@@ -469,6 +472,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
@@ -1019,7 +1019,7 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const
 diff --git a/components/policy/core/browser/proxy_policy_handler.cc b/components/policy/core/browser/proxy_policy_handler.cc
 --- a/components/policy/core/browser/proxy_policy_handler.cc
 +++ b/components/policy/core/browser/proxy_policy_handler.cc
-@@ -199,7 +199,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
+@@ -200,7 +200,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
            bypass_list->GetAsString(&bypass_list_string);
          prefs->SetValue(proxy_config::prefs::kProxy,
                          ProxyConfigDictionary::CreateFixedServers(
@@ -1133,7 +1133,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox
 diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc
 --- a/net/proxy_resolution/proxy_config.cc
 +++ b/net/proxy_resolution/proxy_config.cc
-@@ -140,6 +140,51 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
+@@ -141,6 +141,51 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
    }
  }
  

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

@@ -118,7 +118,7 @@ new file mode 100644
 +            return;
 +        }
 +
-+        ((TabImpl) tab).getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), TabLaunchType.FROM_LINK, tab);
++        ((ChromeTabbedActivity)tab.getWindowAndroid().getActivity().get()).getTabCreator(true).createNewTab(new LoadUrlParams(url), TabLaunchType.FROM_LINK, tab);
 +
 +        if ((url.equals(lastUrl)) || (!tab.canGoBack())) {
 +            // this call was triggered by a reload
@@ -138,8 +138,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 +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.appmenu.AppMenuPropertiesDelegateImpl;
-@@ -1479,6 +1480,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
+@@ -1514,6 +1515,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -160,7 +160,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;
-@@ -1536,8 +1537,9 @@ public class ChromeTabbedActivity
+@@ -1621,8 +1622,9 @@ public class ChromeTabbedActivity
          Bundle savedInstanceState = getSavedInstanceState();
  
          // We determine the model as soon as possible so every systems get initialized coherently.
@@ -172,13 +172,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
          int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
  
          mTabModelSelectorImpl =
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -306,6 +306,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
-                             ChromeSwitches.ENABLE_VR_SHELL_DEV));
-         }
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+@@ -297,6 +297,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+     }
  
+     private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
 +        if (ContextUtils.getAppSharedPreferences().getBoolean("always_incognito", false)) {
 +            final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id);
 +            if (newTabOption != null)
@@ -191,8 +191,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
-@@ -18,7 +18,9 @@ import androidx.annotation.VisibleForTesting;
- 
+@@ -25,7 +25,9 @@ import org.chromium.base.annotations.CalledByNative;
+ import org.chromium.base.annotations.NativeMethods;
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.base.supplier.Supplier;
 +import org.chromium.base.ContextUtils;
@@ -201,7 +201,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
  import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
  import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
-@@ -337,7 +339,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -375,7 +377,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
              if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(params.getUrl())
                      && UrlUtilities.isAcceptedScheme(params.getUrl())) {
                  if (mMode == ContextMenuMode.NORMAL) {
@@ -217,7 +217,7 @@ 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
-@@ -49,6 +49,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
+@@ -50,6 +50,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
  import org.chromium.components.embedder_support.util.UrlConstants;
  import org.chromium.ui.util.ColorUtils;
  
@@ -227,7 +227,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.ArrayList;
-@@ -395,6 +398,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
+@@ -401,6 +404,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) {
@@ -276,7 +276,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/StartupTab
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
-@@ -37,6 +37,10 @@ import org.chromium.ui.base.PageTransition;
+@@ -38,6 +38,10 @@ import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.base.WindowAndroid;
  import org.chromium.url.GURL;
  
@@ -287,7 +287,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}.
   */
-@@ -55,6 +59,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -56,6 +60,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
      private final ChromeActivity mActivity;
      private final StartupTabPreloader mStartupTabPreloader;
      private final boolean mIncognito;
@@ -295,7 +295,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -72,6 +77,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -73,6 +78,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          mNativeWindow = nativeWindow;
          mTabDelegateFactorySupplier = tabDelegateFactory;
          mIncognito = incognito;
@@ -306,7 +306,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mOverviewNTPCreator = overviewNTPCreator;
      }
  
-@@ -224,6 +233,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -225,6 +234,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
              if (creationState == TabCreationState.LIVE_IN_FOREGROUND && !openInForeground) {
                  creationState = TabCreationState.LIVE_IN_BACKGROUND;
              }
@@ -315,7 +315,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type, creationState);
              return tab;
          } finally {
-@@ -258,6 +269,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -259,6 +270,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          @TabCreationState
          int creationState = openInForeground ? TabCreationState.LIVE_IN_FOREGROUND
                                               : TabCreationState.LIVE_IN_BACKGROUND;
@@ -324,15 +324,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          mTabModel.addTab(tab, position, type, creationState);
          return true;
      }
-@@ -300,7 +313,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
-      */
-     public Tab launchUrlFromExternalApp(String url, String referer, String headers,
-             String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
+@@ -302,7 +315,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+     // TODO(crbug.com/1081924): Clean up the launches from SearchActivity/Chrome.
+     public Tab launchUrlFromExternalApp(String url, String referer, String headers, String appId,
+             boolean forceNewTab, Intent intent, long intentTimestamp) {
 -        assert !mIncognito;
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          if (forceNewTab && !isLaunchedFromChrome) {
-@@ -383,6 +395,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -404,6 +416,8 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                            .build();
          }
          assert state.isIncognito() == mIncognito;
@@ -353,7 +353,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;
-@@ -593,6 +595,13 @@ public class TabPersistentStore extends TabPersister {
+@@ -601,6 +603,13 @@ public class TabPersistentStore extends TabPersister {
              }
          }
  
@@ -370,7 +370,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
 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
-@@ -318,7 +318,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
+@@ -337,7 +337,7 @@ const base::Feature kCCTExternalLinkHandling{"CCTExternalLinkHandling",
                                               base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kCCTIncognito{"CCTIncognito",
@@ -382,7 +382,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
-@@ -699,6 +699,13 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -725,6 +725,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>

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

@@ -181,7 +181,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import java.util.ArrayList;
  import java.util.List;
  
-@@ -562,6 +571,24 @@ public class BookmarkBridge {
+@@ -561,6 +570,24 @@ public class BookmarkBridge {
                  mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
      }
  
@@ -206,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      /**
       * Synchronously gets a list of bookmarks that match the specified search query.
       * @param query Keyword used for searching bookmarks.
-@@ -942,6 +969,24 @@ public class BookmarkBridge {
+@@ -941,6 +968,24 @@ public class BookmarkBridge {
          depthList.add(depth);
      }
  
@@ -234,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 @@ -1008,6 +1053,8 @@ public class BookmarkBridge {
          int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
          void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
-                 boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
+                 List<BookmarkId> bookmarksList);
 +        void importBookmarks(long nativeBookmarkBridge, BookmarkBridge caller, WindowAndroid window);
 +        void exportBookmarks(long nativeBookmarkBridge, BookmarkBridge caller);
          BookmarkId getChildAt(
@@ -263,7 +263,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
-@@ -35,8 +35,10 @@ import org.chromium.components.bookmarks.BookmarkId;
+@@ -33,8 +33,10 @@ 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;
@@ -274,7 +274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  import java.util.Stack;
  
-@@ -55,6 +57,7 @@ public class BookmarkManager
+@@ -53,6 +55,7 @@ public class BookmarkManager
      private Activity mActivity;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
@@ -282,7 +282,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;
-@@ -357,6 +360,13 @@ public class BookmarkManager
+@@ -323,6 +326,13 @@ public class BookmarkManager
          mNativePage = nativePage;
      }
  
@@ -296,7 +296,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
-@@ -529,6 +539,16 @@ public class BookmarkManager
+@@ -495,6 +505,16 @@ public class BookmarkManager
          }
      }
  
@@ -327,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -171,6 +171,10 @@ jumbo_static_library("browser") {
+@@ -176,6 +176,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 +338,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",
-@@ -3139,8 +3143,6 @@ jumbo_static_library("browser") {
+@@ -3144,8 +3148,6 @@ static_library("browser") {
        "badging/badge_manager_factory.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -347,7 +347,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
        "certificate_viewer.h",
        "chrome_browser_field_trials_desktop.cc",
        "chrome_browser_field_trials_desktop.h",
-@@ -3267,8 +3269,6 @@ jumbo_static_library("browser") {
+@@ -3282,8 +3284,6 @@ static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -359,7 +359,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
 +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
-@@ -37,6 +37,7 @@
+@@ -38,6 +38,7 @@
  #include "components/bookmarks/common/android/bookmark_type.h"
  #include "components/bookmarks/common/bookmark_pref_names.h"
  #include "components/bookmarks/managed/managed_bookmark_service.h"
@@ -367,7 +367,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  #include "components/dom_distiller/core/url_utils.h"
  #include "components/prefs/pref_service.h"
  #include "components/query_parser/query_parser.h"
-@@ -46,6 +47,21 @@
+@@ -47,6 +48,21 @@
  #include "content/public/browser/browser_thread.h"
  #include "content/public/browser/web_contents.h"
  
@@ -389,7 +389,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  using base::android::AttachCurrentThread;
  using base::android::ConvertUTF8ToJavaString;
  using base::android::ConvertUTF16ToJavaString;
-@@ -63,6 +79,56 @@ using bookmarks::BookmarkPermanentNode;
+@@ -63,6 +79,56 @@ using bookmarks::BookmarkNode;
  using bookmarks::BookmarkType;
  using content::BrowserThread;
  
@@ -457,7 +457,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
  }
  
  void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
-@@ -516,6 +586,153 @@ jint BookmarkBridge::GetTotalBookmarkCount(
+@@ -513,6 +583,153 @@ jint BookmarkBridge::GetTotalBookmarkCount(
    return count;
  }
  
@@ -633,7 +633,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
   public:
    BookmarkBridge(JNIEnv* env,
                   const base::android::JavaRef<jobject>& obj,
-@@ -42,6 +45,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -48,6 +51,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
    bool IsDoingExtensiveChanges(JNIEnv* env,
                                 const base::android::JavaParamRef<jobject>& obj);
  
@@ -646,7 +646,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
    jboolean IsEditBookmarksEnabled(JNIEnv* env);
  
    void LoadEmptyPartnerBookmarkShimForTesting(
-@@ -131,6 +140,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -135,6 +144,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
                               jlong id,
                               jint type);
  
@@ -660,7 +660,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
    void SetBookmarkTitle(JNIEnv* env,
                          const base::android::JavaParamRef<jobject>& obj,
                          jlong id,
-@@ -276,12 +292,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
+@@ -280,12 +296,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
    void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
  
    Profile* profile_;
@@ -736,7 +736,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
 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
-@@ -245,6 +245,12 @@ CHAR-LIMIT guidelines:
+@@ -242,6 +242,12 @@ CHAR-LIMIT guidelines:
        <message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR-LIMIT=32]">
          Sites
        </message>
@@ -752,7 +752,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -423,6 +423,9 @@ static_library("common") {
+@@ -417,6 +417,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -774,7 +774,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/edge_database_reader_win.cc",
-@@ -169,6 +167,11 @@ static_library("utility") {
+@@ -170,6 +168,11 @@ static_library("utility") {
      }
    }
  
@@ -978,7 +978,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil
 diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc
 --- a/ui/shell_dialogs/select_file_dialog_android.cc
 +++ b/ui/shell_dialogs/select_file_dialog_android.cc
-@@ -139,6 +139,12 @@ void SelectFileDialogImpl::SelectFileImpl(
+@@ -140,6 +140,12 @@ void SelectFileDialogImpl::SelectFileImpl(
                                     owning_window->GetJavaObject());
  }
  

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

@@ -41,16 +41,16 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
-@@ -55,6 +55,8 @@ import java.lang.annotation.Retention;
+@@ -52,6 +52,8 @@ import org.chromium.ui.widget.Toast;
+ import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
- import java.util.UUID;
  
 +import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
 +
  /**
   * Dispatches incoming intents to the appropriate activity based on the current configuration and
   * Intent fired.
-@@ -249,6 +251,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -240,6 +242,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
@@ -62,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
-@@ -44,6 +44,8 @@ public class PrivacySettings
+@@ -45,6 +45,8 @@ public class PrivacySettings
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
@@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      @Override
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
-@@ -79,6 +81,10 @@ public class PrivacySettings
+@@ -80,6 +82,10 @@ public class PrivacySettings
                      Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
          }
-@@ -114,6 +120,11 @@ public class PrivacySettings
+@@ -115,6 +121,11 @@ public class PrivacySettings
                      prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
          }
  
@@ -97,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -3910,6 +3910,13 @@ Only you can see what your camera is looking at. The site can't see your camera'
+@@ -3450,6 +3450,13 @@ Only you can see what your camera is looking at. The site can't see your camera'
        <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>

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

@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1961,6 +1961,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1993,6 +1993,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              AddToHomescreenCoordinator.showForAppMenu(
                      this, getWindowAndroid(), getModalDialogManager(), currentTab.getWebContents());
              RecordUserAction.record("MobileMenuAddToHomescreen");
@@ -53,7 +53,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
-@@ -2843,6 +2843,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -2414,6 +2414,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>

+ 15 - 15
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
-@@ -734,6 +734,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -740,6 +740,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -31,22 +31,22 @@ 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 ==
-@@ -2930,6 +2935,9 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kPassiveDocumentEventListenersName,
-      flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
-      FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
+@@ -2928,6 +2933,9 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kAndroidPictureInPictureAPIName,
+      flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
+      FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
 +    {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
 +     flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
 +     MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
-     {"document-passive-wheel-event-listeners",
-      flag_descriptions::kPassiveDocumentWheelEventListenersName,
-      flag_descriptions::kPassiveDocumentWheelEventListenersDescription, kOsAll,
+ #endif  // OS_ANDROID
+     {"disallow-doc-written-script-loads",
+      flag_descriptions::kDisallowDocWrittenScriptsUiName,
 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
-@@ -1150,6 +1150,10 @@ const char kMediaInspectorLoggingDescription[] =
-     "Move media logging from chrome://media-internals into the developer tools "
-     "project.";
+@@ -1227,6 +1227,10 @@ const char kMediaHistoryDescription[] =
+     "Enables Media History which records data around media playbacks on "
+     "websites.";
  
 +const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
 +const char kMaxConnectionsPerHostDescription[] =
@@ -58,9 +58,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -687,6 +687,9 @@ extern const char kMediaHistoryDescription[];
- extern const char kMediaInspectorLoggingName[];
- extern const char kMediaInspectorLoggingDescription[];
+@@ -738,6 +738,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
+ extern const char kMediaHistoryName[];
+ extern const char kMediaHistoryDescription[];
  
 +extern const char kMaxConnectionsPerHostName[];
 +extern const char kMaxConnectionsPerHostDescription[];
@@ -110,7 +110,7 @@ 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
-@@ -73,6 +73,7 @@ executable("make_top_domain_list_variables") {
+@@ -72,6 +72,7 @@ executable("make_top_domain_list_variables") {
      "//base",
      "//base:i18n",
      "//third_party/icu",

+ 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
-@@ -1939,6 +1939,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2143,6 +2143,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
-@@ -778,6 +778,11 @@ const char kMemlogStackModeNative[] = "Native";
+@@ -853,6 +853,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
-@@ -447,6 +447,9 @@ extern const char kEnablePortalsDescription[];
+@@ -495,6 +495,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
-@@ -235,11 +235,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -232,11 +232,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -16,7 +16,7 @@ Subject: Add flag to disable IPv6 probes
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -3455,6 +3455,11 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3709,6 +3709,11 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
  #endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
  
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2350,6 +2350,10 @@ const char kContextualSearchRankerQueryDescription[] =
+@@ -2437,6 +2437,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
-@@ -513,6 +513,9 @@ extern const char kEnableWasmThreadsName[];
+@@ -561,6 +561,9 @@ extern const char kEnableWasmThreadsName[];
  extern const char kEnableWasmThreadsDescription[];
  
  extern const char kEnableWasmTieringName[];
@@ -88,7 +88,7 @@ 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
-@@ -73,7 +73,8 @@ executable("make_top_domain_list_variables") {
+@@ -72,7 +72,8 @@ executable("make_top_domain_list_variables") {
      "//base",
      "//base:i18n",
      "//third_party/icu",
@@ -109,7 +109,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
  #include "net/log/net_log_with_source.h"
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
-@@ -3564,8 +3565,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -3585,8 +3586,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    if (last_ipv6_probe_time_.is_null() ||
        (tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
            kIPv6ProbePeriodMs) {

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

@@ -11,7 +11,7 @@ Subject: Add flag to disable WebGL
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1765,6 +1765,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1972,6 +1972,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAccelerated2dCanvasName,
       flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
@@ -24,7 +24,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -401,6 +401,10 @@ const char kDeviceDiscoveryNotificationsName[] =
+@@ -452,6 +452,10 @@ const char kDeviceDiscoveryNotificationsName[] =
  const char kDeviceDiscoveryNotificationsDescription[] =
      "Device discovery notifications on local network.";
  
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -255,6 +255,9 @@ extern const char kDebugShortcutsDescription[];
+@@ -286,6 +286,9 @@ extern const char kDebugShortcutsDescription[];
  extern const char kDeviceDiscoveryNotificationsName[];
  extern const char kDeviceDiscoveryNotificationsDescription[];
  

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

@@ -1,6 +1,6 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Mon, 22 Oct 2018 21:29:53 +0200
-Subject: Add flags to disable device motion and orientation APIs
+Subject: Add flags to disable device motion/orientation APIs
 
 Both flags will be disabled by default and prevent usage of gyroscope and
 legacy acceleration events.
@@ -12,15 +12,15 @@ legacy acceleration events.
  content/public/common/content_features.cc              | 10 ++++++++++
  content/public/common/content_features.h               |  2 ++
  .../blink/public/platform/web_runtime_features.h       |  2 ++
- .../blink/renderer/modules/modules_initializer.cc      |  9 ++++++---
+ .../blink/renderer/modules/modules_initializer.cc      | 10 +++++++---
  .../renderer/platform/exported/web_runtime_features.cc |  8 ++++++++
  .../renderer/platform/runtime_enabled_features.json5   |  8 ++++++++
- 10 files changed, 59 insertions(+), 3 deletions(-)
+ 10 files changed, 60 insertions(+), 3 deletions(-)
 
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -1992,6 +1992,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2196,6 +2196,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
-@@ -596,6 +596,14 @@ const char kWinrtSensorsImplementationDescription[] =
+@@ -674,6 +674,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
-@@ -362,6 +362,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
+@@ -407,6 +407,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
-@@ -87,6 +87,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
+@@ -88,6 +88,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
        command_line.HasSwitch(
            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
-@@ -785,6 +785,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
+@@ -804,6 +804,16 @@ const base::Feature kWebOtpBackend{"kWebOtpBackend",
  // TODO(rouslan): Remove this.
  const base::Feature kWebPayments{"WebPayments",
                                   base::FEATURE_ENABLED_BY_DEFAULT};
@@ -103,7 +103,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
 diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
 --- a/content/public/common/content_features.h
 +++ b/content/public/common/content_features.h
-@@ -172,6 +172,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
+@@ -176,6 +176,8 @@ CONTENT_EXPORT extern const base::Feature kWebXrHitTest;
  CONTENT_EXPORT extern const base::Feature kWebXrIncubations;
  CONTENT_EXPORT extern const base::Feature kWebXrPermissionsApi;
  
@@ -115,7 +115,7 @@ diff --git a/content/public/common/content_features.h b/content/public/common/co
 diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
 --- a/third_party/blink/public/platform/web_runtime_features.h
 +++ b/third_party/blink/public/platform/web_runtime_features.h
-@@ -100,6 +100,8 @@ class WebRuntimeFeatures {
+@@ -98,6 +98,8 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
    BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
    BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
@@ -127,26 +127,27 @@ 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
-@@ -244,9 +244,12 @@ void ModulesInitializer::InitInspectorAgentSession(
- void ModulesInitializer::OnClearWindowObjectInMainWorld(
+@@ -224,9 +224,13 @@ void ModulesInitializer::OnClearWindowObjectInMainWorld(
      Document& document,
      const Settings& settings) const {
--  DeviceMotionController::From(document);
--  DeviceOrientationController::From(document);
--  DeviceOrientationAbsoluteController::From(document);
+   LocalDOMWindow& window = *document.domWindow();
+-  DeviceMotionController::From(window);
+-  DeviceOrientationController::From(window);
+-  DeviceOrientationAbsoluteController::From(window);
 +  if (RuntimeEnabledFeatures::DeviceMotionEnabled())
-+    DeviceMotionController::From(document);
++    DeviceMotionController::From(window);
 +  if (RuntimeEnabledFeatures::DeviceOrientationEnabled()) {
-+    DeviceOrientationController::From(document);
-+    DeviceOrientationAbsoluteController::From(document);
++    DeviceOrientationController::From(window);
++    DeviceOrientationAbsoluteController::From(window);
 +  }
-   NavigatorGamepad::From(document);
-   NavigatorServiceWorker::From(document);
-   DOMWindowStorageController::From(document);
++
+   NavigatorGamepad::From(*window.navigator());
+ 
+   // TODO(nhiroki): Figure out why ServiceWorkerContainer needs to be eagerly
 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
-@@ -183,6 +183,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
+@@ -179,6 +179,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
    RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
  }
  
@@ -164,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
-@@ -1202,6 +1202,14 @@
+@@ -1244,6 +1244,14 @@
        name: "OffscreenCanvasCommit",
        status: "experimental",
      },

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

@@ -0,0 +1,121 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Mon, 13 Jul 2020 00:37:06 +0200
+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 ++
+ .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++
+ .../CustomTabAppMenuPropertiesDelegate.java        |  1 +
+ .../ui/android/strings/android_chrome_strings.grd  |  3 +++
+ 7 files changed, 27 insertions(+)
+
+diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
+--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
++++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
+@@ -46,6 +46,9 @@
+         <item android:id="@+id/add_to_homescreen_id"
+             android:title="@string/menu_add_to_homescreen"
+             android:orderInCategory="2" />
++        <item android:id="@+id/view_source_id"
++            android:title="@string/view_source"
++            android:orderInCategory="2" />
+         <item android:id="@+id/open_webapk_id"
+             android:title="@string/menu_open_webapk"
+             android:orderInCategory="2" />
+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" />
+         <item android:id="@+id/add_to_homescreen_id"
+             android:title="@string/menu_add_to_homescreen" />
++        <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
+@@ -2002,6 +2002,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/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
+@@ -1815,6 +1815,8 @@ public class ChromeTabbedActivity
+                 NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
+             }
+             RecordUserAction.record("MobileMenuDownloadManager");
++        } else if (id == R.id.view_source_id) {
++            currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
+         } 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/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+@@ -288,6 +288,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+                         isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
+ 
+         updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
++        updateViewSourceMenuItem(menu, currentTab);
+ 
+         // Only display reader mode settings menu option if the current page is in reader mode.
+         menu.findItem(R.id.reader_mode_prefs_id).setVisible(shouldShowReaderModePrefs(currentTab));
+@@ -625,6 +626,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+         }
+     }
+ 
++    /**
++     * Updates the view source menu item's state.
++     *
++     * @param menu {@link Menu} for view source.
++     * @param currentTab      Current tab being displayed.
++     */
++    protected void updateViewSourceMenuItem(
++            Menu menu, Tab currentTab) {
++        MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
++        String url = currentTab.getUrlString();
++        viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:"));
++    }
++
+     /**
+      * Updates the request desktop site item's state.
+      *
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+@@ -214,6 +214,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+             }
+ 
+             updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
++            updateViewSourceMenuItem(menu, currentTab);
+             prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
+         }
+     }
+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
+@@ -310,6 +310,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>
++      <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
++        View source
++      </message>
+       <message name="IDS_PREFS_GOOGLE_SERVICES" 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. [CHAR-LIMIT=40]">
+         Google services
+       </message>
+-- 
+2.17.1
+

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

@@ -10,7 +10,7 @@ Subject: Add option to configure the ad blocker filters URL
  .../java/res/xml/adblock_preferences.xml      | 25 +++++
  .../android/java/res/xml/main_preferences.xml |  5 +
  .../browser/settings/AdBlockEditor.java       | 92 +++++++++++++++++++
- .../browser/settings/AdBlockPreferences.java  | 56 +++++++++++
+ .../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 ++
@@ -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, 306 insertions(+), 5 deletions(-)
+ 18 files changed, 311 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,26 +30,26 @@ 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
-@@ -1034,6 +1034,7 @@ chrome_java_resources = [
+@@ -885,6 +885,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",
 +  "java/res/layout/adblock_editor.xml",
    "java/res/layout/add_languages_main.xml",
-   "java/res/layout/add_site_dialog.xml",
    "java/res/layout/add_to_homescreen_dialog.xml",
-@@ -1336,6 +1337,7 @@ chrome_java_resources = [
+   "java/res/layout/auto_sign_in_first_run_dialog.xml",
+@@ -1175,6 +1176,7 @@ chrome_java_resources = [
    "java/res/xml/about_chrome_preferences.xml",
    "java/res/xml/accessibility_preferences.xml",
    "java/res/xml/account_management_preferences.xml",
 +  "java/res/xml/adblock_preferences.xml",
    "java/res/xml/autofill_server_profile_preferences.xml",
    "java/res/xml/bookmark_widget_info.xml",
-   "java/res/xml/clear_browsing_data_button.xml",
+   "java/res/xml/clear_browsing_data_preferences_tab.xml",
 diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
 --- a/chrome/android/chrome_java_sources.gni
 +++ b/chrome/android/chrome_java_sources.gni
-@@ -1352,6 +1352,8 @@ chrome_java_sources = [
+@@ -1319,6 +1319,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",
@@ -87,7 +87,7 @@ new file mode 100644
 +            android:orientation="vertical"
 +            android:focusableInTouchMode="true" >
 +
-+            <org.chromium.components.browser_ui.widget.text.ChromeTextInputLayout
++            <com.google.android.material.textfield.TextInputLayout
 +                android:id="@+id/adblock_url"
 +                style="@style/PreferenceScreenLayout"
 +                android:layout_width="match_parent"
@@ -101,7 +101,7 @@ new file mode 100644
 +                    android:inputType="textUri"
 +                    android:singleLine="true"
 +                    android:hint="@string/options_adblock_edit_label" />
-+            </org.chromium.components.browser_ui.widget.text.ChromeTextInputLayout>
++            </com.google.android.material.textfield.TextInputLayout>
 +
 +            <Space style="@style/ButtonBarTopSpacer" />
 +            <View style="@style/ButtonBarTopDivider" />
@@ -131,14 +131,14 @@ 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
-@@ -69,6 +69,8 @@
+@@ -66,6 +66,8 @@
      <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
      <string name="manage_space_activity"></string>
  
 +    <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
 +
-     <!-- Value for scaleX to mirror drawables correctly for LTR / RTL layouts. -->
-     <integer name="automirror_scale_x_reverse">-1</integer>
+     <string name="proxy_title">Proxy configuration</string>
+     <string name="proxy_url">chrome://proxy</string>
  
 diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml
 new file mode 100644
@@ -197,7 +197,7 @@ new file mode 100644
 +package org.chromium.chrome.browser.settings;
 +
 +import android.os.Bundle;
-+import android.support.v4.app.Fragment;
++import androidx.fragment.app.Fragment;
 +import android.text.Editable;
 +import android.text.TextWatcher;
 +import android.view.LayoutInflater;
@@ -286,7 +286,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBloc
 new file mode 100644
 --- /dev/null
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,61 @@
 +// 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.
@@ -298,7 +298,9 @@ new file mode 100644
 +import androidx.preference.PreferenceFragmentCompat;
 +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
 +
-+import org.chromium.chrome.browser.site_settings.WebsitePreferenceBridge;
++import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
++import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
++import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
 +import org.chromium.components.content_settings.ContentSettingsType;
 +import org.chromium.components.browser_ui.settings.SettingsUtils;
 +import org.chromium.chrome.browser.flags.CachedFeatureFlags;
@@ -308,7 +310,7 @@ new file mode 100644
 +/**
 + * Fragment that allows the user to configure AdBlock related preferences.
 + */
-+public class AdBlockPreferences extends PreferenceFragmentCompat {
++public class AdBlockPreferences extends SiteSettingsPreferenceFragment {
 +    @VisibleForTesting
 +    public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
 +    private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
@@ -320,12 +322,15 @@ new file mode 100644
 +        getActivity().setTitle(R.string.options_adblock_title);
 +        SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
 +
++        BrowserContextHandle browserContextHandle =
++                getSiteSettingsClient().getBrowserContextHandle();
++
 +        ChromeSwitchPreference mAdBlockSwitch =
 +                (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
-+        boolean isAdBlockEnabled = !WebsitePreferenceBridge.isCategoryEnabled(ContentSettingsType.ADS);
++        boolean isAdBlockEnabled = !WebsitePreferenceBridge.isCategoryEnabled(browserContextHandle, ContentSettingsType.ADS);
 +        mAdBlockSwitch.setChecked(isAdBlockEnabled);
 +        mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
-+            WebsitePreferenceBridge.setCategoryEnabled(ContentSettingsType.ADS, !(boolean) newValue);
++            WebsitePreferenceBridge.setCategoryEnabled(browserContextHandle, ContentSettingsType.ADS, !(boolean) newValue);
 +            return true;
 +        });
 +
@@ -346,7 +351,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
-@@ -9780,6 +9780,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
+@@ -9806,6 +9806,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
        Never show this again.
      </message>
  
@@ -397,7 +402,7 @@ diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/brows
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -242,6 +242,14 @@ public class CachedFeatureFlags {
+@@ -250,6 +250,14 @@ public class CachedFeatureFlags {
                  ChromeFeatureList.isEnabled(ChromeFeatureList.REACHED_CODE_PROFILER));
      }
  
@@ -412,7 +417,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.
       */
-@@ -394,5 +402,7 @@ public class CachedFeatureFlags {
+@@ -402,5 +410,7 @@ public class CachedFeatureFlags {
      @NativeMethods
      interface Natives {
          boolean isNetworkServiceWarmUpEnabled();
@@ -423,7 +428,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -325,6 +325,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -328,6 +328,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
            SSLConfigServiceManager::CreateDefaultManager(local_state_)),
        proxy_config_monitor_(local_state_),
        stub_resolver_config_reader_(local_state_) {
@@ -432,7 +437,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 =
-@@ -384,6 +386,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
+@@ -389,6 +391,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
    StubResolverConfigReader::RegisterPrefs(registry);
  
@@ -444,8 +449,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
-@@ -802,6 +802,20 @@ Your Google account may have other forms of browsing history like searches and a
-         Captions
+@@ -1826,6 +1826,20 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+         Work profile
        </message>
  
 +      <!-- AdBlock settings -->
@@ -462,13 +467,13 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 +        Visit help page
 +      </message>
 +
-       <!-- Site settings -->
-       <message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
-         Site settings
+       <!-- 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.
 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
-@@ -2054,6 +2054,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
+@@ -2043,6 +2043,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  // capture devices without prompt.
  const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  
@@ -481,7 +486,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
 --- a/chrome/common/pref_names.h
 +++ b/chrome/common/pref_names.h
-@@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
+@@ -31,6 +31,7 @@ extern const char kDownloadRestrictions[];
  extern const char kForceEphemeralProfiles[];
  extern const char kHomePageIsNewTabPage[];
  extern const char kHomePage[];

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

@@ -13,7 +13,7 @@ Subject: Add option to not persist tabs across sessions
 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
-@@ -63,6 +63,9 @@
+@@ -60,6 +60,9 @@
      <!-- TODO(peconn): Add help section. -->
      <!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
  
@@ -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
-@@ -1093,8 +1093,10 @@ public class ChromeTabbedActivity
+@@ -1150,8 +1150,10 @@ public class ChromeTabbedActivity
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -72,7 +72,7 @@ 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;
-@@ -39,6 +41,7 @@ public class PrivacySettings
+@@ -40,6 +42,7 @@ public class PrivacySettings
      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";
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
  
-@@ -87,6 +90,10 @@ public class PrivacySettings
+@@ -88,6 +91,10 @@ public class PrivacySettings
              sharedPreferencesEditor.apply();
          } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
              PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -131,6 +138,11 @@ public class PrivacySettings
+@@ -132,6 +139,11 @@ public class PrivacySettings
                              ? R.string.text_on
                              : R.string.text_off);
          }
@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -3657,6 +3657,12 @@ Only you can see what your camera is looking at. The site can't see your camera'
+@@ -3197,6 +3197,12 @@ Only you can see what your camera is looking at. The site can't see your camera'
        <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>

+ 62 - 136
build/patches/Add-site-settings-option-for-session-only-cookies.patch

@@ -3,30 +3,14 @@ Date: Tue, 28 Aug 2018 23:27:23 +0200
 Subject: Add site settings option for session-only cookies
 
 ---
- chrome/android/java/res/values/values.xml     |  3 ++
- .../java/res/xml/website_preferences.xml      |  7 +++++
- .../site_settings/SingleCategorySettings.java | 21 ++++++++++++-
- .../preferences/pref_service_bridge.cc        | 31 +++++++++++++++++++
- .../preferences/PrefServiceBridge.java        | 11 +++++++
- .../strings/android_chrome_strings.grd        |  6 ++++
- 6 files changed, 78 insertions(+), 1 deletion(-)
+ .../java/res/xml/website_preferences.xml      |  7 ++++
+ .../site_settings/SingleCategorySettings.java | 37 ++++++++++++++++++-
+ .../strings/android/site_settings.grdp        |  6 +++
+ 3 files changed, 49 insertions(+), 1 deletion(-)
 
-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
-@@ -32,6 +32,9 @@
-     <integer name="reload_button_level_reload">0</integer>
-     <integer name="reload_button_level_stop">1</integer>
- 
-+    <string name="allow_cookies_session_only_title">Keep cookies only until you quit your browser</string>
-+    <string name="allow_cookies_session_only_summary">When enabled, all cookies will be erased when the browsing session is over</string>
-+
-     <!-- Help and Feedback
-          These constants should be in sync with the context names on go/mobilehelprecs.
-          If the context ID cannot be found, the default help page will be shown to the user.-->
-diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
---- a/chrome/android/java/res/xml/website_preferences.xml
-+++ b/chrome/android/java/res/xml/website_preferences.xml
+diff --git a/components/browser_ui/site_settings/android/java/res/xml/website_preferences.xml b/components/browser_ui/site_settings/android/java/res/xml/website_preferences.xml
+--- a/components/browser_ui/site_settings/android/java/res/xml/website_preferences.xml
++++ b/components/browser_ui/site_settings/android/java/res/xml/website_preferences.xml
 @@ -40,6 +40,13 @@
          android:title="@string/website_settings_category_notifications_quiet"
          android:defaultValue="false"
@@ -41,10 +25,10 @@ diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/androi
      <!-- A toggle for enabling vibration in notifications. -->
      <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
          android:key="notifications_vibrate"
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleCategorySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleCategorySettings.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleCategorySettings.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleCategorySettings.java
-@@ -133,6 +133,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
+--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java
+@@ -132,6 +132,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
  
      // Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
      public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
@@ -52,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
      public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
      public static final String NOTIFICATIONS_QUIET_UI_TOGGLE_KEY = "notifications_quiet_ui";
      public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
-@@ -503,6 +504,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -534,6 +535,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
  
                  if (type == SiteSettingsCategory.Type.COOKIES) {
                      updateThirdPartyCookiesCheckBox();
@@ -60,16 +44,36 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
                  } else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
                      updateNotificationsSecondaryControls();
                  }
-@@ -541,6 +543,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
-             getInfoForOrigins();
+@@ -550,6 +552,16 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          } else if (FOUR_STATE_COOKIE_TOGGLE_KEY.equals(preference.getKey())) {
              setCookieSettingsPreference((CookieSettingsState) newValue);
+             getInfoForOrigins();
 +        } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
-+            PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled((boolean) newValue);
++            int setting;
++            if (((boolean) newValue)) {
++                setting = ContentSettingValues.SESSION_ONLY;
++            } else {
++                setting = isBlocked() ? ContentSettingValues.BLOCK
++                                      : ContentSettingValues.ALLOW;
++            }
++            WebsitePreferenceBridge.setContentSetting(
++                   browserContextHandle, mCategory.getContentSettingsType(), setting);
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
-             PrefServiceBridge.getInstance().setBoolean(
-                     Pref.BLOCK_THIRD_PARTY_COOKIES, ((boolean) newValue));
-@@ -904,6 +908,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+             getPrefs().setBlockThirdPartyCookies((boolean) newValue);
+         } else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
+@@ -675,6 +687,11 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+         if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES) && mRequiresFourStateSetting) {
+             setting = cookieSettingsExceptionShouldBlock() ? ContentSettingValues.BLOCK
+                                                            : ContentSettingValues.ALLOW;
++            ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
++                getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
++            if (cookiesSessionOnlyPref.isChecked() && (setting == ContentSettingValues.ALLOW)) {
++               setting = ContentSettingValues.SESSION_ONLY;
++            }
+         } else {
+             setting = (WebsitePreferenceBridge.isCategoryEnabled(
+                               browserContextHandle, mCategory.getContentSettingsType()))
+@@ -934,6 +951,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
                  (FourStateCookieSettingsPreference) screen.findPreference(
                          FOUR_STATE_COOKIE_TOGGLE_KEY);
          Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
@@ -78,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
          Preference notificationsQuietUi = screen.findPreference(NOTIFICATIONS_QUIET_UI_TOGGLE_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
-@@ -946,6 +952,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -976,6 +995,7 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
  
          if (hideSecondaryToggles) {
              screen.removePreference(thirdPartyCookies);
@@ -86,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
              screen.removePreference(notificationsVibrate);
              screen.removePreference(notificationsQuietUi);
              screen.removePreference(explainProtectedMediaKey);
-@@ -957,12 +964,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -987,12 +1007,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
              return;
          }
  
@@ -103,119 +107,41 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
          }
  
          // Configure/hide the notifications secondary controls, as needed.
-@@ -1075,6 +1085,15 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
+@@ -1121,6 +1144,18 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
          }
      }
  
 +    private void updateCookiesSessionOnlyCheckBox() {
++        BrowserContextHandle browserContextHandle =
++                getSiteSettingsClient().getBrowserContextHandle();
 +        ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
 +                getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
 +        cookiesSessionOnlyPref.setChecked(
-+                PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
-+        cookiesSessionOnlyPref.setEnabled(WebsitePreferenceBridge.isCategoryEnabled(
++                WebsitePreferenceBridge.getContentSetting(
++                        browserContextHandle, mCategory.getContentSettingsType()) == ContentSettingValues.SESSION_ONLY);
++        cookiesSessionOnlyPref.setEnabled(WebsitePreferenceBridge.isCategoryEnabled(browserContextHandle,
 +                ContentSettingsType.COOKIES));
 +    }
 +
      private void updateThirdPartyCookiesCheckBox() {
          ChromeBaseCheckBoxPreference thirdPartyCookiesPref =
                  (ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
-diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
---- a/chrome/browser/android/preferences/pref_service_bridge.cc
-+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
-@@ -13,10 +13,17 @@
- #include "chrome/browser/android/preferences/prefs.h"
- #include "chrome/browser/preferences/jni_headers/PrefServiceBridge_jni.h"
- #include "chrome/browser/profiles/profile_manager.h"
-+#include "components/content_settings/core/browser/host_content_settings_map.h"
-+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-+//#include "components/content_settings/core/common/content_settings_types.h"
- #include "components/prefs/pref_service.h"
- 
- namespace {
- 
-+Profile* GetOriginalProfile() {
-+  return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
-+}
-+
- PrefService* GetPrefService() {
-   return ProfileManager::GetActiveUserProfile()
-       ->GetOriginalProfile()
-@@ -90,3 +97,27 @@ static jboolean JNI_PrefServiceBridge_IsManagedPreference(
-   return GetPrefService()->IsManagedPreference(
-       PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index));
- }
-+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
-+    JNIEnv* env,
-+    const base::android::JavaParamRef<jobject>& obj) {
-+  HostContentSettingsMap* host_content_settings_map =
-+      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
-+  auto value = host_content_settings_map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr);
-+  auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
-+  LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
-+  return enabled;
-+}
-+
-+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
-+    JNIEnv* env,
-+    const base::android::JavaParamRef<jobject>& obj,
-+    jboolean enabled) {
-+  HostContentSettingsMap* host_content_settings_map =
-+      HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
-+  LOG(INFO) << "SetCookiesSessionOnly -> " << (enabled ? "true" : "false") <<
-+           "; false -> setting_allow: " << CONTENT_SETTING_ALLOW <<
-+           "; true -> session_only: "   << CONTENT_SETTING_SESSION_ONLY;
-+  host_content_settings_map->SetDefaultContentSetting(
-+      ContentSettingsType::COOKIES,
-+      enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
-+}
-diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
---- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
-+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
-@@ -89,6 +89,13 @@ public class PrefServiceBridge {
-         PrefServiceBridgeJni.get().setString(preference, value);
-     }
- 
-+    public boolean isCookiesSessionOnlyEnabled() {
-+        return PrefServiceBridgeJni.get().getCookiesSessionOnlyEnabled(PrefServiceBridge.this);
-+    }
-+    public void setCookiesSessionOnlyEnabled(boolean enabled) {
-+        PrefServiceBridgeJni.get().setCookiesSessionOnlyEnabled(PrefServiceBridge.this, enabled);
-+    }
-+
-     /**
-      * @param preference The name of the preference.
-      * @return Whether the specified preference is managed.
-@@ -104,6 +111,9 @@ public class PrefServiceBridge {
- 
-     @NativeMethods
-     interface Natives {
-+        boolean getCookiesSessionOnlyEnabled(PrefServiceBridge caller);
-+        void setCookiesSessionOnlyEnabled(PrefServiceBridge caller, boolean enabled);
-+
-         void clearPref(int preference);
-         boolean getBoolean(int preference);
-         void setBoolean(int preference, boolean value);
-@@ -114,3 +124,4 @@ public class PrefServiceBridge {
-         boolean isManagedPreference(int preference);
-     }
- }
-+
-diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
---- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
-+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -814,6 +814,12 @@ Your Google account may have other forms of browsing history like searches and a
-       <message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
-         Prevent third-party websites from saving and reading cookie data
-       </message>
-+      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
-+        Keep cookies only until you quit your browser
-+      </message>
-+      <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
-+        When enabled, all cookies will be erased when the browsing session is over
-+      </message>
-       <message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
-         JavaScript
-       </message>
+diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp
+--- a/components/browser_ui/strings/android/site_settings.grdp
++++ b/components/browser_ui/strings/android/site_settings.grdp
+@@ -27,6 +27,12 @@
+   <message name="IDS_WEBSITE_SETTINGS_USE_CAMERA" desc="The category filter 'Camera' for site settings.">
+     Camera
+   </message>
++  <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
++    Keep cookies only until you quit your browser
++  </message>
++  <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
++    When enabled, all cookies will be erased when the browsing session is over
++  </message>
+   <message name="IDS_CLIPBOARD_PERMISSION_TITLE" desc="Title of the permission to read from clipboard [CHAR-LIMIT=32]">
+     Clipboard
+   </message>
 -- 
 2.17.1
 

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

@@ -14,10 +14,10 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
  chrome/app/generated_resources.grd            |  6 ++
  .../flags/android/cached_feature_flags.cc     | 24 +++++
  .../browser/flags/CachedFeatureFlags.java     | 24 +++++
- .../net/stub_resolver_config_reader.cc        | 40 ++------
+ .../net/stub_resolver_config_reader.cc        | 30 +-----
  .../strings/android_chrome_strings.grd        | 11 +++
  chrome/common/chrome_features.cc              |  4 +-
- 14 files changed, 322 insertions(+), 34 deletions(-)
+ 14 files changed, 317 insertions(+), 29 deletions(-)
  create mode 100644 chrome/android/java/res/layout/doh_editor.xml
  create mode 100644 chrome/android/java/res/xml/doh_preferences.xml
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
@@ -26,7 +26,7 @@ Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
 diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
 --- a/chrome/android/chrome_java_resources.gni
 +++ b/chrome/android/chrome_java_resources.gni
-@@ -1108,6 +1108,7 @@ chrome_java_resources = [
+@@ -954,6 +954,7 @@ chrome_java_resources = [
    "java/res/layout/device_item_list.xml",
    "java/res/layout/distilled_page_font_family_spinner.xml",
    "java/res/layout/distilled_page_prefs_view.xml",
@@ -34,18 +34,18 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
    "java/res/layout/edit_url_suggestion_layout.xml",
    "java/res/layout/editable_option_editor_footer.xml",
    "java/res/layout/editable_option_editor_icons.xml",
-@@ -1347,6 +1348,7 @@ chrome_java_resources = [
+@@ -1185,6 +1186,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/download_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
-@@ -1402,6 +1402,8 @@ chrome_java_sources = [
+@@ -1371,6 +1371,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",
@@ -83,7 +83,7 @@ new file mode 100644
 +            android:orientation="vertical"
 +            android:focusableInTouchMode="true" >
 +
-+            <org.chromium.components.browser_ui.widget.text.ChromeTextInputLayout
++            <com.google.android.material.textfield.TextInputLayout
 +                android:id="@+id/doh_url"
 +                style="@style/PreferenceScreenLayout"
 +                android:layout_width="match_parent"
@@ -97,7 +97,7 @@ new file mode 100644
 +                    android:inputType="textUri"
 +                    android:singleLine="true"
 +                    android:hint="@string/options_doh_edit_label" />
-+            </org.chromium.components.browser_ui.widget.text.ChromeTextInputLayout>
++            </com.google.android.material.textfield.TextInputLayout>
 +
 +            <Space style="@style/ButtonBarTopSpacer" />
 +            <View style="@style/ButtonBarTopDivider" />
@@ -127,7 +127,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
-@@ -86,6 +86,8 @@
+@@ -80,6 +80,8 @@
      <integer name="download_infobar_bar_fill_in_delay">400</integer>
      <integer name="download_infobar_bar_fill_out_delay">200</integer>
  
@@ -193,7 +193,7 @@ new file mode 100644
 +package org.chromium.chrome.browser.settings;
 +
 +import android.os.Bundle;
-+import android.support.v4.app.Fragment;
++import androidx.fragment.app.Fragment;
 +import android.text.Editable;
 +import android.text.TextWatcher;
 +import android.view.LayoutInflater;
@@ -340,7 +340,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
-@@ -6864,6 +6864,12 @@ the Bookmarks menu.">
+@@ -6912,6 +6912,12 @@ the Bookmarks menu.">
        </if>
  
        <if expr="is_android">
@@ -394,7 +394,7 @@ diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/brows
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
-@@ -124,6 +124,26 @@ public class CachedFeatureFlags {
+@@ -127,6 +127,26 @@ public class CachedFeatureFlags {
      private static Map<String, String> sOverridesTestFeatures;
      private static String sReachedCodeProfilerTrialGroup;
  
@@ -421,7 +421,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
      /**
       * Checks if a cached feature flag is enabled.
       *
-@@ -401,6 +421,10 @@ public class CachedFeatureFlags {
+@@ -409,6 +429,10 @@ public class CachedFeatureFlags {
  
      @NativeMethods
      interface Natives {
@@ -435,25 +435,11 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
 diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc
 --- a/chrome/browser/net/stub_resolver_config_reader.cc
 +++ b/chrome/browser/net/stub_resolver_config_reader.cc
-@@ -122,41 +122,12 @@ StubResolverConfigReader::StubResolverConfigReader(PrefService* local_state,
-     local_state_->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
-                                       base::Value(ShouldEnableAsyncDns()));
-     std::string default_doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
--    std::string default_doh_templates;
--    if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
--      if (features::kDnsOverHttpsFallbackParam.Get()) {
--        default_doh_mode = chrome_browser_net::kDnsOverHttpsModeAutomatic;
--      } else {
--        default_doh_mode = chrome_browser_net::kDnsOverHttpsModeSecure;
--      }
--      default_doh_templates = features::kDnsOverHttpsTemplatesParam.Get();
--    }
-+    std::string default_doh_templates = features::kDnsOverHttpsTemplatesParam.Get();
-     local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsMode,
-                                       base::Value(default_doh_mode));
+@@ -140,28 +140,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.
@@ -465,11 +451,11 @@ diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/
 -      if (entries.count("dns-over-https@1")) {
 -        // The user has "Enabled" selected.
 -        local_state_->SetString(prefs::kDnsOverHttpsMode,
--                                chrome_browser_net::kDnsOverHttpsModeAutomatic);
+-                                SecureDnsConfig::kModeAutomatic);
 -      } else if (entries.count("dns-over-https@2")) {
 -        // The user has "Disabled" selected.
 -        local_state_->SetString(prefs::kDnsOverHttpsMode,
--                                chrome_browser_net::kDnsOverHttpsModeOff);
+-                                SecureDnsConfig::kModeOff);
 -      } else {
 -        // The user has "Default" selected.
 -        local_state_->ClearPref(prefs::kDnsOverHttpsMode);
@@ -478,26 +464,35 @@ diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/
    }
  
    pref_change_registrar_.Add(prefs::kBuiltInDnsClientEnabled, pref_callback);
-@@ -346,8 +317,13 @@ void StubResolverConfigReader::GetAndUpdateConfiguration(
+@@ -323,21 +301,19 @@ 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;
++  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 (doh_templates.empty()) {
-+    secure_dns_mode = net::DnsConfig::SecureDnsMode::OFF;
-+    doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
-+  }
-+  LOG(INFO) << "DoH templates: '" << doh_templates << "' with mode " << doh_mode;
-+  if (secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
+   if (!doh_templates.empty() &&
+       secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
 +    std::string server_method;
      for (base::StringPiece server_template :
-     chrome_browser_net::SplitDohTemplateGroup(doh_templates)) {
+          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
-@@ -576,6 +576,17 @@ CHAR-LIMIT guidelines:
+@@ -581,6 +581,17 @@ CHAR-LIMIT guidelines:
          Chrome Passwords
        </message>
  
@@ -518,7 +513,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -265,12 +265,12 @@ const base::Feature kDnsHttpssvc{"DnsHttpssvc",
+@@ -281,12 +281,12 @@ const base::Feature kDefaultWebAppInstallation{
  
  // Enable DNS over HTTPS (DoH).
  const base::Feature kDnsOverHttps{"DnsOverHttps",

+ 8 - 68
build/patches/Allow-building-without-feed-support.patch

@@ -3,32 +3,14 @@ Date: Thu, 19 Dec 2019 22:52:53 +0100
 Subject: Allow building without feed support
 
 ---
- .../start_surface/StartSurfaceCoordinator.java  |  5 -----
- .../start_surface/StartSurfaceMediator.java     | 17 -----------------
- chrome/android/feed/feed_java_sources.gni       |  2 --
- .../browser/native_page/NativePageFactory.java  |  7 -------
- components/feed/feed_feature_list.cc            |  2 +-
- 5 files changed, 1 insertion(+), 32 deletions(-)
+ .../start_surface/StartSurfaceMediator.java    | 18 ------------------
+ components/feed/feed_feature_list.cc           |  2 +-
+ 2 files changed, 1 insertion(+), 19 deletions(-)
 
-diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
---- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
-+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
-@@ -232,11 +232,6 @@ public class StartSurfaceCoordinator implements StartSurface {
-             mBottomBarCoordinator = new BottomBarCoordinator(
-                     mActivity, mActivity.getCompositorViewHolder(), mPropertyModel);
-         }
--
--        mExploreSurfaceCoordinator = new ExploreSurfaceCoordinator(mActivity,
--                mSurfaceMode == SurfaceMode.SINGLE_PANE ? mTasksSurface.getBodyViewContainer()
--                                                        : mActivity.getCompositorViewHolder(),
--                mPropertyModel, mSurfaceMode == SurfaceMode.SINGLE_PANE);
-     }
- 
-     private TabSwitcher.Controller initializeSecondaryTasksSurface() {
 diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
 +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
-@@ -432,15 +432,6 @@ class StartSurfaceMediator
+@@ -486,16 +486,6 @@ class StartSurfaceMediator
              assert (isShownState(shownState));
              setOverviewState(shownState);
  
@@ -36,15 +18,16 @@ diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromiu
 -            // default.
 -            if (mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)
 -                    && mPropertyModel.get(FEED_SURFACE_COORDINATOR) == null
--                    && !mActivityStateChecker.isFinishingOrDestroyed()) {
+-                    && !mActivityStateChecker.isFinishingOrDestroyed()
+-                    && mFeedSurfaceCreator != null) {
 -                mPropertyModel.set(FEED_SURFACE_COORDINATOR,
 -                        mFeedSurfaceCreator.createFeedSurfaceCoordinator(
 -                                mNightModeStateProvider.isInNightMode()));
 -            }
              mTabModelSelector.addObserver(mTabModelSelectorObserver);
  
-             if (mFullScreenListener != null) {
-@@ -555,14 +546,6 @@ class StartSurfaceMediator
+             if (mBrowserControlsObserver != null) {
+@@ -615,14 +605,6 @@ class StartSurfaceMediator
      private void setExploreSurfaceVisibility(boolean isVisible) {
          if (isVisible == mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) return;
  
@@ -59,49 +42,6 @@ diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromiu
          mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, isVisible);
  
          if (mOverviewModeState == OverviewModeState.SHOWN_TABSWITCHER_TWO_PANES) {
-diff --git a/chrome/android/feed/feed_java_sources.gni b/chrome/android/feed/feed_java_sources.gni
---- a/chrome/android/feed/feed_java_sources.gni
-+++ b/chrome/android/feed/feed_java_sources.gni
-@@ -35,7 +35,6 @@ if (enable_feed_in_chrome) {
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLifecycleBridge.java",
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedLoggingBridge.java",
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNetworkBridge.java",
--    "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java",
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedOfflineBridge.java",
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedOfflineIndicator.java",
-     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeFactory.java",
-@@ -681,7 +680,6 @@ if (enable_feed_in_chrome) {
-   feed_deps = []
-   feed_java_sources = [
-     "//chrome/android/feed/dummy/java/src/org/chromium/chrome/browser/feed/FeedAppLifecycle.java",
--    "//chrome/android/feed/dummy/java/src/org/chromium/chrome/browser/feed/FeedNewTabPage.java",
-     "//chrome/android/feed/dummy/java/src/org/chromium/chrome/browser/feed/FeedProcessScopeFactory.java",
-     "//chrome/android/feed/dummy/java/src/org/chromium/chrome/browser/feed/FeedRefreshTask.java",
-     "//chrome/android/feed/dummy/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java",
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
-@@ -17,7 +17,6 @@ import org.chromium.chrome.browser.ChromeActivity;
- import org.chromium.chrome.browser.bookmarks.BookmarkPage;
- import org.chromium.chrome.browser.download.DownloadPage;
- import org.chromium.chrome.browser.explore_sites.ExploreSitesPage;
--import org.chromium.chrome.browser.feed.FeedNewTabPage;
- import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
- import org.chromium.chrome.browser.history.HistoryManagerUtils;
-@@ -58,12 +57,6 @@ public class NativePageFactory {
-                         activity, new TabShim(tab, activity.getFullscreenManager()));
-             }
- 
--            if (ChromeFeatureList.isEnabled(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS)) {
--                return new FeedNewTabPage(activity,
--                        new TabShim(tab, activity.getFullscreenManager()), tabModelSelector,
--                        activityTabProvider, activityLifecycleDispatcher, tab);
--            }
--
-             return new NewTabPage(activity, new TabShim(tab, activity.getFullscreenManager()),
-                     tabModelSelector, activityTabProvider, activityLifecycleDispatcher, tab);
-         }
 diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
 --- a/components/feed/feed_feature_list.cc
 +++ b/components/feed/feed_feature_list.cc

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

@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -1010,6 +1010,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -1031,6 +1031,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());
-@@ -3409,7 +3415,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
+@@ -3458,7 +3464,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
    // Audio only stream is allowed to play when in background.
    // TODO: We should check IsBackgroundOptimizationCandidate here. But we need
    // to move the logic of checking video frames out of that function.
@@ -39,7 +39,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
 diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
 --- a/media/blink/webmediaplayer_impl.h
 +++ b/media/blink/webmediaplayer_impl.h
-@@ -150,6 +150,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -151,6 +151,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
    // True if the loaded media has a playable video/audio track.
    bool HasVideo() const override;
    bool HasAudio() const override;

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

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

+ 3 - 3
build/patches/Always-allow-partner-customisation.patch

@@ -9,7 +9,7 @@ Subject: Always allow partner customisation
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
-@@ -305,14 +305,14 @@ public class PartnerBrowserCustomizations {
+@@ -325,14 +325,14 @@ public class PartnerBrowserCustomizations {
              @Override
              protected Void doInBackground() {
                  try {
@@ -30,8 +30,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
 +                    //    return null;
 +                    //}
  
-                     if (isCancelled()) {
-                         return null;
+                     if (isCancelled()) return null;
+                     Provider provider = AppHooks.get().getCustomizationProvider();
 -- 
 2.17.1
 

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

@@ -11,7 +11,7 @@ Do not read experiment value for cronet async DNS configuration
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -147,7 +147,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
+@@ -148,7 +148,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams(
        local_state->GetBoolean(prefs::kNtlmV2Enabled);
  #endif  // defined(OS_POSIX)
  
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
 diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
 --- a/components/cronet/url_request_context_config.cc
 +++ b/components/cronet/url_request_context_config.cc
-@@ -540,7 +540,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
+@@ -533,7 +533,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
          effective_experimental_options->Remove(it.key(), nullptr);
          continue;
        }

+ 1 - 1
build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch

@@ -48,7 +48,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/thir
 diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
 --- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
 +++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
-@@ -397,7 +397,9 @@ double AudioContext::baseLatency() const {
+@@ -398,7 +398,9 @@ double AudioContext::baseLatency() const {
    DCHECK(IsMainThread());
    DCHECK(destination());
  

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 508 - 1987
build/patches/Automated-domain-substitution.patch


+ 7 - 6
build/patches/Battery-API-return-nothing.patch

@@ -4,13 +4,13 @@ Subject: Battery API: return nothing
 
 Include @thestinger's fix for correct charging/unknown values
 ---
- .../modules/battery/battery_manager.cc        | 25 +++----------------
- 1 file changed, 4 insertions(+), 21 deletions(-)
+ .../modules/battery/battery_manager.cc        | 26 +++----------------
+ 1 file changed, 4 insertions(+), 22 deletions(-)
 
 diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc
 --- a/third_party/blink/renderer/modules/battery/battery_manager.cc
 +++ b/third_party/blink/renderer/modules/battery/battery_manager.cc
-@@ -45,45 +45,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
+@@ -45,46 +45,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
  }
  
  bool BatteryManager::charging() {
@@ -44,10 +44,11 @@ diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/thi
      return;
    }
 -
--  Document* document = Document::From(GetExecutionContext());
--  DCHECK(document);
--  if (document->IsContextPaused() || document->IsContextDestroyed())
+-  DCHECK(GetExecutionContext());
+-  if (GetExecutionContext()->IsContextPaused() ||
+-      GetExecutionContext()->IsContextDestroyed()) {
 -    return;
+-  }
 -
 -  if (battery_status_.Charging() != old_status.Charging())
 -    DispatchEvent(*Event::Create(event_type_names::kChargingchange));

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

@@ -38,14 +38,14 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.c
 diff --git a/chrome/browser/history/history_utils.cc b/chrome/browser/history/history_utils.cc
 --- a/chrome/browser/history/history_utils.cc
 +++ b/chrome/browser/history/history_utils.cc
-@@ -22,6 +22,7 @@ bool CanAddURLToHistory(const GURL& url) {
+@@ -21,6 +21,7 @@ bool CanAddURLToHistory(const GURL& url) {
        url.SchemeIs(content::kChromeDevToolsScheme) ||
        url.SchemeIs(content::kChromeUIScheme) ||
        url.SchemeIs(content::kViewSourceScheme) ||
 +      url.SchemeIs(url::kTraceScheme) ||
        url.SchemeIs(chrome::kChromeNativeScheme) ||
        url.SchemeIs(chrome::kChromeSearchScheme) ||
-       url.SchemeIs(dom_distiller::kDomDistillerScheme) ||
+       url.SchemeIs(dom_distiller::kDomDistillerScheme))
 diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc
 --- a/chrome/browser/ui/singleton_tabs.cc
 +++ b/chrome/browser/ui/singleton_tabs.cc
@@ -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
-@@ -625,6 +625,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
+@@ -632,6 +632,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
-@@ -1084,6 +1084,8 @@ component("net") {
+@@ -1081,6 +1081,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;
-@@ -579,6 +581,12 @@ URLRequest::URLRequest(const GURL& url,
+@@ -562,6 +564,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
-@@ -42,6 +42,7 @@
+@@ -43,6 +43,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"
-@@ -612,6 +613,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
+@@ -603,6 +604,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
      job_factory->SetProtocolHandler(scheme_handler.first,
                                      std::move(scheme_handler.second));
    }

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

@@ -127,7 +127,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
 --- a/chrome/browser/browser_process_impl.h
 +++ b/chrome/browser/browser_process_impl.h
-@@ -181,6 +181,7 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -180,6 +180,7 @@ class BrowserProcessImpl : public BrowserProcess,
  #endif
  
    component_updater::ComponentUpdateService* component_updater() override;
@@ -135,7 +135,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
  #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
    component_updater::SupervisedUserWhitelistInstaller*
    supervised_user_whitelist_installer() override;
-@@ -364,6 +365,8 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -363,6 +364,8 @@ class BrowserProcessImpl : public BrowserProcess,
    // but some users of component updater only install per-user.
    std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
  
@@ -147,7 +147,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
 diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
 --- a/chrome/browser/chrome_browser_main.cc
 +++ b/chrome/browser/chrome_browser_main.cc
-@@ -1561,6 +1561,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
+@@ -1553,6 +1553,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
    if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) {
      component_updater::RegisterComponentsForUpdate(profile_->IsOffTheRecord(),
                                                     profile_->GetPrefs());
@@ -167,7 +167,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/media/router/media_router_feature.h"
  #include "chrome/browser/media/router/presentation/presentation_service_delegate_impl.h"
  #include "chrome/browser/media/router/presentation/receiver_presentation_service_delegate_impl.h"
-@@ -214,7 +213,6 @@
+@@ -215,7 +214,6 @@
  #include "components/language/core/browser/pref_names.h"
  #include "components/metrics/client_info.h"
  #include "components/net_log/chrome_net_log.h"
@@ -175,7 +175,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
  #include "components/page_load_metrics/browser/page_load_metrics_util.h"
  #include "components/payments/content/payment_request_display_manager.h"
-@@ -3797,16 +3795,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -3871,16 +3869,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
      content::NavigationHandle* handle) {
    std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
  
@@ -190,18 +190,18 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
 -  }
 -
  #if BUILDFLAG(ENABLE_PLUGINS)
-   MaybeAddThrottle(&throttles,
-                    FlashDownloadInterception::MaybeCreateThrottleFor(handle));
-@@ -3921,10 +3909,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
-                    safe_browsing::MaybeCreateNavigationThrottle(handle));
+   MaybeAddThrottle(FlashDownloadInterception::MaybeCreateThrottleFor(handle),
+                    &throttles);
+@@ -3993,10 +3981,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+                    &throttles);
  #endif
  
 -  MaybeAddThrottle(
--      &throttles,
--      LookalikeUrlNavigationThrottle::MaybeCreateNavigationThrottle(handle));
+-      LookalikeUrlNavigationThrottle::MaybeCreateNavigationThrottle(handle),
+-      &throttles);
 -
-   MaybeAddThrottle(&throttles,
-                    PDFIFrameNavigationThrottle::MaybeCreateThrottleFor(handle));
+   MaybeAddThrottle(PDFIFrameNavigationThrottle::MaybeCreateThrottleFor(handle),
+                    &throttles);
  
 diff --git a/components/component_updater/BUILD.gn b/components/component_updater/BUILD.gn
 --- a/components/component_updater/BUILD.gn
@@ -1142,7 +1142,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_version.h b/c
 diff --git a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
 --- a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
 +++ b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
-@@ -35,6 +35,8 @@ base::File VerifiedRulesetDealer::OpenAndSetRulesetFile(
+@@ -36,6 +36,8 @@ base::File VerifiedRulesetDealer::OpenAndSetRulesetFile(
    TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
                 "VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
                 file.IsValid());
@@ -1313,7 +1313,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
-@@ -127,11 +127,6 @@ void NavigationThrottleRunner::RegisterNavigationThrottles() {
+@@ -123,11 +123,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
-@@ -435,12 +435,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
+@@ -434,12 +434,13 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
            port_config.enable_nonproxied_udp = false;
            break;
          case DEFAULT:

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

@@ -25,7 +25,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -521,7 +521,11 @@ const base::Feature kMediaDrmPreprovisioningAtStartup{
+@@ -527,7 +527,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
-@@ -510,7 +510,7 @@ const base::Feature kMediaDrmPersistentLicense{
+@@ -516,7 +516,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",

+ 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
-@@ -291,7 +291,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -293,7 +293,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
       * displayed.
       */
      private boolean triggerPromo() {
@@ -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
-@@ -322,8 +322,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
+@@ -324,8 +324,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
                  preferenceManager.writeBoolean(
                          ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
              }

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

@@ -10,47 +10,47 @@ Subject: Disable fetching of all field trials
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
 +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
-@@ -138,9 +138,7 @@ public abstract class ChromeFeatureList {
+@@ -122,9 +122,7 @@ public abstract class ChromeFeatureList {
       *   the specified parameter does not exist.
       */
      public static String getFieldTrialParamByFeature(String featureName, String paramName) {
 -        if (FeatureList.hasTestFeatures()) return "";
--        assert isInitialized();
+-        assert FeatureList.isInitialized();
 -        return ChromeFeatureListJni.get().getFieldTrialParamByFeature(featureName, paramName);
 +        return "";
      }
  
      /**
-@@ -157,10 +155,7 @@ public abstract class ChromeFeatureList {
+@@ -141,10 +139,7 @@ public abstract class ChromeFeatureList {
       */
      public static int getFieldTrialParamByFeatureAsInt(
              String featureName, String paramName, int defaultValue) {
 -        if (FeatureList.hasTestFeatures()) return defaultValue;
--        assert isInitialized();
+-        assert FeatureList.isInitialized();
 -        return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsInt(
 -                featureName, paramName, defaultValue);
 +        return defaultValue;
      }
  
      /**
-@@ -177,10 +172,7 @@ public abstract class ChromeFeatureList {
+@@ -161,10 +156,7 @@ public abstract class ChromeFeatureList {
       */
      public static double getFieldTrialParamByFeatureAsDouble(
              String featureName, String paramName, double defaultValue) {
 -        if (FeatureList.hasTestFeatures()) return defaultValue;
--        assert isInitialized();
+-        assert FeatureList.isInitialized();
 -        return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsDouble(
 -                featureName, paramName, defaultValue);
 +        return defaultValue;
      }
  
      /**
-@@ -197,10 +189,7 @@ public abstract class ChromeFeatureList {
+@@ -181,10 +173,7 @@ public abstract class ChromeFeatureList {
       */
      public static boolean getFieldTrialParamByFeatureAsBoolean(
              String featureName, String paramName, boolean defaultValue) {
 -        if (FeatureList.hasTestFeatures()) return defaultValue;
--        assert isInitialized();
+-        assert FeatureList.isInitialized();
 -        return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsBoolean(
 -                featureName, paramName, defaultValue);
 +        return defaultValue;

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

@@ -40,7 +40,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -269,7 +269,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -330,7 +330,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kMediaRouterFirstRunFlowAcknowledged,
        false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
@@ -52,9 +52,9 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
 diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
 --- a/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
-@@ -404,7 +404,7 @@ void ProfileImpl::RegisterProfilePrefs(
-   registry->RegisterStringPref(
-       prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string());
+@@ -410,7 +410,7 @@ void ProfileImpl::RegisterProfilePrefs(
+ #endif
+ 
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
 -  registry->RegisterBooleanPref(prefs::kEnableMediaRouter, true);
 +  registry->RegisterBooleanPref(prefs::kEnableMediaRouter, false);

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

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

@@ -7,17 +7,16 @@ bookmarks, never reach signin thresholds.
 ---
  chrome/android/chrome_java_resources.gni      |   1 -
  ...rsonalized_signin_promo_view_bookmarks.xml |  30 -----
- .../bookmarks/BookmarkItemsAdapter.java       |  23 +---
- .../bookmarks/BookmarkPromoHeader.java        | 111 +-----------------
- .../ReorderBookmarkItemsAdapter.java          |  17 +--
+ .../bookmarks/BookmarkItemsAdapter.java       |  25 +---
+ .../bookmarks/BookmarkPromoHeader.java        | 110 +-----------------
  .../browser/signin/SigninPromoController.java |  19 +--
- 6 files changed, 6 insertions(+), 195 deletions(-)
+ 5 files changed, 5 insertions(+), 180 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
-@@ -1206,7 +1206,6 @@ chrome_java_resources = [
+@@ -1050,7 +1050,6 @@ chrome_java_resources = [
    "java/res/layout/payment_request_spinny.xml",
    "java/res/layout/payments_request_editor_textview.xml",
    "java/res/layout/personalized_signin_promo_view_body.xml",
@@ -45,14 +44,14 @@ deleted file mode 100644
 -    android:gravity="center_horizontal"
 -    android:orientation="vertical"
 -    android:paddingBottom="12dp"
--    android:paddingTop="14dp">
+-    android:paddingTop="14dp"
+-    android:paddingStart="16dp"
+-    android:paddingEnd="16dp">
 -
 -    <FrameLayout
 -        android:layout_width="match_parent"
 -        android:layout_height="wrap_content"
--        android:layout_marginBottom="12dp"
--        android:layout_marginEnd="12dp"
--        android:layout_marginStart="12dp">
+-        android:layout_marginBottom="12dp">
 -
 -        <include layout="@layout/personalized_signin_promo_view_header"/>
 -    </FrameLayout>
@@ -64,15 +63,23 @@ 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
-@@ -60,7 +60,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
- 
+@@ -22,7 +22,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;
+-import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
+ import org.chromium.chrome.browser.sync.ProfileSyncService;
+ import org.chromium.components.bookmarks.BookmarkId;
+ import org.chromium.components.bookmarks.BookmarkType;
+@@ -62,7 +61,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+     // ViewType.PERSONALIZED_SIGNIN_PROMO, ViewType.SYNC_PROMO, or ViewType.INVALID_PROMO
+     private int mPromoHeaderType = ViewType.INVALID_PROMO;
      private BookmarkDelegate mDelegate;
-     private Context mContext;
 -    private BookmarkPromoHeader mPromoHeaderManager;
      private String mSearchText;
      private BookmarkId mCurrentFolder;
- 
-@@ -219,9 +218,9 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
+     private ProfileSyncService mProfileSyncService;
+@@ -187,9 +185,9 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
  
          switch (viewType) {
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
@@ -82,18 +89,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -                return mPromoHeaderManager.createSyncPromoHolder(parent);
 +                return null;
              case ViewType.FOLDER:
-                 BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from(
-                         parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false);
-@@ -242,8 +241,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
+                 return createViewHolderHelper(parent, R.layout.bookmark_folder_row);
+             case ViewType.BOOKMARK:
+@@ -203,8 +201,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+     @Override
      public void onBindViewHolder(ViewHolder holder, int position) {
-         switch (holder.getItemViewType()) {
-             case ViewType.PERSONALIZED_SIGNIN_PROMO:
--                PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
--                mPromoHeaderManager.setupPersonalizedSigninPromo(view);
-                 break;
-             case ViewType.SYNC_PROMO:
-                 break;
-@@ -262,7 +259,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
+         if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
+-            PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
+-            mPromoHeaderManager.setupPersonalizedSigninPromo(view);
+         } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
+             BookmarkRow row = ((BookmarkRow) holder.itemView);
+             BookmarkId id = getIdByPosition(position);
+@@ -231,7 +227,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
      public void onViewRecycled(ViewHolder holder) {
          switch (holder.getItemViewType()) {
              case ViewType.PERSONALIZED_SIGNIN_PROMO:
@@ -101,42 +108,43 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
                  break;
              default:
                  // Other view holders don't have special recycling code.
-@@ -298,7 +294,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
-             }
+@@ -257,7 +252,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+             updateHeader(!topLevelFoldersShowing());
          };
  
 -        mPromoHeaderManager = new BookmarkPromoHeader(mContext, promoHeaderChangeAction);
          populateTopLevelFoldersList();
-         notifyDataSetChanged();
-     }
-@@ -309,7 +304,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
-         mDelegate.removeUIObserver(this);
+ 
+         mElements = new ArrayList<>();
+@@ -273,7 +267,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
          mDelegate.getModel().removeObserver(mBookmarkModelObserver);
+         mDelegate.getSelectionDelegate().removeObserver(this);
          mDelegate = null;
 -        mPromoHeaderManager.destroy();
+         mProfileSyncService.removeSyncStateChangedListener(this);
      }
  
-     @Override
-@@ -389,19 +383,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
-         if (currentUIState == BookmarkUIState.STATE_SEARCHING) return;
- 
-         assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state";
--
--        switch (mPromoHeaderManager.getPromoState()) {
--            case BookmarkPromoHeader.PromoState.PROMO_NONE:
--                return;
--            case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
--                mPromoHeaderSection.add(ViewType.PERSONALIZED_SIGNIN_PROMO);
--                return;
--            case BookmarkPromoHeader.PromoState.PROMO_SYNC:
--                mPromoHeaderSection.add(ViewType.SYNC_PROMO);
--                return;
--            default:
--                assert false : "Unexpected value for promo state!";
--        }
-     }
+@@ -399,20 +392,6 @@ class BookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkItem>
+             return;
+         } else if (currentUIState == BookmarkUIState.STATE_SEARCHING) {
+             mPromoHeaderType = ViewType.INVALID_PROMO;
+-        } else {
+-            switch (mPromoHeaderManager.getPromoState()) {
+-                case BookmarkPromoHeader.PromoState.PROMO_NONE:
+-                    mPromoHeaderType = ViewType.INVALID_PROMO;
+-                    break;
+-                case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
+-                    mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO;
+-                    break;
+-                case BookmarkPromoHeader.PromoState.PROMO_SYNC:
+-                    mPromoHeaderType = ViewType.SYNC_PROMO;
+-                    break;
+-                default:
+-                    assert false : "Unexpected value for promo state!";
+-            }
+         }
  
-     private void populateTopLevelFoldersList() {
+         boolean willShowPromo = hasPromoHeader();
 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
@@ -211,7 +219,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      /**
-@@ -123,19 +107,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -123,18 +107,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return mPromoState;
      }
  
@@ -219,7 +227,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
 -     * @return Personalized signin promo header {@link ViewHolder} instance that can be used with
 -     *         {@link RecyclerView}.
 -     */
--    // TODO(crbug.com/160194): Clean up after bookmark reordering launches.
 -    ViewHolder createPersonalizedSigninPromoHolder(ViewGroup parent) {
 -        View view = LayoutInflater.from(mContext).inflate(
 -                R.layout.personalized_signin_promo_view_bookmarks, parent, false);
@@ -231,7 +238,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}.
-@@ -148,49 +119,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -146,49 +118,11 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
          return new ViewHolder(view) {};
      }
  
@@ -282,7 +289,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      private @PromoState int calculatePromoState() {
-@@ -198,48 +131,9 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -196,48 +130,9 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
              return sPromoStateForTests;
          }
  
@@ -331,7 +338,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      // ProfileDataCache.Observer implementation.
      @Override
      public void onProfileDataUpdated(String accountId) {
-@@ -253,7 +147,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+@@ -251,7 +146,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
      }
  
      private void triggerPromoUpdate() {
@@ -339,54 +346,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          mPromoHeaderChangeAction.run();
      }
  
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
-@@ -188,8 +188,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
-         assert mDelegate != null;
- 
-         switch (viewType) {
--            case ViewType.PERSONALIZED_SIGNIN_PROMO:
--                return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
-             case ViewType.SYNC_PROMO:
-                 return mPromoHeaderManager.createSyncPromoHolder(parent);
-             case ViewType.FOLDER:
-@@ -204,10 +202,7 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
- 
-     @Override
-     public void onBindViewHolder(ViewHolder holder, int position) {
--        if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
--            PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
--            mPromoHeaderManager.setupPersonalizedSigninPromo(view);
--        } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
-+        if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
-             BookmarkRow row = ((BookmarkRow) holder.itemView);
-             BookmarkId id = getIdByPosition(position);
-             row.setBookmarkId(id, getLocationFromPosition(position));
-@@ -231,13 +226,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
- 
-     @Override
-     public void onViewRecycled(ViewHolder holder) {
--        switch (holder.getItemViewType()) {
--            case ViewType.PERSONALIZED_SIGNIN_PROMO:
--                mPromoHeaderManager.detachPersonalizePromoView();
--                break;
--            default:
--                // Other view holders don't have special recycling code.
--        }
-     }
- 
-     /**
-@@ -408,9 +396,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
-                 case BookmarkPromoHeader.PromoState.PROMO_NONE:
-                     mPromoHeaderType = ViewType.INVALID_PROMO;
-                     break;
--                case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
--                    mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO;
--                    break;
-                 case BookmarkPromoHeader.PromoState.PROMO_SYNC:
-                     mPromoHeaderType = ViewType.SYNC_PROMO;
-                     break;
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java

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

@@ -12,7 +12,7 @@ Subject: Disable references to fonts.googleapis.com
 diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 --- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
 +++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
-@@ -294,7 +294,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
+@@ -303,7 +303,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
  }
  
  std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 203 - 212
build/patches/Disable-safe-browsing.patch


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

@@ -15,8 +15,8 @@ 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
-@@ -355,7 +355,7 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -380,7 +380,7 @@ const base::Feature kChromeSharingHubV15{"ChromeSharingHubV15",
+                                          base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
 -                                          base::FEATURE_ENABLED_BY_DEFAULT};
@@ -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
-@@ -800,7 +800,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
+@@ -815,7 +815,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{
+@@ -569,7 +569,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{
+@@ -579,7 +579,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
  // Origin-Signed HTTP Exchanges (for WebPackage Loading)
  // https://www.chromestatus.com/features/5745285984681984
  const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",

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

@@ -30,7 +30,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
--    <android.support.v7.preference.Preference
+-    <Preference
 -        android:key="sync_and_services_link_divider"
 -        android:layout="@layout/divider_preference"
 -        android:selectable="false"/>

+ 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
-@@ -59,7 +59,7 @@ void CookieSettings::GetCookieSettings(
+@@ -63,7 +63,7 @@ void CookieSettings::GetCookieSettings(
  void CookieSettings::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

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

@@ -3,16 +3,17 @@ Date: Thu, 27 Feb 2020 23:23:59 +0100
 Subject: Do not compile QR code sharing
 
 ---
- chrome/android/java/AndroidManifest.xml        | 16 ----------------
- .../browser/share/ShareDelegateImpl.java       |  5 -----
- .../browser/share/ShareSheetCoordinator.java   | 16 ----------------
- chrome/browser/share/android/java_sources.gni  | 18 ------------------
- 4 files changed, 55 deletions(-)
+ chrome/android/java/AndroidManifest.xml       | 16 ---------------
+ .../ChromeProvidedSharingOptionsProvider.java | 20 +------------------
+ .../browser/share/ShareDelegateImpl.java      |  5 -----
+ .../browser/share/ShareSheetCoordinator.java  |  5 +----
+ chrome/browser/share/android/java_sources.gni | 19 ------------------
+ 5 files changed, 2 insertions(+), 63 deletions(-)
 
 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
-@@ -825,22 +825,6 @@ by a child template that "extends" this file.
+@@ -749,22 +749,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -35,18 +36,60 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
  
          <activity
              android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProvider.java
+@@ -17,7 +17,6 @@ import org.chromium.chrome.R;
+ import org.chromium.chrome.browser.ActivityTabProvider;
+ import org.chromium.chrome.browser.printing.TabPrinter;
+ import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
+-import org.chromium.chrome.browser.share.qrcode.QrCodeCoordinator;
+ import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator;
+ import org.chromium.chrome.browser.tab.Tab;
+ import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
+@@ -141,23 +140,6 @@ class ChromeProvidedSharingOptionsProvider {
+                 /*isFirstParty=*/true);
+     }
+ 
+-    PropertyModel createQrCodePropertyModel() {
+-        return ShareSheetPropertyModelBuilder.createPropertyModel(
+-                AppCompatResources.getDrawable(mActivity, R.drawable.qr_code),
+-                mActivity.getResources().getString(R.string.qr_code_share_icon_label),
+-                (currentActivity)
+-                        -> {
+-                    RecordUserAction.record("SharingHubAndroid.QRCodeSelected");
+-                    RecordHistogram.recordMediumTimesHistogram(
+-                            "Sharing.SharingHubAndroid.TimeToShare",
+-                            System.currentTimeMillis() - mShareStartTime);
+-                    mBottomSheetController.hideContent(mBottomSheetContent, true);
+-                    QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity);
+-                    qrCodeCoordinator.show();
+-                },
+-                /*isFirstParty=*/true);
+-    }
+-
+     PropertyModel createPrintingPropertyModel() {
+         return ShareSheetPropertyModelBuilder.createPropertyModel(
+                 AppCompatResources.getDrawable(mActivity, R.drawable.sharing_print),
+@@ -177,4 +159,4 @@ class ChromeProvidedSharingOptionsProvider {
+                 },
+                 /*isFirstParty=*/true);
+     }
+-}
+\ No newline at end of file
++}
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
-@@ -20,7 +20,6 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
+@@ -21,7 +21,6 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
+ import org.chromium.chrome.browser.preferences.PrefServiceBridge;
  import org.chromium.chrome.browser.printing.PrintShareActivity;
  import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
 -import org.chromium.chrome.browser.share.qrcode.QrCodeShareActivity;
  import org.chromium.chrome.browser.tab.SadTab;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tab.TabImpl;
-@@ -102,10 +101,6 @@ public class ShareDelegateImpl implements ShareDelegate {
+@@ -103,10 +102,6 @@ public class ShareDelegateImpl implements ShareDelegate {
              classesToEnable.add(SendTabToSelfShareActivity.class);
          }
  
@@ -60,43 +103,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDele
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareSheetCoordinator.java
-@@ -18,7 +18,6 @@ import org.chromium.chrome.R;
- import org.chromium.chrome.browser.ActivityTabProvider;
- import org.chromium.chrome.browser.flags.ChromeFeatureList;
- import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
--import org.chromium.chrome.browser.share.qrcode.QrCodeCoordinator;
- import org.chromium.chrome.browser.share.screenshot.ScreenshotCoordinator;
- import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
-@@ -161,21 +160,6 @@ public class ShareSheetCoordinator {
-                                 /*isFirstParty=*/true);
-         models.add(sttsPropertyModel);
+@@ -81,9 +81,6 @@ class ShareSheetCoordinator {
+         }
+         models.add(chromeProvidedSharingOptionsProvider.createCopyLinkPropertyModel());
+         models.add(chromeProvidedSharingOptionsProvider.createSendTabToSelfPropertyModel());
+-        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)) {
+-            models.add(chromeProvidedSharingOptionsProvider.createQrCodePropertyModel());
+-        }
+         if (mPrefServiceBridge.getBoolean(Pref.PRINTING_ENABLED)) {
+             models.add(chromeProvidedSharingOptionsProvider.createPrintingPropertyModel());
+         }
+@@ -111,4 +108,4 @@ class ShareSheetCoordinator {
  
--        // QR Codes
--        PropertyModel qrcodePropertyModel = mPropertyModelBuilder.createPropertyModel(
--                AppCompatResources.getDrawable(activity, R.drawable.qr_code),
--                activity.getResources().getString(R.string.qr_code_share_icon_label),
--                (currentActivity)
--                        -> {
--                    RecordUserAction.record("SharingHubAndroid.QRCodeSelected");
--                    recordTimeToShare();
--                    mBottomSheetController.hideContent(bottomSheet, true);
--                    QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(activity);
--                    qrCodeCoordinator.show();
--                },
--                /*isFirstParty=*/true);
--        models.add(qrcodePropertyModel);
--
          return models;
      }
- 
+-}
+\ No newline at end of file
++}
 diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/share/android/java_sources.gni
 --- a/chrome/browser/share/android/java_sources.gni
 +++ b/chrome/browser/share/android/java_sources.gni
-@@ -8,23 +8,5 @@ share_java_sources = [
+@@ -8,24 +8,5 @@ share_java_sources = [
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/SaveImageNotificationManager.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ShareImageFileUtils.java",
    "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/clipboard/ClipboardImageFileProvider.java",
+-  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QRCodeGenerationRequest.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeCoordinator.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialog.java",
 -  "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialogTab.java",

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

@@ -63,7 +63,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
 diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
 --- a/chrome/common/chrome_features.cc
 +++ b/chrome/common/chrome_features.cc
-@@ -292,7 +292,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsDisabledProvidersParam{
+@@ -308,7 +308,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsDisabledProvidersParam{
  #if defined(OS_ANDROID)
  // Enable changing default downloads storage location on Android.
  const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",

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

@@ -9,10 +9,10 @@ do not skip the prompt in such cases.
  .../DownloadLocationDialogBridge.java         | 72 ++++++-------------
  1 file changed, 21 insertions(+), 51 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
-@@ -31,9 +31,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
+--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
++++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
+@@ -33,9 +33,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
      private PropertyModel mDialogModel;
      private DownloadLocationCustomView mCustomView;
      private ModalDialogManager mModalDialogManager;
@@ -22,9 +22,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
      private Context mContext;
  
      private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
-@@ -66,12 +63,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+@@ -68,12 +65,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
  
-         mModalDialogManager = activity.getModalDialogManager();
+         mModalDialogManager = ((ModalDialogManagerHolder) activity).getModalDialogManager();
          mContext = activity;
 -        mTotalBytes = totalBytes;
 -        mDialogType = dialogType;
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
      }
  
      @Override
-@@ -104,49 +117,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
+@@ -106,49 +119,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
          mCustomView = null;
      }
  
@@ -71,7 +71,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
 -        if (dirs.size() == 1 && mDialogType == DownloadLocationDialogType.DEFAULT) {
 -            final DirectoryOption dir = dirs.get(0);
 -            if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) {
--                assert(!TextUtils.isEmpty(dir.location));
+-                assert (!TextUtils.isEmpty(dir.location));
 -                setDownloadAndSaveFileDefaultDirectory(dir.location);
 -                DownloadLocationDialogBridgeJni.get().onComplete(
 -                        mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,

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

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

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

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

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

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

+ 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, enter assumed-overlap mode in compositing overlap testing
- // anytime a fixed or sticky position element is encountered.
+ // When enabled, use the maximum possible bounds in compositing overlap testing
+ // for fixed position elements.
 -- 
 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
-@@ -678,6 +678,10 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
+@@ -682,6 +682,10 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
    if (status != CONTENT_SETTING_DEFAULT)
      return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
    PermissionContextBase* context = GetPermissionContext(permission);

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

@@ -5,15 +5,15 @@ Subject: Increase number of autocomplete matches from 5 to 10
 Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment-526874703
 ---
  components/omnibox/browser/autocomplete_result.cc | 3 ++-
- components/omnibox/browser/omnibox_field_trial.cc | 7 +++----
- 2 files changed, 5 insertions(+), 5 deletions(-)
+ components/omnibox/browser/omnibox_field_trial.cc | 6 +++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
 
 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
-@@ -75,7 +75,8 @@ struct MatchGURLHash {
+@@ -76,7 +76,8 @@ struct MatchGURLHash {
  // static
- size_t AutocompleteResult::GetMaxMatches() {
+ size_t AutocompleteResult::GetMaxMatches(bool input_from_omnibox_focus) {
  #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,19 +24,21 @@ 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
-@@ -343,9 +343,8 @@ void OmniboxFieldTrial::GetDemotionsByType(
+@@ -361,11 +361,11 @@ void OmniboxFieldTrial::GetDemotionsByType(
  
  size_t OmniboxFieldTrial::GetProviderMaxMatches(
      AutocompleteProvider::Type provider) {
 -  size_t default_max_matches_per_provider = 3;
--
--  std::string param_value = base::GetFieldTrialParamValueByFeature(
 +  size_t default_max_matches_per_provider = 5; // was 3; this needs to be half the value of kDefaultMaxAutocompleteMatches from components/omnibox/browser/autocomplete_result.cc
-+/*  std::string param_value = base::GetFieldTrialParamValueByFeature(
-       omnibox::kUIExperimentMaxAutocompleteMatches,
-       OmniboxFieldTrial::kUIMaxAutocompleteMatchesByProviderParam);
  
-@@ -369,7 +368,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches(
+   // If new search features are disabled, ignore the parameter and use the
+   // default value.
+-  if (!base::FeatureList::IsEnabled(omnibox::kNewSearchFeatures))
++  /*if (!base::FeatureList::IsEnabled(omnibox::kNewSearchFeatures))
+     return default_max_matches_per_provider;
+ 
+   std::string param_value = base::GetFieldTrialParamValueByFeature(
+@@ -392,7 +392,7 @@ size_t OmniboxFieldTrial::GetProviderMaxMatches(
        else if (k == provider)
          return v;
      }

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

@@ -33,7 +33,7 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -266,6 +266,7 @@
+@@ -263,6 +263,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"
-@@ -330,6 +331,8 @@
+@@ -327,6 +328,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();
-@@ -6708,6 +6711,61 @@ void SetOriginTrialFreezePolicy(
+@@ -6794,6 +6797,61 @@ void SetOriginTrialFreezePolicy(
  
  }  // namespace
  
@@ -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);
-@@ -6760,6 +6818,10 @@ void Document::FinishedParsing() {
+@@ -6846,6 +6904,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
-@@ -1819,6 +1819,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -1722,6 +1722,9 @@ class CORE_EXPORT Document : public ContainerNode,
    void AddAXContext(AXContext*);
    void RemoveAXContext(AXContext*);
  

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

@@ -22,7 +22,7 @@ Subject: Modify default preferences
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
-@@ -310,7 +310,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -339,7 +339,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
  #endif
@@ -34,7 +34,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1178,7 +1178,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1259,7 +1259,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -70,7 +70,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
 diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
 --- a/chrome/browser/profiles/profile.cc
 +++ b/chrome/browser/profiles/profile.cc
-@@ -184,7 +184,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -247,7 +247,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -82,7 +82,7 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
 diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 --- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
 +++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
-@@ -51,7 +51,7 @@
+@@ -34,7 +34,7 @@
          </cr-button>
        </div>
        <div slot="footer">
@@ -149,7 +149,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
 diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
 --- a/components/autofill/core/browser/autofill_manager.cc
 +++ b/components/autofill/core/browser/autofill_manager.cc
-@@ -882,10 +882,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -924,10 +924,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -161,7 +161,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
      }
    }
  
-@@ -1523,8 +1520,8 @@ void AutofillManager::Reset() {
+@@ -1569,8 +1566,8 @@ void AutofillManager::Reset() {
  #if defined(OS_ANDROID) || defined(OS_IOS)
    autofill_assistant_.Reset();
  #endif
@@ -175,7 +175,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
 diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
 --- a/components/autofill/core/common/autofill_prefs.cc
 +++ b/components/autofill/core/common/autofill_prefs.cc
-@@ -147,7 +147,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -150,7 +150,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(
@@ -205,7 +205,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
 diff --git a/components/safe_browsing/core/common/safe_browsing_prefs.cc b/components/safe_browsing/core/common/safe_browsing_prefs.cc
 --- a/components/safe_browsing/core/common/safe_browsing_prefs.cc
 +++ b/components/safe_browsing/core/common/safe_browsing_prefs.cc
-@@ -198,9 +198,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -199,9 +199,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(

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

@@ -56,7 +56,7 @@ Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2233,6 +2233,7 @@ jumbo_static_library("browser") {
+@@ -2214,6 +2214,7 @@ static_library("browser") {
      "//services/data_decoder/public/cpp",
      "//services/device/public/cpp:device_features",
      "//services/device/public/cpp/usb",
@@ -67,7 +67,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -156,6 +156,7 @@
+@@ -164,6 +164,7 @@
  #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
  #include "third_party/blink/public/common/features.h"
  #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
@@ -75,7 +75,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #include "third_party/leveldatabase/leveldb_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/accessibility/accessibility_switches.h"
-@@ -1807,12 +1808,24 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2014,12 +2015,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
-@@ -209,6 +209,7 @@ jumbo_source_set("browser") {
+@@ -211,6 +211,7 @@ jumbo_source_set("browser") {
      "//third_party/libyuv",
      "//third_party/re2",
      "//third_party/sqlite",
@@ -114,15 +114,15 @@ 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
-@@ -225,6 +225,7 @@
- #include "third_party/blink/public/common/page/launching_process_state.h"
+@@ -226,6 +226,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"
 +#include "third_party/ungoogled/ungoogled_switches.h"
  #include "third_party/skia/include/core/SkBitmap.h"
  #include "ui/accessibility/accessibility_switches.h"
  #include "ui/base/ui_base_switches.h"
-@@ -3221,6 +3222,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
+@@ -3258,6 +3259,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
      switches::kDisablePreferCompositingToLCDText,
      switches::kDisableDatabases,
      switches::kDisableFileSystem,
@@ -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
-@@ -25,6 +25,7 @@
+@@ -26,6 +26,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/platform/web_runtime_features.h"
  #include "ui/accessibility/accessibility_features.h"
  #include "ui/base/ui_base_features.h"
-@@ -526,6 +527,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
+@@ -521,6 +522,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
-@@ -220,6 +220,9 @@ class WebRuntimeFeatures {
+@@ -217,6 +217,9 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool);
    BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
    BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
@@ -192,7 +192,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "base/time/time.h"
  #include "cc/input/overscroll_behavior.h"
  #include "cc/input/scroll_snap_data.h"
-@@ -2631,6 +2632,23 @@ void Document::UpdateStyleAndLayoutTree() {
+@@ -2623,6 +2624,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
-@@ -533,6 +533,10 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -476,6 +476,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;
-@@ -2104,6 +2108,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -2001,6 +2005,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
-@@ -1985,6 +1985,11 @@ DOMRectList* Element::getClientRects() {
+@@ -2022,6 +2022,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);
  }
  
-@@ -2002,6 +2007,9 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -2039,6 +2044,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
-@@ -1498,7 +1498,9 @@ jumbo_component("platform") {
+@@ -1547,7 +1547,9 @@ jumbo_component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -368,7 +368,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
  
    public_deps = [
      ":blink_platform_public_deps",
-@@ -1539,6 +1541,7 @@ jumbo_component("platform") {
+@@ -1588,6 +1590,7 @@ jumbo_component("platform") {
      "//third_party/blink/public/strings",
      "//third_party/blink/renderer/platform/wtf",
      "//third_party/ced",
@@ -379,8 +379,8 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -671,4 +671,16 @@ void WebRuntimeFeatures::EnableInstalledApp(bool enable) {
-   RuntimeEnabledFeatures::SetInstalledAppEnabled(enable);
+@@ -675,4 +675,16 @@ void WebRuntimeFeatures::EnableVideoWakeLockOptimisationHiddenMuted(
+       enable);
  }
  
 +void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
@@ -408,7 +408,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b
  #include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
  #include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
  #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
-@@ -130,6 +132,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
+@@ -137,6 +139,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
                                            const SkPixmap& pixmap) const {
    DCHECK(is_valid_);
  
@@ -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
-@@ -731,6 +731,15 @@
+@@ -760,6 +760,15 @@
        origin_trial_feature_name: "FeaturePolicyReporting",
        status: "experimental"
      },

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

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

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

@@ -10,14 +10,14 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component
 --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
 @@ -429,6 +429,7 @@ public class ExternalNavigationHandler {
-                         Uri.parse(WebView.SCHEME_TEL
-                                 + params.getUrl().substring(WTAI_MC_URL_PREFIX.length()))),
-                 false);
+             startActivity(intent, false, mDelegate);
+             return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT;
+         }
 +
-         if (DEBUG) Log.i(TAG, "wtai:// link handled");
-         RecordUserAction.record("Android.PhoneIntent");
-         return true;
-@@ -792,6 +793,13 @@ public class ExternalNavigationHandler {
+     }
+ 
+     private static void loadUrlWithReferrer(
+@@ -966,6 +967,13 @@ public class ExternalNavigationHandler {
              return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
          }
  

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

@@ -27,15 +27,15 @@ 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
-@@ -402,7 +402,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -420,7 +420,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 |
 -                           LOAD_BYPASS_PROXY);
 +                           LOAD_MINIMAL_HEADERS | LOAD_BYPASS_PROXY);
      request_->set_allow_credentials(false);
+     request_->set_isolation_info(isolation_info);
    }
- 
 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
 --- a/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
@@ -62,7 +62,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -490,10 +494,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -488,10 +492,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
          }
        }
  
-@@ -511,7 +517,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -509,7 +515,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

+ 28 - 30
build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch

@@ -15,7 +15,7 @@ Subject: Remove dependency on auth, signin, dynamic and tasks
  .../gcore/ChromeGoogleApiClientImpl.java      | 25 +-----
  .../browser/gcore/GoogleApiClientHelper.java  | 82 +------------------
  .../browser/omaha/UpdateStatusProvider.java   | 10 +--
- .../PasswordManagerLauncher.java              | 20 +----
+ .../PasswordManagerLauncher.java              | 18 +---
  chrome/test/android/BUILD.gn                  |  2 -
  components/background_task_scheduler/BUILD.gn |  4 -
  .../internal/BUILD.gn                         |  6 --
@@ -31,12 +31,12 @@ Subject: Remove dependency on auth, signin, dynamic and tasks
  third_party/android_deps/BUILD.gn             | 41 ----------
  third_party/cacheinvalidation/BUILD.gn        |  1 -
  third_party/robolectric/BUILD.gn              |  2 -
- 28 files changed, 16 insertions(+), 278 deletions(-)
+ 28 files changed, 16 insertions(+), 276 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -262,9 +262,6 @@ android_library("chrome_java") {
+@@ -275,9 +275,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -45,8 +45,8 @@ 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",
-     "//chrome/android/features/cablev2_authenticator:public_java",
-@@ -694,8 +691,6 @@ junit_binary("chrome_junit_tests") {
+     "//chrome/android/features/keyboard_accessory:public_java",
+@@ -704,8 +701,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_app_java_resources",
      ":chrome_java",
      ":partner_location_descriptor_proto_java",
@@ -55,16 +55,16 @@ 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",
-@@ -806,9 +801,6 @@ android_library("chrome_test_java") {
-     ":chrome_app_java_resources",
+@@ -818,9 +813,6 @@ android_library("chrome_test_java") {
      ":chrome_test_util_java",
+     ":native_java_unittests_java",
      ":partner_location_descriptor_proto_java",
 -    "$google_play_services_package:google_play_services_base_java",
 -    "$google_play_services_package:google_play_services_basement_java",
 -    "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:base_java_test_support",
-     "//base/test:test_support_java",
+     "//base:jni_java",
 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
@@ -104,7 +104,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
-@@ -842,15 +842,6 @@ by a child template that "extends" this file.
+@@ -766,15 +766,6 @@ by a child template that "extends" this file.
              </intent-filter>
            </activity>
  
@@ -123,7 +123,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
-@@ -11,9 +11,6 @@ import android.view.View;
+@@ -10,9 +10,6 @@ import android.content.pm.PackageManager;
  import androidx.annotation.Nullable;
  import androidx.annotation.VisibleForTesting;
  
@@ -133,7 +133,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
  import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.annotations.CalledByNative;
-@@ -326,16 +323,7 @@ public abstract class AppHooks {
+@@ -324,16 +321,7 @@ public abstract class AppHooks {
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       */
      public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
@@ -172,10 +172,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionIn
          final long installedGmsVersion = getPlayServicesApkVersionNumber(context);
  
          final String accessType;
-@@ -112,12 +110,6 @@ public class ChromeVersionInfo {
-     }
- 
-     private static long getPlayServicesApkVersionNumber(Context context) {
+@@ -118,12 +116,6 @@ public class ChromeVersionInfo {
+      *         package is not found.
+      */
+     public static int getPlayServicesApkVersionNumber(Context context) {
 -        try {
 -            return context.getPackageManager()
 -                    .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
@@ -527,16 +527,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
-@@ -7,8 +7,6 @@ package org.chromium.chrome.browser.password_manager;
+@@ -6,8 +6,6 @@ package org.chromium.chrome.browser.password_manager;
+ 
  import android.app.Activity;
- import android.os.Build;
  
 -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;
-@@ -88,22 +86,6 @@ public class PasswordManagerLauncher {
+@@ -89,20 +87,6 @@ public class PasswordManagerLauncher {
      }
  
      private static boolean tryShowingTheGooglePasswordManager(Activity activity) {
@@ -544,8 +544,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
 -                AppHooks.get().createGooglePasswordManagerUIProvider();
 -        if (googlePasswordManagerUIProvider == null) return false;
 -
--        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return false;
--
 -        int minGooglePlayServicesVersion = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
 -                GOOGLE_ACCOUNT_PWM_UI, MIN_GOOGLE_PLAY_SERVICES_VERSION_PARAM,
 -                DEFAULT_MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
@@ -563,7 +561,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
-@@ -200,8 +200,6 @@ android_library("chrome_java_test_support") {
+@@ -197,8 +197,6 @@ android_library("chrome_java_test_support") {
      "javatests/src/org/chromium/chrome/test/util/browser/webapps/WebappTestPage.java",
    ]
    deps = [
@@ -575,7 +573,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
-@@ -116,10 +116,6 @@ if (is_android) {
+@@ -118,10 +118,6 @@ if (is_android) {
      ]
  
      deps = [
@@ -657,7 +655,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2422,9 +2422,6 @@ if (is_android) {
+@@ -2428,9 +2428,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -670,7 +668,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -385,8 +385,6 @@ if (is_android) {
+@@ -384,8 +384,6 @@ if (is_android) {
    junit_binary("device_junit_tests") {
      sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      deps = [
@@ -695,7 +693,7 @@ diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_jav
 diff --git a/services/BUILD.gn b/services/BUILD.gn
 --- a/services/BUILD.gn
 +++ b/services/BUILD.gn
-@@ -102,8 +102,6 @@ if (is_android) {
+@@ -103,8 +103,6 @@ if (is_android) {
        "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
      ]
      deps = [
@@ -704,7 +702,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn
        "//base:base_java",
        "//base:base_java_test_support",
        "//base:base_junit_test_support",
-@@ -131,8 +129,6 @@ if (is_android) {
+@@ -132,8 +130,6 @@ if (is_android) {
        "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
      ]
      deps = [
@@ -716,7 +714,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn
 diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
 --- a/services/device/geolocation/BUILD.gn
 +++ b/services/device/geolocation/BUILD.gn
-@@ -149,8 +149,6 @@ if (is_android) {
+@@ -156,8 +156,6 @@ if (is_android) {
  
      deps = [
        ":geolocation_jni_headers",
@@ -740,7 +738,7 @@ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1133,37 +1133,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -971,37 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    skip_jetify = true
  }
  
@@ -778,7 +776,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"
-@@ -1182,16 +1151,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1020,16 +989,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  
@@ -817,7 +815,7 @@ diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
 -    "$google_play_services_package:google_play_services_basement_java",
      "//third_party/android_deps:android_support_v4_java",
      "//third_party/android_deps:com_android_support_support_annotations_java",
-     "//third_party/android_deps:com_google_code_gson_gson_java",
+     "//third_party/android_deps:com_android_support_support_fragment_java",
 -- 
 2.17.1
 

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

@@ -15,7 +15,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
-@@ -262,7 +262,6 @@ android_library("chrome_java") {
+@@ -275,7 +275,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -94,7 +94,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
-@@ -2422,7 +2422,6 @@ if (is_android) {
+@@ -2428,7 +2428,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -105,7 +105,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
-@@ -1133,53 +1133,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -971,53 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    skip_jetify = true
  }
  

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

@@ -3,33 +3,36 @@ Date: Sat, 2 Nov 2019 08:00:04 +0100
 Subject: Remove dependency on com.google.android.gms.cast
 
 ---
- chrome/android/BUILD.gn                       |   6 -
+ chrome/android/BUILD.gn                       |   7 --
  chrome/android/features/media_router/BUILD.gn |   2 -
  .../browser/media/router/CastSessionUtil.java |  35 ------
- .../browser/media/router/MediaSink.java       |  44 +------
- .../media/router/MediaStatusBridge.java       |  40 ++----
- .../caf/BaseNotificationController.java       |  46 -------
- .../router/caf/BaseSessionController.java     | 118 +-----------------
- .../router/caf/CafBaseMediaRouteProvider.java | 103 +--------------
+ .../browser/media/router/MediaSink.java       |  44 +-------
+ .../media/router/MediaStatusBridge.java       |  40 ++-----
+ .../caf/BaseNotificationController.java       |  46 --------
+ .../router/caf/BaseSessionController.java     | 100 +----------------
+ .../router/caf/CafBaseMediaRouteProvider.java | 103 +-----------------
  .../router/caf/CafMediaRouteProvider.java     |  16 ---
- .../media/router/caf/CafMessageHandler.java   |  97 +-------------
+ .../media/router/caf/CafMessageHandler.java   |  97 +----------------
  .../media/router/caf/CastMediaSource.java     |  10 +-
  .../media/router/caf/CastOptionsProvider.java |  22 +---
- .../router/caf/CastSessionController.java     |  84 -------------
+ .../router/caf/CastSessionController.java     |  84 --------------
  .../browser/media/router/caf/CastUtils.java   |   6 -
- .../CafExpandedControllerActivity.java        |  24 +---
- .../remoting/FlingingControllerAdapter.java   |  67 ----------
+ .../CafExpandedControllerActivity.java        |  33 +-----
+ .../CafRemotingMediaRouteProvider.java        |   2 +-
+ .../remoting/FlingingControllerAdapter.java   |  74 -------------
  .../caf/remoting/RemotingMediaSource.java     |   8 +-
- .../remoting/RemotingSessionController.java   |  21 ----
+ .../remoting/RemotingSessionController.java   |  26 -----
  chrome/android/java/AndroidManifest.xml       |  28 -----
+ .../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 ------
- 21 files changed, 27 insertions(+), 790 deletions(-)
+ third_party/android_deps/BUILD.gn             |  39 -------
+ 24 files changed, 29 insertions(+), 811 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -264,8 +264,6 @@ android_library("chrome_java") {
+@@ -277,14 +277,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",
@@ -38,7 +41,13 @@ 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",
-@@ -698,8 +696,6 @@ junit_binary("chrome_junit_tests") {
+     "//chrome/android/features/keyboard_accessory:public_java",
+     "//chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library:piet_resources",
+-    "//chrome/android/modules/cablev2_authenticator/public:java",
+     "//chrome/android/modules/image_editor/provider:java",
+     "//chrome/android/modules/image_editor/public:java",
+     "//chrome/android/modules/stack_unwinder/provider:java",
+@@ -709,8 +706,6 @@ junit_binary("chrome_junit_tests") {
      ":partner_location_descriptor_proto_java",
      "$google_play_services_package:google_play_services_base_java",
      "$google_play_services_package:google_play_services_basement_java",
@@ -47,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",
-@@ -812,8 +808,6 @@ android_library("chrome_test_java") {
+@@ -825,8 +820,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",
@@ -437,31 +446,24 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/BaseSessionController.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/BaseSessionController.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/BaseSessionController.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/BaseSessionController.java
-@@ -6,18 +6,11 @@ package org.chromium.chrome.browser.media.router.caf;
+@@ -6,12 +6,7 @@ package org.chromium.chrome.browser.media.router.caf;
  
  import androidx.annotation.Nullable;
  
 -import com.google.android.gms.cast.CastDevice;
 -import com.google.android.gms.cast.framework.CastSession;
 -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
--import com.google.android.gms.common.api.PendingResult;
--import com.google.android.gms.common.api.Status;
 -
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- 
  import org.chromium.base.Log;
 -import org.chromium.chrome.browser.media.router.CastSessionUtil;
  import org.chromium.chrome.browser.media.router.FlingingController;
  import org.chromium.chrome.browser.media.router.MediaSink;
  import org.chromium.chrome.browser.media.router.MediaSource;
-@@ -50,17 +43,14 @@ public abstract class BaseSessionController {
+@@ -42,15 +37,12 @@ public abstract class BaseSessionController {
+         void onMetadataUpdated();
      }
  
-     private final Random mRequestIdGenerator = new Random();
 -    private CastSession mCastSession;
-     private int mLatestMediaSessionId;
      private final CafBaseMediaRouteProvider mProvider;
      private CreateRouteRequestInfo mRouteCreationInfo;
 -    private final RemoteMediaClient.Callback mRemoteMediaClientCallback;
@@ -470,12 +472,10 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      public BaseSessionController(CafBaseMediaRouteProvider provider) {
          mProvider = provider;
 -        mRemoteMediaClientCallback = new RemoteMediaClientCallback();
--    }
-+            }
+     }
  
      public void addCallback(Callback callback) {
-         mCallbacks.add(callback);
-@@ -72,9 +62,6 @@ public abstract class BaseSessionController {
+@@ -63,9 +55,6 @@ public abstract class BaseSessionController {
  
      public void requestSessionLaunch() {
          mRouteCreationInfo = mProvider.getPendingCreateRouteRequestInfo();
@@ -485,7 +485,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
          // When the user clicks a route on the MediaRouteChooserDialog, we intercept the click event
          // and do not select the route. Instead the route selection is postponed to here. This will
          // trigger CAF to launch the session.
-@@ -93,60 +80,18 @@ public abstract class BaseSessionController {
+@@ -84,69 +73,22 @@ public abstract class BaseSessionController {
          return mRouteCreationInfo;
      }
  
@@ -525,30 +525,9 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
  
      public boolean isConnected() {
 -        return mCastSession != null && mCastSession.isConnected();
--    }
--
--    /**
--     * Safely seek to a position. This is an workaround for an IllegalStateException in
--     * RemoteMediaClient when a seek command times out. The code should be replaced by a normal
--     * seek() call when the Google Play services SDK gets updated.
--     */
--    public PendingResult<Status> safelySeek(long position) {
--        JSONObject json = new JSONObject();
--        try {
--            json.put("requestId", mRequestIdGenerator.nextInt(10000));
--            json.put("mediaSessionId", mLatestMediaSessionId);
--            json.put("type", "SEEK");
--            json.put("currentTime", position / 1000.0);
--        } catch (JSONException e) {
--            // Ignore.
--        }
--        return getSession().sendMessage(CastSessionUtil.MEDIA_NAMESPACE, json.toString());
 +        return false;
      }
  
-     private void updateMediaSessionId(String message) {
-@@ -171,29 +116,6 @@ public abstract class BaseSessionController {
- 
      private void updateRemoteMediaClient(String message) {
          if (!isConnected()) return;
 -
@@ -577,7 +556,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      }
  
      /** Called when session started. */
-@@ -210,40 +132,6 @@ public abstract class BaseSessionController {
+@@ -163,50 +105,12 @@ public abstract class BaseSessionController {
          return mProvider;
      }
  
@@ -590,7 +569,6 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -                "Received message from Cast device: namespace=\"" + namespace + "\" message=\""
 -                        + message + "\"");
 -        if (CastSessionUtil.MEDIA_NAMESPACE.equals(namespace)) {
--            updateMediaSessionId(message);
 -            updateRemoteMediaClient(message);
 -        }
 -    }
@@ -615,10 +593,13 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -        notifyCallback((Callback callback) -> callback.onMetadataUpdated());
 -    }
 -
-     @Nullable
-     public FlingingController getFlingingController() {
-         return null;
-@@ -254,7 +142,7 @@ public abstract class BaseSessionController {
+-    @Nullable
+-    public FlingingController getFlingingController() {
+-        return null;
+-    }
+-
+     /**
+      *  Helper message to get the session ID of the attached session. For stubbing in tests as
       * {@link CastSession#getSessionId()} is final.
       */
      public String getSessionId() {
@@ -1167,7 +1148,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafExpandedControllerActivity.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafExpandedControllerActivity.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafExpandedControllerActivity.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafExpandedControllerActivity.java
-@@ -45,15 +45,11 @@ public class CafExpandedControllerActivity
+@@ -45,53 +45,36 @@ public class CafExpandedControllerActivity
          @Override
          public void play() {
              if (!mSessionController.isConnected()) return;
@@ -1183,20 +1164,32 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
          }
  
          @Override
-@@ -71,27 +67,19 @@ public class CafExpandedControllerActivity
+         public long getDuration() {
+-            if (!mSessionController.isConnected()) return 0;
+-            return mSessionController.getFlingingController().getDuration();
++           return 0;
+         }
+ 
+         @Override
+         public long getPosition() {
+-            if (!mSessionController.isConnected()) return 0;
+-            return mSessionController.getFlingingController().getApproximateCurrentTime();
++           return 0;
+         }
+ 
          @Override
          public void seekTo(long pos) {
-             if (!mSessionController.isConnected()) return;
+-            if (!mSessionController.isConnected()) return;
 -
--            mSessionController.safelySeek(pos);
+-            mSessionController.getSession().getRemoteMediaClient().seek(pos);
          }
  
          @Override
          public boolean isPlaying() {
-             if (!mSessionController.isConnected()) return false;
- 
+-            if (!mSessionController.isConnected()) return false;
+-
 -            return mSessionController.getSession().getRemoteMediaClient().isPlaying();
-+            return false;
++           return false;
          }
  
          @Override
@@ -1212,7 +1205,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
              return flags;
          }
      };
-@@ -180,20 +168,10 @@ public class CafExpandedControllerActivity
+@@ -180,20 +163,10 @@ public class CafExpandedControllerActivity
      private void updateUi() {
          if (!mSessionController.isConnected()) return;
  
@@ -1233,6 +1226,17 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      }
  
      private void scheduleProgressUpdateTask() {
+diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafRemotingMediaRouteProvider.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafRemotingMediaRouteProvider.java
+--- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafRemotingMediaRouteProvider.java
++++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/CafRemotingMediaRouteProvider.java
+@@ -65,6 +65,6 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider {
+ 
+         if (!mRoutes.containsKey(routeId)) return null;
+ 
+-        return sessionController().getFlingingController();
++        return null;
+     }
+ }
 diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/FlingingControllerAdapter.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/FlingingControllerAdapter.java
 --- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/FlingingControllerAdapter.java
 +++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/caf/remoting/FlingingControllerAdapter.java
@@ -1263,7 +1267,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      }
  
      ////////////////////////////////////////////
-@@ -91,30 +78,21 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
+@@ -91,89 +78,28 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
              load(/* position= */ 0);
              return;
          }
@@ -1294,12 +1298,16 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      }
  
      @Override
-@@ -125,54 +103,9 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
-             load(position);
-             return;
-         }
+     public void seek(long position) {
+-        if (!mSessionController.isConnected()) return;
+-
+-        if (!mLoaded) {
+-            load(position);
+-            return;
+-        }
 -
--        mSessionController.safelySeek(position).setResultCallback(this::onMediaCommandResult);
+-        mSessionController.getRemoteMediaClient().seek(position).setResultCallback(
+-                this::onMediaCommandResult);
 -        mStreamPositionExtrapolator.onSeek(position);
      }
  
@@ -1413,7 +1421,7 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
      @Override
      public void onSessionStarted() {
          super.onSessionStarted();
-@@ -53,12 +38,6 @@ public class RemotingSessionController extends BaseSessionController {
+@@ -53,17 +38,6 @@ public class RemotingSessionController extends BaseSessionController {
          mFlingingControllerAdapter = new FlingingControllerAdapter(this, source.getMediaUrl());
      }
  
@@ -1422,10 +1430,15 @@ diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/b
 -        mFlingingControllerAdapter.onStatusUpdated();
 -        super.onStatusUpdated();
 -    }
+-
+-    @Override
+-    public FlingingControllerAdapter getFlingingController() {
+-        return mFlingingControllerAdapter;
+-    }
 -
      @Override
-     public FlingingControllerAdapter getFlingingController() {
-         return mFlingingControllerAdapter;
+     public BaseNotificationController getNotificationController() {
+         return mNotificationController;
 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
@@ -1442,7 +1455,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".
  
-@@ -768,16 +762,6 @@ by a child template that "extends" this file.
+@@ -692,16 +686,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -1459,7 +1472,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- This activity is used to restart the main Chrome process.  Should never be exported. -->
          <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
              android:launchMode="singleInstance"
-@@ -1205,18 +1189,6 @@ android:value="true" />
+@@ -1130,18 +1114,6 @@ by a child template that "extends" this file.
          {% endif %}
  
          {% block extra_application_definitions %}
@@ -1478,6 +1491,57 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          {% endblock %}
          {% block extra_application_definitions_for_test %}
          {% endblock %}
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
+@@ -36,7 +36,6 @@ import org.chromium.chrome.browser.profiles.Profile;
+ 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.components.browser_ui.settings.ChromeBaseCheckBoxPreference;
+ import org.chromium.components.browser_ui.settings.ChromeBasePreference;
+ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
+@@ -495,19 +494,6 @@ public class PasswordSettings
+     }
+ 
+     private void displaySecurityKeyLink() {
+-        if (mSecurityKey == null) {
+-            mSecurityKey = new ChromeBasePreference(getStyledContext());
+-            mSecurityKey.setKey(PREF_KEY_SECURITY_KEY_LINK);
+-            mSecurityKey.setTitle(R.string.phone_as_security_key_text);
+-            mSecurityKey.setOnPreferenceClickListener(preference -> {
+-                SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
+-                settingsLauncher.launchSettingsActivity(
+-                        getActivity(), CableAuthenticatorModuleProvider.class, null);
+-                return true;
+-            });
+-            mSecurityKey.setOrder(ORDER_SECURITY_KEY);
+-        }
+-        getPreferenceScreen().addPreference(mSecurityKey);
+     }
+ 
+     private Context getStyledContext() {
+diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni
+--- a/chrome/android/modules/chrome_feature_modules.gni
++++ b/chrome/android/modules/chrome_feature_modules.gni
+@@ -8,8 +8,6 @@ import(
+ import("//chrome/android/features/dev_ui/dev_ui_module.gni")
+ import("//chrome/android/features/tab_ui/tab_ui_module.gni")
+ import("//chrome/android/modules/buildflags.gni")
+-import(
+-    "//chrome/android/modules/cablev2_authenticator/cablev2_authenticator_module.gni")
+ import("//chrome/android/modules/chime/chime_module.gni")
+ import("//chrome/android/modules/extra_icu/extra_icu_module.gni")
+ import("//chrome/android/modules/image_editor/image_editor_module.gni")
+@@ -71,7 +69,6 @@ if (!disable_autofill_assistant_dfm) {
+ if (!disable_tab_ui_dfm) {
+   monochrome_module_descs += [ tab_ui_module_desc ]
+ }
+-monochrome_module_descs += [ cablev2_authenticator_module_desc ]
+ 
+ # Modules shipped in Trichrome (Android Q+).
+ trichrome_module_descs = monochrome_module_descs
 diff --git a/chrome/test/android/cast_emulator/BUILD.gn b/chrome/test/android/cast_emulator/BUILD.gn
 --- a/chrome/test/android/cast_emulator/BUILD.gn
 +++ b/chrome/test/android/cast_emulator/BUILD.gn
@@ -1492,7 +1556,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
-@@ -1164,45 +1164,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
+@@ -1002,45 +1002,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
  }
  

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

@@ -24,7 +24,7 @@ The snippets are already disabled in native codes, this will disable it on Java
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -267,7 +267,6 @@ android_library("chrome_java") {
+@@ -280,7 +280,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -820,7 +819,6 @@ android_library("chrome_test_java") {
+@@ -833,7 +832,6 @@ android_library("chrome_test_java") {
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
      "$google_play_services_package:google_play_services_fido_java",
@@ -40,7 +40,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
-@@ -1659,7 +1657,6 @@ android_library("browser_java_test_support") {
+@@ -1678,7 +1676,6 @@ android_library("browser_java_test_support") {
    ]
    deps = [
      ":chrome_java",
@@ -161,7 +161,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/Ch
 diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
 --- a/components/background_task_scheduler/BUILD.gn
 +++ b/components/background_task_scheduler/BUILD.gn
-@@ -119,7 +119,6 @@ if (is_android) {
+@@ -121,7 +121,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",

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

@@ -14,14 +14,14 @@ 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
-@@ -432,7 +432,6 @@ android_library("chrome_java") {
+@@ -454,7 +454,6 @@ android_library("chrome_java") {
      "//third_party/cacheinvalidation:cacheinvalidation_javalib",
      "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
      "//third_party/gif_player:gif_player_java",
 -    "//third_party/google_android_play_core:com_google_android_play_core_java",
-     "//third_party/jsr-305:jsr_305_javalib",
      "//ui/android:ui_java",
      "//ui/base/mojom:mojom_java",
+     "//ui/gfx/geometry/mojom:mojom_java",
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
@@ -471,7 +471,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Pl
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -35,7 +35,6 @@ android_library("module_installer_java") {
+@@ -36,7 +36,6 @@ android_library("module_installer_java") {
      "//base:base_java",
      "//base:jni_java",
      "//components/crash/android:java",

+ 35 - 49
build/patches/Remove-dependency-on-fido-iid-instantapps-and-location.patch → build/patches/Remove-dependency-on-fido-iid-instantapps-location.patch

@@ -1,14 +1,14 @@
 From: Wengling Chen <feiyu2817@gmail.com>
 Date: Sat, 2 Nov 2019 07:58:48 +0100
-Subject: Remove dependency on fido, iid, instantapps and location
+Subject: Remove dependency on fido, iid, instantapps, location
 
 ---
  chrome/android/BUILD.gn                       |   5 -
  chrome/android/chrome_java_sources.gni        |   3 -
  .../org/chromium/chrome/browser/AppHooks.java |   9 --
  .../ExternalNavigationDelegateImpl.java       |   8 +-
- .../instantapps/InstantAppsHandler.java       |  62 -----------
- .../browser/webauth/AuthenticatorImpl.java    |  30 +----
+ .../instantapps/InstantAppsHandler.java       |  56 ----------
+ .../browser/webauth/AuthenticatorImpl.java    |  29 +----
  .../gcm_driver/instance_id/android/BUILD.gn   |   2 -
  .../instance_id/InstanceIDWithSubtype.java    |  28 +----
  content/public/common/content_features.cc     |   2 +-
@@ -18,12 +18,12 @@ Subject: Remove dependency on fido, iid, instantapps and location
  third_party/android_deps/BUILD.gn             |  60 ----------
  third_party/cacheinvalidation/BUILD.gn        |   1 -
  .../android2/AndroidManifestUpdatedGcm.xml    |   3 -
- 15 files changed, 16 insertions(+), 302 deletions(-)
+ 15 files changed, 15 insertions(+), 296 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -266,8 +266,6 @@ android_library("chrome_java") {
+@@ -279,8 +279,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:jni_java",
-@@ -702,7 +700,6 @@ junit_binary("chrome_junit_tests") {
+@@ -713,7 +711,6 @@ junit_binary("chrome_junit_tests") {
      "$google_play_services_package:google_play_services_basement_java",
      "$google_play_services_package:google_play_services_cast_framework_java",
      "$google_play_services_package:google_play_services_cast_java",
@@ -40,7 +40,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -817,8 +814,6 @@ android_library("chrome_test_java") {
+@@ -830,8 +827,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 +52,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
-@@ -1860,9 +1860,6 @@ chrome_java_sources = [
+@@ -1777,9 +1777,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/webapps/dependency_injection/WebappActivityModule.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
    "java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
@@ -65,15 +65,15 @@ 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/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
-@@ -50,7 +50,6 @@ import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.ui.ImmersiveModeManager;
+@@ -47,7 +47,6 @@ import org.chromium.chrome.browser.sync.TrustedVaultClient;
+ import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.usage_stats.DigitalWellbeingClient;
  import org.chromium.chrome.browser.webapps.GooglePlayWebApkInstallDelegate;
 -import org.chromium.chrome.browser.webauth.Fido2ApiHandler;
+ import org.chromium.chrome.browser.xsurface.ProcessScope;
  import org.chromium.chrome.browser.xsurface.SurfaceDependencyProvider;
- import org.chromium.chrome.browser.xsurface.SurfaceRenderer;
  import org.chromium.components.browser_ui.widget.FeatureHighlightProvider;
-@@ -300,14 +299,6 @@ public abstract class AppHooks {
+@@ -298,14 +297,6 @@ public abstract class AppHooks {
          return new FeedbackSourceProvider() {};
      }
  
@@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
 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
-@@ -572,12 +572,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
+@@ -279,12 +279,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
  
      @Override
      public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
@@ -109,7 +109,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
-@@ -43,36 +43,9 @@ public class InstantAppsHandler {
+@@ -40,31 +40,9 @@ public class InstantAppsHandler {
      // TODO(mariakhomenko): Use system once we roll to O SDK.
      private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
  
@@ -137,16 +137,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
 -    private static final String[] SUPERVISOR_START_ACTIONS = {
 -            "com.google.android.instantapps.START", "com.google.android.instantapps.nmr1.INSTALL",
 -            "com.google.android.instantapps.nmr1.VIEW"};
--
--    // Instant Apps system resolver activity on N-MR1+.
--    @VisibleForTesting
--    public static final String EPHEMERAL_INSTALLER_CLASS =
--            "com.google.android.gms.instantapps.routing.EphemeralInstallerActivity";
 -
      /** Finch experiment name. */
      private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
  
-@@ -101,14 +74,6 @@ public class InstantAppsHandler {
+@@ -93,14 +71,6 @@ public class InstantAppsHandler {
       * @return Whether the given intent is going to open an Instant App.
       */
      public static boolean isIntentToInstantApp(Intent intent) {
@@ -161,7 +156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          return false;
      }
  
-@@ -143,20 +108,6 @@ public class InstantAppsHandler {
+@@ -135,20 +105,6 @@ public class InstantAppsHandler {
       * @param intent The current intent.
       */
      private void maybeRecordFallbackStats(Intent intent) {
@@ -182,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
      }
  
      /**
-@@ -191,14 +142,6 @@ public class InstantAppsHandler {
+@@ -183,14 +139,6 @@ public class InstantAppsHandler {
              return false;
          }
  
@@ -197,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          if (IntentUtils.safeGetBooleanExtra(
                  intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
                  || IntentUtils.safeHasExtra(intent, ShortcutHelper.EXTRA_SOURCE)
-@@ -223,7 +166,6 @@ public class InstantAppsHandler {
+@@ -215,7 +163,6 @@ public class InstantAppsHandler {
          }
  
          Intent callbackIntent = new Intent(intent);
@@ -205,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
          callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
  
          return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
-@@ -326,12 +268,9 @@ public class InstantAppsHandler {
+@@ -318,12 +265,9 @@ public class InstantAppsHandler {
          Intent iaIntent = data.getIntent();
          if (data.getReferrer() != null) {
              iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
@@ -218,21 +213,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/Ins
  
          try {
              appContext.startActivity(iaIntent);
-@@ -377,7 +316,6 @@ public class InstantAppsHandler {
-         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-             return info.isInstantAppAvailable;
-         } else if (info.activityInfo != null) {
--            return EPHEMERAL_INSTALLER_CLASS.equals(info.activityInfo.name);
-         }
- 
-         return false;
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
-@@ -69,14 +69,8 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
+@@ -102,14 +102,7 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
  
          mMakeCredentialCallback = callback;
-         Context context = ChromeActivity.fromWebContents(mWebContents);
+         Context context = ContextUtils.getApplicationContext();
 -        if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
 -                < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
 -            onError(AuthenticatorStatus.NOT_IMPLEMENTED);
@@ -240,16 +227,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/Authent
 -        }
 -
 -        mIsOperationPending = true;
--        Fido2ApiHandler.getInstance().makeCredential(options, mRenderFrameHost, this);
+-        Fido2ApiHandler.getInstance().makeCredential(options, mRenderFrameHost, mOrigin, this);
 +        onError(AuthenticatorStatus.NOT_IMPLEMENTED);
-+        return;
      }
  
-     @Override
-@@ -89,14 +83,7 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
- 
+     /**
+@@ -137,14 +130,7 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
          mGetAssertionCallback = callback;
-         Context context = ChromeActivity.fromWebContents(mWebContents);
+         Context context = ContextUtils.getApplicationContext();
+ 
 -        if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
 -                < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
 -            onError(AuthenticatorStatus.NOT_IMPLEMENTED);
@@ -257,12 +243,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/Authent
 -        }
 -
 -        mIsOperationPending = true;
--        Fido2ApiHandler.getInstance().getAssertion(options, mRenderFrameHost, this);
+-        Fido2ApiHandler.getInstance().getAssertion(options, mRenderFrameHost, mOrigin, this);
 +        onError(AuthenticatorStatus.NOT_IMPLEMENTED);
      }
  
-     @Override
-@@ -115,15 +102,8 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
+     /**
+@@ -177,15 +163,8 @@ public class AuthenticatorImpl extends HandlerResponseCallback implements Authen
              return;
          }
  
@@ -279,7 +265,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/Authent
 +        return;
      }
  
-     @Override
+     /**
 diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
 --- a/components/gcm_driver/instance_id/android/BUILD.gn
 +++ b/components/gcm_driver/instance_id/android/BUILD.gn
@@ -387,7 +373,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
-@@ -734,7 +734,7 @@ const base::Feature kWebContentsOcclusion {
+@@ -753,7 +753,7 @@ const base::Feature kWebContentsOcclusion {
  // Controls whether the WebAuthentication API is enabled:
  // https://w3c.github.io/webauthn
  const base::Feature kWebAuth{"WebAuthentication",
@@ -399,7 +385,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
-@@ -387,7 +387,6 @@ if (is_android) {
+@@ -386,7 +386,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -410,7 +396,7 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn
 diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
 --- a/services/device/geolocation/BUILD.gn
 +++ b/services/device/geolocation/BUILD.gn
-@@ -151,7 +151,6 @@ if (is_android) {
+@@ -158,7 +158,6 @@ if (is_android) {
        ":geolocation_jni_headers",
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -571,7 +557,7 @@ diff --git a/services/device/geolocation/android/java/src/org/chromium/device/ge
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1203,20 +1203,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
+@@ -1041,20 +1041,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
    strip_resources = !is_java_debug
  }
  
@@ -592,7 +578,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"
-@@ -1235,52 +1221,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
+@@ -1073,52 +1059,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
    strip_drawables = true
  }
  

+ 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
-@@ -2067,37 +2067,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
+@@ -2026,37 +2026,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
    visibility = [ ":*" ]
  }
  

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

@@ -15,7 +15,7 @@ Subject: Remove dependency on vision, clearcut and phenotype
 diff --git a/services/BUILD.gn b/services/BUILD.gn
 --- a/services/BUILD.gn
 +++ b/services/BUILD.gn
-@@ -104,8 +104,6 @@ if (is_android) {
+@@ -105,8 +105,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -24,7 +24,7 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn
        "//base:base_java",
        "//base:base_java_test_support",
        "//base:base_junit_test_support",
-@@ -135,8 +133,6 @@ if (is_android) {
+@@ -136,8 +134,6 @@ if (is_android) {
      deps = [
        "$google_play_services_package:google_play_services_base_java",
        "$google_play_services_package:google_play_services_basement_java",
@@ -494,7 +494,7 @@ diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detect
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1291,36 +1291,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
+@@ -1129,36 +1129,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 = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
-@@ -2097,62 +2067,6 @@ java_prebuilt("com_github_kevinstern_software_and_algorithms_java") {
+@@ -2056,62 +2026,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
-@@ -1133,24 +1133,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -971,24 +971,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    skip_jetify = true
  }
  

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

@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1896,15 +1896,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1924,15 +1924,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
@@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
-@@ -270,7 +270,7 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
+@@ -459,7 +459,7 @@ public abstract class BaseCustomTabActivity<C extends BaseCustomTabActivityCompo
      @Override
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.

+ 32 - 31
build/patches/Remove-signin-and-data-saver-integrations.patch

@@ -23,7 +23,7 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../DataReductionPreferenceFragment.java      | 24 ++---
  .../privacy/settings/PrivacySettings.java     |  6 --
  .../chrome/browser/settings/MainSettings.java | 90 +------------------
- .../chrome/browser/signin/SigninManager.java  | 58 ++----------
+ .../chrome/browser/signin/SigninManager.java  | 59 ++----------
  .../settings/SyncAndServicesSettings.java     |  8 --
  .../android/signin/signin_manager_android.cc  |  1 -
  .../strings/android_chrome_strings.grd        | 15 ----
@@ -31,12 +31,12 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
  .../components/sync/AndroidSyncSettings.java  | 24 +----
  .../net/HttpNegotiateAuthenticator.java       | 88 +-----------------
  .../chromoting/base/OAuthTokenFetcher.java    |  2 -
- 15 files changed, 25 insertions(+), 408 deletions(-)
+ 15 files changed, 25 insertions(+), 409 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -1248,8 +1248,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1267,8 +1267,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% block extra_uses_permissions %}
      {% endblock %}
  
-@@ -962,16 +954,6 @@ by a child template that "extends" this file.
+@@ -890,16 +882,6 @@ by a child template that "extends" this file.
                  android:resource="@xml/file_paths" />
          </provider>
  
@@ -99,7 +99,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Broadcast receiver that will be notified of account changes -->
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
              <intent-filter>
-@@ -1079,16 +1061,6 @@ by a child template that "extends" this file.
+@@ -1007,16 +989,6 @@ by a child template that "extends" this file.
          <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
              android:exported="false"/>
  
@@ -150,8 +150,8 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
 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
-@@ -119,8 +119,6 @@ import org.chromium.chrome.browser.profiles.Profile;
- import org.chromium.chrome.browser.settings.SettingsLauncher;
+@@ -122,8 +122,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;
 -import org.chromium.chrome.browser.sync.ProfileSyncService;
@@ -159,7 +159,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;
-@@ -241,9 +239,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -245,9 +243,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private boolean mRemoveWindowBackgroundDone;
      protected AccessibilityVisibilityHandler mAccessibilityVisibilityHandler;
  
@@ -169,7 +169,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      @Nullable
      private ChromeFullscreenManager mFullscreenManager;
  
-@@ -848,28 +843,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -872,28 +867,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      private void createContextReporterIfNeeded() {
          if (!mStarted) return; // Sync state reporting should work only in started state.
          if (mContextReporter != null || getActivityTab() == null) return;
@@ -198,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      }
  
      @Override
-@@ -941,13 +914,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -959,13 +932,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
              GSAAccountChangeListener.getInstance().disconnect();
          }
@@ -215,7 +215,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/datareduction/settings/DataReductionPreferenceFragment.java
-@@ -52,10 +52,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
+@@ -54,10 +54,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
      public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
          SettingsUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
          getActivity().setTitle(R.string.data_reduction_title_lite_mode);
@@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/datareduction/s
  
          setHasOptionsMenu(true);
  
-@@ -150,21 +150,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
+@@ -161,21 +161,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
       * Returns summary string.
       */
      public static String generateSummary(Resources resources) {
@@ -256,7 +256,7 @@ 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
-@@ -41,9 +41,6 @@ public class PrivacySettings
+@@ -42,9 +42,6 @@ public class PrivacySettings
      private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
@@ -266,7 +266,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  
      private ManagedPreferenceDelegate mManagedPreferenceDelegate;
  
-@@ -66,9 +63,6 @@ public class PrivacySettings
+@@ -67,9 +64,6 @@ public class PrivacySettings
          networkPredictionPref.setOnPreferenceChangeListener(this);
          networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
@@ -495,8 +495,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
 -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.IdentityManager;
-@@ -50,7 +48,7 @@ import java.util.List;
+ import org.chromium.components.signin.identitymanager.ConsentLevel;
+@@ -51,7 +49,7 @@ import java.util.List;
   * See chrome/browser/signin/signin_manager_android.h for more details.
   */
  public class SigninManager
@@ -505,7 +505,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private static final String TAG = "SigninManager";
  
      /**
-@@ -168,7 +166,6 @@ public class SigninManager
+@@ -169,7 +167,6 @@ public class SigninManager
       * This is not final, as destroy() updates this.
       */
      private long mNativeSigninManagerAndroid;
@@ -513,7 +513,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;
-@@ -206,24 +203,22 @@ public class SigninManager
+@@ -207,24 +204,22 @@ public class SigninManager
       */
      @CalledByNative
      private static SigninManager create(long nativeSigninManagerAndroid,
@@ -541,7 +541,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mIdentityManager = identityManager;
          mIdentityMutator = identityMutator;
          mAndroidSyncSettings = androidSyncSettings;
-@@ -232,7 +227,6 @@ public class SigninManager
+@@ -233,7 +228,6 @@ public class SigninManager
          mSigninAllowedByPolicy =
                  SigninManagerJni.get().isSigninAllowedByPolicy(mNativeSigninManagerAndroid);
  
@@ -549,7 +549,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mIdentityManager.addObserver(this);
  
          reloadAllAccountsFromSystem();
-@@ -245,7 +239,6 @@ public class SigninManager
+@@ -246,7 +240,6 @@ public class SigninManager
      @CalledByNative
      public void destroy() {
          mIdentityManager.removeObserver(this);
@@ -557,17 +557,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          mNativeSigninManagerAndroid = 0;
      }
  
-@@ -284,8 +277,7 @@ public class SigninManager
+@@ -285,9 +278,7 @@ public class SigninManager
       * Returns true if signin can be started now.
       */
      public boolean isSignInAllowed() {
 -        return !mFirstRunCheckIsPending && mSignInState == null && mSigninAllowedByPolicy
--                && ChromeSigninController.get().getSignedInUser() == null && isSigninSupported();
+-                && mIdentityManager.getPrimaryAccountInfo(ConsentLevel.SYNC) == null
+-                && isSigninSupported();
 +        return false;
      }
  
      /**
-@@ -340,17 +332,6 @@ public class SigninManager
+@@ -342,17 +333,6 @@ public class SigninManager
          });
      }
  
@@ -585,7 +586,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.
       *
-@@ -419,11 +400,8 @@ public class SigninManager
+@@ -421,11 +401,8 @@ public class SigninManager
      }
  
      private void progressSignInFlowSeedSystemAccounts() {
@@ -599,7 +600,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      /**
-@@ -460,18 +438,6 @@ public class SigninManager
+@@ -462,18 +439,6 @@ public class SigninManager
          // The user should not be already signed in
          assert !mIdentityManager.hasPrimaryAccount();
  
@@ -618,7 +619,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          if (mSignInState.mCallback != null) {
              mSignInState.mCallback.onSignInComplete();
          }
-@@ -629,10 +595,8 @@ public class SigninManager
+@@ -631,10 +596,8 @@ public class SigninManager
  
          // Native sign-out must happen before resetting the account so data is deleted correctly.
          // http://crbug.com/589028
@@ -629,7 +630,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      void finishSignOut() {
-@@ -692,14 +656,6 @@ public class SigninManager
+@@ -694,14 +657,6 @@ public class SigninManager
          SigninManagerJni.get().stopApplyingCloudPolicy(mNativeSigninManagerAndroid);
      }
  
@@ -647,7 +648,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/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
-@@ -164,15 +164,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat
+@@ -165,15 +165,7 @@ public class SyncAndServicesSettings extends PreferenceFragmentCompat
  
          mPrivacyPrefManager.migrateNetworkPredictionPreferences();
  
@@ -677,7 +678,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
-@@ -262,18 +262,9 @@ CHAR-LIMIT guidelines:
+@@ -264,18 +264,9 @@ CHAR-LIMIT guidelines:
        </message>
  
        <!-- Sign-in, sync and personalization preferences -->
@@ -696,7 +697,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>
-@@ -329,9 +320,6 @@ CHAR-LIMIT guidelines:
+@@ -334,9 +325,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>
@@ -706,7 +707,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>
-@@ -1247,9 +1235,6 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -872,9 +860,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>

+ 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
-@@ -821,7 +821,7 @@ class DnsTCPAttempt : public DnsAttempt {
+@@ -841,7 +841,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
-@@ -3568,6 +3568,22 @@
+@@ -3531,6 +3531,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/AutocompleteMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
-@@ -476,6 +476,12 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
+@@ -497,6 +497,12 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, StartStopWi
      void onNativeInitialized() {
          mNativeInitialized = true;
  
@@ -36,7 +36,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
-@@ -2308,6 +2308,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2529,6 +2529,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kAndroidAutofillAccessibilityName,
       flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -49,9 +49,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -1880,6 +1880,11 @@
-     "owners": [ "ginko", "newcomer" ],
-     "expiry_milestone": 78
+@@ -1883,6 +1883,11 @@
+     // settings.
+     "expiry_milestone" : 79
    },
 +  {
 +    "name": "enable-search-ready-omnibox",
@@ -59,12 +59,12 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 +    "expiry_milestone": -1
 +  },
    {
-     "name": "enable-send-tab-to-self",
-     "owners": [ "//components/send_tab_to_self/OWNERS" ],
+     "name": "enable-persistent-downloads",
+     "owners": [ "ewannpv", "gambard" ],
 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
-@@ -2614,6 +2614,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
+@@ -2752,6 +2752,11 @@ const char kSafeBrowsingUseLocalBlacklistsV2Description[] =
      "process to check the Safe Browsing reputation of URLs without calling "
      "into GmsCore for every URL.";
  
@@ -79,7 +79,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
-@@ -1507,6 +1507,9 @@ extern const char kRelatedSearchesDescription[];
+@@ -1604,6 +1604,9 @@ extern const char kReportFeedUserActionsDescription[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Name[];
  extern const char kSafeBrowsingUseLocalBlacklistsV2Description[];
  
@@ -92,7 +92,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
-@@ -170,6 +170,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
+@@ -182,6 +182,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kRelatedSearches,
      &kRevampedContextMenu,
      &kScrollToExpandPaymentHandler,
@@ -100,7 +100,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
      &kSearchEnginePromoExistingDevice,
      &kSearchEnginePromoNewDevice,
      &kServiceManagerForBackgroundPrefetch,
-@@ -514,6 +515,9 @@ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
+@@ -550,6 +551,9 @@ const base::Feature kRevampedContextMenu{"RevampedContextMenu",
  const base::Feature kScrollToExpandPaymentHandler{
      "ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
  
@@ -113,7 +113,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
-@@ -97,6 +97,7 @@ extern const base::Feature kRevampedContextMenu;
+@@ -103,6 +103,7 @@ extern const base::Feature kRevampedContextMenu;
  extern const base::Feature kScrollToExpandPaymentHandler;
  extern const base::Feature kSearchEnginePromoExistingDevice;
  extern const base::Feature kSearchEnginePromoNewDevice;
@@ -124,14 +124,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
 diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/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
-@@ -319,6 +319,7 @@ public abstract class ChromeFeatureList {
+@@ -316,6 +316,7 @@ public abstract class ChromeFeatureList {
      public static final String OMNIBOX_ADAPTIVE_SUGGESTIONS_COUNT =
              "OmniboxAdaptiveSuggestionsCount";
      public static final String OMNIBOX_ASSISTANT_VOICE_SEARCH = "OmniboxAssistantVoiceSearch";
 +    public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox";
      public static final String OMNIBOX_COMPACT_SUGGESTIONS = "OmniboxCompactSuggestions";
      public static final String OMNIBOX_DEFERRED_KEYBOARD_POPUP = "OmniboxDeferredKeyboardPopup";
-     public static final String OMNIBOX_HIDE_SCHEME_IN_STEADY_STATE =
+     public static final String OMNIBOX_ENABLE_CLIPBOARD_PROVIDER_IMAGE_SUGGESTIONS =
 -- 
 2.17.1
 

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

@@ -58,7 +58,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
  // Used to look up the URL to use for the New Tab page. Also tracks how we
  // arrived at that URL so it can be logged with UMA.
  struct NewTabURLDetails {
-@@ -183,10 +148,9 @@ struct NewTabURLDetails {
+@@ -184,10 +149,9 @@ struct NewTabURLDetails {
                               : chrome::kChromeSearchLocalNtpUrl);
  #endif
  
@@ -71,7 +71,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
          GetDefaultSearchProviderTemplateURL(profile);
      if (!profile || !template_url)
        return NewTabURLDetails(local_url, NEW_TAB_URL_BAD);
-@@ -202,7 +166,7 @@ struct NewTabURLDetails {
+@@ -203,7 +167,7 @@ struct NewTabURLDetails {
      if (!IsURLAllowedForSupervisedUser(search_provider_url, profile))
        return NewTabURLDetails(local_url, NEW_TAB_URL_BLOCKED);
  

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

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

@@ -69,8 +69,8 @@ diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
  #if defined(OS_ANDROID)
 +GPU_EXPORT extern const base::Feature kAImageReaderMediaPlayer;
  GPU_EXPORT extern const base::Feature kDisableSurfaceControlForWebview;
- #endif  // defined(OS_ANDROID)
  
+ GPU_EXPORT extern const base::Feature kUseGles2ForOopR;
 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
@@ -94,7 +94,7 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_
 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 --- a/media/base/media_switches.cc
 +++ b/media/base/media_switches.cc
-@@ -519,6 +519,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
+@@ -525,6 +525,10 @@ const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
  const base::Feature kMediaDrmPreprovisioningAtStartup{
      "MediaDrmPreprovisioningAtStartup", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -108,7 +108,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
 diff --git a/media/base/media_switches.h b/media/base/media_switches.h
 --- a/media/base/media_switches.h
 +++ b/media/base/media_switches.h
-@@ -184,6 +184,7 @@ MEDIA_EXPORT extern const base::Feature kMediaControlsExpandGesture;
+@@ -182,6 +182,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;

+ 136 - 150
build/patches/Revert-Remove-pre-unified-consent-code.patch

@@ -8,10 +8,10 @@ Restore translations
 Disable unified consent on Android
 Unified consent miscellanous backport fixes
 ---
- .../java/res/xml/privacy_preferences.xml      | 26 +++++
- .../privacy/settings/PrivacySettings.java     | 96 ++++++++++++++++---
- .../sync/SyncNotificationController.java      |  8 +-
- .../chrome/browser/sync/SyncTestRule.java     |  9 +-
+ .../java/res/xml/privacy_preferences.xml      | 25 +++++
+ .../privacy/settings/PrivacySettings.java     | 97 ++++++++++++++++---
+ .../sync/SyncNotificationController.java      |  6 +-
+ .../chrome/browser/sync/SyncTestRule.java     | 10 +-
  .../chromium/chrome/browser/sync/UkmTest.java | 50 +++++++++-
  .../strings/android_chrome_strings.grd        | 15 +++
  .../android_chrome_strings_am.xtb             | 19 +++-
@@ -67,7 +67,7 @@ Unified consent miscellanous backport fixes
  .../android_chrome_strings_zh-CN.xtb          | 19 +++-
  .../android_chrome_strings_zh-TW.xtb          | 19 +++-
  .../unified_consent_service_factory.cc        |  5 +-
- 59 files changed, 1124 insertions(+), 73 deletions(-)
+ 59 files changed, 1121 insertions(+), 75 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
@@ -97,22 +97,21 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
      <org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
          android:key="can_make_payment"
          android:title="@string/can_make_payment_title"
-@@ -19,6 +37,10 @@
+@@ -19,6 +37,9 @@
          android:key="usage_stats_reporting"
          android:title="@string/usage_stats_setting_title"
          android:persistent="false" />
-+    <android.support.v7.preference.Preference
++    <org.chromium.components.browser_ui.settings.ChromeBasePreference
 +        android:key="usage_and_crash_reports"
-+        android:title="@string/usage_and_crash_reports_title"
-+        android:fragment="org.chromium.chrome.browser.settings.privacy.UsageAndCrashReportsPreferenceFragment" />
++        android:title="@string/usage_and_crash_reports_title" />
      <Preference
          android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings"
          android:key="do_not_track"
-@@ -28,6 +50,10 @@
+@@ -28,6 +49,10 @@
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
-+    <android.support.v7.preference.Preference
++    <Preference
 +        android:key="sync_and_services_link_divider"
 +        android:layout="@layout/divider_preference"
 +        android:selectable="false"/>
@@ -134,8 +133,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 +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.sync.settings.SyncAndServicesSettings;
-@@ -35,18 +37,24 @@ import org.chromium.ui.text.SpanApplier;
+ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
+@@ -36,18 +38,24 @@ import org.chromium.ui.text.SpanApplier;
   */
  public class PrivacySettings
          extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
@@ -163,14 +162,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
          getActivity().setTitle(R.string.prefs_privacy);
          setHasOptionsMenu(true);
-@@ -64,14 +72,30 @@ public class PrivacySettings
+@@ -65,15 +73,30 @@ public class PrivacySettings
          networkPredictionPref.setOnPreferenceChangeListener(this);
          networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
 -        Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
 -        NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
--            SettingsLauncher.getInstance().launchSettingsPage(getActivity(),
--                    SyncAndServicesSettings.class, SyncAndServicesSettings.createArguments(false));
+-            SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
+-            settingsLauncher.launchSettingsActivity(getActivity(), SyncAndServicesSettings.class,
+-                    SyncAndServicesSettings.createArguments(false));
 -        });
 -        syncAndServicesLink.setSummary(
 -                SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
@@ -202,7 +202,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
  
          updateSummaries();
      }
-@@ -84,6 +108,15 @@ public class PrivacySettings
+@@ -86,6 +109,15 @@ public class PrivacySettings
                      Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
          } else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
              PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
@@ -218,7 +218,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          }
  
          return true;
-@@ -101,6 +134,35 @@ public class PrivacySettings
+@@ -103,6 +135,35 @@ public class PrivacySettings
      public void updateSummaries() {
          PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
  
@@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
          CheckBoxPreference canMakePaymentPref =
                  (CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
          if (canMakePaymentPref != null) {
-@@ -138,6 +200,18 @@ public class PrivacySettings
+@@ -140,6 +201,18 @@ public class PrivacySettings
      private ChromeManagedPreferenceDelegate createManagedPreferenceDelegate() {
          return preference -> {
              String key = preference.getKey();
@@ -276,40 +276,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
 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
-@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.sync;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Build;
-+import android.os.Bundle;
- import android.util.Log;
- 
- import androidx.annotation.StringRes;
-@@ -24,6 +25,7 @@ import org.chromium.chrome.browser.notifications.NotificationMetadata;
- import org.chromium.chrome.browser.notifications.NotificationUmaTracker;
- import org.chromium.chrome.browser.notifications.PendingIntentProvider;
- import org.chromium.chrome.browser.notifications.channels.ChannelDefinitions;
-+import org.chromium.chrome.browser.sync.settings.AccountManagementFragment;
- import org.chromium.chrome.browser.settings.SettingsLauncher;
- import org.chromium.chrome.browser.signin.IdentityServicesProvider;
- import org.chromium.chrome.browser.sync.GoogleServiceAuthError.State;
-@@ -197,9 +199,11 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
+@@ -193,10 +193,12 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
       * @return the intent for opening the settings
       */
      private Intent createSettingsIntent() {
-+        final String fragmentName = AccountManagementFragment.class.getName();
-+        final Bundle fragmentArguments = null;
++        final String fragmentName = SyncNotificationController.class.getName();
 +
-         return SettingsLauncher.getInstance().createIntentForSettingsPage(
--                ContextUtils.getApplicationContext(), SyncAndServicesSettings.class.getName(),
+         SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
+         return settingsLauncher.createSettingsActivityIntent(ContextUtils.getApplicationContext(),
+-                SyncAndServicesSettings.class.getName(),
 -                SyncAndServicesSettings.createArguments(false));
-+                ContextUtils.getApplicationContext(), fragmentName, fragmentArguments);
++                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
-@@ -18,6 +18,7 @@ import org.chromium.chrome.browser.ChromeActivity;
+@@ -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;
@@ -317,12 +302,13 @@ diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/SyncT
  import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
  import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
  import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
-@@ -365,8 +366,12 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
+@@ -428,9 +429,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(true);
+-            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
@@ -412,7 +398,7 @@ diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTe
 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
-@@ -646,6 +646,18 @@ CHAR-LIMIT guidelines:
+@@ -672,6 +672,18 @@ CHAR-LIMIT guidelines:
        <message name="IDS_PREFS_PRIVACY" desc="Title for the Privacy preferences. [CHAR-LIMIT=32]">
          Privacy
        </message>
@@ -431,7 +417,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
        <message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_TITLE" desc="Title for checkbox that controls reporting data to detect bad apps/sites. Please ensure ‘Safe Browsing’ in this message matches the ‘Safe Browsing’ settings title.">
          Help improve Chrome security
        </message>
-@@ -1474,6 +1486,9 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -1099,6 +1111,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>
@@ -444,8 +430,8 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">ይህ ለሁሉም ጣቢያዎች ውሂብን ያጸዳል፣ የሚከተሉትን ጨምሮ፦</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ከመስመር ውጪ</translation>
  <translation id="983192555821071799">ሁሉንም ትሮች ይዝጉ</translation>
  <translation id="987264212798334818">አጠቃላይ</translation>
 -</translationbundle>
@@ -471,8 +457,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">سيؤدي هذا إلى محو بيانات جميع المواقع، بما في ذلك:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">بلا اتصال</translation>
  <translation id="983192555821071799">إغلاق جميع علامات التبويب</translation>
  <translation id="987264212798334818">عام</translation>
 -</translationbundle>
@@ -498,8 +484,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">Това действие ще изчисти данните за всички сайтове, включително:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">Офлайн</translation>
  <translation id="983192555821071799">Затваряне на всички раздели</translation>
  <translation id="987264212798334818">Общи</translation>
 -</translationbundle>
@@ -525,8 +511,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
-@@ -1120,4 +1120,21 @@
- <translation id="982182592107339124">এটা সব সাইটের জন্য ডেটা সাফ করবে, এতে অন্তর্ভুক্ত আছে:</translation>
+@@ -996,4 +996,21 @@
+ <translation id="981121421437150478">অফলাইন</translation>
  <translation id="983192555821071799">সমস্ত ট্যাবগুলি বন্ধ করুন</translation>
  <translation id="987264212798334818">সাধারণ</translation>
 -</translationbundle>
@@ -552,8 +538,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
-@@ -1118,4 +1118,21 @@ Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud
- <translation id="982182592107339124">S'esborraran les dades de tots els llocs web, com ara:</translation>
+@@ -994,4 +994,21 @@ Per exemple, és possible que alguns llocs web responguin a aquesta sol·licitud
+ <translation id="981121421437150478">Sense connexió</translation>
  <translation id="983192555821071799">Tanca totes les pestanyes</translation>
  <translation id="987264212798334818">General</translation>
 -</translationbundle>
@@ -579,8 +565,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
-@@ -1118,4 +1118,21 @@ Některé weby mohou například na tento požadavek reagovat tak, že vám zobr
- <translation id="982182592107339124">Tímto vymažete data všech webů včetně těchto:</translation>
+@@ -994,4 +994,21 @@ Některé weby mohou například na tento požadavek reagovat tak, že vám zobr
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Zavřít všechny karty</translation>
  <translation id="987264212798334818">Všeobecné</translation>
 -</translationbundle>
@@ -606,8 +592,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
-@@ -1118,4 +1118,21 @@ Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer,
- <translation id="982182592107339124">Denne handling rydder dataene for alle websites, herunder:</translation>
+@@ -994,4 +994,21 @@ Nogle websites kan f.eks. reagere på denne anmodning ved at vise dig annoncer,
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Luk alle faner</translation>
  <translation id="987264212798334818">Generelt</translation>
 -</translationbundle>
@@ -633,8 +619,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
-@@ -1118,4 +1118,21 @@ Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht dara
- <translation id="982182592107339124">Alle Daten für alle Websites werden gelöscht, darunter:</translation>
+@@ -994,4 +994,21 @@ Einige Websites schalten möglicherweise Werbeanzeigen, deren Auswahl nicht dara
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Alle Tabs schließen</translation>
  <translation id="987264212798334818">Allgemein</translation>
 -</translationbundle>
@@ -660,8 +646,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">Αυτή η ενέργεια θα εκκαθαρίσει τα δεδομένα για όλους τους ιστότοπους, όπως:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">Εκτός σύνδεσης</translation>
  <translation id="983192555821071799">Κλείσιμο όλων των καρτελών</translation>
  <translation id="987264212798334818">Γενικά</translation>
 -</translationbundle>
@@ -687,8 +673,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
-@@ -1118,4 +1118,21 @@ For example, some websites may respond to this request by showing you ads that a
- <translation id="982182592107339124">This will clear data for all sites, including:</translation>
+@@ -994,4 +994,21 @@ For example, some websites may respond to this request by showing you ads that a
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Close all tabs</translation>
  <translation id="987264212798334818">General</translation>
 -</translationbundle>
@@ -714,8 +700,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
-@@ -1118,4 +1118,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncio
- <translation id="982182592107339124">Esta acción borrará los datos de todos los sitios, entre los que se incluyen:</translation>
+@@ -994,4 +994,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mediante anuncio
+ <translation id="981121421437150478">Sin conexión</translation>
  <translation id="983192555821071799">Cerrar todas las pestañas</translation>
  <translation id="987264212798334818">General</translation>
 -</translationbundle>
@@ -741,8 +727,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
-@@ -1118,4 +1118,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anu
- <translation id="982182592107339124">Se borrarán los datos de todos los sitios web, incluidos:</translation>
+@@ -994,4 +994,21 @@ Por ejemplo, algunos sitios web pueden responder a la solicitud mostrándote anu
+ <translation id="981121421437150478">Sin conexión</translation>
  <translation id="983192555821071799">Cerrar todas las pestañas</translation>
  <translation id="987264212798334818">General</translation>
 -</translationbundle>
@@ -768,8 +754,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
-@@ -1118,4 +1118,21 @@ Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teil
- <translation id="982182592107339124">See kustutab kõikide saitide andmed, sealhulgas:</translation>
+@@ -994,4 +994,21 @@ Näiteks võivad mõned veebisaidid taotlusele reageerida nii, et näitavad teil
+ <translation id="981121421437150478">Võrguühenduseta</translation>
  <translation id="983192555821071799">Sule kõik vahelehed</translation>
  <translation id="987264212798334818">Üldine</translation>
 -</translationbundle>
@@ -795,8 +781,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">با این کار داده‌های همه سایت‌ها پاک می‌شود، از جمله:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">آفلاین</translation>
  <translation id="983192555821071799">بستن همه برگه‌ها</translation>
  <translation id="987264212798334818">موارد کلی</translation>
 -</translationbundle>
@@ -822,8 +808,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
-@@ -1118,4 +1118,21 @@ Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämäl
- <translation id="982182592107339124">Kaikkien sivustojen tiedot poistetaan, esimerkiksi:</translation>
+@@ -994,4 +994,21 @@ Jotkin verkkosivustot voivat vastata tähän pyyntöön esimerkiksi näyttämäl
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Sulje kaikki välilehdet</translation>
  <translation id="987264212798334818">Yleistä</translation>
 -</translationbundle>
@@ -849,8 +835,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
-@@ -1118,4 +1118,21 @@ Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan
- <translation id="982182592107339124">Iki-clear nito ang data para sa lahat ng site, kabilang ang:</translation>
+@@ -994,4 +994,21 @@ Halimbawa, puwedeng tumugon ang ilang website sa kahilingang ito sa pamamagitan
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Isara ang lahat ng tab</translation>
  <translation id="987264212798334818">Pangkalahatan</translation>
 -</translationbundle>
@@ -876,8 +862,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
-@@ -1118,4 +1118,21 @@ Par exemple, certains sites Web peuvent répondre à cette demande en diffusant
- <translation id="982182592107339124">Cette action entraînera la suppression des données pour tous les sites, y compris :</translation>
+@@ -994,4 +994,21 @@ Par exemple, certains sites Web peuvent répondre à cette demande en diffusant
+ <translation id="981121421437150478">Hors connexion</translation>
  <translation id="983192555821071799">Fermer tous les onglets</translation>
  <translation id="987264212798334818">Général</translation>
 -</translationbundle>
@@ -903,8 +889,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">આ બધી સાઇટ્સ પરથી ડેટા સાફ કરશે, આ સહિત:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ઑફલાઇન</translation>
  <translation id="983192555821071799">બધા ટેબ્સ બંધ કરો</translation>
  <translation id="987264212798334818">સામાન્ય</translation>
 -</translationbundle>
@@ -930,8 +916,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">इससे इन सभी साइटों का डेटा साफ़ हो जाएगा:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ऑफ़लाइन</translation>
  <translation id="983192555821071799">सभी टैब बंद करें</translation>
  <translation id="987264212798334818">सामान्य</translation>
 -</translationbundle>
@@ -957,8 +943,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
-@@ -1118,4 +1118,21 @@ Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikaž
- <translation id="982182592107339124">Izbrisat će se podaci za sve web-lokacije, uključujući:</translation>
+@@ -994,4 +994,21 @@ Na primjer, neke web-lokacije na taj zahtjev mogu odgovoriti tako da vam prikaž
+ <translation id="981121421437150478">Izvanmrežno</translation>
  <translation id="983192555821071799">Zatvori sve kartice</translation>
  <translation id="987264212798334818">Općenito</translation>
 -</translationbundle>
@@ -984,8 +970,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
-@@ -1118,4 +1118,21 @@ Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jel
- <translation id="982182592107339124">Ezzel törli az összes webhely adatait, beleértve a következőket:</translation>
+@@ -994,4 +994,21 @@ Egyes webhelyek például válaszolhatnak rá úgy, hogy olyan hirdetéseket jel
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Az összes lap bezárása</translation>
  <translation id="987264212798334818">Általános</translation>
 -</translationbundle>
@@ -1011,8 +997,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
-@@ -1118,4 +1118,21 @@ Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangka
- <translation id="982182592107339124">Tindakan ini akan menghapus data untuk semua situs, termasuk:</translation>
+@@ -994,4 +994,21 @@ Misalnya, beberapa situs web mungkin menanggapi permintaan ini dengan menayangka
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Tutup semua tab</translation>
  <translation id="987264212798334818">Umum</translation>
 -</translationbundle>
@@ -1038,8 +1024,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
-@@ -1118,4 +1118,21 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
- <translation id="982182592107339124">Questa operazione cancellerà i dati di tutti i siti, inclusi:</translation>
+@@ -994,4 +994,21 @@ Ad esempio, alcuni siti web potrebbero rispondere alla richiesta mostrando annun
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Chiudi tutte le schede</translation>
  <translation id="987264212798334818">Generali</translation>
 -</translationbundle>
@@ -1065,8 +1051,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">פעולה זו תמחק נתונים של כל האתרים, כולל:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">לא מקוון</translation>
  <translation id="983192555821071799">סגור את כל הכרטיסיות</translation>
  <translation id="987264212798334818">כללי</translation>
 -</translationbundle>
@@ -1092,8 +1078,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">この操作を行うと、次を含むすべてのサイトのデータが削除されます。</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">オフライン</translation>
  <translation id="983192555821071799">すべてのタブを閉じる</translation>
  <translation id="987264212798334818">全般</translation>
 -</translationbundle>
@@ -1119,8 +1105,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
-@@ -1119,4 +1119,21 @@
- <translation id="982182592107339124">ಇದು ಎಲ್ಲಾ ಸೈಟ್‌ಗಳಿಗೆ ಡೇಟಾ ತೆರವುಗೊಳಿಸುತ್ತದೆ, ಇವುಗಳನ್ನೂ ಒಳಗೊಂಡು:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ಆಫ್‌ಲೈನ್</translation>
  <translation id="983192555821071799">ಎಲ್ಲ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
  <translation id="987264212798334818">ಸಾಮಾನ್ಯ</translation>
 -</translationbundle>
@@ -1146,8 +1132,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">다음을 포함한 모든 사이트의 데이터가 삭제됩니다.</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">오프라인</translation>
  <translation id="983192555821071799">탭 모두 닫기</translation>
  <translation id="987264212798334818">일반</translation>
 -</translationbundle>
@@ -1173,8 +1159,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
-@@ -1118,4 +1118,21 @@ Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos j
- <translation id="982182592107339124">Bus išvalyti visų svetainių duomenys, įskaitant:</translation>
+@@ -994,4 +994,21 @@ Pavyzdžiui, kai kurios svetainės gali atsakyti į šią užklausą rodydamos j
+ <translation id="981121421437150478">Neprisijungus</translation>
  <translation id="983192555821071799">Uždar. visų skirtukų lapus</translation>
  <translation id="987264212798334818">Bendra</translation>
 -</translationbundle>
@@ -1200,8 +1186,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
-@@ -1118,4 +1118,21 @@ Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums rek
- <translation id="982182592107339124">Tādējādi tiks dzēsti dati no visām vietnēm, tostarp:</translation>
+@@ -994,4 +994,21 @@ Piemēram, dažas vietnes, reaģējot uz šo pieprasījumu, var rādīt jums rek
+ <translation id="981121421437150478">Bezsaistē</translation>
  <translation id="983192555821071799">Aizvērt visas cilnes</translation>
  <translation id="987264212798334818">Vispārīgi</translation>
 -</translationbundle>
@@ -1227,8 +1213,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">ഇത് ഇനിപ്പറയുന്നവ ഉൾപ്പെടെയുള്ള എല്ലാ സൈറ്റുകളുടെയും വിവരങ്ങൾ മായ്‌ക്കുന്നതിനിടയാക്കും:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ഓഫ്‌ലൈൻ</translation>
  <translation id="983192555821071799">എല്ലാ ടാബുകളും അടയ്‌ക്കുക</translation>
  <translation id="987264212798334818">പൊതുവായ</translation>
 -</translationbundle>
@@ -1254,8 +1240,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">हे यासह सर्व साइटसाठी डेटा साफ करेल:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ऑफलाइन</translation>
  <translation id="983192555821071799">सर्व टॅब बंद करा</translation>
  <translation id="987264212798334818">सामान्य</translation>
 -</translationbundle>
@@ -1281,8 +1267,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
-@@ -1118,4 +1118,21 @@ Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan i
- <translation id="982182592107339124">Ini akan memadamkan data untuk semua tapak web, termasuk:</translation>
+@@ -994,4 +994,21 @@ Sebagai contoh, sesetengah tapak web mungkin memberi respons kepada permintaan i
+ <translation id="981121421437150478">Luar talian</translation>
  <translation id="983192555821071799">Tutup semua tab</translation>
  <translation id="987264212798334818">Umum</translation>
 -</translationbundle>
@@ -1308,8 +1294,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
-@@ -1118,4 +1118,21 @@ Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te gev
- <translation id="982182592107339124">Hiermee worden de gegevens voor alle sites gewist, inclusief:</translation>
+@@ -994,4 +994,21 @@ Zo kunnen sommige websites op dit verzoek reageren door advertenties weer te gev
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Alle tabbladen sluiten</translation>
  <translation id="987264212798334818">Algemeen</translation>
 -</translationbundle>
@@ -1335,8 +1321,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
-@@ -1118,4 +1118,21 @@ Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg
- <translation id="982182592107339124">Dette fører til at dataene for alle nettsteder slettes, deriblant disse:</translation>
+@@ -994,4 +994,21 @@ Noen nettsteder kan for eksempel svare på denne forespørselen ved å vise deg
+ <translation id="981121421437150478">Uten nett</translation>
  <translation id="983192555821071799">Lukk alle faner</translation>
  <translation id="987264212798334818">Generelt</translation>
 -</translationbundle>
@@ -1362,8 +1348,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
-@@ -1118,4 +1118,21 @@ Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy b
- <translation id="982182592107339124">Spowoduje to usunięcie danych wszystkich witryn, w tym:</translation>
+@@ -994,4 +994,21 @@ Na przykład niektóre strony mogą na nie zareagować, wyświetlając reklamy b
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Zamknij wszystkie karty</translation>
  <translation id="987264212798334818">Ogólne</translation>
 -</translationbundle>
@@ -1389,8 +1375,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
-@@ -1119,4 +1119,21 @@ Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que
- <translation id="982182592107339124">Essa ação limpará os dados de todos os sites, incluindo:</translation>
+@@ -995,4 +995,21 @@ Por exemplo, alguns sites podem responder a esse pedido mostrando anúncios que
+ <translation id="981121421437150478">Off-line</translation>
  <translation id="983192555821071799">Fechar todas as guias</translation>
  <translation id="987264212798334818">Geral</translation>
 -</translationbundle>
@@ -1416,8 +1402,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
-@@ -1118,4 +1118,21 @@ Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios
- <translation id="982182592107339124">Esta ação limpa os dados de todos os sites, incluindo:</translation>
+@@ -994,4 +994,21 @@ Por exemplo, alguns Sites podem responder a este pedido ao mostrar-lhe anúncios
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Fechar todos os separadores</translation>
  <translation id="987264212798334818">Geral</translation>
 -</translationbundle>
@@ -1443,8 +1429,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
-@@ -1118,4 +1118,21 @@ De exemplu, unele site-uri pot răspunde la această solicitare afișând anunț
- <translation id="982182592107339124">Astfel, se vor șterge datele pentru toate site-urile, inclusiv:</translation>
+@@ -994,4 +994,21 @@ De exemplu, unele site-uri pot răspunde la această solicitare afișând anunț
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Închide toate filele</translation>
  <translation id="987264212798334818">General</translation>
 -</translationbundle>
@@ -1470,8 +1456,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">Будут удалены данные всех сайтов, в том числе:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">Офлайн</translation>
  <translation id="983192555821071799">Закрыть все вкладки</translation>
  <translation id="987264212798334818">Общие</translation>
 -</translationbundle>
@@ -1497,8 +1483,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
-@@ -1118,4 +1118,21 @@ Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobr
- <translation id="982182592107339124">Vymažete dáta všetkých webov vrátane týchto:</translation>
+@@ -994,4 +994,21 @@ Niektoré weby môžu napríklad na túto žiadosť reagovať tak, že vám zobr
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Zavrieť všetky karty</translation>
  <translation id="987264212798334818">Všeobecné</translation>
 -</translationbundle>
@@ -1524,8 +1510,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
-@@ -1118,4 +1118,21 @@ Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažej
- <translation id="982182592107339124">S tem bodo izbrisani podatki za vsa spletna mesta, vključno s temi:</translation>
+@@ -994,4 +994,21 @@ Nekatera spletna mesta se lahko na primer na zahtevo odzovejo tako, da prikažej
+ <translation id="981121421437150478">Brez povezave</translation>
  <translation id="983192555821071799">Zapri vse zavihke</translation>
  <translation id="987264212798334818">Splošno</translation>
 -</translationbundle>
@@ -1551,8 +1537,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
-@@ -1118,4 +1118,21 @@ Google налог можда има друге облике историје п
- <translation id="982182592107339124">Овим бришете податке за све сајтове, укључујући:</translation>
+@@ -994,4 +994,21 @@ Google налог можда има друге облике историје п
+ <translation id="981121421437150478">Офлајн</translation>
  <translation id="983192555821071799">Затвори све картице</translation>
  <translation id="987264212798334818">Опште</translation>
 -</translationbundle>
@@ -1578,8 +1564,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
-@@ -1118,4 +1118,21 @@ Vissa webbplatser kan till exempel svara på begäran genom att visa annonser so
- <translation id="982182592107339124">Åtgärden raderar data för alla webbplatser, inklusive:</translation>
+@@ -994,4 +994,21 @@ Vissa webbplatser kan till exempel svara på begäran genom att visa annonser so
+ <translation id="981121421437150478">Offline</translation>
  <translation id="983192555821071799">Stäng alla flikar</translation>
  <translation id="987264212798334818">Allmänt</translation>
 -</translationbundle>
@@ -1605,8 +1591,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
-@@ -1118,4 +1118,21 @@ Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo
- <translation id="982182592107339124">Hatua hii itafuta data ya tovuti zote, ikiwa ni pamoja na:</translation>
+@@ -994,4 +994,21 @@ Kwa mfano, baadhi ya tovuti zinaweza kujibu ombi hili kwa kukuonyesha matangazo
+ <translation id="981121421437150478">Nje ya mtandao</translation>
  <translation id="983192555821071799">Funga vichupo vyote</translation>
  <translation id="987264212798334818">Jumla</translation>
 -</translationbundle>
@@ -1632,8 +1618,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">இதனால் எல்லா தளங்களுக்கான தரவும் அழிக்கப்படும், இதில் அடங்குபவை:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ஆஃப்லைன்</translation>
  <translation id="983192555821071799">எல்லா தாவல்களையும் மூடு</translation>
  <translation id="987264212798334818">பொது</translation>
 -</translationbundle>
@@ -1659,8 +1645,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">ఇది వీటితో సహా అన్ని సైట్‌ల డేటాను తీసివేస్తుంది:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ఆఫ్‌లైన్</translation>
  <translation id="983192555821071799">అన్ని ట్యాబ్‌లను మూసివేయి</translation>
  <translation id="987264212798334818">సాధారణం</translation>
 -</translationbundle>
@@ -1686,8 +1672,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">การดำเนินการนี้จะล้างข้อมูลสำหรับทุกเว็บไซต์ รวมถึง</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">ออฟไลน์</translation>
  <translation id="983192555821071799">ปิดแท็บทั้งหมด</translation>
  <translation id="987264212798334818">ทั่วไป</translation>
 -</translationbundle>
@@ -1713,8 +1699,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
-@@ -1118,4 +1118,21 @@ Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlay
- <translation id="982182592107339124">Bu işlem, aşağıdakiler de dahil olmak üzere tüm sitelere ilişkin verileri temizleyecek:</translation>
+@@ -994,4 +994,21 @@ Bu ayarı değiştirmek için <ph name="BEGIN_LINK" />senkronizasyonu sıfırlay
+ <translation id="981121421437150478">Çevrimdışı</translation>
  <translation id="983192555821071799">Tüm sekmeleri kapat</translation>
  <translation id="987264212798334818">Genel</translation>
 -</translationbundle>
@@ -1740,8 +1726,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">Буде видалено дані всіх сайтів, зокрема:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">Офлайн</translation>
  <translation id="983192555821071799">Закрити всі вкладки</translation>
  <translation id="987264212798334818">Загальне</translation>
 -</translationbundle>
@@ -1767,8 +1753,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
-@@ -1118,4 +1118,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="982182592107339124">Thao tác này sẽ xóa dữ liệu của tất cả các trang web, bao gồm:</translation>
+@@ -994,4 +994,21 @@ Ví dụ: một số trang web có thể phản hồi yêu cầu này bằng cá
+ <translation id="981121421437150478">Ngoại tuyến</translation>
  <translation id="983192555821071799">Đóng tất cả các tab</translation>
  <translation id="987264212798334818">Chung</translation>
 -</translationbundle>
@@ -1794,8 +1780,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">这会清除所有网站的数据,包括:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">离线</translation>
  <translation id="983192555821071799">关闭所有标签页</translation>
  <translation id="987264212798334818">常规</translation>
 -</translationbundle>
@@ -1821,8 +1807,8 @@ diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strin
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
-@@ -1118,4 +1118,21 @@
- <translation id="982182592107339124">這會清除所有網站的資料,包括:</translation>
+@@ -994,4 +994,21 @@
+ <translation id="981121421437150478">離線</translation>
  <translation id="983192555821071799">關閉所有分頁</translation>
  <translation id="987264212798334818">一般</translation>
 -</translationbundle>

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

@@ -13,7 +13,7 @@ This reverts commit 4e598f38a0e6dd3dbede009c6a99b2a520a94e1f.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2333,6 +2333,10 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2554,6 +2554,10 @@ const FeatureEntry kFeatureEntries[] = {
       SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
  #endif  // OS_MACOSX
  #if defined(OS_ANDROID)
@@ -27,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
 --- a/chrome/browser/flag-metadata.json
 +++ b/chrome/browser/flag-metadata.json
-@@ -829,6 +829,11 @@
+@@ -894,6 +894,11 @@
      // enable-javascript-harmony.
      "expiry_milestone": -1
    },
@@ -42,9 +42,9 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
 diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
 --- a/chrome/browser/flag_descriptions.cc
 +++ b/chrome/browser/flag_descriptions.cc
-@@ -2584,6 +2584,10 @@ const char kProcessSharingWithStrictSiteInstancesDescription[] =
- const char kQueryTilesName[] = "Show query tiles";
- const char kQueryTilesDescription[] = "Shows query tiles in Chrome";
+@@ -2716,6 +2716,10 @@ const char kQueryTilesInstantFetchName[] = "Query tile instant fetch";
+ const char kQueryTilesInstantFetchDescription[] =
+     "Immediately schedule background task to fetch query tiles";
  
 +const char kPullToRefreshEffectName[] = "The pull-to-refresh effect";
 +const char kPullToRefreshEffectDescription[] =
@@ -56,9 +56,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
-@@ -1490,6 +1490,9 @@ extern const char kProcessSharingWithStrictSiteInstancesDescription[];
- extern const char kQueryTilesName[];
- extern const char kQueryTilesDescription[];
+@@ -1584,6 +1584,9 @@ extern const char kQueryTilesCountryCodeIndonesia[];
+ extern const char kQueryTilesInstantFetchName[];
+ extern const char kQueryTilesInstantFetchDescription[];
  
 +extern const char kPullToRefreshEffectName[];
 +extern const char kPullToRefreshEffectDescription[];

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

@@ -61,7 +61,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i
 diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
 --- a/gpu/config/gpu_util.cc
 +++ b/gpu/config/gpu_util.cc
-@@ -109,6 +109,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
+@@ -110,6 +110,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
  #if !defined(OS_ANDROID)
    return kGpuFeatureStatusDisabled;
  #else
@@ -71,7 +71,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
    if (!gpu_preferences.enable_android_surface_control)
      return kGpuFeatureStatusDisabled;
  
-@@ -357,6 +360,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
+@@ -358,6 +361,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
      gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] =
          kGpuFeatureStatusBlacklisted;
    }
@@ -97,7 +97,7 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
 diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
 --- a/gpu/ipc/service/gpu_init.cc
 +++ b/gpu/ipc/service/gpu_init.cc
-@@ -524,6 +524,12 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
+@@ -522,6 +522,12 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
    ui::OzonePlatform::GetInstance()->AfterSandboxEntry();
  #endif
  
@@ -110,7 +110,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
  #if defined(USE_OZONE)
    gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
        std::move(supported_buffer_formats_for_texturing);
-@@ -550,6 +556,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
+@@ -548,6 +554,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
  
    default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
  

+ 26 - 22
build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch

@@ -4,14 +4,14 @@ Subject: Show site settings for cookies, javascript and ads
 
 Avoid displaying info about intrusive ads
 ---
- .../site_settings/SingleWebsiteSettings.java  | 46 +++++++++----------
- .../chrome/browser/site_settings/Website.java | 20 ++++++++
- 2 files changed, 42 insertions(+), 24 deletions(-)
+ .../site_settings/SingleWebsiteSettings.java  | 50 +++++++++----------
+ .../browser_ui/site_settings/Website.java     | 20 ++++++++
+ 2 files changed, 44 insertions(+), 26 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleWebsiteSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleWebsiteSettings.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleWebsiteSettings.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/SingleWebsiteSettings.java
-@@ -70,6 +70,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
+--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
+@@ -68,6 +68,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
      // Buttons:
      public static final String PREF_RESET_SITE = "reset_site_button";
  
@@ -19,9 +19,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
      // Website permissions (if adding new, see hasPermissionsPreferences and resetSite below)
      // All permissions from the permissions preference category must be listed here.
      private static final String[] PERMISSION_PREFERENCE_KEYS = {
-@@ -347,7 +348,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
-                 } else if (i == ContentSettingException.Type.SOUND) {
-                     setUpSoundPreference(preference);
+@@ -350,7 +351,26 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+                 } else if (i == ContentSettingException.Type.JAVASCRIPT) {
+                     setUpJavascriptPreference(preference);
                  } else {
 -                    setUpListPreference(preference, mSite.getContentSettingPermission(i));
 +                    // some Bromite-specific overrides for the defaults
@@ -32,11 +32,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
 +                    if (permission == null) {
 +                       if (i == ContentSettingException.Type.COOKIE)
 +                          permission = WebsitePreferenceBridge.isCategoryEnabled(
++                                 getSiteSettingsClient().getBrowserContextHandle(),
 +                                 ContentSettingsType.COOKIES)
 +                                 ? ContentSettingValues.ALLOW
 +                                 : ContentSettingValues.BLOCK;
 +                       else if (i == ContentSettingException.Type.JAVASCRIPT)
 +                          permission = WebsitePreferenceBridge.isCategoryEnabled(
++                                 getSiteSettingsClient().getBrowserContextHandle(),
 +                                 ContentSettingsType.JAVASCRIPT)
 +                                 ? ContentSettingValues.ALLOW
 +                                 : ContentSettingValues.BLOCK;
@@ -45,14 +47,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
                  }
                  return;
              }
-@@ -635,17 +653,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -666,19 +686,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
      }
  
      private void setUpAdsInformationalBanner() {
 -        // Add the informational banner which shows at the top of the UI if ad blocking is
 -        // activated on this site.
 -        boolean adBlockingActivated = SiteSettingsCategory.adsCategoryEnabled()
--                && WebsitePreferenceBridge.getAdBlockingActivated(mSite.getAddress().getOrigin())
+-                && WebsitePreferenceBridge.getAdBlockingActivated(
+-                        getSiteSettingsClient().getBrowserContextHandle(),
+-                        mSite.getAddress().getOrigin())
 -                && findPreference(PERMISSION_PREFERENCE_KEYS[ContentSettingException.Type.ADS])
 -                        != null;
 -
@@ -65,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
      }
  
      private SiteSettingsCategory getWarningCategory() {
-@@ -724,6 +733,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -767,6 +776,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
          // TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are
          // effectively treating non-ALLOW values as BLOCK.
          int index = (value == ContentSettingValues.ALLOW ? 0 : 1);
@@ -73,14 +77,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
          listPreference.setValueIndex(index);
          listPreference.setOnPreferenceChangeListener(this);
          listPreference.setSummary("%s");
-@@ -793,22 +803,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
+@@ -855,22 +865,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment
              setUpListPreference(preference, null);
              return;
          }
 -        // If the ad blocker is activated, then this site will have ads blocked unless there is an
 -        // explicit permission disallowing the blocking.
--        boolean activated =
--                WebsitePreferenceBridge.getAdBlockingActivated(mSite.getAddress().getOrigin());
+-        boolean activated = WebsitePreferenceBridge.getAdBlockingActivated(
+-                getSiteSettingsClient().getBrowserContextHandle(), mSite.getAddress().getOrigin());
          @ContentSettingValues
          @Nullable
          Integer permission = mSite.getContentSettingPermission(ContentSettingException.Type.ADS);
@@ -96,12 +100,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/S
          // However, if the blocking is activated, we still want to show the permission, even if it
          // is in the default state.
          if (permission == null) {
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/Website.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/Website.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/Website.java
-@@ -197,6 +197,26 @@ public class Website implements Serializable {
-                         new ContentSettingException(ContentSettingsType.ADS,
-                                 getAddress().getOrigin(), ContentSettingValues.BLOCK, "");
+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,

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

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

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

@@ -11,7 +11,7 @@ Subject: Update i18n zh_CN support
 diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb
 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb
 +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
-@@ -233,4 +233,5 @@ Chromium 无法恢复您的设置。</translation>
+@@ -245,4 +245,5 @@ Chromium 无法恢复您的设置。</translation>
  <translation id="93478295209880648">Chromium 可能无法正常运行,因为它不再支持 Windows XP 和 Windows Vista</translation>
  <translation id="95514773681268843"><ph name="DOMAIN" /> 要求您必须先阅读并接受以下服务条款,才能使用此设备。这些条款不会扩大、修改或限制 Chromium 操作系统条款。</translation>
  <translation id="985602178874221306">The Chromium Authors</translation>
@@ -22,7 +22,7 @@ diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resour
 diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
 --- a/chrome/app/resources/generated_resources_zh-CN.xtb
 +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
-@@ -6227,4 +6227,8 @@
+@@ -6464,4 +6464,8 @@
  <translation id="995782501881226248">YouTube</translation>
  <translation id="996250603853062861">正在建立安全连接...</translation>
  <translation id="998747458861718449">检查(&amp;N)</translation>
@@ -36,7 +36,7 @@ diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/res
 diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
 +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
-@@ -1135,4 +1135,22 @@
+@@ -1011,4 +1011,22 @@
  <translation id="666268767214822976">当您在地址栏中输入查询内容时,使用联想查询服务显示相关查询和热门网站</translation>
  <translation id="8283853025636624853">正在同步到 <ph name="SYNC_ACCOUNT_USER_NAME" /></translation>
  <translation id="8981454092730389528">Google 活动控件</translation>

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

@@ -13,16 +13,16 @@ Subject: Use 4 tile rows, never show logo
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
-@@ -121,7 +121,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
-     /** Observer for overview mode. */
+@@ -110,7 +110,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
      private EmptyOverviewModeObserver mOverviewObserver;
+     private OverviewModeBehavior mOverviewModeBehavior;
  
 -    private boolean mSearchProviderHasLogo = true;
 +    private boolean mSearchProviderHasLogo = false;
      private boolean mSearchProviderIsGoogle;
  
      private boolean mInitialized;
-@@ -530,7 +530,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+@@ -526,7 +526,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
                  && mInitialized) {
              return;
          }
@@ -31,12 +31,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
          mSearchProviderIsGoogle = isGoogle;
  
          updateTileGridPadding();
-@@ -796,7 +796,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
-     }
- 
-     private static int getMaxTileRows() {
--        return 2;
-+        return 4;
+@@ -797,7 +797,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
+         Integer maxRows = mQueryTileSection == null
+                 ? null
+                 : mQueryTileSection.getMaxRowsForMostVisitedTiles();
+-        return maxRows == null ? 2 : maxRows.intValue();
++        return maxRows == null ? 4 : maxRows.intValue();
      }
  
      /**

+ 53 - 75
build/patches/Use-dummy-DFM-installer.patch

@@ -6,20 +6,20 @@ Subject: Use dummy DFM installer
  .../chrome/browser/ChromeApplication.java     |  4 --
  components/module_installer/android/BUILD.gn  |  2 -
  .../module_installer/engine/FakeEngine.java   | 16 +-----
- .../engine/SplitCompatEngine.java             | 49 ++++++++++---------
- .../engine/SplitCompatEngineFacade.java       | 22 ++-------
+ .../engine/SplitCompatEngine.java             | 53 ++++---------------
+ .../engine/SplitCompatEngineFacade.java       | 22 ++------
  .../module_installer/logger/Logger.java       | 16 ++----
- .../logger/PlayCoreLogger.java                | 36 ++------------
- .../logger/SplitAvailabilityLogger.java       | 28 -----------
- .../logger/SplitInstallStatusLogger.java      | 30 +-----------
+ .../logger/PlayCoreLogger.java                | 36 ++-----------
+ .../logger/SplitAvailabilityLogger.java       | 28 ----------
+ .../logger/SplitInstallStatusLogger.java      | 30 +----------
  .../module_installer/util/ModuleUtil.java     |  5 --
  .../util/SplitCompatInitializer.java          |  6 ---
- 11 files changed, 39 insertions(+), 175 deletions(-)
+ 11 files changed, 23 insertions(+), 195 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
-@@ -132,10 +132,6 @@ public class ChromeApplication extends Application {
+@@ -122,10 +122,6 @@ public class ChromeApplication extends Application {
              }
          }
  
@@ -33,7 +33,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplicati
 diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
 --- a/components/module_installer/android/BUILD.gn
 +++ b/components/module_installer/android/BUILD.gn
-@@ -20,12 +20,10 @@ android_library("module_installer_java") {
+@@ -20,13 +20,11 @@ android_library("module_installer_java") {
      "java/src/org/chromium/components/module_installer/logger/Logger.java",
      "java/src/org/chromium/components/module_installer/logger/PlayCoreLogger.java",
      "java/src/org/chromium/components/module_installer/logger/SplitAvailabilityLogger.java",
@@ -42,6 +42,7 @@ diff --git a/components/module_installer/android/BUILD.gn b/components/module_in
      "java/src/org/chromium/components/module_installer/observer/ActivityObserver.java",
      "java/src/org/chromium/components/module_installer/observer/ActivityObserverFacade.java",
      "java/src/org/chromium/components/module_installer/observer/InstallerObserver.java",
+     "java/src/org/chromium/components/module_installer/util/ActivityObserverUtil.java",
 -    "java/src/org/chromium/components/module_installer/util/CrashKeyRecorder.java",
      "java/src/org/chromium/components/module_installer/util/ModuleUtil.java",
      "java/src/org/chromium/components/module_installer/util/SplitCompatInitializer.java",
@@ -82,79 +83,71 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
 +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/engine/SplitCompatEngine.java
-@@ -8,10 +8,10 @@ import android.app.Activity;
+@@ -8,11 +8,6 @@ import android.app.Activity;
  
  import androidx.annotation.VisibleForTesting;
  
 -import com.google.android.play.core.splitinstall.SplitInstallException;
-+/*import com.google.android.play.core.splitinstall.SplitInstallException;
- import com.google.android.play.core.splitinstall.SplitInstallRequest;
- import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener;
+-import com.google.android.play.core.splitinstall.SplitInstallRequest;
+-import com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener;
 -import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;
-+import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus;*/
- 
+-
  import org.chromium.base.ThreadUtils;
  
-@@ -27,41 +27,42 @@ import java.util.Set;
-  * Install engine that uses Play Core and SplitCompat to install modules.
+ import java.util.ArrayList;
+@@ -28,7 +23,6 @@ import java.util.Set;
   */
  class SplitCompatEngine implements InstallEngine {
--    private final SplitCompatEngineFacade mFacade;
+     private final SplitCompatEngineFacade mFacade;
 -    private final SplitInstallStateUpdatedListener mUpdateListener = getStatusUpdateListener();
-+/*    private final SplitCompatEngineFacade mFacade;
-+    private final SplitInstallStateUpdatedListener mUpdateListener = getStatusUpdateListener();*/
      private static final Map<String, List<InstallListener>> sSessions = new HashMap<>();
  
      public SplitCompatEngine() {
--        this(new SplitCompatEngineFacade());
-+//        this(new SplitCompatEngineFacade());
-     }
- 
--    public SplitCompatEngine(SplitCompatEngineFacade facade) {
-+/*    public SplitCompatEngine(SplitCompatEngineFacade facade) {
-         mFacade = facade;
-         mFacade.initApplicationContext(this);
--    }
-+    }*/
- 
-     @Override
-     public void initActivity(Activity activity) {
--        mFacade.installActivity(activity);
-+//        mFacade.installActivity(activity);
-     }
+@@ -46,49 +40,20 @@ class SplitCompatEngine implements InstallEngine {
  
      @Override
      public boolean isInstalled(String moduleName) {
 -        Set<String> installedModules = mFacade.getSplitManager().getInstalledModules();
 -        return installedModules.contains(moduleName);
-+//        Set<String> installedModules = mFacade.getSplitManager().getInstalledModules();
-+//        return installedModules.contains(moduleName);
-+          return false;
++       return false;
      }
  
      @Override
      public void installDeferred(String moduleName) {
 -        mFacade.getSplitManager().deferredInstall(Collections.singletonList(moduleName));
--        mFacade.getLogger().logRequestDeferredStart(moduleName);
-+//        mFacade.getSplitManager().deferredInstall(Collections.singletonList(moduleName));
-+//        mFacade.getLogger().logRequestDeferredStart(moduleName);
+         mFacade.getLogger().logRequestDeferredStart(moduleName);
      }
  
      @Override
      public void install(String moduleName, InstallListener listener) {
          ThreadUtils.assertOnUiThread();
- 
+-
 -        if (sSessions.containsKey(moduleName)) {
-+/*        if (sSessions.containsKey(moduleName)) {
-             sSessions.get(moduleName).add(listener);
-             return;
-         }
-@@ -86,10 +87,10 @@ class SplitCompatEngine implements InstallEngine {
-             notifyListeners(moduleName, false);
-         });
- 
+-            sSessions.get(moduleName).add(listener);
+-            return;
+-        }
+-
+-        registerUpdateListener();
+-
+-        sSessions.put(moduleName, new ArrayList<InstallListener>() {
+-            { add(listener); }
+-        });
+-
+-        SplitInstallRequest request = mFacade.createSplitInstallRequest(moduleName);
+-
+-        mFacade.getSplitManager().startInstall(request).addOnFailureListener(ex -> {
+-            // TODO(fredmello): look into potential issues with mixing split error code
+-            // with our logger codes - fix accordingly.
+-            mFacade.getLogger().logRequestFailure(moduleName,
+-                    ex instanceof SplitInstallException
+-                            ? ((SplitInstallException) ex).getErrorCode()
+-                            : mFacade.getLogger().getUnknownRequestErrorCode());
+-
+-            String message = String.format(Locale.US, "Request Exception: %s", ex.getMessage());
+-            notifyListeners(moduleName, false);
+-        });
+-
 -        mFacade.getLogger().logRequestStart(moduleName);
-+        mFacade.getLogger().logRequestStart(moduleName); */
      }
  
 -    private SplitInstallStateUpdatedListener getStatusUpdateListener() {
@@ -162,7 +155,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
          return state -> {
              if (state.moduleNames().size() != 1) {
                  throw new UnsupportedOperationException("Only one module supported.");
-@@ -110,35 +111,35 @@ class SplitCompatEngine implements InstallEngine {
+@@ -109,12 +74,12 @@ class SplitCompatEngine implements InstallEngine {
  
              mFacade.getLogger().logStatus(moduleName, status);
          };
@@ -178,16 +171,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
  
          sSessions.remove(moduleName);
          unregisterUpdateListener();
-     }
- 
-     protected void notifyListener(InstallListener listener, Boolean success) {
--        if (success) {
-+/*        if (success) {
-             mFacade.notifyObservers();
--        }
-+        }*/
- 
-         listener.onComplete(success);
+@@ -129,15 +94,15 @@ class SplitCompatEngine implements InstallEngine {
      }
  
      private void registerUpdateListener() {
@@ -221,12 +205,12 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 -import com.google.android.play.core.splitinstall.SplitInstallRequest;
 +import com.google.android.play.core.splitinstall.SplitInstallRequest;*/
  
- import org.chromium.base.ApplicationStatus;
  import org.chromium.base.ContextUtils;
-@@ -26,16 +26,13 @@ import org.chromium.components.module_installer.util.ModuleUtil;
+ import org.chromium.components.module_installer.logger.Logger;
+@@ -21,16 +21,13 @@ import org.chromium.components.module_installer.util.ModuleUtil;
+  * cannot be easily mocked and simplify the engine's design.
+  */
  class SplitCompatEngineFacade {
-     private InstallerObserver mObserver;
- 
 -    private final SplitInstallManager mSplitManager;
      private final Logger mLogger;
  
@@ -242,7 +226,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
          mLogger = umaLogger;
      }
  
-@@ -43,10 +40,6 @@ class SplitCompatEngineFacade {
+@@ -38,21 +35,10 @@ class SplitCompatEngineFacade {
          return mLogger;
      }
  
@@ -250,12 +234,6 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 -        return mSplitManager;
 -    }
 -
-     public void initApplicationContext(InstallEngine engine) {
-         ModuleUtil.initApplication();
- 
-@@ -57,16 +50,9 @@ class SplitCompatEngineFacade {
-     }
- 
      public void installActivity(Activity activity) {
 -        // Note that SplitCompat (install) needs to be called on the Application Context prior
 -        // to calling this method - this is guaranteed by the behavior of SplitCompatEngine.
@@ -263,7 +241,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
      }
  
      public void notifyObservers() {
-         mObserver.onModuleInstalled();
+         ModuleUtil.notifyModuleInstalled();
      }
 -
 -    public SplitInstallRequest createSplitInstallRequest(String moduleName) {
@@ -506,7 +484,7 @@ diff --git a/components/module_installer/android/java/src/org/chromium/component
 diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
 --- a/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
 +++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/util/ModuleUtil.java
-@@ -41,11 +41,6 @@ public class ModuleUtil {
+@@ -27,11 +27,6 @@ public class ModuleUtil {
       * Updates the CrashKey report containing modules currently present.
       */
      public static void updateCrashKeys() {

+ 10 - 9
build/patches/autofill-disable-autofill-download-manager.patch

@@ -4,14 +4,14 @@ Subject: autofill: disable autofill download manager
 
 Disables the autofill download manager (trk:158).
 ---
- .../core/browser/autofill_download_manager.cc | 60 +++----------------
+ .../core/browser/autofill_download_manager.cc | 61 +++----------------
  .../autofill/core/browser/autofill_manager.cc | 18 ------
- 2 files changed, 7 insertions(+), 71 deletions(-)
+ 2 files changed, 7 insertions(+), 72 deletions(-)
 
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
-@@ -66,7 +66,6 @@ constexpr std::pair<int, int> kAutofillExperimentRanges[] = {
+@@ -67,7 +67,6 @@ constexpr std::pair<int, int> kAutofillExperimentRanges[] = {
      {3314445, 3314448}, {3314854, 3314883},
  };
  
@@ -19,7 +19,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  const size_t kAutofillDownloadManagerMaxFormCacheSize = 16;
  const size_t kMaxFieldsPerQueryRequest = 100;
  
-@@ -522,35 +521,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
+@@ -524,35 +523,6 @@ bool GetUploadPayloadForApi(const AutofillUploadContents& upload,
    return upload_request.SerializeToString(payload);
  }
  
@@ -55,7 +55,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  // Gets HTTP body payload for API POST request.
  bool GetAPIBodyPayload(const std::string& payload,
                         AutofillDownloadManager::RequestType type,
-@@ -774,6 +744,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
+@@ -776,6 +746,7 @@ size_t AutofillDownloadManager::GetPayloadLength(
  
  std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
      const FormRequestData& request_data) const {
@@ -63,7 +63,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
    std::string method("POST");
    std::string query_str;
  
-@@ -796,35 +767,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -798,36 +769,18 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    GURL url = autofill_server_url_
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .ReplaceComponents(replacements);
@@ -83,7 +83,8 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
 -  std::string method = "POST";
 -
 -  if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
--    if (GetPayloadLength(request_data.payload) <= kMaxAPIQueryGetSize) {
+-    if (GetPayloadLength(request_data.payload) <= kMaxAPIQueryGetSize &&
+-        base::FeatureList::IsEnabled(features::kAutofillCacheQueryResponses)) {
 -      resource_id = request_data.payload;
 -      method = "GET";
 -      UMA_HISTOGRAM_BOOLEAN("Autofill.Query.ApiUrlIsTooLong", false);
@@ -108,7 +109,7 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
 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
-@@ -184,19 +184,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
+@@ -186,19 +186,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
    }
  }
  
@@ -128,7 +129,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  ValuePatternsMetric GetValuePattern(const base::string16& value) {
    if (IsUPIVirtualPaymentAddress(value))
      return ValuePatternsMetric::kUpiVpa;
-@@ -1578,11 +1565,6 @@ AutofillManager::AutofillManager(
+@@ -1624,11 +1611,6 @@ AutofillManager::AutofillManager(
                                      : std::make_unique<CreditCardAccessManager>(
                                            driver, client_, personal_data_,
                                            credit_card_form_event_logger_.get());

+ 6 - 25
build/patches/build-remove-calling-untrusted-hooks.patch

@@ -5,8 +5,8 @@ Subject: build: remove calling untrusted hooks
 Avoid downloading untrusted executables and wasting time with a
 sysroot.
 ---
- DEPS | 96 ++----------------------------------------------------------
- 1 file changed, 3 insertions(+), 93 deletions(-)
+ DEPS | 84 +++---------------------------------------------------------
+ 1 file changed, 3 insertions(+), 81 deletions(-)
 
 diff --git a/DEPS b/DEPS
 --- a/DEPS
@@ -20,7 +20,7 @@ diff --git a/DEPS b/DEPS
  
    # By default, do not check out src-internal. This can be overridden e.g. with
    # custom_vars.
-@@ -112,8 +112,8 @@ vars = {
+@@ -115,8 +115,8 @@ vars = {
    # support for other platforms may be added in the future.
    'checkout_openxr' : 'checkout_win',
  
@@ -31,7 +31,7 @@ diff --git a/DEPS b/DEPS
  
    # By default, do not check out WebKit for iOS, as it is not needed unless
    # running against ToT WebKit rather than system WebKit. This can be overridden
-@@ -3609,49 +3609,6 @@ hooks = [
+@@ -4044,49 +4044,6 @@ hooks = [
          'sync', '--extract',
      ],
    },
@@ -81,26 +81,7 @@ diff --git a/DEPS b/DEPS
    {
      # Case-insensitivity for the Win SDK. Must run before win_toolchain below.
      'name': 'ciopfs_linux',
-@@ -3679,18 +3636,6 @@ hooks = [
-     'condition': 'checkout_mac',
-     'action': ['python', 'src/build/mac_toolchain.py'],
-   },
--  # Pull binutils for linux, enabled debug fission for faster linking /
--  # debugging when used with clang on Ubuntu Precise.
--  # https://code.google.com/p/chromium/issues/detail?id=352046
--  {
--    'name': 'binutils',
--    'pattern': 'src/third_party/binutils',
--    'condition': 'host_os == "linux" and host_cpu != "mips64"',
--    'action': [
--        'python',
--        'src/third_party/binutils/download.py',
--    ],
--  },
-   {
-     # Update the prebuilt clang toolchain.
-     # Note: On Win, this should run after win_toolchain, as it may use it.
-@@ -3786,18 +3731,6 @@ hooks = [
+@@ -4209,18 +4166,6 @@ hooks = [
                  '-s', 'src/buildtools/mac/clang-format.sha1',
      ],
    },
@@ -119,7 +100,7 @@ diff --git a/DEPS b/DEPS
    # Pull rc binaries using checked-in hashes.
    {
      'name': 'rc_win',
-@@ -3823,29 +3756,6 @@ hooks = [
+@@ -4246,29 +4191,6 @@ hooks = [
                  '-s', 'src/build/toolchain/win/rc/mac/rc.sha1',
      ],
    },

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

@@ -18,9 +18,9 @@ diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.
 -      InfoBarService::FromWebContents(web_contents());
 -  AdsBlockedInfobarDelegate::Create(infobar_service);
 -#endif
-   TabSpecificContentSettings* content_settings =
-       TabSpecificContentSettings::FromWebContents(web_contents());
-   content_settings->OnContentBlocked(ContentSettingsType::ADS);
+   content_settings::TabSpecificContentSettings* content_settings =
+       content_settings::TabSpecificContentSettings::FromWebContents(
+           web_contents());
 -- 
 2.17.1
 

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

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

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

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

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

@@ -21,7 +21,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHe
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.task.AsyncTask;
-@@ -61,23 +57,7 @@ public class SigninHelper {
+@@ -62,23 +58,7 @@ public class SigninHelper {
          @Override
          public List<String> getAccountChangeEvents(
                  Context context, int index, String accountName) {

+ 40 - 15
build/patches/kill-GCM.patch

@@ -3,6 +3,7 @@ Date: Fri, 22 Jun 2018 17:11:38 +0200
 Subject: kill GCM
 
 ---
+ ...ystem_webview_apk.AndroidManifest.expected |   7 -
  chrome/android/BUILD.gn                       |   1 -
  chrome/android/chrome_java_sources.gni        |   6 -
  chrome/android/java/AndroidManifest.xml       |  62 ------
@@ -20,12 +21,36 @@ Subject: kill GCM
  third_party/cacheinvalidation/BUILD.gn        |   6 -
  .../contrib/MultiplexingGcmListener.java      |  91 +-------
  .../channel/AndroidNetworkChannel.java        |   6 +-
- 17 files changed, 9 insertions(+), 489 deletions(-)
+ 18 files changed, 9 insertions(+), 496 deletions(-)
 
+diff --git a/android_webview/java/system_webview_apk.AndroidManifest.expected b/android_webview/java/system_webview_apk.AndroidManifest.expected
+--- a/android_webview/java/system_webview_apk.AndroidManifest.expected
++++ b/android_webview/java/system_webview_apk.AndroidManifest.expected
+@@ -21,10 +21,6 @@
+       android:multiArch="true"
+       android:name="org.chromium.android_webview.nonembedded.WebViewApkApplication"
+       android:use32bitAbi="true">
+-    <activity
+-        android:exported="false"
+-        android:name="com.google.android.gms.common.api.GoogleApiActivity"
+-        android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
+     <activity
+         android:icon="@drawable/icon_webview"
+         android:label="WebView
+@@ -59,9 +55,6 @@
+         android:targetActivity="org.chromium.android_webview.devui.MainActivity"
+         android:visibleToInstantApps="true"/>
+     <meta-data android:name="$PACKAGE.WebViewLibrary" android:value="libwebviewchromium.so"/>
+-    <meta-data
+-        android:name="com.google.android.gms.version"
+-        android:value="@integer/google_play_services_version"/>
+     <meta-data
+         android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
+         android:value="0"/>
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -425,7 +425,6 @@ android_library("chrome_java") {
+@@ -447,7 +447,6 @@ android_library("chrome_java") {
      "//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
      "//third_party/android_deps:javax_inject_javax_inject_java",
      "//third_party/android_media:android_media_java",
@@ -44,7 +69,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
    "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
    "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
-@@ -1415,11 +1414,6 @@ chrome_java_sources = [
+@@ -1384,11 +1383,6 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/services/AndroidChildAccountHelper.java",
    "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
    "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
@@ -54,8 +79,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
 -  "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
 -  "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
    "java/src/org/chromium/chrome/browser/settings/HyperlinkPreference.java",
-   "java/src/org/chromium/chrome/browser/settings/LearnMorePreference.java",
    "java/src/org/chromium/chrome/browser/settings/MainSettings.java",
+   "java/src/org/chromium/chrome/browser/settings/SettingsActivity.java",
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
@@ -82,7 +107,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
      {% block extra_uses_permissions %}
-@@ -1021,45 +1016,6 @@ by a child template that "extends" this file.
+@@ -949,45 +944,6 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
  
@@ -128,7 +153,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Android Notification service listener -->
          <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
              android:exported="false"/>
-@@ -1081,28 +1037,10 @@ by a child template that "extends" this file.
+@@ -1009,28 +965,10 @@ by a child template that "extends" this file.
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
@@ -326,9 +351,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
 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
-@@ -101,7 +101,6 @@ if (is_android) {
- 
-   junit_binary("components_background_task_scheduler_junit_tests") {
+@@ -103,7 +103,6 @@ if (is_android) {
+     bypass_platform_checks = true
+     testonly = true
      sources = [
 -      "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskServiceTest.java",
        "internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobServiceTest.java",
@@ -580,14 +605,14 @@ diff --git a/components/background_task_scheduler/internal/android/java/src/org/
 diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/android/BUILD.gn
 --- a/components/gcm_driver/android/BUILD.gn
 +++ b/components/gcm_driver/android/BUILD.gn
-@@ -13,7 +13,6 @@ android_library("gcm_driver_java") {
-     "//base:base_java",
+@@ -14,7 +14,6 @@ android_library("gcm_driver_java") {
      "//base:jni_java",
      "//content/public/android:content_java",
+     "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
 -    "//third_party/android_sdk:android_gcm_java",
-     "//third_party/jsr-305:jsr_305_javalib",
    ]
    annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+ 
 diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
 --- a/components/gcm_driver/instance_id/android/BUILD.gn
 +++ b/components/gcm_driver/instance_id/android/BUILD.gn
@@ -703,14 +728,14 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
 diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
 --- a/components/sync/android/BUILD.gn
 +++ b/components/sync/android/BUILD.gn
-@@ -12,7 +12,6 @@ android_library("sync_java") {
-     "//components/signin/core/browser/android:java",
+@@ -13,7 +13,6 @@ android_library("sync_java") {
      "//net/android:net_java",
      "//third_party/android_deps:androidx_annotation_annotation_java",
+     "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
 -    "//third_party/android_sdk:android_gcm_java",
      "//third_party/cacheinvalidation:cacheinvalidation_javalib",
      "//third_party/cacheinvalidation:cacheinvalidation_proto_java",
-     "//third_party/jsr-305:jsr_305_javalib",
+   ]
 diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
 --- a/third_party/cacheinvalidation/BUILD.gn
 +++ b/third_party/cacheinvalidation/BUILD.gn

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

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

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

@@ -23,7 +23,7 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
 diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
 --- a/chrome/android/java/res/values/dimens.xml
 +++ b/chrome/android/java/res/values/dimens.xml
-@@ -168,7 +168,6 @@
+@@ -161,7 +161,6 @@
      <dimen name="fre_button_padding">12dp</dimen>
      <dimen name="fre_margin">24dp</dimen>
      <dimen name="fre_image_height">120dp</dimen>

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

@@ -14,7 +14,7 @@ Barcode, face and text detection APIs
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -271,8 +271,6 @@ android_library("chrome_java") {
+@@ -284,8 +284,6 @@ android_library("chrome_java") {
      "$google_play_services_package:google_play_services_gcm_java",
      "$google_play_services_package:google_play_services_iid_java",
      "$google_play_services_package:google_play_services_tasks_java",
@@ -22,7 +22,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 -    "$google_play_services_package:google_play_services_vision_java",
      "//base:base_java",
      "//base:jni_java",
-     "//chrome/android/features/cablev2_authenticator:public_java",
+     "//chrome/android/features/keyboard_accessory:public_java",
 diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
 --- a/services/shape_detection/BUILD.gn
 +++ b/services/shape_detection/BUILD.gn

+ 1 - 1
build/patches/net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch

@@ -11,7 +11,7 @@ it as hidden as it was before?
 diff --git a/net/cert/x509_util.cc b/net/cert/x509_util.cc
 --- a/net/cert/x509_util.cc
 +++ b/net/cert/x509_util.cc
-@@ -238,7 +238,7 @@ bool GetTLSServerEndPointChannelBinding(const X509Certificate& certificate,
+@@ -239,7 +239,7 @@ bool GetTLSServerEndPointChannelBinding(const X509Certificate& certificate,
  }
  
  // RSA keys created by CreateKeyAndSelfSignedCert will be of this length.

+ 2 - 2
build/patches/prefs-always-prompt-for-download-directory-by-default.patch

@@ -29,7 +29,7 @@ TLDR: Do not let files sneak onto the disk too easily.
 diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc
 --- a/chrome/browser/download/download_prefs.cc
 +++ b/chrome/browser/download/download_prefs.cc
-@@ -243,7 +243,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+@@ -271,7 +271,7 @@ void DownloadPrefs::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kPromptForDownload,
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download
 +      true,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterStringPref(prefs::kDownloadExtensionsToOpen, std::string());
-   registry->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false);
+   registry->RegisterListPref(prefs::kDownloadExtensionsToOpenByPolicy, {});
 -- 
 2.17.1
 

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

@@ -10,7 +10,7 @@ Out with all those tracking cookies!
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -155,7 +155,7 @@ void ContentSettingsRegistry::Init() {
+@@ -140,7 +140,7 @@ void ContentSettingsRegistry::Init() {
    // WARNING: The string names of the permissions passed in below are used to
    // generate preference names and should never be changed!
  
@@ -18,7 +18,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
 +  Register(ContentSettingsType::COOKIES, "cookies", CONTENT_SETTING_SESSION_ONLY,
             WebsiteSettingsInfo::SYNCABLE,
             WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
-            ForceAllowedOrigins(),
+            ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
 -- 
 2.17.1
 

+ 6 - 6
build/patches/show-download-prompt-again-by-default.patch

@@ -6,16 +6,16 @@ Subject: show download prompt again by default
  .../chrome/browser/download/DownloadLocationCustomView.java   | 4 ----
  1 file changed, 4 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
-@@ -55,10 +55,6 @@ public class DownloadLocationCustomView
+diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
+--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
++++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/DownloadLocationCustomView.java
+@@ -54,10 +54,6 @@ public class DownloadLocationCustomView
      void initialize(@DownloadLocationDialogType int dialogType, File suggestedPath) {
          mDialogType = dialogType;
  
 -        // Automatically check "don't show again" the first time the user is seeing the dialog.
--        boolean isInitial =
--                DownloadUtils.getPromptForDownloadAndroid() == DownloadPromptStatus.SHOW_INITIAL;
+-        boolean isInitial = DownloadLocationDialogBridge.getPromptForDownloadAndroid()
+-                == DownloadPromptStatus.SHOW_INITIAL;
 -        mDontShowAgain.setChecked(isInitial);
          mDontShowAgain.setOnCheckedChangeListener(this);
  

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä