فهرست منبع

Release 75.0.3770.50

csagan5 6 سال پیش
والد
کامیت
ca366d39b9
81فایلهای تغییر یافته به همراه1045 افزوده شده و 720 حذف شده
  1. 3 0
      CHANGELOG.md
  2. 87 40
      build/filters/adblock_entries.h
  3. 1 1
      build/patches/AV1-codec-support.patch
  4. 1 1
      build/patches/Add-English-only-search-engine.patch
  5. 1 1
      build/patches/Add-Qwant-search-engine.patch
  6. 1 1
      build/patches/Add-StartPage-search-engine.patch
  7. 18 18
      build/patches/Add-a-flag-for-DNS-over-HTTPS.patch
  8. 15 15
      build/patches/Add-a-proxy-configuration-page.patch
  9. 30 30
      build/patches/Add-an-always-incognito-mode.patch
  10. 35 37
      build/patches/Add-bookmark-import-export-actions.patch
  11. 6 6
      build/patches/Add-custom-tab-intents-privacy-option.patch
  12. 3 3
      build/patches/Add-exit-menu-item.patch
  13. 13 13
      build/patches/Add-flag-to-configure-maximum-connections-per-host.patch
  14. 6 21
      build/patches/Add-flag-to-control-video-playback-resume-feature.patch
  15. 21 21
      build/patches/Add-flag-to-disable-IPv6-probes.patch
  16. 10 10
      build/patches/Add-flags-to-disable-device-motion-and-orientation-APIs.patch
  17. 3 3
      build/patches/Add-menu-option-to-toggle-global-Javascript-preference.patch
  18. 2 2
      build/patches/Add-option-to-not-persist-tabs-across-sessions.patch
  19. 5 5
      build/patches/Add-option-to-use-home-page-as-NTP.patch
  20. 11 11
      build/patches/Add-site-settings-option-for-session-only-cookies.patch
  21. 9 9
      build/patches/Allow-building-without-safebrowsing-for-Android.patch
  22. 31 15
      build/patches/Allow-playing-audio-in-background.patch
  23. 1 1
      build/patches/Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  24. 15 15
      build/patches/Always-show-home-page-settings.patch
  25. 1 1
      build/patches/AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
  26. 16 16
      build/patches/Bromite-adblock-engine.patch
  27. 3 3
      build/patches/Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch
  28. 12 11
      build/patches/Disable-NTP-remote-suggestions-by-default.patch
  29. 1 1
      build/patches/Disable-Omaha-update-checks.patch
  30. 1 1
      build/patches/Disable-WebRTC-by-default.patch
  31. 1 1
      build/patches/Disable-contextual-search-by-default.patch
  32. 32 43
      build/patches/Disable-data-saver.patch
  33. 210 0
      build/patches/Disable-dynamic-module-loading.patch
  34. 2 2
      build/patches/Disable-metrics-on-all-I-O-threads.patch
  35. 1 1
      build/patches/Disable-omission-of-URL-elements-in-Omnibox.patch
  36. 1 1
      build/patches/Disable-plugins-enumeration.patch
  37. 95 16
      build/patches/Disable-promos-displayed-in-bookmarks-manager.patch
  38. 2 2
      build/patches/Disable-references-to-fonts.googleapis.com.patch
  39. 1 1
      build/patches/Disable-seed-based-field-trials.patch
  40. 17 16
      build/patches/Disable-signin-and-data-saver-preferences.patch
  41. 1 1
      build/patches/Disable-signin-data-reduction-promos.patch
  42. 11 14
      build/patches/Disable-unused-permissions.patch
  43. 8 8
      build/patches/Do-not-grant-notifications-to-default-search-engine.patch
  44. 1 1
      build/patches/Do-not-store-passwords-by-default.patch
  45. 1 1
      build/patches/Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
  46. 1 1
      build/patches/Enable-history-requirement-of-user-gesture.patch
  47. 1 1
      build/patches/Enable-night-mode-menu-entry-by-default.patch
  48. 14 14
      build/patches/Enable-secure-DNS-mode-by-default-in-DnsTransaction.patch
  49. 2 2
      build/patches/Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
  50. 2 2
      build/patches/Hide-passwords-manager-link.patch
  51. 7 7
      build/patches/Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
  52. 14 14
      build/patches/Modify-default-preferences.patch
  53. 4 4
      build/patches/Open-YouTube-links-in-Bromite.patch
  54. 1 1
      build/patches/Punt-the-Widevine-version-string.patch
  55. 9 9
      build/patches/Remove-background-sync-and-translate-menu-options.patch
  56. 2 2
      build/patches/Remove-help-menu-item.patch
  57. 20 43
      build/patches/Remove-recent-tabs-signin.patch
  58. 2 2
      build/patches/Restore-classic-new-tab-page.patch
  59. 68 41
      build/patches/Rollback-android-minSdkVersion-from-19-KitKat-to-17-JellyBean.patch
  60. 1 1
      build/patches/Switch-to-fstack-protector-strong.patch
  61. 13 13
      build/patches/Use-4-tile-rows-never-show-logo.patch
  62. 1 1
      build/patches/Use-64-bit-WebView-processes.patch
  63. 1 1
      build/patches/autofill-disable-autofill-download-manager.patch
  64. 17 11
      build/patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
  65. 1 1
      build/patches/extensions-always-show-component-extensions-in-the-ext-list.patch
  66. 17 17
      build/patches/getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch
  67. 1 1
      build/patches/kill-Auth.patch
  68. 35 46
      build/patches/kill-GCM.patch
  69. 1 1
      build/patches/kill-TOS-and-metrics-opt-out.patch
  70. 3 3
      build/patches/kill-Translate.patch
  71. 1 1
      build/patches/kill-Vision.patch
  72. 2 2
      build/patches/safe_browsing-disable-cookie-transmission.patch
  73. 1 1
      build/patches/safe_browsing-disable-incident-reporting.patch
  74. 1 1
      build/patches/ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-Google.patch
  75. 3 3
      build/patches/ungoogled-chromium-Disable-Gaia.patch
  76. 1 1
      build/patches/ungoogled-chromium-Disable-domain-reliability.patch
  77. 1 1
      build/patches/ungoogled-chromium-Disable-profile-avatar-downloading.patch
  78. 37 37
      build/patches/ungoogled-chromium-Disable-safe-browsing.patch
  79. 1 1
      build/patches/ungoogled-chromium-Disable-translate-integration.patch
  80. 11 12
      build/patches/updater-disable-updater-pings.patch
  81. 2 1
      build/patches_list.txt

+ 3 - 0
CHANGELOG.md

@@ -1,3 +1,6 @@
+# 75.0.3770.50
+* disable dynamic module loading
+
 # 74.0.3729.162
 * remove recent tabs signin
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 87 - 40
build/filters/adblock_entries.h


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

@@ -69,7 +69,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
 +      sources += aom_ports_arm_sources
      }
      if (is_android) {
-       deps += [ "//third_party/android_tools:cpu_features" ]
+       deps += [ "//third_party/android_sdk:cpu_features" ]
 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

+ 1 - 1
build/patches/Add-English-only-search-engine.patch

@@ -13,7 +13,7 @@ disable from all its searches RLZ and field experiments querystring parameters.
 diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
 --- a/components/search_engines/prepopulated_engines.json
 +++ b/components/search_engines/prepopulated_engines.json
-@@ -126,6 +126,27 @@
+@@ -127,6 +127,27 @@
        "id": 1
      },
  

+ 1 - 1
build/patches/Add-Qwant-search-engine.patch

@@ -21,7 +21,7 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
    },
  
    // The following engines are included in country lists and are added to the
-@@ -187,6 +187,7 @@
+@@ -188,6 +188,7 @@
        "favicon_url": "https://www.qwant.com/favicon.ico",
        "search_url": "https://www.qwant.com/?q={searchTerms}&client=opensearch",
        "suggest_url": "https://api.qwant.com/api/suggest/?q={searchTerms}&client=opensearch",

+ 1 - 1
build/patches/Add-StartPage-search-engine.patch

@@ -11,7 +11,7 @@ Subject: Add StartPage search engine
 diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
 --- a/components/search_engines/prepopulated_engines.json
 +++ b/components/search_engines/prepopulated_engines.json
-@@ -197,6 +197,16 @@
+@@ -198,6 +198,16 @@
        "id": 56
      },
  

+ 18 - 18
build/patches/Add-a-flag-for-DNS-over-HTTPS.patch

@@ -25,7 +25,7 @@ See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-14.txt
 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
-@@ -398,6 +398,14 @@ const FeatureEntry::FeatureVariation kCCTModuleCacheVariations[] = {
+@@ -403,6 +403,14 @@ const FeatureEntry::FeatureVariation kCCTModuleCacheVariations[] = {
       base::size(kCCTModuleCache_ThirtyMinutes), nullptr},
  };
  
@@ -40,20 +40,20 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #endif  // OS_ANDROID
  
  const FeatureEntry::Choice kEnableGpuRasterizationChoices[] = {
-@@ -3400,6 +3408,9 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabSwitcherOnReturn,
-                                     kTabSwitcherOnReturnVariations,
-                                     "TabSwitcherOnReturn")},
+@@ -3456,6 +3464,9 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kEnableSyncUSSBookmarksName,
+      flag_descriptions::kEnableSyncUSSBookmarksDescription, kOsAll,
+      FEATURE_VALUE_TYPE(switches::kSyncUSSBookmarks)},
 +    {"enable-dns-over-https", flag_descriptions::kDnsOverHttpsName,
 +     flag_descriptions::kDnsOverHttpsDescription, kOsAndroid,
 +     MULTI_VALUE_TYPE(kDnsOverHttpsChoices)},
- #endif
  
-     {"enable-built-in-module-all", flag_descriptions::kBuiltInModuleAllName,
+ #if defined(OS_ANDROID)
+     {"incognito-strings", flag_descriptions::kIncognitoStringsName,
 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
-@@ -2209,6 +2209,9 @@ const char kAutoFetchOnNetErrorPageDescription[] =
+@@ -2199,6 +2199,9 @@ const char kAutoFetchOnNetErrorPageDescription[] =
      "When enabled, and navigation fails with an offline error, schedule a "
      "fetch of the page when online again.";
  
@@ -66,7 +66,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
-@@ -1306,6 +1306,9 @@ extern const char kAsyncDnsDescription[];
+@@ -1319,6 +1319,9 @@ extern const char kAsyncDnsDescription[];
  extern const char kAutoFetchOnNetErrorPageName[];
  extern const char kAutoFetchOnNetErrorPageDescription[];
  
@@ -87,7 +87,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/ssl/ssl_config_service_manager.h"
  #include "chrome/common/channel_info.h"
-@@ -122,6 +123,7 @@ void GetStubResolverConfig(
+@@ -124,6 +125,7 @@ void GetStubResolverConfig(
        if (!net::dns_util::IsValidDoHTemplate(
                doh_server_list[i].GetString(),
                doh_server_method_list[i].GetString())) {
@@ -95,7 +95,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
          continue;
        }
  
-@@ -401,15 +403,12 @@ SystemNetworkContextManager::SystemNetworkContextManager(
+@@ -399,15 +401,12 @@ SystemNetworkContextManager::SystemNetworkContextManager(
                                      base::Value(ShouldEnableAsyncDns()));
    base::ListValue default_doh_servers;
    base::ListValue default_doh_server_methods;
@@ -180,7 +180,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 --- a/net/dns/dns_transaction.cc
 +++ b/net/dns/dns_transaction.cc
-@@ -358,29 +358,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -360,29 +360,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
  
      DCHECK(url_request_context);
@@ -211,7 +211,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
      net_log_ = request_->net_log();
  
      if (use_post) {
-@@ -396,6 +374,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -398,6 +376,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
  
      request_->SetExtraRequestHeaders(extra_request_headers);
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
@@ -219,10 +219,10 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
                             LOAD_BYPASS_PROXY);
      request_->set_allow_credentials(false);
    }
-@@ -815,7 +794,7 @@ class DnsTransactionImpl : public DnsTransaction,
-         had_tcp_attempt_(false),
+@@ -813,7 +792,7 @@ class DnsTransactionImpl : public DnsTransaction,
          doh_attempt_(false),
          first_server_index_(0),
+         url_request_context_(url_request_context),
 -        request_priority_(DEFAULT_PRIORITY) {
 +        request_priority_(MAXIMUM_PRIORITY) {
      DCHECK(session_.get());
@@ -231,7 +231,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
 --- a/net/url_request/url_request_http_job.cc
 +++ b/net/url_request/url_request_http_job.cc
-@@ -425,17 +425,21 @@ void URLRequestHttpJob::Start() {
+@@ -338,17 +338,21 @@ void URLRequestHttpJob::Start() {
    // plugin could set a referrer although sending the referrer is inhibited.
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
  
@@ -259,7 +259,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -659,10 +663,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -571,10 +575,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
      } else {
        // Advertise "br" encoding only if transferred data is opaque to proxy.
        bool advertise_brotli = false;
@@ -276,7 +276,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
          }
        }
  
-@@ -680,7 +686,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -592,7 +598,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
      }
    }
  

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

@@ -79,18 +79,18 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
 --- a/chrome/browser/browser_resources.grd
 +++ b/chrome/browser/browser_resources.grd
 @@ -213,6 +213,8 @@
-         <include name="IDR_SNIPPETS_INTERNALS_CSS" file="resources\snippets_internals\snippets_internals.css" compress="gzip" type="BINDATA" />
-         <include name="IDR_SNIPPETS_INTERNALS_JS" file="resources\snippets_internals\snippets_internals.js" compress="gzip" type="BINDATA" />
-         <include name="IDR_SNIPPETS_INTERNALS_MOJO_JS" file="${root_gen_dir}\chrome\browser\ui\webui\snippets_internals\snippets_internals.mojom.js" use_base_dir="false" type="BINDATA" compress="gzip" />
+         <include name="IDR_SNIPPETS_INTERNALS_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\ui\webui\snippets_internals\snippets_internals.mojom-lite.js" use_base_dir="false" type="BINDATA" compress="gzip" />
+       </if>
+       <include name="IDR_SUPERVISED_USER_INTERNALS_HTML" file="resources\supervised_user_internals\supervised_user_internals.html" allowexternalscript="true" compress="gzip" type="BINDATA" />
 +        <include name="IDR_PROXY_CONFIG_HTML" file="resources\proxy_config.html" flattenhtml="true" type="BINDATA" compress="gzip" />
 +        <include name="IDR_PROXY_CONFIG_JS" file="resources\proxy_config.js" type="BINDATA" compress="gzip" />
-       </if>
-       <include name="IDR_SUPERVISED_USER_INTERNALS_HTML" file="resources\supervised_user_internals.html" allowexternalscript="true" compress="gzip" type="BINDATA" />
-       <include name="IDR_SUPERVISED_USER_INTERNALS_CSS" file="resources\supervised_user_internals.css" compress="gzip" type="BINDATA" />
+       <include name="IDR_SUPERVISED_USER_INTERNALS_CSS" file="resources\supervised_user_internals\supervised_user_internals.css" compress="gzip" type="BINDATA" />
+       <include name="IDR_SUPERVISED_USER_INTERNALS_JS" file="resources\supervised_user_internals\supervised_user_internals.js" compress="gzip" type="BINDATA" />
+       <if expr="enable_hangout_services_extension">
 diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
 --- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
 +++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
-@@ -161,7 +161,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
+@@ -160,7 +160,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
      SetValue(
          proxy_config::prefs::kProxy,
          std::make_unique<base::Value>(ProxyConfigDictionary::CreateFixedServers(
@@ -508,7 +508,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
-@@ -271,6 +271,8 @@ jumbo_split_static_library("ui") {
+@@ -272,6 +272,8 @@ jumbo_split_static_library("ui") {
      "webui/metrics_handler.h",
      "webui/net_export_ui.cc",
      "webui/net_export_ui.h",
@@ -520,15 +520,15 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
 diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
 +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -51,6 +51,7 @@
+@@ -52,6 +52,7 @@
  #include "chrome/browser/ui/webui/password_manager_internals/password_manager_internals_ui.h"
  #include "chrome/browser/ui/webui/policy_ui.h"
  #include "chrome/browser/ui/webui/predictors/predictors_ui.h"
 +#include "chrome/browser/ui/webui/proxy_config_ui.h"
  #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
- #include "chrome/browser/ui/webui/settings/md_settings_ui.h"
+ #include "chrome/browser/ui/webui/settings/settings_ui.h"
  #include "chrome/browser/ui/webui/settings_utils.h"
-@@ -386,6 +387,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
+@@ -388,6 +389,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
      return &NewWebUI<MemoryInternalsUI>;
    if (url.host_piece() == chrome::kChromeUINetExportHost)
      return &NewWebUI<NetExportUI>;
@@ -982,7 +982,7 @@ new file mode 100644
 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
 --- a/chrome/common/webui_url_constants.cc
 +++ b/chrome/common/webui_url_constants.cc
-@@ -177,6 +177,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
+@@ -178,6 +178,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
  const char kChromeUINativeScheme[] = "chrome-native";
  const char kChromeUIOfflineInternalsHost[] = "offline-internals";
  const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
@@ -991,7 +991,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
  const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
  const char kChromeUIWebApksHost[] = "webapks";
  #endif
-@@ -354,6 +356,7 @@ const char* const kChromeHostURLs[] = {
+@@ -398,6 +400,7 @@ const char* const kChromeHostURLs[] = {
      kChromeUIPasswordManagerInternalsHost,
      kChromeUIPolicyHost,
      kChromeUIPredictorsHost,
@@ -999,7 +999,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
      kChromeUIQuotaInternalsHost,
      kChromeUISignInInternalsHost,
      kChromeUISiteEngagementHost,
-@@ -388,6 +391,7 @@ const char* const kChromeHostURLs[] = {
+@@ -432,6 +435,7 @@ const char* const kChromeHostURLs[] = {
  #if !defined(OS_ANDROID)
  #if !defined(OS_CHROMEOS)
      kChromeUIAppLauncherPageHost,
@@ -1010,7 +1010,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
 diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
 --- a/chrome/common/webui_url_constants.h
 +++ b/chrome/common/webui_url_constants.h
-@@ -102,6 +102,8 @@ extern const char kChromeUIMemoryInternalsHost[];
+@@ -103,6 +103,8 @@ extern const char kChromeUIMemoryInternalsHost[];
  extern const char kChromeUINTPTilesInternalsHost[];
  extern const char kChromeUINaClHost[];
  extern const char kChromeUINetExportHost[];

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

@@ -5,6 +5,7 @@ Subject: Add an always-incognito mode
 More specifically, add a preference that causes all new tabs and all
 clicked links to launch as incognito.
 ---
+ chrome/android/chrome_java_sources.gni             |  1 +
  .../android/java/res/xml/privacy_preferences.xml   |  5 ++
  .../browser/AlwaysIncognitoLinkInterceptor.java    | 73 ++++++++++++++++++++++
  .../chromium/chrome/browser/ChromeActivity.java    |  5 ++
@@ -12,10 +13,20 @@ clicked links to launch as incognito.
  .../contextmenu/ChromeContextMenuPopulator.java    |  9 ++-
  .../chrome/browser/tabmodel/ChromeTabCreator.java  | 24 ++++++-
  .../java/strings/android_chrome_strings.grd        |  6 ++
- chrome/android/java_sources.gni                    |  1 +
  8 files changed, 133 insertions(+), 2 deletions(-)
  create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
 
+diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
+--- a/chrome/android/chrome_java_sources.gni
++++ b/chrome/android/chrome_java_sources.gni
+@@ -3,6 +3,7 @@
+ # found in the LICENSE file.
+ 
+ chrome_java_sources = [
++  "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
+   "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
+   "java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
+   "java/src/org/chromium/chrome/browser/ActivityTabTaskDescriptionHelper.java",
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -112,7 +123,7 @@ new file mode 100644
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -217,6 +217,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -242,6 +242,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
      private static final int RECORD_MULTI_WINDOW_SCREEN_WIDTH_DELAY_MS = 5000;
  
@@ -121,7 +132,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      /**
       * Timeout in ms for reading PartnerBrowserCustomizations provider.
       */
-@@ -1697,6 +1699,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1729,6 +1731,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -140,9 +151,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
  import org.chromium.base.metrics.RecordUserAction;
 +import org.chromium.base.ContextUtils;
  import org.chromium.chrome.R;
+ import org.chromium.chrome.browser.widget.textbubble.TextBubble;
  
- import java.util.ArrayList;
-@@ -26,6 +27,9 @@ import java.util.ArrayList;
+@@ -27,6 +28,9 @@ import java.util.ArrayList;
   * AppMenuObservers about these actions.
   */
  public class AppMenuHandler {
@@ -152,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
      private AppMenu mAppMenu;
      private AppMenuDragHelper mAppMenuDragHelper;
      private Menu mMenu;
-@@ -182,6 +186,14 @@ public class AppMenuHandler {
+@@ -184,6 +188,14 @@ public class AppMenuHandler {
          if (mDelegate.shouldShowHeader(appRect.height())) {
              headerResourceId = mDelegate.getHeaderResourceId();
          }
@@ -214,9 +225,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  import org.chromium.chrome.browser.ChromeActivity;
  import org.chromium.chrome.browser.IntentHandler;
  import org.chromium.chrome.browser.ServiceTabLauncher;
-@@ -16,6 +18,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
- import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
+@@ -16,6 +18,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
  import org.chromium.chrome.browser.tab.Tab;
+ import org.chromium.chrome.browser.tab.TabAssociatedApp;
  import org.chromium.chrome.browser.tab.TabBuilder;
 +import org.chromium.chrome.browser.tab.TabObserver;
  import org.chromium.chrome.browser.tab.TabDelegateFactory;
@@ -230,7 +241,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
  
      private WindowAndroid mNativeWindow;
      private TabModel mTabModel;
-@@ -46,6 +50,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -45,6 +49,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
          mActivity = activity;
          mNativeWindow = nativeWindow;
          mIncognito = incognito;
@@ -242,7 +253,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
      }
  
      @Override
-@@ -170,6 +179,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -169,6 +178,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
                          tab.getWebContents());
              }
  
@@ -253,18 +264,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
              mTabModel.addTab(tab, position, type);
              return tab;
          } finally {
-@@ -198,6 +211,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+@@ -197,6 +210,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+                           .setWindow(mNativeWindow)
                            .setLaunchType(type)
                            .build();
-         tab.initialize(webContents, mTabContentManager, delegateFactory, !openInForeground, false);
 +
 +        if (mExtraLogic != null) {
 +            tab.addObserver(mExtraLogic);
 +        }
 +
+         tab.initialize(webContents, delegateFactory, !openInForeground, null, false);
          mTabModel.addTab(tab, position, type);
          return true;
-     }
 @@ -240,7 +258,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
       */
      public Tab launchUrlFromExternalApp(String url, String referer, String headers,
@@ -273,9 +284,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
          boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
  
          // If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
-@@ -304,6 +321,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
-         tab.initialize(
-                 null, mTabContentManager, createDefaultTabDelegateFactory(), !selectTab, false);
+@@ -305,6 +322,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
+                 state.isIncognito());
+         tab.initialize(null, createDefaultTabDelegateFactory(), !selectTab, state, false);
          assert state.isIncognito() == mIncognito;
 +
 +        if (mExtraLogic != null) {
@@ -288,9 +299,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -716,6 +716,12 @@ CHAR-LIMIT guidelines:
+@@ -736,6 +736,12 @@ CHAR-LIMIT guidelines:
        <message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Body text for Chrome setting under 'Help Improve Safe Browsing'. This feature sends small amounts of data to Google about potentially-dangerous pages to help Safe Browsing improve Chrome's protection against malware and phishing.">
-         Sends some system information and page content to Google
+         To detect dangerous apps and sites, Chrome sends URLs of some pages you visit, limited system information, and some page content to Google
        </message>
 +      <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
 +        Open links in incognito tabs always
@@ -299,19 +310,8 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 +        Opens links in incognito tabs when you click on new tab or on a link
 +      </message>
        <message name="IDS_SAFE_BROWSING_TITLE" desc="Title for safe browsing.">
-         Safe Browsing
+         Safe Browsing (protects you and your device from dangerous sites)
        </message>
-diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
---- a/chrome/android/java_sources.gni
-+++ b/chrome/android/java_sources.gni
-@@ -10,6 +10,7 @@ import("//components/offline_pages/buildflags/features.gni")
- import("//device/vr/buildflags/buildflags.gni")
- 
- chrome_java_sources = [
-+  "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
-   "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
-   "java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
-   "java/src/org/chromium/chrome/browser/ActivityTabTaskDescriptionHelper.java",
 -- 
 2.11.0
 

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

@@ -24,11 +24,11 @@ Completely remove contacts picker permission from the file dialog
  chrome/utility/BUILD.gn                            |   7 +-
  chrome/utility/importer/bookmark_html_reader.cc    |  27 ++-
  chrome/utility/importer/bookmark_html_reader.h     |   9 +
- .../src/org/chromium/ui/base/SelectFileDialog.java |  18 +-
+ .../src/org/chromium/ui/base/SelectFileDialog.java |  16 +-
  ui/shell_dialogs/select_file_dialog.h              |   2 +
  ui/shell_dialogs/select_file_dialog_android.cc     |   6 +
  ui/shell_dialogs/select_file_dialog_android.h      |   2 +
- 22 files changed, 445 insertions(+), 15 deletions(-)
+ 22 files changed, 445 insertions(+), 13 deletions(-)
 
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
@@ -275,7 +275,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  import org.chromium.chrome.browser.favicon.LargeIconBridge;
  import org.chromium.chrome.browser.native_page.BasicNativePage;
  import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
-@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
+@@ -32,6 +33,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
  import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
  import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
  import org.chromium.components.bookmarks.BookmarkId;
@@ -283,7 +283,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 implements BookmarkDelegate, SearchDelegate,
+@@ -56,6 +58,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      private Activity mActivity;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
@@ -291,7 +291,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;
-@@ -266,6 +269,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
+@@ -275,6 +278,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      }
  
      /**
@@ -305,7 +305,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
       *         return the url previously set by {@link #updateForUrl(String)}.
-@@ -413,6 +423,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
+@@ -422,6 +432,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      }
  
      @Override
@@ -329,10 +329,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
          mManager = new BookmarkManager(
                  activity, false, ((SnackbarManageable) activity).getSnackbarManager());
          mManager.setBasicNativePage(this);
-+        mManager.setWindow(activity.getWindowAndroid());
++	mManager.setWindow(activity.getWindowAndroid());
+         mManager.setTab(host.getActiveTab());
          mTitle = activity.getString(R.string.bookmarks);
      }
- 
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -352,7 +352,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -163,6 +163,10 @@ jumbo_split_static_library("browser") {
+@@ -165,6 +165,10 @@ jumbo_split_static_library("browser") {
      "bitmap_fetcher/bitmap_fetcher_service.h",
      "bitmap_fetcher/bitmap_fetcher_service_factory.cc",
      "bitmap_fetcher/bitmap_fetcher_service_factory.h",
@@ -363,7 +363,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
      "bookmarks/bookmark_model_factory.cc",
      "bookmarks/bookmark_model_factory.h",
      "bookmarks/bookmark_stats.cc",
-@@ -2769,8 +2773,6 @@ jumbo_split_static_library("browser") {
+@@ -2797,8 +2801,6 @@ jumbo_split_static_library("browser") {
        "banners/app_banner_infobar_delegate_desktop.h",
        "banners/app_banner_manager_desktop.cc",
        "banners/app_banner_manager_desktop.h",
@@ -372,7 +372,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",
-@@ -2859,8 +2861,6 @@ jumbo_split_static_library("browser") {
+@@ -2888,8 +2890,6 @@ jumbo_split_static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -776,7 +776,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
 diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
 --- a/chrome/common/BUILD.gn
 +++ b/chrome/common/BUILD.gn
-@@ -438,6 +438,9 @@ static_library("common") {
+@@ -442,6 +442,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -919,15 +919,15 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp
 diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
 +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
-@@ -34,6 +34,7 @@ import org.chromium.base.task.TaskTraits;
- import org.chromium.ui.ContactsPickerListener;
+@@ -32,6 +32,7 @@ import org.chromium.base.task.PostTask;
+ import org.chromium.base.task.TaskTraits;
  import org.chromium.ui.PhotoPickerListener;
  import org.chromium.ui.R;
 +import org.chromium.ui.widget.Toast;
  import org.chromium.ui.UiUtils;
  
  import java.io.File;
-@@ -54,6 +55,7 @@ public class SelectFileDialog
+@@ -51,6 +52,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
      private static final String IMAGE_TYPE = "image/";
      private static final String VIDEO_TYPE = "video/";
      private static final String AUDIO_TYPE = "audio/";
@@ -935,7 +935,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
      private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
      private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
-@@ -132,6 +134,11 @@ public class SelectFileDialog
+@@ -129,6 +131,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          mFileTypes = fileTypes;
      }
  
@@ -947,27 +947,25 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
      /**
       * Creates and starts an intent based on the passed fileTypes and capture value.
       * @param fileTypes MIME types requested (i.e. "image/*")
-@@ -161,7 +168,7 @@ public class SelectFileDialog
-             if (!window.hasPermission(Manifest.permission.READ_CONTACTS)) {
-                 missingPermissions.add(Manifest.permission.READ_CONTACTS);
-             }
--        } else if (shouldUsePhotoPicker()) {
-+        } else if (shouldUsePhotoPicker() || shouldShowHtmlTypes()) {
-             if (BuildInfo.isAtLeastQ()) {
-                 String newImagePermission = "android.permission.READ_MEDIA_IMAGES";
-                 if (!window.hasPermission(newImagePermission)) {
-@@ -333,9 +340,7 @@ public class SelectFileDialog
-      *   3.) There is a valid Android Activity associated with the file request.
-      */
-     private boolean shouldUseContactsPicker() {
--        if (mFileTypes.size() != 1) return false;
--        if (!mFileTypes.get(0).equals("text/json+contacts")) return false;
--        return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null;
-+       return false;
-     }
+@@ -156,7 +163,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+         List<String> missingPermissions = new ArrayList<>();
+         String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
+         boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
+-        if (shouldUsePhotoPicker) {
++        if (shouldUsePhotoPicker || shouldShowHtmlTypes()) {
+             if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
+         } else {
+             if (((mSupportsImageCapture && shouldShowImageTypes())
+@@ -183,7 +190,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
+                             return;
+                         }
  
-     /**
-@@ -356,6 +361,7 @@ public class SelectFileDialog
+-                        if (shouldUsePhotoPicker
++                        if ((shouldUsePhotoPicker || shouldShowHtmlTypes())
+                                 && requestPermissions[i].equals(storagePermission)) {
+                             onFileNotSelected();
+                             return;
+@@ -331,6 +338,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
              }
              if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
          }
@@ -975,7 +973,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
          return mimeTypes;
      }
  
-@@ -646,6 +652,10 @@ public class SelectFileDialog
+@@ -603,6 +611,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
          return countAcceptTypesFor(specificType) > 0;
      }
  

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

@@ -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/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
-@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
+@@ -42,6 +42,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
  import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
  import org.chromium.chrome.browser.profiles.Profile;
@@ -49,14 +49,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
  import org.chromium.chrome.browser.searchwidget.SearchActivity;
  import org.chromium.chrome.browser.tab.Tab;
  import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
-@@ -271,6 +272,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
+@@ -272,6 +273,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
       */
      public static boolean isCustomTabIntent(Intent intent) {
          if (intent == null) return false;
 +        if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) return false;
-         if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
-                 || !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
-             return false;
+         // CCT is disabled in noTouch mode except for some Chrome-internal exceptions.
+         if (FeatureUtilities.isNoTouchModeEnabled()
+                 && !IntentHandler.wasIntentSenderChrome(intent)) {
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -94,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3998,6 +3998,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -4063,6 +4063,13 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
          Browse
        </message>
  

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

@@ -25,9 +25,9 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -2116,6 +2116,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
-             RecordUserAction.record("MobileMenuSettings");
+@@ -2150,6 +2150,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          } else if (id == R.id.show_menu) {
+             if (FeatureUtilities.isNoTouchModeEnabled()) return false;
              showAppMenuForKeyboardEvent();
 +        } else if (id == R.id.exit_id) {
 +            ApplicationLifetime.terminate(false);
@@ -53,7 +53,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3075,6 +3075,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3142,6 +3142,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
          Settings
        </message>

+ 13 - 13
build/patches/Add-flag-to-configure-maximum-connections-per-host.patch

@@ -18,7 +18,7 @@ with limited CPU/memory resources and it is disabled by default.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -740,6 +740,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -652,6 +652,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -30,20 +30,20 @@ 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 ==
-@@ -2292,6 +2297,9 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kWebrtcH264WithOpenh264FfmpegDescription, kOsDesktop,
-      FEATURE_VALUE_TYPE(content::kWebRtcH264WithOpenH264FFmpeg)},
- #endif  // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
+@@ -2204,6 +2209,9 @@ const FeatureEntry kFeatureEntries[] = {
+      flag_descriptions::kPassiveDocumentEventListenersName,
+      flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
+      FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
 +    {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
 +     flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
 +     MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
- #if defined(OS_ANDROID)
-     {"offlining-recent-pages", flag_descriptions::kOffliningRecentPagesName,
-      flag_descriptions::kOffliningRecentPagesDescription, kOsAndroid,
+     {"document-passive-wheel-event-listeners",
+      flag_descriptions::kPassiveDocumentWheelEventListenersName,
+      flag_descriptions::kPassiveDocumentWheelEventListenersDescription, kOsAll,
 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
-@@ -1245,6 +1245,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
+@@ -1273,6 +1273,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
  const char kMarkHttpAsName[] = "Mark non-secure origins as non-secure";
  const char kMarkHttpAsDescription[] = "Change the UI treatment for HTTP pages";
  
@@ -57,7 +57,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
-@@ -748,6 +748,9 @@ extern const char kMarkHttpAsWarning[];
+@@ -779,6 +779,9 @@ extern const char kMarkHttpAsWarning[];
  extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
  extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
  
@@ -111,8 +111,8 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
 diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
 --- a/net/socket/client_socket_pool_manager.cc
 +++ b/net/socket/client_socket_pool_manager.cc
-@@ -22,6 +22,10 @@
- #include "net/socket/transport_client_socket_pool.h"
+@@ -21,6 +21,10 @@
+ #include "net/socket/ssl_connect_job.h"
  #include "net/socket/transport_connect_job.h"
  #include "net/ssl/ssl_config.h"
 +#include "components/network_session_configurator/common/network_switches.h"
@@ -122,7 +122,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
  
  namespace net {
  
-@@ -285,6 +289,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
+@@ -262,6 +266,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
  int ClientSocketPoolManager::max_sockets_per_group(
      HttpNetworkSession::SocketPoolType pool_type) {
    DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);

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

@@ -4,32 +4,17 @@ Subject: Add flag to control video playback resume feature
 
 Disable it by default on Android as it is everywhere else
 ---
- chrome/browser/about_flags.cc       | 4 ++++
  chrome/browser/flag_descriptions.cc | 5 +++++
  chrome/browser/flag_descriptions.h  | 3 +++
  media/base/media_switches.cc        | 6 +-----
- 4 files changed, 13 insertions(+), 5 deletions(-)
+ 3 files changed, 9 insertions(+), 5 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
-@@ -1407,6 +1407,10 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kVideoPlayerChromecastSupportDescription, kOsCrOS,
-      SINGLE_VALUE_TYPE(
-          chromeos::switches::kEnableVideoPlayerChromecastSupport)},
-+    {"resume-background-video",
-+     flag_descriptions::kResumeBackgroundVideoName,
-+     flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
-+     FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
-     {"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
-      flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
-      FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
 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
-@@ -840,6 +840,11 @@ const char kEnablePictureInPictureDescription[] =
-     "controls. The #enable-surfaces-for-videos flag must be enabled as well "
-     "to use it.";
+@@ -860,6 +860,11 @@ const char kMemlogStackModeNative[] = "Native";
+ const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
+ const char kMemlogStackModePseudo[] = "Trace events";
  
 +const char kResumeBackgroundVideoName[] = "Resume background video.";
 +const char kResumeBackgroundVideoDescription[] =
@@ -42,7 +27,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
 diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
 --- a/chrome/browser/flag_descriptions.h
 +++ b/chrome/browser/flag_descriptions.h
-@@ -495,6 +495,9 @@ extern const char kEnableNewDownloadBackendDescription[];
+@@ -517,6 +517,9 @@ extern const char kEnablePortalsDescription[];
  extern const char kEnablePictureInPictureName[];
  extern const char kEnablePictureInPictureDescription[];
  
@@ -55,7 +40,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
-@@ -205,11 +205,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
+@@ -207,11 +207,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
  // when in background.
  const base::Feature kResumeBackgroundVideo {
    "resume-background-video",

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

@@ -6,7 +6,7 @@ Subject: Add flag to disable IPv6 probes
  chrome/browser/about_flags.cc           |  5 +++++
  chrome/browser/flag_descriptions.cc     |  4 ++++
  chrome/browser/flag_descriptions.h      |  3 +++
- net/dns/host_resolver_impl.cc           | 10 ++++++++--
+ net/dns/host_resolver_manager.cc        | 10 ++++++++--
  services/network/public/cpp/features.cc |  3 +++
  services/network/public/cpp/features.h  |  2 ++
  6 files changed, 25 insertions(+), 2 deletions(-)
@@ -14,9 +14,9 @@ Subject: Add flag to disable IPv6 probes
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2975,6 +2975,11 @@ const FeatureEntry kFeatureEntries[] = {
-      FEATURE_VALUE_TYPE(features::kHandwritingGesture)},
- #endif  // OS_CHROMEOS
+@@ -3006,6 +3006,11 @@ const FeatureEntry kFeatureEntries[] = {
+          kMarkHttpAsFeatureVariations,
+          "HTTPReallyBadFinal")},
  
 +    {"ipv6-probing",
 +     flag_descriptions::kIPv6ProbingName,
@@ -24,28 +24,28 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 +     FEATURE_VALUE_TYPE(network::features::kIPv6Probing)},
 +
  #if !defined(OS_ANDROID)
-     {"enable-picture-in-picture",
-      flag_descriptions::kEnablePictureInPictureName,
+     {"enable-web-authentication-testing-api",
+      flag_descriptions::kEnableWebAuthenticationTestingAPIName,
 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
-@@ -842,6 +842,10 @@ const char kOOPHPStackModeNative[] = "Native";
- const char kOOPHPStackModeNativeWithThreadNames[] = "Native with thread names";
- const char kOOPHPStackModePseudo[] = "Trace events";
+@@ -2408,6 +2408,10 @@ const char kForegroundNotificationManagerDescription[] =
+ const char kHomePageButtonName[] = "Force Enable Home Page Button";
+ const char kHomePageButtonDescription[] = "Displays a home button if enabled.";
  
 +const char kIPv6ProbingName[] = "Enable IPv6 probing.";
 +const char kIPv6ProbingDescription[] =
 +    "Send IPv6 probes to a RIPE DNS address to verify IPv6 connectivity.";
 +
- const char kEnablePictureInPictureName[] = "Enable Picture-in-Picture.";
- const char kEnablePictureInPictureDescription[] =
-     "Show Picture-in-Picture in browser context menu and video native "
+ const char kHomepageTileName[] =
+     "Enable Homepage tile shown in Suggested Tiles";
+ const char kHomepageTileDescription[] =
 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
-@@ -498,6 +498,9 @@ extern const char kDownloadAutoResumptionNativeDescription[];
- extern const char kEnableNewDownloadBackendName[];
- extern const char kEnableNewDownloadBackendDescription[];
+@@ -520,6 +520,9 @@ extern const char kEnableNewDownloadBackendDescription[];
+ extern const char kEnablePortalsName[];
+ extern const char kEnablePortalsDescription[];
  
 +extern const char kIPv6ProbingName[];
 +extern const char kIPv6ProbingDescription[];
@@ -53,18 +53,18 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
  extern const char kEnablePictureInPictureName[];
  extern const char kEnablePictureInPictureDescription[];
  
-diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
---- a/net/dns/host_resolver_impl.cc
-+++ b/net/dns/host_resolver_impl.cc
-@@ -81,6 +81,7 @@
- #include "net/log/net_log_with_source.h"
+diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
+--- a/net/dns/host_resolver_manager.cc
++++ b/net/dns/host_resolver_manager.cc
+@@ -84,6 +84,7 @@
  #include "net/socket/client_socket_factory.h"
  #include "net/socket/datagram_client_socket.h"
+ #include "net/url_request/url_request_context.h"
 +#include "services/network/public/cpp/features.h"
  #include "url/url_canon_ip.h"
  
  #if BUILDFLAG(ENABLE_MDNS)
-@@ -2751,8 +2752,13 @@ bool HostResolverImpl::IsIPv6Reachable(const NetLogWithSource& net_log) {
+@@ -2896,8 +2897,13 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
    bool cached = true;
    if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
        kIPv6ProbePeriodMs) {

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

@@ -20,7 +20,7 @@ legacy acceleration events.
 diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 --- a/chrome/browser/about_flags.cc
 +++ b/chrome/browser/about_flags.cc
-@@ -2473,6 +2473,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2269,6 +2269,12 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-generic-sensor", flag_descriptions::kEnableGenericSensorName,
       flag_descriptions::kEnableGenericSensorDescription, kOsAll,
       FEATURE_VALUE_TYPE(features::kGenericSensor)},
@@ -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
-@@ -600,6 +600,14 @@ const char kEnableGenericSensorDescription[] =
+@@ -631,6 +631,14 @@ const char kEnableGenericSensorDescription[] =
      "Accelerometer, LinearAccelerationSensor, Gyroscope, "
      "AbsoluteOrientationSensor and RelativeOrientationSensor interfaces.";
  
@@ -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
-@@ -382,6 +382,12 @@ extern const char kEnforceTLS13DowngradeDescription[];
+@@ -398,6 +398,12 @@ extern const char kEnforceTLS13DowngradeDescription[];
  extern const char kEnableGenericSensorName[];
  extern const char kEnableGenericSensorDescription[];
  
@@ -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
-@@ -93,6 +93,9 @@ void SetIndividualRuntimeFeatures(
+@@ -90,6 +90,9 @@ void SetIndividualRuntimeFeatures(
        base::FeatureList::IsEnabled(features::kSharedArrayBuffer) ||
        base::FeatureList::IsEnabled(features::kWebAssemblyThreads));
  
@@ -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
-@@ -596,6 +596,16 @@ const base::Feature kExperimentalProductivityFeatures{
+@@ -614,6 +614,16 @@ const base::Feature kExperimentalProductivityFeatures{
  // 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
-@@ -158,6 +158,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
+@@ -156,6 +156,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
  CONTENT_EXPORT extern const base::Feature kWebNfc;
  #endif  // defined(OS_ANDROID)
  
@@ -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
-@@ -97,6 +97,8 @@ class WebRuntimeFeatures {
+@@ -95,6 +95,8 @@ class WebRuntimeFeatures {
    BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
    BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
    BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
@@ -127,7 +127,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
 diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
 --- a/third_party/blink/renderer/modules/modules_initializer.cc
 +++ b/third_party/blink/renderer/modules/modules_initializer.cc
-@@ -233,9 +233,12 @@ void ModulesInitializer::InitInspectorAgentSession(
+@@ -249,9 +249,12 @@ void ModulesInitializer::InitInspectorAgentSession(
  void ModulesInitializer::OnClearWindowObjectInMainWorld(
      Document& document,
      const Settings& settings) const {
@@ -146,7 +146,7 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p
 diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
 +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
-@@ -165,6 +165,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
+@@ -160,6 +160,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
    RuntimeEnabledFeatures::SetDatabaseEnabled(enable);
  }
  
@@ -164,7 +164,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
-@@ -409,6 +409,14 @@
+@@ -425,6 +425,14 @@
        status: "stable",
      },
      {

+ 3 - 3
build/patches/Add-menu-option-to-toggle-global-Javascript-preference.patch

@@ -75,7 +75,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
-@@ -2219,6 +2219,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2253,6 +2253,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent(
                      !usingDesktopUserAgent, reloadOnChange);
              RecordUserAction.record("MobileMenuRequestDesktopSite");
@@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1857,6 +1857,14 @@ public class ChromeTabbedActivity
+@@ -1818,6 +1818,14 @@ public class ChromeTabbedActivity
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3060,6 +3060,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3127,6 +3127,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
          Find in page
        </message>

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

@@ -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
-@@ -1138,8 +1138,10 @@ public class ChromeTabbedActivity
+@@ -1112,8 +1112,10 @@ public class ChromeTabbedActivity
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -108,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3874,6 +3874,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3931,6 +3931,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
          IMAGE
        </message>

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

@@ -133,7 +133,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCre
  import org.chromium.content_public.browser.LoadUrlParams;
  import org.chromium.content_public.browser.WebContents;
  
-@@ -88,12 +89,18 @@ public interface TabCreatorManager {
+@@ -85,12 +86,18 @@ public interface TabCreatorManager {
          }
  
          /**
@@ -157,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCre
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -668,6 +668,9 @@ CHAR-LIMIT guidelines:
+@@ -677,6 +677,9 @@ CHAR-LIMIT guidelines:
        <message name="IDS_OPTIONS_HOMEPAGE_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is opened when they tap on the home page button in the omnibox.">
          Open this page
        </message>
@@ -170,8 +170,8 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -56,6 +56,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
-       GetHomeButtonAndHomePageIsNewTabPageFlags());
+@@ -54,6 +54,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+                                 GetHomeButtonAndHomePageIsNewTabPageFlags());
    registry->RegisterBooleanPref(prefs::kShowHomeButton, false,
                                  GetHomeButtonAndHomePageIsNewTabPageFlags());
 +  registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
@@ -196,7 +196,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
-@@ -293,6 +293,7 @@ extern const char kParentAccessCodeConfig[];
+@@ -294,6 +294,7 @@ extern const char kParentAccessCodeConfig[];
  extern const char kDeviceWallpaperImageFilePath[];
  #endif  // defined(OS_CHROMEOS)
  extern const char kShowHomeButton[];

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

@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
      /**
       * @return Whether third-party cookie blocking is configured by policy
       */
-@@ -626,6 +630,10 @@ public class PrefServiceBridge {
+@@ -625,6 +629,10 @@ public class PrefServiceBridge {
          nativeSetBlockThirdPartyCookiesEnabled(enabled);
      }
  
@@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
      public void setDoNotTrackEnabled(boolean enabled) {
          nativeSetDoNotTrackEnabled(enabled);
      }
-@@ -1074,6 +1082,7 @@ public class PrefServiceBridge {
+@@ -1073,6 +1081,7 @@ public class PrefServiceBridge {
      private native boolean nativeGetAutoplayEnabled();
      private native boolean nativeGetBackgroundSyncEnabled();
      private native boolean nativeGetBlockThirdPartyCookiesEnabled();
@@ -74,7 +74,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
      private native boolean nativeGetBlockThirdPartyCookiesManaged();
      private native boolean nativeGetRememberPasswordsEnabled();
      private native boolean nativeGetPasswordManagerAutoSigninEnabled();
-@@ -1120,6 +1129,7 @@ public class PrefServiceBridge {
+@@ -1119,6 +1128,7 @@ public class PrefServiceBridge {
      private native void nativeSetAutoplayEnabled(boolean enabled);
      private native void nativeSetAllowCookiesEnabled(boolean enabled);
      private native void nativeSetBackgroundSyncEnabled(boolean enabled);
@@ -85,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
-@@ -121,6 +121,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -124,6 +124,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
  
      // Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
      public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
@@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
      public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
      public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
      private static final String ADD_EXCEPTION_KEY = "add_exception";
-@@ -441,6 +442,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -462,6 +463,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
  
                  if (type == SiteSettingsCategory.Type.COOKIES) {
                      updateThirdPartyCookiesCheckBox();
@@ -101,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
                  } else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
                      updateNotificationsVibrateCheckBox();
                  }
-@@ -479,6 +481,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -500,6 +502,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
              int setting = (int) newValue;
              prefServiceBridge.setContentSetting(mCategory.getContentSettingsType(), setting);
              getInfoForOrigins();
@@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
              prefServiceBridge.setBlockThirdPartyCookiesEnabled(((boolean) newValue));
          } else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
-@@ -769,6 +773,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -813,6 +817,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
          TriStateSiteSettingsPreference triStateToggle =
                  (TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
          Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
          Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
          PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
-@@ -799,6 +805,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -844,6 +850,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
  
          if (hideSecondaryToggles) {
              screen.removePreference(thirdPartyCookies);
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
              screen.removePreference(notificationsVibrate);
              screen.removePreference(explainProtectedMediaKey);
              screen.removePreference(allowedGroup);
-@@ -808,12 +815,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -854,12 +861,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
              return;
          }
  
@@ -144,7 +144,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          }
  
          // Configure/hide the notifications vibrate toggle, as needed.
-@@ -918,6 +928,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -966,6 +976,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
                  preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
      }
  
@@ -163,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -907,6 +907,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -927,6 +927,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>

+ 9 - 9
build/patches/Allow-building-without-safebrowsing-for-Android.patch

@@ -130,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
-@@ -250,16 +250,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
+@@ -252,16 +252,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
    return false;
  }
  
@@ -150,7 +150,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
 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
-@@ -115,7 +115,6 @@
+@@ -118,7 +118,6 @@
  #include "chrome/browser/safe_browsing/certificate_reporting_service.h"
  #include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h"
  #include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
@@ -158,7 +158,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/safe_browsing/ui_manager.h"
  #include "chrome/browser/safe_browsing/url_checker_delegate_impl.h"
-@@ -4249,11 +4248,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4346,11 +4345,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
        PreviewsLitePageDecider::MaybeCreateThrottleFor(handle);
    if (previews_lite_page_throttle)
      throttles.push_back(std::move(previews_lite_page_throttle));
@@ -170,7 +170,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  
  #if defined(OS_WIN) || defined(OS_MACOSX) || \
      (defined(OS_LINUX) && !defined(OS_CHROMEOS))
-@@ -5199,19 +5193,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
+@@ -5303,19 +5297,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
      content::ResourceContext* resource_context) {
    DCHECK_CURRENTLY_ON(BrowserThread::IO);
  
@@ -239,7 +239,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  
  namespace {
  
-@@ -768,19 +774,19 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() const {
+@@ -760,19 +766,19 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() const {
    return std::string(chrome::kApplicationClientIDStringForAVScanning);
  }
  
@@ -255,13 +255,13 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
      return sb_service->download_protection_service();
    }
 -#endif
-   return NULL;
+   return nullptr;
  }
 +#endif
  
  void ChromeDownloadManagerDelegate::NotifyExtensions(
      DownloadItem* download,
-@@ -1222,13 +1228,17 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
+@@ -1214,13 +1220,17 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
        DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
  #endif
  
@@ -645,7 +645,7 @@ diff --git a/chrome/browser/download/download_target_info.h b/chrome/browser/dow
 diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc
 --- a/chrome/browser/download/download_ui_model.cc
 +++ b/chrome/browser/download/download_ui_model.cc
-@@ -23,7 +23,9 @@
+@@ -25,7 +25,9 @@
  
  using base::TimeDelta;
  using download::DownloadItem;
@@ -655,7 +655,7 @@ diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/downl
  using offline_items_collection::FailState;
  
  namespace {
-@@ -368,12 +370,14 @@ bool DownloadUIModel::ShouldPreferOpeningInBrowser() const {
+@@ -389,12 +391,14 @@ bool DownloadUIModel::ShouldPreferOpeningInBrowser() const {
  
  void DownloadUIModel::SetShouldPreferOpeningInBrowser(bool preference) {}
  

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

@@ -3,14 +3,29 @@ Date: Thu, 2 Nov 2017 18:21:16 +0200
 Subject: Allow playing audio in background
 
 ---
- media/blink/webmediaplayer_impl.cc | 11 ++++++++++-
+ chrome/browser/about_flags.cc      |  4 ++++
+ media/blink/webmediaplayer_impl.cc | 12 +++++++++++-
  media/blink/webmediaplayer_impl.h  |  2 ++
- 2 files changed, 12 insertions(+), 1 deletion(-)
+ 3 files changed, 17 insertions(+), 1 deletion(-)
 
+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
+@@ -1400,6 +1400,10 @@ const FeatureEntry kFeatureEntries[] = {
+     {"debug-packed-apps", flag_descriptions::kDebugPackedAppName,
+      flag_descriptions::kDebugPackedAppDescription, kOsDesktop,
+      SINGLE_VALUE_TYPE(switches::kDebugPackedApps)},
++    {"resume-background-video",
++     flag_descriptions::kResumeBackgroundVideoName,
++     flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
++     FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
+     {"automatic-password-generation",
+      flag_descriptions::kAutomaticPasswordGenerationName,
+      flag_descriptions::kAutomaticPasswordGenerationDescription, kOsAll,
 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
-@@ -948,6 +948,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -961,6 +961,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
    return pipeline_metadata_.has_audio;
  }
  
@@ -23,22 +38,23 @@ 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());
-@@ -3113,7 +3119,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
-   // If suspending background video, pause any video that's not remoted or
-   // not unlocked to play in the background.
-   if (IsBackgroundSuspendEnabled(this)) {
--    if (!HasVideo())
-+    //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
-+    //see media/base/pipeline_metadata.h. This is a workaround to allow audio
-+    //streams be played in background.
-+    if (!HasVideoNonEmptySize())
-       return false;
+@@ -3205,7 +3211,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.
+-  if (!HasVideo())
++
++  //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
++  //see media/base/pipeline_metadata.h. This is a workaround to allow audio
++  //streams be played in background.
++  if (!HasVideoNonEmptySize())
+     return false;
  
- #if defined(OS_ANDROID)
+   if (!is_background_video_playback_enabled_)
 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
-@@ -141,6 +141,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
+@@ -142,6 +142,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
    // True if the loaded media has a playable video/audio track.
    bool HasVideo() const override;
    bool HasAudio() const override;

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

@@ -11,7 +11,7 @@ Do not read experiment value for cronet async DNS configuration
 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
 --- a/chrome/browser/net/system_network_context_manager.cc
 +++ b/chrome/browser/net/system_network_context_manager.cc
-@@ -226,7 +226,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
+@@ -228,7 +228,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
  // Android this includes checking the Android version in the field trial.
  bool ShouldEnableAsyncDns() {
    bool feature_can_be_enabled = true;

+ 15 - 15
build/patches/Always-show-home-page-settings.patch

@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Chr
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-@@ -207,15 +207,11 @@ public class MainPreferences extends PreferenceFragment
+@@ -208,15 +208,11 @@ public class MainPreferences extends PreferenceFragment
          updateSyncAndServicesPreference();
          updateSearchEnginePreference();
  
@@ -129,7 +129,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
-@@ -73,7 +73,6 @@ public class FeatureUtilities {
+@@ -74,7 +74,6 @@ public class FeatureUtilities {
      private static Boolean sHasRecognitionIntentHandler;
  
      private static Boolean sIsSoleEnabled;
@@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
      private static Boolean sIsHomepageTileEnabled;
      private static Boolean sIsNewTabPageButtonEnabled;
      private static Boolean sIsBottomToolbarEnabled;
-@@ -194,7 +193,6 @@ public class FeatureUtilities {
+@@ -196,7 +195,6 @@ public class FeatureUtilities {
          cacheSoleEnabled();
          cacheCommandLineOnNonRootedEnabled();
          FirstRunUtils.cacheFirstRunPrefs();
@@ -145,10 +145,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
          cacheHomepageTileEnabled();
          cacheNewTabPageButtonEnabled();
          cacheBottomToolbarEnabled();
-@@ -229,38 +227,6 @@ public class FeatureUtilities {
+@@ -232,38 +230,6 @@ public class FeatureUtilities {
+         return Build.VERSION.SDK_INT > Build.VERSION_CODES.M;
      }
  
-     /**
+-    /**
 -     * Cache whether or not the home page button is force enabled so on next startup, the value can
 -     * be made available immediately.
 -     */
@@ -180,14 +181,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
 -        sIsHomePageButtonForceEnabled = null;
 -    }
 -
--    /**
-      * Cache whether or not the toolbar should be inflated on a background thread so on next
-      * startup, the value can be made available immediately.
-      */
+     private static void cacheServiceManagerForBackgroundPrefetch() {
+         boolean backgroundPrefetchInReducedMode = ChromeFeatureList.isEnabled(
+                 ChromeFeatureList.SERVICE_MANAGER_FOR_BACKGROUND_PREFETCH);
 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
-@@ -1710,9 +1710,6 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1576,9 +1576,6 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-chrome-duet", flag_descriptions::kChromeDuetName,
       flag_descriptions::kChromeDuetDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(chrome::android::kChromeDuetFeature)},
@@ -200,15 +200,15 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -133,7 +133,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
+@@ -140,7 +140,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
      &kExploreSites,
      &kHandleMediaIntents,
      &kHideUserDataFromIncognitoNotifications,
 -    &kHomePageButtonForceEnabled,
      &kHomepageTile,
      &kHorizontalTabSwitcherAndroid,
-     &kImprovedA2HS,
-@@ -377,9 +376,6 @@ const base::Feature kHandleMediaIntents{"HandleMediaIntents",
+     &kImmersiveUiMode,
+@@ -405,9 +404,6 @@ const base::Feature kHandleMediaIntents{"HandleMediaIntents",
  const base::Feature kHideUserDataFromIncognitoNotifications{
      "HideUserDataFromIncognitoNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
  
@@ -221,14 +221,14 @@ diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/andr
 diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/android/chrome_feature_list.h
 --- a/chrome/browser/android/chrome_feature_list.h
 +++ b/chrome/browser/android/chrome_feature_list.h
-@@ -63,7 +63,6 @@ extern const base::Feature kExploreSites;
+@@ -70,7 +70,6 @@ extern const base::Feature kExploreSites;
  extern const base::Feature kForegroundNotificationManager;
  extern const base::Feature kHandleMediaIntents;
  extern const base::Feature kHideUserDataFromIncognitoNotifications;
 -extern const base::Feature kHomePageButtonForceEnabled;
  extern const base::Feature kHomepageTile;
  extern const base::Feature kHorizontalTabSwitcherAndroid;
- extern const base::Feature kImprovedA2HS;
+ extern const base::Feature kImmersiveUiMode;
 -- 
 2.11.0
 

+ 1 - 1
build/patches/AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch

@@ -43,7 +43,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
-@@ -324,6 +324,7 @@ void AudioContext::StopRendering() {
+@@ -333,6 +333,7 @@ void AudioContext::StopRendering() {
  double AudioContext::baseLatency() const {
    DCHECK(IsMainThread());
    DCHECK(destination());

+ 16 - 16
build/patches/Bromite-adblock-engine.patch

@@ -72,7 +72,7 @@ diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webvie
 +      auto resource_type = info->GetResourceType();
 +
 +      if (adblock_enabled
-+        && content::RESOURCE_TYPE_MAIN_FRAME != resource_type
++        && content::ResourceType::kMainFrame != resource_type
 +        && net::adblock_intercept(request->url(),
 +                                request->initiator()->host(),
 +                                resource_type)) {
@@ -81,14 +81,14 @@ diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webvie
 +
 +      if (block) {
 +        switch (resource_type) {
-+          case content::RESOURCE_TYPE_IMAGE:
-+          case content::RESOURCE_TYPE_FAVICON:
++          case content::ResourceType::kImage:
++          case content::ResourceType::kFavicon:
 +            *new_url = GURL(TRANSPARENT1PXGIF);
 +            break;
-+          case content::RESOURCE_TYPE_SCRIPT:
++          case content::ResourceType::kScript:
 +            *new_url = GURL(EMPTYJS);
 +            break;
-+          case content::RESOURCE_TYPE_STYLESHEET:
++          case content::ResourceType::kStylesheet:
 +            *new_url = GURL(EMPTYCSS);
 +            break;
 +          default:
@@ -177,7 +177,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
-@@ -2229,6 +2229,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2263,6 +2263,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
              RecordUserAction.record("MobileMenuRequestEnableJavascript");
          } else if (id == R.id.reader_mode_prefs_id) {
              DomDistillerUIUtils.openSettings(currentTab.getWebContents());
@@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
-@@ -1815,6 +1815,14 @@ public class ChromeTabbedActivity
+@@ -1776,6 +1776,14 @@ public class ChromeTabbedActivity
                  reportNewTabShortcutUsed(true);
                  getTabCreator(true).launchNTP();
              }
@@ -280,7 +280,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -3080,6 +3080,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
+@@ -3147,6 +3147,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
        <message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
          Turn on Request desktop site
        </message>
@@ -362,7 +362,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +      auto resource_type = info->GetResourceType();
 +
 +      if (adblock_enabled
-+        && content::RESOURCE_TYPE_MAIN_FRAME != resource_type
++        && content::ResourceType::kMainFrame != resource_type
 +        && net::adblock_intercept(request->url(),
 +                                request->initiator()->host(),
 +                                resource_type)) {
@@ -371,14 +371,14 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +
 +      if (block) {
 +        switch (resource_type) {
-+          case content::RESOURCE_TYPE_IMAGE:
-+          case content::RESOURCE_TYPE_FAVICON:
++          case content::ResourceType::kImage:
++          case content::ResourceType::kFavicon:
 +            *new_url = GURL(TRANSPARENT1PXGIF);
 +            break;
-+          case content::RESOURCE_TYPE_SCRIPT:
++          case content::ResourceType::kScript:
 +            *new_url = GURL(EMPTYJS);
 +            break;
-+          case content::RESOURCE_TYPE_STYLESHEET:
++          case content::ResourceType::kStylesheet:
 +            *new_url = GURL(EMPTYCSS);
 +            break;
 +          default:
@@ -423,7 +423,7 @@ diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settin
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1794,6 +1794,13 @@ component("net") {
+@@ -1797,6 +1797,13 @@ component("net") {
        "url_request/websocket_handshake_userdata_key.h",
      ]
  
@@ -436,7 +436,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn
 +
      if (enable_reporting) {
        sources += [
-         "network_error_logging/network_error_logging_delegate.cc",
+         "network_error_logging/network_error_logging_service.cc",
 diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_intercept.cc
 new file mode 100644
 --- /dev/null
@@ -728,7 +728,7 @@ new file mode 100644
 +  }
 +
 +  // use a bitwise trick to test for the current resource type
-+  bool found = (entry->flags & (resource_type << 16));
++  bool found = (entry->flags & (int(resource_type) << 16));
 +  if (!exclude)
 +    return found;
 +  return !found;

+ 3 - 3
build/patches/Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch

@@ -59,7 +59,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.
 diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -1423,7 +1423,9 @@ jumbo_component("platform") {
+@@ -1435,7 +1435,9 @@ jumbo_component("platform") {
      "//third_party/blink/renderer:non_test_config",
    ]
  
@@ -111,8 +111,8 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
 +#include "third_party/skia/include/private/SkColorData.h"
  #include "third_party/skia/include/core/SkSurface.h"
  #include "third_party/skia/include/gpu/GrContext.h"
- 
-@@ -151,10 +154,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
+ #include "v8/include/v8.h"
+@@ -152,10 +155,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
    DCHECK(read_pixels_successful ||
           !sk_image->bounds().intersect(SkIRect::MakeXYWH(
               rect.X(), rect.Y(), info.width(), info.height())));

+ 12 - 11
build/patches/Disable-NTP-remote-suggestions-by-default.patch

@@ -3,29 +3,30 @@ Date: Thu, 12 Oct 2017 08:15:17 +0200
 Subject: Disable NTP remote suggestions by default
 
 ---
- components/ntp_snippets/features.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ components/ntp_snippets/features.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
 --- a/components/ntp_snippets/features.cc
 +++ b/components/ntp_snippets/features.cc
-@@ -34,13 +34,13 @@ const base::Feature* const kAllFeatures[] = {
+@@ -41,7 +41,7 @@ const base::Feature* const kAllFeatures[] = {
      &kRemoteSuggestionsBackendFeature};
  
  const base::Feature kArticleSuggestionsFeature{
 -    "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "NTPArticleSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
  
- const base::Feature kBookmarkSuggestionsFeature{
--    "NTPBookmarkSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
-+    "NTPBookmarkSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kRemoteSuggestionsEmulateM58FetchingSchedule{
+     "RemoteSuggestionsEmulateM58FetchingSchedule",
+@@ -71,7 +71,7 @@ const char kNotificationsDailyLimit[] = "daily_limit";
+ const char kNotificationsIgnoredLimitParam[] = "ignored_limit";
  
- const base::Feature kIncreasedVisibility{"NTPSnippetsIncreasedVisibility",
--                                         base::FEATURE_ENABLED_BY_DEFAULT};
-+                                         base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kKeepPrefetchedContentSuggestions{
+-    "KeepPrefetchedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
++    "KeepPrefetchedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
  
- const base::Feature kBreakingNewsPushFeature{"BreakingNewsPush",
-                                              base::FEATURE_DISABLED_BY_DEFAULT};
+ const base::Feature kContentSuggestionsDebugLog{
+     "ContentSuggestionsDebugLog", base::FEATURE_DISABLED_BY_DEFAULT};
 -- 
 2.11.0
 

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

@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNu
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -400,7 +400,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
+@@ -428,7 +428,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
      base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kJellyBeanSupported{"JellyBeanSupported",

+ 1 - 1
build/patches/Disable-WebRTC-by-default.patch

@@ -9,7 +9,7 @@ Subject: Disable WebRTC by default
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -85,10 +85,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -82,10 +82,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
                                  false);
  #endif
    // TODO(guoweis): Remove next 2 options at M50.

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

@@ -9,7 +9,7 @@ Subject: Disable contextual search by default
 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
-@@ -144,7 +144,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -153,7 +153,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
  #if defined(OS_ANDROID)
    registry->RegisterStringPref(
        prefs::kContextualSearchEnabled,

+ 32 - 43
build/patches/Disable-data-saver.patch

@@ -3,53 +3,42 @@ Date: Fri, 27 Oct 2017 15:53:37 +0200
 Subject: Disable data saver
 
 ---
- .../java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 1 -
- .../chrome/browser/net/spdyproxy/DataReductionProxySettings.java        | 2 ++
- .../browser/preferences/datareduction/DataReductionPromoUtils.java      | 2 +-
- 3 files changed, 3 insertions(+), 2 deletions(-)
+ .../datareduction/DataReductionPreferenceFragment.java         | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
-@@ -141,7 +141,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
-         boolean notifyAdapter = false;
-         // An optional Data Saver page.
-         if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) {
--            mPages.add(new DataReductionProxyFirstRunFragment.Page());
-             mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN);
-             notifyAdapter = true;
-         }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
-@@ -126,6 +126,7 @@ public class DataReductionProxySettings {
-         // DataReductionProxySettings is a singleton that lives forever and there's no clean
-         // shutdown of Chrome on Android
-         mNativeDataReductionProxySettings = nativeInit();
-+        nativeSetDataReductionProxyEnabled(mNativeDataReductionProxySettings, false);
-     }
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferenceFragment.java
+@@ -50,10 +50,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragment {
+         PreferenceUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
+         getActivity().setTitle(DataReductionBrandingResourceProvider.getDataSaverBrandedString(
+                 R.string.data_reduction_title));
+-        boolean isEnabled = DataReductionProxySettings.getInstance().isDataReductionProxyEnabled();
+-        mIsEnabled = !isEnabled;
+-        mWasEnabledAtCreation = isEnabled;
+-        updatePreferences(isEnabled);
++
++        mIsEnabled = false;
++        mWasEnabledAtCreation = false;
++        updatePreferences(false);
+ 
+         setHasOptionsMenu(true);
  
-     /** Returns true if the SPDY proxy promo is allowed to be shown. */
-@@ -148,6 +149,7 @@ public class DataReductionProxySettings {
-      * data reduction statistics if this is the first time the SPDY proxy has been enabled.
-      */
-     public void setDataReductionProxyEnabled(Context context, boolean enabled) {
-+        enabled = false;
-         if (enabled
-                 && ContextUtils.getAppSharedPreferences().getLong(
-                            DATA_REDUCTION_FIRST_ENABLED_TIME, 0)
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
-@@ -70,7 +70,7 @@ public class DataReductionPromoUtils {
-         }
-         if (DataReductionProxySettings.getInstance().isDataReductionProxyManaged()) return false;
-         if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()) return false;
--        return true;
-+        return false;
+@@ -153,6 +153,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragment {
      }
  
-     /**
+     private void createDataReductionSwitch(boolean isEnabled) {
++        if (false) {
+         final ChromeSwitchPreference dataReductionSwitch =
+                 new ChromeSwitchPreference(getActivity(), null);
+         dataReductionSwitch.setKey(PREF_DATA_REDUCTION_SWITCH);
+@@ -180,5 +181,6 @@ public class DataReductionPreferenceFragment extends PreferenceFragment {
+         // (e.g. the switch will say "On" when data reduction is really turned off), so
+         // .setChecked() should be called after .addPreference()
+         dataReductionSwitch.setChecked(isEnabled);
++        }
+     }
+ }
 -- 
 2.11.0
 

+ 210 - 0
build/patches/Disable-dynamic-module-loading.patch

@@ -0,0 +1,210 @@
+From: csagan5 <32685696+csagan5@users.noreply.github.com>
+Date: Mon, 20 May 2019 23:14:36 +0200
+Subject: Disable dynamic module loading
+
+---
+ chrome/android/chrome_java_sources.gni             | 13 ----------
+ .../browser/customtabs/CustomTabActivity.java      | 18 -------------
+ .../customtabs/CustomTabIntentDataProvider.java    | 17 ++----------
+ .../browser/customtabs/CustomTabsConnection.java   | 30 ----------------------
+ .../CustomTabActivityComponent.java                |  4 ---
+ 5 files changed, 2 insertions(+), 80 deletions(-)
+
+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
+@@ -479,19 +479,6 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/customtabs/content/TabCreationMode.java",
+   "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
+   "java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegatePostMessageBackend.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityHostImpl.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleConstants.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleCoordinator.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModulePageLoadObserver.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleToolbarController.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleHostImpl.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleLoader.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleMetrics.java",
+-  "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ObjectWrapper.java",
+   "java/src/org/chromium/chrome/browser/database/SQLiteCursor.java",
+   "java/src/org/chromium/chrome/browser/datareduction/DataReductionBrandingResourceProvider.java",
+   "java/src/org/chromium/chrome/browser/datareduction/DataReductionMainMenuItem.java",
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+@@ -62,7 +62,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvid
+ import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
+ import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
+ import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
+ import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
+ import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
+ import org.chromium.chrome.browser.gsa.GSAState;
+@@ -133,9 +132,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+ 
+     private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
+ 
+-    @Nullable
+-    private DynamicModuleCoordinator mDynamicModuleCoordinator;
+-
+     private ActivityTabTaskDescriptionHelper mTaskDescriptionHelper;
+ 
+     private CustomTabNightModeStateController mNightModeStateController;
+@@ -315,12 +311,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+     public void finishNativeInitialization() {
+         if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this);
+ 
+-        // Try to initialize dynamic module early to enqueue navigation events
+-        // @see DynamicModuleNavigationEventObserver
+-        if (mIntentDataProvider.isDynamicModuleEnabled()) {
+-            mDynamicModuleCoordinator = getComponent().resolveDynamicModuleCoordinator();
+-        }
+-
+         LayoutManager layoutDriver = new LayoutManager(getCompositorViewHolder());
+         initializeCompositorContent(layoutDriver, findViewById(R.id.url_bar),
+                 (ViewGroup) findViewById(android.R.id.content),
+@@ -461,10 +451,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+         WebContents webContents = tab == null ? null : tab.getWebContents();
+         mConnection.resetPostMessageHandlerForSession(
+                 mIntentDataProvider.getSession(), webContents);
+-
+-        if (mDynamicModuleCoordinator != null) {
+-            mDynamicModuleCoordinator.resetPostMessageHandlersForCurrentSession(null);
+-        }
+     }
+ 
+     private void initalizePreviewsObserver() {
+@@ -926,10 +912,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+         if (mIntentDataProvider.isTrustedWebActivity()) {
+             component.resolveTrustedWebActivityCoordinator();
+         }
+-        if (mConnection.shouldHideTopBarOnModuleManagedUrlsForSession(
+-                    mIntentDataProvider.getSession())) {
+-            component.resolveDynamicModuleToolbarController();
+-        }
+ 
+         return component;
+     }
+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
+@@ -38,7 +38,6 @@ import org.chromium.chrome.browser.ChromeVersionInfo;
+ import org.chromium.chrome.browser.IntentHandler;
+ import org.chromium.chrome.browser.UrlConstants;
+ import org.chromium.chrome.browser.browserservices.BrowserSessionDataProvider;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
+ import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
+ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
+ import org.chromium.chrome.browser.util.ColorUtils;
+@@ -826,20 +825,8 @@ public class CustomTabIntentDataProvider extends BrowserSessionDataProvider {
+         // even receive the extras for using the feature.
+         if (componentName == null) return false;
+ 
+-        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE)) {
+-            Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
+-            ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.FEATURE_DISABLED);
+-            return false;
+-        }
+-
+-        ExternalAuthUtils authUtils = ChromeApplication.getComponent().resolveExternalAuthUtils();
+-        if (!authUtils.isGoogleSigned(componentName.getPackageName())) {
+-            Log.w(TAG, "The %s package is not Google-signed.", componentName.getPackageName());
+-            ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.NOT_GOOGLE_SIGNED);
+-            return false;
+-        }
+-
+-        return true;
++        Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
++        return false;
+     }
+ 
+     /**
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+@@ -57,8 +57,6 @@ import org.chromium.chrome.browser.WarmupManager;
+ import org.chromium.chrome.browser.browserservices.BrowserSessionContentUtils;
+ import org.chromium.chrome.browser.browserservices.Origin;
+ import org.chromium.chrome.browser.browserservices.PostMessageHandler;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleLoader;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
+ import org.chromium.chrome.browser.device.DeviceClassManager;
+ import org.chromium.chrome.browser.init.ChainedTasks;
+ import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
+@@ -214,7 +212,6 @@ public class CustomTabsConnection {
+ 
+     private volatile ChainedTasks mWarmupTasks;
+ 
+-    private @Nullable ModuleLoader mModuleLoader;
+     /**
+      * <strong>DO NOT CALL</strong>
+      * Public to be instanciable from {@link ChromeApplication}. This is however
+@@ -1323,7 +1320,6 @@ public class CustomTabsConnection {
+         if (ChromeApplication.isSevereMemorySignal(level)) {
+             getInstance().mClientManager.cleanupUnusedSessions();
+         }
+-        if (getInstance().mModuleLoader != null) getInstance().mModuleLoader.onTrimMemory(level);
+     }
+ 
+     @VisibleForTesting
+@@ -1464,32 +1460,6 @@ public class CustomTabsConnection {
+             CustomTabsSessionToken session, String url, String origin, int referrerPolicy,
+             @DetachedResourceRequestMotivation int motivation);
+ 
+-    public ModuleLoader getModuleLoader(ComponentName componentName, @Nullable String assetName) {
+-        if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE_DEX_LOADING)) {
+-            assetName = null;
+-        }
+-
+-        if (mModuleLoader != null) {
+-            boolean isComponentNameChanged =
+-                    !componentName.equals(mModuleLoader.getComponentName());
+-            boolean isAssetNameChanged =
+-                    !TextUtils.equals(assetName, mModuleLoader.getDexAssetName());
+-            ModuleLoader.ModuleApkVersion newModuleApkVersion =
+-                    ModuleLoader.ModuleApkVersion.getModuleVersion(componentName.getPackageName());
+-            boolean isModuleVersionChanged =
+-                    !mModuleLoader.getModuleApkVersion().equals(newModuleApkVersion);
+-
+-            if (isComponentNameChanged || isAssetNameChanged || isModuleVersionChanged) {
+-                mModuleLoader.destroyModule(ModuleMetrics.DestructionReason.MODULE_LOADER_CHANGED);
+-                mModuleLoader = null;
+-            }
+-        }
+-
+-        if (mModuleLoader == null) mModuleLoader = new ModuleLoader(componentName, assetName);
+-
+-        return mModuleLoader;
+-    }
+-
+     @CalledByNative
+     public static void notifyClientOfDetachedRequestCompletion(
+             CustomTabsSessionToken session, String url, int status) {
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
+@@ -16,8 +16,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigatio
+ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController;
+ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
+ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
+-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleToolbarController;
+ import org.chromium.chrome.browser.dependency_injection.ActivityScope;
+ import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
+ import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
+@@ -33,8 +31,6 @@ import dagger.Subcomponent;
+ @ActivityScope
+ public interface CustomTabActivityComponent extends ChromeActivityComponent {
+     TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
+-    DynamicModuleToolbarController resolveDynamicModuleToolbarController();
+-    DynamicModuleCoordinator resolveDynamicModuleCoordinator();
+ 
+     TabObserverRegistrar resolveTabObserverRegistrar();
+     CustomTabTopBarDelegate resolveTobBarDelegate();
+-- 
+2.11.0
+

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

@@ -10,7 +10,7 @@ Subject: Disable metrics on all I/O threads
 diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
 --- a/chrome/browser/browser_process_impl.cc
 +++ b/chrome/browser/browser_process_impl.cc
-@@ -947,7 +947,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -963,7 +963,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
  #endif  // defined(OS_CHROMEOS)
  
    registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
@@ -22,7 +22,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
 diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
 --- a/chrome/browser/profiles/profile_io_data.cc
 +++ b/chrome/browser/profiles/profile_io_data.cc
-@@ -55,8 +55,6 @@
+@@ -54,8 +54,6 @@
  #include "components/cookie_config/cookie_store_util.h"
  #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
  #include "components/dom_distiller/core/url_constants.h"

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

@@ -11,7 +11,7 @@ a corresponding user option to individually disable their usage.
 diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
 --- a/components/url_formatter/url_formatter.cc
 +++ b/components/url_formatter/url_formatter.cc
-@@ -410,13 +410,13 @@ IDNConversionStatus IDNToUnicodeOneComponent(const base::char16* comp,
+@@ -424,13 +424,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
  }  // namespace
  
  const FormatUrlType kFormatUrlOmitNothing = 0;

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

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

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

@@ -5,11 +5,11 @@ Subject: Disable promos displayed in bookmarks manager
 Remove personalized signin promo view from
 bookmarks, never reach signin thresholds.
 ---
- .../personalized_signin_promo_view_bookmarks.xml   | 30 ----------------------
- .../browser/bookmarks/BookmarkItemsAdapter.java    | 23 ++---------------
- .../browser/signin/SigninPromoController.java      | 19 ++------------
- chrome/android/java_sources.gni                    |  1 -
- 4 files changed, 4 insertions(+), 69 deletions(-)
+ .../personalized_signin_promo_view_bookmarks.xml   | 30 -------------
+ .../browser/bookmarks/BookmarkItemsAdapter.java    | 23 +---------
+ .../browser/bookmarks/BookmarkPromoHeader.java     | 52 +---------------------
+ .../browser/signin/SigninPromoController.java      | 19 +-------
+ 4 files changed, 5 insertions(+), 119 deletions(-)
  delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
 
 diff --git a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml b/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
@@ -124,6 +124,96 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
      }
  
      private void populateTopLevelFoldersList() {
+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
+@@ -17,7 +17,6 @@ import android.view.ViewGroup;
+ import org.chromium.base.ContextUtils;
+ import org.chromium.base.VisibleForTesting;
+ import org.chromium.chrome.R;
+-import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
+ import org.chromium.chrome.browser.signin.ProfileDataCache;
+ import org.chromium.chrome.browser.signin.SigninAccessPoint;
+ import org.chromium.chrome.browser.signin.SigninManager;
+@@ -131,18 +130,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+     }
+ 
+     /**
+-     * @return Personalized signin promo header {@link ViewHolder} instance that can be used with
+-     *         {@link RecyclerView}.
+-     */
+-    ViewHolder createPersonalizedSigninPromoHolder(ViewGroup parent) {
+-        View view = LayoutInflater.from(mContext).inflate(
+-                R.layout.personalized_signin_promo_view_bookmarks, parent, false);
+-
+-        // ViewHolder is abstract and it cannot be instantiated directly.
+-        return new ViewHolder(view) {};
+-    }
+-
+-    /**
+      * @return Sync promo header {@link ViewHolder} instance that can be used with
+      *         {@link RecyclerView}.
+      */
+@@ -153,42 +140,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+         return new ViewHolder(view) {};
+     }
+ 
+-    /**
+-     * Configures the personalized signin promo and records promo impressions.
+-     * @param view The view to be configured.
+-     */
+-    void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) {
+-        SigninPromoUtil.setupPromoViewFromCache(mSigninPromoController, mProfileDataCache, view,
+-                this::setPersonalizedSigninPromoDeclined);
+-    }
+-
+-    /**
+-     * Detaches the previously configured {@link PersonalizedSigninPromoView}.
+-     */
+-    void detachPersonalizePromoView() {
+-        if (mSigninPromoController != null) mSigninPromoController.detach();
+-    }
+-
+-    /**
+-     * Saves that the personalized signin promo was declined and updates the UI.
+-     */
+-    private void setPersonalizedSigninPromoDeclined() {
+-        SharedPreferences.Editor sharedPreferencesEditor =
+-                ContextUtils.getAppSharedPreferences().edit();
+-        sharedPreferencesEditor.putBoolean(PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, true);
+-        sharedPreferencesEditor.apply();
+-        mPromoState = calculatePromoState();
+-        triggerPromoUpdate();
+-    }
+-
+-    /**
+-     * @return Whether the user declined the personalized signin promo.
+-     */
+-    private boolean wasPersonalizedSigninPromoDeclined() {
+-        return ContextUtils.getAppSharedPreferences().getBoolean(
+-                PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, false);
+-    }
+-
+     private @PromoState int calculatePromoState() {
+         if (sPromoStateForTests != null) {
+             return sPromoStateForTests;
+@@ -202,7 +153,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+             boolean impressionLimitReached = !SigninPromoController.hasNotReachedImpressionLimit(
+                     SigninAccessPoint.BOOKMARK_MANAGER);
+             if (!mSignInManager.isSignInAllowed() || !SigninPromoController.isSignInPromoAllowed()
+-                    || impressionLimitReached || wasPersonalizedSigninPromoDeclined()) {
++                    || impressionLimitReached) {
+                 return PromoState.PROMO_NONE;
+             }
+             return PromoState.PROMO_SIGNIN_PERSONALIZED;
+@@ -250,7 +201,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
+     }
+ 
+     private void triggerPromoUpdate() {
+-        detachPersonalizePromoView();
+         mPromoHeaderChangeAction.run();
+     }
+ 
 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
@@ -153,17 +243,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPr
      }
  
      /**
-diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
---- a/chrome/android/java_sources.gni
-+++ b/chrome/android/java_sources.gni
-@@ -166,7 +166,6 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java",
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java",
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java",
--  "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java",
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java",
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIObserver.java",
-   "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java",
 -- 
 2.11.0
 

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

@@ -36,8 +36,8 @@ diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_di
 diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 --- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
 +++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
-@@ -120,7 +120,7 @@ function maybeSetWebFont() {
-   if (distiller_on_ios) return;
+@@ -123,7 +123,7 @@ function maybeSetWebFont() {
+     return;
  
    var e = document.createElement('link');
 -  e.href = 'https://fonts.googleapis.com/css?family=Roboto';

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

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

+ 17 - 16
build/patches/Disable-signin-and-data-saver-preferences.patch

@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
          android:key="basics_section"
          android:order="3"
          android:title="@string/prefs_section_basics"/>
-@@ -96,11 +81,6 @@
+@@ -95,11 +80,6 @@
          android:key="languages"
          android:order="17"
          android:title="@string/prefs_languages"/>
@@ -66,11 +66,12 @@ 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/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
-@@ -17,16 +17,12 @@ import org.chromium.base.VisibleForTesting;
+@@ -17,17 +17,13 @@ import org.chromium.base.VisibleForTesting;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ChromeFeatureList;
  import org.chromium.chrome.browser.contextual_suggestions.ContextualSuggestionsEnabledStateUtils;
 -import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
+ import org.chromium.chrome.browser.night_mode.NightModeUtils;
  import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
  import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
  import org.chromium.chrome.browser.preferences.autofill_assistant.AutofillAssistantPreferences;
@@ -83,7 +84,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  import org.chromium.chrome.browser.util.FeatureUtilities;
  
  import java.util.HashMap;
-@@ -36,11 +32,7 @@ import java.util.Map;
+@@ -37,11 +33,7 @@ import java.util.Map;
   * The main settings screen, shown when the user first opens Settings.
   */
  public class MainPreferences extends PreferenceFragment
@@ -96,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      public static final String PREF_SEARCH_ENGINE = "search_engine";
      public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
      public static final String PREF_CONTEXTUAL_SUGGESTIONS = "contextual_suggestions";
-@@ -60,7 +52,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -61,7 +53,6 @@ public class MainPreferences extends PreferenceFragment
  
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
@@ -104,7 +105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  
      public MainPreferences() {
          setHasOptionsMenu(true);
-@@ -76,33 +67,16 @@ public class MainPreferences extends PreferenceFragment
+@@ -77,33 +68,16 @@ public class MainPreferences extends PreferenceFragment
      @Override
      public void onDestroy() {
          super.onDestroy();
@@ -138,7 +139,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      @Override
-@@ -115,17 +89,9 @@ public class MainPreferences extends PreferenceFragment
+@@ -116,17 +90,9 @@ public class MainPreferences extends PreferenceFragment
          PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
          cachePreferences();
  
@@ -156,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              // If we are on Android O+ the Notifications preference should lead to the Android
-@@ -189,7 +155,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -190,7 +156,6 @@ public class MainPreferences extends PreferenceFragment
              Preference preference = getPreferenceScreen().getPreference(index);
              mAllPreferences.put(preference.getKey(), preference);
          }
@@ -164,7 +165,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -198,13 +163,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -199,13 +164,6 @@ public class MainPreferences extends PreferenceFragment
      }
  
      private void updatePreferences() {
@@ -178,7 +179,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
          updateSearchEnginePreference();
  
          Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
-@@ -234,10 +192,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -235,10 +193,6 @@ public class MainPreferences extends PreferenceFragment
          } else {
              removePreferenceIfPresent(PREF_DEVELOPER);
          }
@@ -189,7 +190,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      private Preference addPreferenceIfAbsent(String key) {
-@@ -251,15 +205,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -252,15 +206,6 @@ public class MainPreferences extends PreferenceFragment
          if (preference != null) getPreferenceScreen().removePreference(preference);
      }
  
@@ -205,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      private void updateSearchEnginePreference() {
          if (!TemplateUrlService.getInstance().isLoaded()) {
              ChromeBasePreference searchEnginePref =
-@@ -291,28 +236,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -292,28 +237,6 @@ public class MainPreferences extends PreferenceFragment
          pref.setSummary(getResources().getString(isOn ? R.string.text_on : R.string.text_off));
      }
  
@@ -234,7 +235,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      // TemplateUrlService.LoadListener implementation.
      @Override
      public void onTemplateUrlServiceLoaded() {
-@@ -320,11 +243,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -321,11 +244,6 @@ public class MainPreferences extends PreferenceFragment
          updateSearchEnginePreference();
      }
  
@@ -246,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      @VisibleForTesting
      ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
          return mManagedPreferenceDelegate;
-@@ -334,9 +252,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -335,9 +253,6 @@ public class MainPreferences extends PreferenceFragment
          return new ManagedPreferenceDelegate() {
              @Override
              public boolean isPreferenceControlledByPolicy(Preference preference) {
@@ -256,7 +257,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
                  if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
                      return TemplateUrlService.getInstance().isDefaultSearchManaged();
                  }
-@@ -345,11 +260,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -346,11 +261,6 @@ public class MainPreferences extends PreferenceFragment
  
              @Override
              public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
@@ -315,7 +316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
 diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
 --- a/chrome/android/java/strings/android_chrome_strings.grd
 +++ b/chrome/android/java/strings/android_chrome_strings.grd
-@@ -315,9 +315,6 @@ CHAR-LIMIT guidelines:
+@@ -324,9 +324,6 @@ CHAR-LIMIT guidelines:
        </message>
  
        <!-- Sign-in, sync and personalization preferences -->
@@ -325,7 +326,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
        <message name="IDS_SIGN_IN_TO_CHROME" desc="Title for the button to sign in to Chrome using one's Google account. [CHAR-LIMIT=27]">
          Sign in to Chrome
        </message>
-@@ -400,9 +397,6 @@ CHAR-LIMIT guidelines:
+@@ -409,9 +406,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>

+ 1 - 1
build/patches/Disable-signin-data-reduction-promos.patch

@@ -9,7 +9,7 @@ Subject: Disable signin/data reduction promos
 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
-@@ -695,34 +695,10 @@ public class ChromeTabbedActivity
+@@ -702,34 +702,10 @@ public class ChromeTabbedActivity
              }
  
              ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance();

+ 11 - 14
build/patches/Disable-unused-permissions.patch

@@ -28,7 +28,7 @@ Fixup more permission removal
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -1023,8 +1023,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -1042,8 +1042,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
    ]
    res_dir = "java/res_template"
    variables = [ "manifest_package=$manifest_package" ]
-@@ -1035,7 +1034,6 @@ jinja_template_resources("chrome_test_apk_template_resources") {
+@@ -1054,7 +1053,6 @@ jinja_template_resources("chrome_test_apk_template_resources") {
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
      "java/res_template/xml/searchable.xml",
@@ -49,7 +49,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -44,25 +44,19 @@ by a child template that "extends" this file.
+@@ -44,22 +44,16 @@ by a child template that "extends" this file.
      {% if target_sdk_version|int > 27 or target_sdk_version == "Q" %}
          <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
      {% endif %}
@@ -57,9 +57,6 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      <uses-permission android:name="android.permission.INTERNET"/>
 -    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-     {% if target_sdk_version|int > 28 or target_sdk_version == "Q" %}
-         <uses-permission-sdk-23 android:name="android.permission.READ_MEDIA_IMAGES"/>
-     {% endif %}
      <uses-permission android:name="android.permission.NFC"/>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 -    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
@@ -75,7 +72,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% set enable_vr = enable_vr|default(0) %}
      {% if enable_vr == "true" %}
      <!-- Indicates use of Android's VR-mode, available only on Android N+. -->
-@@ -100,8 +94,6 @@ by a child template that "extends" this file.
+@@ -97,8 +91,6 @@ by a child template that "extends" this file.
      <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
@@ -84,7 +81,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      {% block extra_uses_permissions %}
      {% endblock %}
  
-@@ -925,16 +917,6 @@ by a child template that "extends" this file.
+@@ -975,16 +967,6 @@ by a child template that "extends" this file.
                  android:resource="@xml/file_paths" />
          </provider>
  
@@ -101,7 +98,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Broadcast receiver that will be notified of account changes -->
          <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
              <intent-filter>
-@@ -1040,15 +1022,6 @@ by a child template that "extends" this file.
+@@ -1090,15 +1072,6 @@ by a child template that "extends" this file.
          <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
              android:exported="false"/>
  
@@ -120,16 +117,16 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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
-@@ -127,8 +127,6 @@ import org.chromium.chrome.browser.share.ShareMenuActionHandler;
+@@ -131,8 +131,6 @@ import org.chromium.chrome.browser.share.ShareMenuActionHandler;
  import org.chromium.chrome.browser.snackbar.BottomContainer;
  import org.chromium.chrome.browser.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
 -import org.chromium.chrome.browser.sync.ProfileSyncService;
 -import org.chromium.chrome.browser.sync.SyncController;
  import org.chromium.chrome.browser.tab.Tab;
- import org.chromium.chrome.browser.tab.TabThemeColorHelper;
+ import org.chromium.chrome.browser.tab.TabFullscreenHandler;
  import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
-@@ -259,9 +257,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -283,9 +281,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
      @SuppressLint("NewApi")
      private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
  
@@ -139,7 +136,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      @Nullable
      private ChromeFullscreenManager mFullscreenManager;
  
-@@ -966,28 +961,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -964,28 +959,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;
@@ -168,7 +165,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      }
  
      @Override
-@@ -1056,13 +1029,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -1054,13 +1027,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
          if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
              GSAAccountChangeListener.getInstance().disconnect();
          }

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

@@ -11,7 +11,7 @@ Block gelocation by default instead of granting it for non-enterprise use cases
 diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
 --- a/chrome/browser/android/search_permissions/search_permissions_service.cc
 +++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
-@@ -344,11 +344,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -333,11 +333,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
      return;
    }
  
@@ -24,7 +24,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
    pref_service_->ClearPref(prefs::kDSEWasDisabledByPolicy);
  
    // Initialize the pref for geolocation if it hasn't been initialized yet.
-@@ -381,10 +377,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -370,10 +366,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
        pref_service_->ClearPref(prefs::kDSEGeolocationSettingDeprecated);
      } else if (dse_geolocation_setting == CONTENT_SETTING_ASK) {
        // If the user hasn't explicitly allowed or blocked geolocation for the
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
      }
  
      // Update the content setting with the auto-grants for the DSE.
-@@ -410,11 +404,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
+@@ -398,11 +392,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
          GetContentSetting(dse_origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
      ContentSetting dse_notifications_setting = notifications_setting_to_restore;
      // If the user hasn't explicitly allowed or blocked notifications for the
@@ -54,15 +54,15 @@ 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
-@@ -329,7 +329,7 @@ const base::Feature kGoogleBrandedContextMenu{
- 
+@@ -242,7 +242,7 @@ const char kDisallowUnsafeHttpDownloadsParamName[] = "MimeTypeList";
  #if defined(OS_ANDROID)
- const base::Feature kGrantNotificationsToDSE{"GrantNotificationsToDSE",
+ // Enable changing default downloads storage location on Android.
+ const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
 -                                             base::FEATURE_ENABLED_BY_DEFAULT};
 +                                             base::FEATURE_DISABLED_BY_DEFAULT};
- #endif  // defined(OS_ANDROID)
+ #endif
  
- #if defined(OS_CHROMEOS)
+ // Show the number of open incognito windows besides incognito icon on the
 -- 
 2.11.0
 

+ 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
-@@ -333,10 +333,10 @@ void RecordParsingOnSavingDifference(
+@@ -354,10 +354,10 @@ bool IsOnlyNewParserEnabled() {
  void PasswordManager::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

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

+ 1 - 1
build/patches/Enable-history-requirement-of-user-gesture.patch

@@ -10,7 +10,7 @@ Set #enable-history-entry-requires-user-gesture to enabled 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
-@@ -1199,7 +1199,7 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -1133,7 +1133,7 @@ const FeatureEntry kFeatureEntries[] = {
      {"enable-history-entry-requires-user-gesture",
       flag_descriptions::kHistoryRequiresUserGestureName,
       flag_descriptions::kHistoryRequiresUserGestureDescription, kOsAll,

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

@@ -9,7 +9,7 @@ Subject: Enable night mode menu entry by default
 diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
 --- a/chrome/browser/android/chrome_feature_list.cc
 +++ b/chrome/browser/android/chrome_feature_list.cc
-@@ -222,7 +222,7 @@ const base::Feature kAdjustWebApkInstallationSpace = {
+@@ -230,7 +230,7 @@ const base::Feature kAdjustWebApkInstallationSpace = {
      "AdjustWebApkInstallationSpace", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kAndroidNightMode{"AndroidNightMode",

+ 14 - 14
build/patches/Enable-secure-DNS-mode-by-default-in-DnsTransaction.patch

@@ -1,23 +1,23 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Fri, 15 Mar 2019 10:05:14 +0100
-Subject: Enable secure DNS mode by default in DnsTransaction.
+Subject: Enable secure DNS mode by default in DnsTransaction
 
 ---
- net/dns/host_resolver_impl.cc | 2 +-
+ net/dns/host_resolver_manager.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
---- a/net/dns/host_resolver_impl.cc
-+++ b/net/dns/host_resolver_impl.cc
-@@ -984,7 +984,7 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
-             base::BindOnce(&DnsTask::OnTransactionComplete,
-                            base::Unretained(this), tick_clock_->NowTicks(),
-                            dns_query_type),
--            net_log_, SecureDnsMode::AUTOMATIC);
-+            net_log_, SecureDnsMode::SECURE);
-     trans->SetRequestContext(delegate_->url_request_context());
-     trans->SetRequestPriority(delegate_->priority());
-     return trans;
+diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
+--- a/net/dns/host_resolver_manager.cc
++++ b/net/dns/host_resolver_manager.cc
+@@ -1001,7 +1001,7 @@ class HostResolverManager::DnsTask : public base::SupportsWeakPtr<DnsTask> {
+   std::unique_ptr<DnsTransaction> CreateTransaction(
+       DnsQueryType dns_query_type) {
+     DCHECK_NE(DnsQueryType::UNSPECIFIED, dns_query_type);
+-    SecureDnsMode secure_dns_mode = SecureDnsMode::AUTOMATIC;
++    SecureDnsMode secure_dns_mode = SecureDnsMode::SECURE;
+     // Downgrade to OFF mode if the query name for this attempt matches one of
+     // the DoH server names. This is needed to prevent infinite recursion.
+     DCHECK(client_->GetConfig());
 -- 
 2.11.0
 

+ 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
-@@ -559,11 +559,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
+@@ -558,11 +558,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
-@@ -585,7 +581,7 @@ const base::Feature kSiteIsolationForPasswordSites{
+@@ -584,7 +580,7 @@ const base::Feature kSiteIsolationForPasswordSites{
  // base::SysInfo::AmountOfPhysicalMemoryMB().
  const base::Feature kSitePerProcessOnlyForHighMemoryClients{
      "site-per-process-only-for-high-memory-clients",

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

@@ -9,7 +9,7 @@ Subject: Hide passwords manager link
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
-@@ -249,7 +249,7 @@ public class SavePasswordsPreferences
+@@ -251,7 +251,7 @@ public class SavePasswordsPreferences
              return;
          }
  
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pas
  
          PreferenceGroup passwordParent;
          if (mSearchQuery == null) {
-@@ -324,7 +324,7 @@ public class SavePasswordsPreferences
+@@ -326,7 +326,7 @@ public class SavePasswordsPreferences
              return;
          }
  

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

@@ -20,7 +20,7 @@ Send a random key press to circumvent idle status detection
 diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
 --- a/third_party/blink/renderer/core/dom/BUILD.gn
 +++ b/third_party/blink/renderer/core/dom/BUILD.gn
-@@ -144,6 +144,8 @@ blink_core_sources("dom") {
+@@ -146,6 +146,8 @@ blink_core_sources("dom") {
      "global_event_handlers.h",
      "icon_url.cc",
      "icon_url.h",
@@ -33,14 +33,14 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
 @@ -241,6 +241,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"
++#include "extensions/video_bg_play.h"
  #include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
  #include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
-+#include "extensions/video_bg_play.h"
- #include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
- #include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
- #include "third_party/blink/renderer/core/paint/paint_layer.h"
-@@ -300,6 +301,8 @@
+ #include "third_party/blink/renderer/core/page/spatial_navigation_controller.h"
+@@ -305,6 +306,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  #include "third_party/blink/renderer/platform/wtf/time.h"
  
@@ -49,7 +49,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();
-@@ -6224,8 +6227,35 @@ void Document::FinishedParsing() {
+@@ -6106,8 +6109,35 @@ void Document::FinishedParsing() {
    // Parser should have picked up all preloads by now
    fetcher_->ClearPreloads(ResourceFetcher::kClearSpeculativeMarkupPreloads);
  

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

@@ -36,7 +36,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
 diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
 --- a/chrome/browser/chrome_content_browser_client.cc
 +++ b/chrome/browser/chrome_content_browser_client.cc
-@@ -1122,7 +1122,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1139,7 +1139,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -72,7 +72,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
-@@ -139,7 +139,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -148,7 +148,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -108,7 +108,7 @@ diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signi
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -68,11 +68,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -66,11 +66,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
    registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
    registry->RegisterBooleanPref(
@@ -125,12 +125,12 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
 diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
 --- a/chrome/browser/ui/navigation_correction_tab_observer.cc
 +++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
-@@ -57,7 +57,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
+@@ -55,7 +55,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {}
+ // static
  void NavigationCorrectionTabObserver::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* prefs) {
-   prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
--                             true,
-+                             false,
+-  prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, true,
++  prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, false,
                               user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
  }
  
@@ -163,7 +163,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
-@@ -359,10 +359,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
+@@ -360,10 +360,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
    bool enabled = IsAutofillEnabled();
    sync_state_ = personal_data_ ? personal_data_->GetSyncSigninState()
                                 : AutofillSyncSigninState::kNumSyncStates;
@@ -175,7 +175,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
  
    return enabled;
  }
-@@ -625,10 +622,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
+@@ -626,10 +623,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
        // suggestions available.
        // TODO(mathp): Differentiate between number of suggestions available
        // (current metric) and number shown to the user.
@@ -201,9 +201,9 @@ 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
-@@ -137,10 +137,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
-       prefs::kAutofillBillingCustomerNumber, 0.0,
-       user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
+@@ -130,10 +130,10 @@ const char kAutocompleteLastVersionRetentionPolicy[] =
+ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+   // Synced prefs. Used for cross-device choices, e.g., credit card Autofill.
    registry->RegisterBooleanPref(
 -      prefs::kAutofillEnabledDeprecated, true,
 +      prefs::kAutofillEnabledDeprecated, false,
@@ -214,7 +214,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterIntegerPref(
        prefs::kAutofillLastVersionDeduped, 0,
-@@ -153,7 +153,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -146,7 +146,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
        prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(
@@ -259,7 +259,7 @@ diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
-@@ -367,14 +367,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
+@@ -382,14 +382,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
    if (is_theme())
      return false;
  

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

@@ -10,9 +10,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 @@ -400,6 +400,13 @@ public class ExternalNavigationHandler {
-             return OverrideUrlLoadingResult.NO_OVERRIDE;
          }
  
+         // TODO(changwan): check if we need to handle URL even when external intent is off.
 +        // Force to open YouTube urls in Bromite
 +        String intentPackageName = intent.getPackage();
 +        if (intentPackageName != null && intentPackageName.equals("com.google.android.youtube")) {
@@ -20,9 +20,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
 +            return OverrideUrlLoadingResult.NO_OVERRIDE;
 +        }
 +
-         // Sanitize the Intent, ensuring web pages can not bypass browser
-         // security (only access to BROWSABLE activities).
-         intent.addCategory(Intent.CATEGORY_BROWSABLE);
+         if (CommandLine.getInstance().hasSwitch(
+                 ChromeSwitches.DISABLE_EXTERNAL_INTENT_REQUESTS)) {
+             Log.w(TAG, "External intent handling is disabled by a command-line flag.");
 -- 
 2.11.0
 

+ 1 - 1
build/patches/Punt-the-Widevine-version-string.patch

@@ -10,7 +10,7 @@ Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromi
 diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
 --- a/chrome/common/chrome_content_client.cc
 +++ b/chrome/common/chrome_content_client.cc
-@@ -521,7 +521,7 @@ void ChromeContentClient::AddContentDecryptionModules(
+@@ -520,7 +520,7 @@ void ChromeContentClient::AddContentDecryptionModules(
      base::FilePath cdm_path;
      content::CdmCapability capability;
      if (IsWidevineAvailable(&cdm_path, &capability)) {

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

@@ -177,19 +177,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          } else {
              // If both Autoplay and Protected Content menus are available, they'll be tucked under
              // the Media key. Otherwise, we can remove the Media menu entry.
-@@ -105,11 +103,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
-                 getPreferenceScreen().removePreference(findPreference(Type.CLIPBOARD));
+@@ -102,11 +100,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
+             if (!SiteSettingsCategory.adsCategoryEnabled()) {
+                 getPreferenceScreen().removePreference(findPreference(Type.ADS));
              }
 -            // The new Languages Preference *feature* is an advanced version of this translate
 -            // preference. Once Languages Preference is enabled, remove this setting.
 -            if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
 -                getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
 -            }
-             if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
+             if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SENSOR_CONTENT_SETTING)) {
                  getPreferenceScreen().removePreference(findPreference(Type.SENSORS));
              }
-@@ -119,10 +112,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -116,10 +109,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
      private void updatePreferenceStates() {
          PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
  
@@ -200,16 +200,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          // Preferences that navigate to Website Settings.
          List<Integer> websitePrefs = new ArrayList<Integer>();
          if (mMediaSubMenu) {
-@@ -139,7 +128,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
+@@ -136,7 +125,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
              if (!mProtectedContentMenuAvailable) {
                  websitePrefs.add(Type.AUTOPLAY);
              }
 -            websitePrefs.add(Type.BACKGROUND_SYNC);
 +//            websitePrefs.add(Type.BACKGROUND_SYNC);
              websitePrefs.add(Type.CAMERA);
-             if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
-                 websitePrefs.add(Type.CLIPBOARD);
-@@ -236,11 +225,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
+             websitePrefs.add(Type.CLIPBOARD);
+             websitePrefs.add(Type.COOKIES);
+@@ -232,11 +221,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
                  preference.getTitle().toString());
          return false;
      }

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

@@ -24,7 +24,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
-@@ -2143,15 +2143,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
+@@ -2177,15 +2177,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  
          final Tab currentTab = getActivityTab();
  
@@ -56,7 +56,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/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
-@@ -878,7 +878,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
+@@ -752,7 +752,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
      public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
          // Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
          if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id

+ 20 - 43
build/patches/Remove-recent-tabs-signin.patch

@@ -3,40 +3,16 @@ Date: Wed, 15 May 2019 17:08:35 +0200
 Subject: Remove recent tabs signin
 
 ---
- .../chrome/browser/ntp/RecentTabsManager.java      | 13 +---
  .../chrome/browser/signin/SigninManager.java       | 74 ++--------------------
- 2 files changed, 8 insertions(+), 79 deletions(-)
+ 1 file changed, 7 insertions(+), 67 deletions(-)
 
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
-@@ -357,18 +357,7 @@ public class RecentTabsManager implements AndroidSyncSettingsObserver, SignInSta
-      */
-     @PromoState
-     int getPromoType() {
--        if (!ChromeSigninController.get().isSignedIn()) {
--            if (!SigninManager.get().isSignInAllowed()) {
--                return PromoState.PROMO_NONE;
--            }
--            return PromoState.PROMO_SIGNIN_PERSONALIZED;
--        }
--
--        if (AndroidSyncSettings.get().isSyncEnabled()
--                && AndroidSyncSettings.get().isChromeSyncEnabled() && !mForeignSessions.isEmpty()) {
--            return PromoState.PROMO_NONE;
--        }
--        return PromoState.PROMO_SYNC;
-+        return PromoState.PROMO_NONE;
-     }
- 
-     void recordRecentTabMetrics() {
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
-@@ -28,11 +28,7 @@ import org.chromium.base.task.PostTask;
+@@ -29,11 +29,7 @@ import org.chromium.base.metrics.RecordUserAction;
+ import org.chromium.base.task.PostTask;
  import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
  import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler;
- import org.chromium.chrome.browser.sync.SyncUserDataWiper;
 -import org.chromium.components.signin.AccountIdProvider;
  import org.chromium.components.signin.AccountManagerFacade;
 -import org.chromium.components.signin.AccountTrackerService;
@@ -45,7 +21,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
  import org.chromium.content_public.browser.UiThreadTaskTraits;
  
  import java.util.ArrayList;
-@@ -48,7 +44,7 @@ import java.util.List;
+@@ -49,7 +45,7 @@ import java.util.List;
   * <p/>
   * See chrome/browser/signin/signin_manager_android.h for more details.
   */
@@ -54,7 +30,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private static final String TAG = "SigninManager";
  
      /**
-@@ -181,8 +177,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -182,8 +178,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
  
      private final long mNativeSigninManagerAndroid;
      private final Context mContext;
@@ -63,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      private final ObserverList<SignInStateObserver> mSignInStateObservers = new ObserverList<>();
      private final ObserverList<SignInAllowedObserver> mSignInAllowedObservers =
              new ObserverList<>();
-@@ -226,25 +220,17 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -227,26 +221,18 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
      }
  
      private SigninManager() {
@@ -84,14 +60,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
 -        mAccountTrackerService = accountTrackerService;
 -        mAndroidSyncSettings = androidSyncSettings;
  
-         mNativeSigninManagerAndroid = nativeInit();
-         mSigninAllowedByPolicy = nativeIsSigninAllowedByPolicy(mNativeSigninManagerAndroid);
+         mNativeSigninManagerAndroid = SigninManagerJni.get().init(this);
+         mSigninAllowedByPolicy =
+                 SigninManagerJni.get().isSigninAllowedByPolicy(this, mNativeSigninManagerAndroid);
 -
 -        mAccountTrackerService.addSystemAccountsSeededListener(this);
      }
  
      /**
-@@ -280,8 +266,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -282,8 +268,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
       * Returns true if signin can be started now.
       */
      public boolean isSignInAllowed() {
@@ -101,25 +78,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      /**
-@@ -296,15 +281,14 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -298,15 +283,14 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
       *         Google Play Services installed.
       */
      public boolean isSigninSupported() {
 -        return !ApiCompatibilityUtils.isDemoUser(mContext)
 -                && !ExternalAuthUtils.getInstance().isGooglePlayServicesMissing(mContext);
-+	return false;
++        return false;
      }
  
      /**
       * @return Whether force sign-in is enabled by policy.
       */
      public boolean isForceSigninEnabled() {
--        return nativeIsForceSigninEnabled(mNativeSigninManagerAndroid);
-+	return false;
+-        return SigninManagerJni.get().isForceSigninEnabled(this, mNativeSigninManagerAndroid);
++        return false;
      }
  
      /**
-@@ -338,27 +322,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -340,27 +324,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
      }
  
      /**
@@ -147,7 +124,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.
       *
       * If an activity is provided, it is considered an "interactive" sign-in and the user can be
-@@ -413,19 +376,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -415,19 +378,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
      }
  
      private void progressSignInFlowSeedSystemAccounts() {
@@ -168,9 +145,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
      }
  
      /**
-@@ -489,12 +440,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
-         // Tell the native side that sign-in has completed.
-         nativeOnSignInCompleted(mNativeSigninManagerAndroid, mSignInState.mAccount.name);
+@@ -493,12 +444,6 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+         SigninManagerJni.get().onSignInCompleted(
+                 this, mNativeSigninManagerAndroid, mSignInState.mAccount.name);
  
 -        // Cache the signed-in account name. This must be done after the native call, otherwise
 -        // sync tries to start without being signed in natively and crashes.
@@ -181,7 +158,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninMa
          if (mSignInState.mCallback != null) {
              mSignInState.mCallback.onSignInComplete();
          }
-@@ -670,16 +615,11 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
+@@ -674,16 +619,11 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
          // Should be set at beginning of sign-out flow.
          assert mSignOutState != null;
  

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

@@ -9,7 +9,7 @@ Subject: Restore classic new tab page
 diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
 --- a/chrome/browser/search/search.cc
 +++ b/chrome/browser/search/search.cc
-@@ -154,16 +154,6 @@ bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
+@@ -160,16 +160,6 @@ bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
    return true;
  }
  
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
  bool ShouldDelayRemoteNTP(const GURL& search_provider_url, Profile* profile) {
  #if defined(OS_CHROMEOS)
    // On Chrome OS, if the session hasn't merged yet, we need to avoid loading
-@@ -190,8 +180,7 @@ struct NewTabURLDetails {
+@@ -196,8 +186,7 @@ struct NewTabURLDetails {
  
      const GURL local_url(chrome::kChromeSearchLocalNtpUrl);
  

+ 68 - 41
build/patches/Rollback-android-minSdkVersion-from-19-KitKat-to-16-JellyBean.patch → build/patches/Rollback-android-minSdkVersion-from-19-KitKat-to-17-JellyBean.patch

@@ -1,36 +1,40 @@
 From: csagan5 <32685696+csagan5@users.noreply.github.com>
 Date: Tue, 29 Jan 2019 01:02:07 +0100
-Subject: Rollback android:minSdkVersion from 19 (KitKat) to 16 (JellyBean)
+Subject: Rollback android:minSdkVersion from 19 (KitKat) to 17 (JellyBean)
+
+Use v4 ArrayMap for compatibility with v17
 
 This reverts commit 9a48587dbd1988cf5066b454e7d09ae35d124366.
 ---
- .../test/embedded_test_server/java/AndroidManifest.xml            | 2 +-
- android_webview/tools/automated_ui_tests/java/AndroidManifest.xml | 2 +-
- base/android/jni_generator/AndroidManifest.xml                    | 2 +-
- build/android/AndroidManifest.xml                                 | 2 +-
- build/android/gradle/android.jinja                                | 2 +-
- chrome/android/BUILD.gn                                           | 8 ++++----
- .../test/android/chrome_public_test_support/AndroidManifest.xml   | 2 +-
- components/cronet/android/sample/AndroidManifest.xml              | 3 +--
- components/cronet/android/sample/javatests/AndroidManifest.xml    | 3 +--
- components/cronet/android/test/javaperftests/AndroidManifest.xml  | 3 +--
- components/cronet/android/test/javatests/AndroidManifest.xml      | 3 +--
- .../test/android/browsertests_apk/AndroidManifest.xml.jinja2      | 2 +-
- content/shell/android/browsertests_apk/AndroidManifest.xml.jinja2 | 2 +-
- content/shell/android/javatests/AndroidManifest.xml               | 2 +-
- content/shell/android/linker_test_apk/AndroidManifest.xml.jinja2  | 2 +-
- content/shell/android/shell_apk/AndroidManifest.xml.jinja2        | 2 +-
- docs/android_build_instructions.md                                | 2 +-
- mojo/public/java/system/javatests/AndroidManifest.xml             | 2 +-
- net/android/unittest_support/AndroidManifest.xml                  | 2 +-
- net/test/android/javatests/AndroidManifest.xml                    | 2 +-
- remoting/android/java/AndroidManifest.xml.jinja2                  | 2 +-
- remoting/android/javatests/AndroidManifest.xml.jinja2             | 2 +-
- testing/android/driver/java/AndroidManifest.xml                   | 2 +-
- testing/android/native_test/java/AndroidManifest.xml.jinja2       | 2 +-
- tools/android/audio_focus_grabber/java/AndroidManifest.xml        | 2 +-
- tools/android/push_apps_to_background/AndroidManifest.xml         | 4 ++--
- 26 files changed, 30 insertions(+), 34 deletions(-)
+ .../test/embedded_test_server/java/AndroidManifest.xml         |  2 +-
+ .../tools/automated_ui_tests/java/AndroidManifest.xml          |  2 +-
+ base/android/jni_generator/AndroidManifest.xml                 |  2 +-
+ build/android/AndroidManifest.xml                              |  2 +-
+ build/android/gradle/android.jinja                             |  2 +-
+ chrome/android/BUILD.gn                                        |  6 +++---
+ .../trustedwebactivityui/splashscreen/SplashImageHolder.java   |  2 +-
+ .../splashscreen/SplashScreenController.java                   | 10 +++++-----
+ .../android/chrome_public_test_support/AndroidManifest.xml     |  2 +-
+ components/cronet/android/sample/AndroidManifest.xml           |  3 +--
+ components/cronet/android/sample/javatests/AndroidManifest.xml |  3 +--
+ .../cronet/android/test/javaperftests/AndroidManifest.xml      |  3 +--
+ components/cronet/android/test/javatests/AndroidManifest.xml   |  3 +--
+ .../test/android/browsertests_apk/AndroidManifest.xml.jinja2   |  2 +-
+ .../shell/android/browsertests_apk/AndroidManifest.xml.jinja2  |  2 +-
+ content/shell/android/javatests/AndroidManifest.xml            |  2 +-
+ .../shell/android/linker_test_apk/AndroidManifest.xml.jinja2   |  2 +-
+ content/shell/android/shell_apk/AndroidManifest.xml.jinja2     |  2 +-
+ docs/android_build_instructions.md                             |  2 +-
+ mojo/public/java/system/javatests/AndroidManifest.xml          |  2 +-
+ net/android/unittest_support/AndroidManifest.xml               |  2 +-
+ net/test/android/javatests/AndroidManifest.xml                 |  2 +-
+ remoting/android/java/AndroidManifest.xml.jinja2               |  2 +-
+ remoting/android/javatests/AndroidManifest.xml.jinja2          |  2 +-
+ testing/android/driver/java/AndroidManifest.xml                |  2 +-
+ testing/android/native_test/java/AndroidManifest.xml.jinja2    |  2 +-
+ tools/android/audio_focus_grabber/java/AndroidManifest.xml     |  2 +-
+ tools/android/push_apps_to_background/AndroidManifest.xml      |  4 ++--
+ 28 files changed, 35 insertions(+), 39 deletions(-)
 
 diff --git a/android_webview/test/embedded_test_server/java/AndroidManifest.xml b/android_webview/test/embedded_test_server/java/AndroidManifest.xml
 --- a/android_webview/test/embedded_test_server/java/AndroidManifest.xml
@@ -94,7 +98,7 @@ diff --git a/build/android/gradle/android.jinja b/build/android/gradle/android.j
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -65,7 +65,7 @@ jinja_template("chrome_public_android_manifest") {
+@@ -67,7 +67,7 @@ jinja_template("chrome_public_android_manifest") {
    output = chrome_public_android_manifest
    variables = chrome_public_jinja_variables
    variables += [
@@ -102,17 +106,8 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 +    "min_sdk_version=17",
      "target_sdk_version=$android_sdk_version",
    ]
- 
-@@ -1554,7 +1554,7 @@ template("chrome_public_apk_or_module_tmpl") {
-       android_manifest = chrome_modern_public_android_manifest
-       android_manifest_dep = ":chrome_modern_public_android_manifest"
-     } else {
--      min_sdk_version = 19
-+      min_sdk_version = 17
-       android_manifest = chrome_public_android_manifest
-       android_manifest_dep = ":chrome_public_android_manifest"
-     }
-@@ -1777,7 +1777,7 @@ jinja_template("chrome_public_test_apk_manifest") {
+ }
+@@ -1831,7 +1831,7 @@ jinja_template("chrome_public_test_apk_manifest") {
    variables = default_chrome_public_jinja_variables
    variables += [
      "manifest_package=$test_manifest_package",
@@ -121,7 +116,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "target_sdk_version=$android_sdk_version",
    ]
  }
-@@ -1788,7 +1788,7 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
+@@ -1842,7 +1842,7 @@ jinja_template("chrome_public_test_vr_apk_manifest") {
    output = chrome_public_test_vr_apk_manifest
    variables = chrome_public_jinja_variables
    variables += [
@@ -130,6 +125,38 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "target_sdk_version=$android_sdk_version",
    ]
  }
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashImageHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashImageHolder.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashImageHolder.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashImageHolder.java
+@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.browserservices.trustedwebactivityui.splashs
+ import android.graphics.Bitmap;
+ import android.support.annotation.Nullable;
+ import android.support.customtabs.CustomTabsSessionToken;
+-import android.util.ArrayMap;
++import android.support.v4.util.ArrayMap;
+ 
+ import java.util.Collections;
+ import java.util.Map;
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashScreenController.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashScreenController.java
+--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashScreenController.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/splashscreen/SplashScreenController.java
+@@ -119,11 +119,11 @@ public class SplashScreenController implements InflationObserver, Destroyable {
+             Method method = Activity.class.getDeclaredMethod("convertFromTranslucent");
+             method.setAccessible(true);
+             method.invoke(mActivity);
+-        } catch (ReflectiveOperationException e) {
+-            // Method not found or threw an exception.
+-            mUmaRecorder.recordTranslucencyRemovalFailed();
+-            assert false : "Failed to remove activity translucency reflectively";
+-            Log.e(TAG, "Failed to remove activity translucency reflectively");
++        } catch (Exception e) {
++           // Method not found or threw an exception.
++           mUmaRecorder.recordTranslucencyRemovalFailed();
++           assert false : "Failed to remove activity translucency reflectively";
++           Log.e(TAG, "Failed to remove activity translucency reflectively:", e);
+         }
+     }
+ 
 diff --git a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
 --- a/chrome/test/android/chrome_public_test_support/AndroidManifest.xml
 +++ b/chrome/test/android/chrome_public_test_support/AndroidManifest.xml

+ 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
-@@ -263,16 +263,12 @@ config("compiler") {
+@@ -253,16 +253,12 @@ config("compiler") {
          cflags += [ "-fstack-protector" ]
        }
      } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) {

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

@@ -6,8 +6,8 @@ Subject: Use 4 tile rows, never show logo
  .../java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java  | 6 +++---
  .../chromium/chrome/browser/suggestions/MostVisitedSitesBridge.java | 2 +-
  .../src/org/chromium/chrome/browser/suggestions/SiteSection.java    | 2 +-
+ chrome/browser/engagement/important_sites_util.cc                   | 2 +-
  components/history/core/browser/top_sites_impl.h                    | 2 +-
- components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc  | 2 +-
  5 files changed, 7 insertions(+), 7 deletions(-)
 
 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
@@ -64,6 +64,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sit
      }
  
      @LayoutRes
+diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc
+--- a/chrome/browser/engagement/important_sites_util.cc
++++ b/chrome/browser/engagement/important_sites_util.cc
+@@ -58,7 +58,7 @@ static const int kTimesIgnoredForBlacklist = 3;
+ // These are the maximum # of bookmarks we can use as signals. If the user has
+ // <= kMaxBookmarks, then we just use those bookmarks. Otherwise we filter all
+ // bookmarks on site engagement > 0, sort, and trim to kMaxBookmarks.
+-static const int kMaxBookmarks = 5;
++static const int kMaxBookmarks = 4 * 4 + 2;
+ 
+ // We need this to be a macro, as the histogram macros cache their pointers
+ // after the first call, so when we change the uma name we check fail if we're
 diff --git a/components/history/core/browser/top_sites_impl.h b/components/history/core/browser/top_sites_impl.h
 --- a/components/history/core/browser/top_sites_impl.h
 +++ b/components/history/core/browser/top_sites_impl.h
@@ -76,18 +88,6 @@ diff --git a/components/history/core/browser/top_sites_impl.h b/components/histo
  
    TopSitesImpl(PrefService* pref_service,
                 HistoryService* history_service,
-diff --git a/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc b/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc
---- a/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc
-+++ b/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc
-@@ -30,7 +30,7 @@ namespace ntp_snippets {
- 
- namespace {
- 
--const int kMaxBookmarks = 10;
-+const int kMaxBookmarks = 4 * 4 + 2;
- const int kMaxBookmarkAgeInDays = 7;
- 
- const char* kMaxBookmarksParamName = "bookmarks_max_count";
 -- 
 2.11.0
 

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

@@ -25,7 +25,7 @@ sandboxing.
 diff --git a/android_webview/apk/java/AndroidManifest.xml b/android_webview/apk/java/AndroidManifest.xml
 --- a/android_webview/apk/java/AndroidManifest.xml
 +++ b/android_webview/apk/java/AndroidManifest.xml
-@@ -25,7 +25,6 @@
+@@ -28,7 +28,6 @@
                   android:icon="@{{manifest_package|default('com.android.webview')}}:drawable/icon_webview"
                   android:name="{{ application_name|default('com.android.webview.chromium.WebViewApplication') }}"
                   android:multiArch="true"

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

@@ -75,7 +75,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
-@@ -175,19 +175,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
+@@ -176,19 +176,6 @@ void LogDeveloperEngagementUkm(ukm::UkmRecorder* ukm_recorder,
    }
  }
  

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

@@ -4,22 +4,28 @@ Subject: dns: send IPv6 connectivity probes to RIPE DNS
 
 Short of disabling the code (we may do that in a subsequent patch
 anyway), avoid sending to Google.
+
+Increase probe period from 1s to 15s
 ---
- net/dns/host_resolver_impl.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ net/dns/host_resolver_manager.cc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
 
-diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
---- a/net/dns/host_resolver_impl.cc
-+++ b/net/dns/host_resolver_impl.cc
-@@ -117,10 +117,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
+diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
+--- a/net/dns/host_resolver_manager.cc
++++ b/net/dns/host_resolver_manager.cc
+@@ -118,12 +118,12 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
+ 
+ // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are
  // cached.
- const int kIPv6ProbePeriodMs = 1000;
+-const int kIPv6ProbePeriodMs = 1000;
++const int kIPv6ProbePeriodMs = 15000;
  
 -// Google DNS address used for IPv6 probes.
-+/* RIPE NCC k.root-servers.net. 2001:7fd::1 (anycasted) */
- const uint8_t kIPv6ProbeAddress[] =
--    { 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,
--      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88 };
+-const uint8_t kIPv6ProbeAddress[] = {0x20, 0x01, 0x48, 0x60, 0x48, 0x60,
+-                                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-                                     0x00, 0x00, 0x88, 0x88};
++// RIPE NCC k.root-servers.net. 2001:7fd::1 (anycasted)
++const uint8_t kIPv6ProbeAddress[] =
 +    { 0x20, 0x01, 0x07, 0xfd, 0x00, 0x00, 0x00, 0x00,
 +      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
  

+ 1 - 1
build/patches/extensions-always-show-component-extensions-in-the-ext-list.patch

@@ -18,7 +18,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/28
 diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
 --- a/extensions/common/extension.cc
 +++ b/extensions/common/extension.cc
-@@ -379,9 +379,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
+@@ -394,9 +394,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
  }
  
  bool Extension::ShouldExposeViaManagementAPI() const {

+ 17 - 17
build/patches/getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch

@@ -34,17 +34,17 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #include "cc/input/scroll_snap_data.h"
  #include "services/metrics/public/cpp/mojo_ukm_recorder.h"
 @@ -738,6 +739,10 @@ Document::Document(const DocumentInit& initializer,
-   }
-   DCHECK(fetcher_);
- 
+   // also depend on the url NOT getting immediately set in opened windows.
+   // See fast/dom/early-frame-url.html
+   // and fast/dom/location-new-window-no-crash.html, respectively.
 +  // add X/Y noise factors that will be used to mitigate fingerprinting
 +  shuffleFactorX_ = base::RandDouble();
 +  shuffleFactorY_ = base::RandDouble();
 +
-   root_scroller_controller_ = RootScrollerController::Create(*this);
- 
-   // We depend on the url getting immediately set in subframes, but we
-@@ -803,6 +808,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
+   // FIXME: Can/should we unify this behavior?
+   if (initializer.ShouldSetURL()) {
+     SetURL(initializer.Url());
+@@ -797,6 +802,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
                         Position::BeforeNode(*shadow_host));
  }
  
@@ -62,7 +62,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
-@@ -393,6 +393,9 @@ class CORE_EXPORT Document : public ContainerNode,
+@@ -392,6 +392,9 @@ class CORE_EXPORT Document : public ContainerNode,
      has_xml_declaration_ = has_xml_declaration ? 1 : 0;
    }
  
@@ -72,19 +72,19 @@ diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/
    String visibilityState() const;
    bool IsPageVisible() const;
    bool hidden() const;
-@@ -1815,6 +1818,8 @@ class CORE_EXPORT Document : public ContainerNode,
- 
-   double start_time_;
- 
+@@ -1814,6 +1817,8 @@ class CORE_EXPORT Document : public ContainerNode,
+   Vector<AXContext*> ax_contexts_;
+   Member<AXObjectCache> ax_object_cache_;
+   Member<DocumentMarkerController> markers_;
 +  double shuffleFactorX_, shuffleFactorY_;
 +
-   TraceWrapperMember<ScriptRunner> script_runner_;
  
-   HeapVector<Member<ScriptElementBase>> current_script_stack_;
+   bool update_focus_appearance_after_layout_ = false;
+ 
 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
-@@ -1222,6 +1222,15 @@ DOMRectList* Element::getClientRects() {
+@@ -1321,6 +1321,15 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -100,7 +100,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return DOMRectList::Create(quads);
  }
  
-@@ -1239,6 +1248,13 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -1338,6 +1347,13 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -117,7 +117,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
 diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
 --- a/third_party/blink/renderer/core/dom/range.cc
 +++ b/third_party/blink/renderer/core/dom/range.cc
-@@ -1642,11 +1642,27 @@ DOMRectList* Range::getClientRects() const {
+@@ -1643,11 +1643,27 @@ DOMRectList* Range::getClientRects() const {
    Vector<FloatQuad> quads;
    GetBorderAndTextQuads(quads);
  

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

@@ -22,7 +22,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.VisibleForTesting;
-@@ -73,23 +69,7 @@ public class SigninHelper {
+@@ -74,23 +70,7 @@ public class SigninHelper {
          @Override
          public List<String> getAccountChangeEvents(
                  Context context, int index, String accountName) {

+ 35 - 46
build/patches/kill-GCM.patch

@@ -3,8 +3,8 @@ Date: Fri, 22 Jun 2018 17:11:38 +0200
 Subject: kill GCM
 
 ---
- build/secondary/third_party/android_tools/BUILD.gn |   3 -
  chrome/android/BUILD.gn                            |   1 -
+ chrome/android/chrome_java_sources.gni             |   5 -
  chrome/android/java/AndroidManifest.xml            |  62 ---------
  .../chrome/browser/BackgroundSyncLauncher.java     |  97 --------------
  .../chrome/browser/ChromeBackgroundService.java    |   1 -
@@ -12,7 +12,6 @@ Subject: kill GCM
  .../browser/ntp/snippets/SnippetsLauncher.java     |  44 -------
  .../browser/services/gcm/GCMBackgroundTask.java    |   2 +-
  .../gcm/InvalidationGcmUpstreamSender.java         |  15 ---
- chrome/android/java_sources.gni                    |   2 -
  components/background_task_scheduler/BUILD.gn      |   1 -
  .../BackgroundTaskSchedulerGcmNetworkManager.java  | 146 +--------------------
  components/gcm_driver/android/BUILD.gn             |   1 -
@@ -22,36 +21,45 @@ Subject: kill GCM
  third_party/cacheinvalidation/BUILD.gn             |   6 -
  .../client/contrib/MultiplexingGcmListener.java    |  92 +------------
  .../android2/channel/AndroidNetworkChannel.java    |  18 +--
- 19 files changed, 15 insertions(+), 526 deletions(-)
+ 18 files changed, 15 insertions(+), 526 deletions(-)
 
-diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
---- a/build/secondary/third_party/android_tools/BUILD.gn
-+++ b/build/secondary/third_party/android_tools/BUILD.gn
-@@ -83,9 +83,6 @@ if (enable_java_templates) {
-     testonly = true
-     java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
-   }
--  android_java_prebuilt("android_gcm_java") {
--    jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar"
--  }
-   android_java_prebuilt("emma_device_java") {
-     jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar"
-     include_java_resources = true
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -344,7 +344,6 @@ android_library("chrome_java") {
+@@ -343,7 +343,6 @@ android_library("chrome_java") {
+     "//third_party/android_deps:com_google_protobuf_protobuf_lite_java",
      "//third_party/android_deps:javax_inject_javax_inject_java",
      "//third_party/android_media:android_media_java",
+-    "//third_party/android_sdk:android_gcm_java",
      "//third_party/android_swipe_refresh:android_swipe_refresh_java",
--    "//third_party/android_tools:android_gcm_java",
-     "//third_party/blink/public:android_mojo_bindings_java",
      "//third_party/blink/public:blink_headers_java",
      "//third_party/blink/public/mojom:android_mojo_bindings_java",
+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
+@@ -22,7 +22,6 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/ChromeActivity.java",
+   "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
+   "java/src/org/chromium/chrome/browser/ChromeApplication.java",
+-  "java/src/org/chromium/chrome/browser/ChromeBackgroundService.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",
+@@ -1427,10 +1426,6 @@ chrome_java_sources = [
+   "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
+   "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
+   "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
+-  "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
+-  "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.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/sessions/SessionTabHelper.java",
+   "java/src/org/chromium/chrome/browser/share/OptionalShareTargetsManager.java",
+   "java/src/org/chromium/chrome/browser/share/ShareActivity.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
-@@ -75,22 +75,17 @@ by a child template that "extends" this file.
+@@ -72,22 +72,17 @@ by a child template that "extends" this file.
      <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
      <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
      <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
@@ -74,7 +82,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 %}
-@@ -984,47 +979,8 @@ by a child template that "extends" this file.
+@@ -1034,47 +1029,8 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
  
@@ -122,7 +130,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
              android:exported="false"/>
          <receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
-@@ -1051,24 +1007,6 @@ by a child template that "extends" this file.
+@@ -1101,24 +1057,6 @@ by a child template that "extends" this file.
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
@@ -285,7 +293,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
-@@ -115,7 +115,6 @@ public class ChromeBackgroundService extends GcmTaskService {
+@@ -113,7 +113,6 @@ public class ChromeBackgroundService extends GcmTaskService {
  
      @VisibleForTesting
      protected void rescheduleBackgroundSyncTasksOnUpgrade() {
@@ -456,25 +464,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
      }
  
      private boolean isMessageWithinLimit(Bundle data) {
-diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
---- a/chrome/android/java_sources.gni
-+++ b/chrome/android/java_sources.gni
-@@ -31,7 +31,6 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/ChromeActivity.java",
-   "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
-   "java/src/org/chromium/chrome/browser/ChromeApplication.java",
--  "java/src/org/chromium/chrome/browser/ChromeBackgroundService.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",
-@@ -1385,7 +1384,6 @@ chrome_java_sources = [
-   "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
-   "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
-   "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
--  "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
-   "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java",
-   "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
-   "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
 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
@@ -668,7 +657,7 @@ diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/andr
    deps = [
      "//base:base_java",
      "//content/public/android:content_java",
--    "//third_party/android_tools:android_gcm_java",
+-    "//third_party/android_sdk:android_gcm_java",
      "//third_party/jsr-305:jsr_305_javalib",
    ]
  
@@ -781,8 +770,8 @@ diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
 @@ -11,7 +11,6 @@ android_library("sync_java") {
      "//components/signin/core/browser/android:java",
      "//net/android:net_java",
-     "//third_party/android_deps:android_support_annotations_java",
--    "//third_party/android_tools:android_gcm_java",
+     "//third_party/android_deps:com_android_support_support_annotations_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",
@@ -793,7 +782,7 @@ diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidat
        "$google_play_services_package:google_play_services_iid_java",
        "$google_play_services_package:google_play_services_tasks_java",
        "//third_party/android_protobuf:protobuf_nano_javalib",
--      "//third_party/android_tools:android_gcm_java",
+-      "//third_party/android_sdk:android_gcm_java",
      ]
  
      java_files = [

+ 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
-@@ -192,7 +192,6 @@
+@@ -191,7 +191,6 @@
      <dimen name="fre_button_padding">12dp</dimen>
      <dimen name="fre_margin">24dp</dimen>
      <dimen name="fre_image_height">120dp</dimen>

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

@@ -22,10 +22,10 @@ diff --git a/chrome/android/java/res/xml/languages_preferences.xml b/chrome/andr
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
-@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.metrics.UmaUtils;
+@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.datareduction.DataReductionPromoUtils;
+ import org.chromium.chrome.browser.datareduction.DataReductionProxyUma;
+ import org.chromium.chrome.browser.metrics.UmaUtils;
  import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
- import org.chromium.chrome.browser.preferences.datareduction.DataReductionPromoUtils;
- import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma;
 +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
  import org.chromium.chrome.browser.search_engines.TemplateUrlService;
  import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;

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

@@ -13,7 +13,7 @@ Barcode, face and text detection APIs
 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
-@@ -84,14 +84,10 @@ if (is_android) {
+@@ -86,14 +86,10 @@ if (is_android) {
  
    android_library("shape_detection_java") {
      java_files = [

+ 2 - 2
build/patches/safe_browsing-disable-cookie-transmission.patch

@@ -38,7 +38,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
 diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
 --- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
 +++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
-@@ -772,7 +772,7 @@ void CheckClientDownloadRequest::SendRequest() {
+@@ -777,7 +777,7 @@ void CheckClientDownloadRequest::SendRequest() {
    auto resource_request = std::make_unique<network::ResourceRequest>();
    resource_request->url = PPAPIDownloadRequest::GetDownloadRequestUrl();
    resource_request->method = "POST";
@@ -73,7 +73,7 @@ diff --git a/components/safe_browsing/browser/threat_details_cache.cc b/componen
 diff --git a/components/safe_browsing/db/v4_update_protocol_manager.cc b/components/safe_browsing/db/v4_update_protocol_manager.cc
 --- a/components/safe_browsing/db/v4_update_protocol_manager.cc
 +++ b/components/safe_browsing/db/v4_update_protocol_manager.cc
-@@ -344,8 +344,8 @@ void V4UpdateProtocolManager::IssueUpdateRequest() {
+@@ -373,8 +373,8 @@ void V4UpdateProtocolManager::IssueUpdateRequest() {
    std::string req_base64 = GetBase64SerializedUpdateRequestProto();
    GetUpdateUrlAndHeaders(req_base64, &resource_request->url,
                           &resource_request->headers);

+ 1 - 1
build/patches/safe_browsing-disable-incident-reporting.patch

@@ -46,7 +46,7 @@ diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_
 diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
 --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
 +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
-@@ -59,8 +59,7 @@ class SafeBrowsingBlockingPageFactoryImpl
+@@ -62,8 +62,7 @@ class SafeBrowsingBlockingPageFactoryImpl
      PrefService* prefs =
          Profile::FromBrowserContext(web_contents->GetBrowserContext())
              ->GetPrefs();

+ 1 - 1
build/patches/ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-Google.patch

@@ -17,7 +17,7 @@ Related comment: https://bugs.chromium.org/p/chromium/issues/detail?id=710701#c1
 diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn
 --- a/third_party/blink/renderer/devtools/BUILD.gn
 +++ b/third_party/blink/renderer/devtools/BUILD.gn
-@@ -1265,10 +1265,8 @@ action("generate_devtools_grd") {
+@@ -1274,10 +1274,8 @@ action("generate_devtools_grd") {
        devtools_embedder_scripts +
        [ "$resources_out_dir/devtools_extension_api.js" ]
  

+ 3 - 3
build/patches/ungoogled-chromium-Disable-Gaia.patch

@@ -18,7 +18,7 @@ See also: https://github.com/Eloston/ungoogled-chromium/issues/104
 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
-@@ -396,7 +396,6 @@
+@@ -392,7 +392,6 @@
        <include name="IDR_INLINE_LOGIN_HTML" file="resources\inline_login\inline_login.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
        <include name="IDR_INLINE_LOGIN_CSS" file="resources\inline_login\inline_login.css" flattenhtml="true" type="BINDATA" />
        <include name="IDR_INLINE_LOGIN_JS" file="resources\inline_login\inline_login.js" flattenhtml="true" type="BINDATA" />
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
        <include name="IDR_INSPECT_CSS" file="resources\inspect\inspect.css" flattenhtml="true" type="BINDATA" />
        <include name="IDR_INSPECT_HTML" file="resources\inspect\inspect.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
        <include name="IDR_INSPECT_JS" file="resources\inspect\inspect.js" flattenhtml="true" type="BINDATA" />
-@@ -496,7 +495,6 @@
+@@ -492,7 +491,6 @@
        <include name="IDR_WEBRTC_LOGS_JS" file="resources\media\webrtc_logs.js" type="BINDATA" />
        <include name="IDR_WEBSTORE_MANIFEST" file="resources\webstore_app\manifest.json" type="BINDATA" />
        <include name="IDR_CRYPTOTOKEN_MANIFEST" file="resources\cryptotoken\manifest.json" type="BINDATA" />
@@ -80,7 +80,7 @@ diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome
 diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
 --- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
 +++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
-@@ -51,7 +51,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
+@@ -53,7 +53,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
  
    source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
    source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);

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

@@ -71,7 +71,7 @@ diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliabil
 diff --git a/components/domain_reliability/bake_in_configs.py b/components/domain_reliability/bake_in_configs.py
 --- a/components/domain_reliability/bake_in_configs.py
 +++ b/components/domain_reliability/bake_in_configs.py
-@@ -489,7 +489,7 @@ def origin_is_whitelisted(origin):
+@@ -490,7 +490,7 @@ def origin_is_whitelisted(origin):
      domain = origin[8:-1]
    else:
      return False

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

@@ -12,7 +12,7 @@ Added some Bromite-specific further improvements
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -1364,8 +1364,6 @@ jumbo_split_static_library("browser") {
+@@ -1363,8 +1363,6 @@ jumbo_split_static_library("browser") {
      "profiles/profile_attributes_entry.h",
      "profiles/profile_attributes_storage.cc",
      "profiles/profile_attributes_storage.h",

+ 37 - 37
build/patches/ungoogled-chromium-Disable-safe-browsing.patch

@@ -40,7 +40,7 @@ Subject: ungoogled-chromium: Disable safe browsing
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2800,8 +2800,6 @@ jumbo_split_static_library("browser") {
+@@ -2828,8 +2828,6 @@ jumbo_split_static_library("browser") {
        "download/download_commands.h",
        "download/download_crx_util.cc",
        "download/download_crx_util.h",
@@ -98,9 +98,9 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
  #include "chrome/browser/resource_coordinator/resource_coordinator_parts.h"
 -#include "chrome/browser/safe_browsing/safe_browsing_service.h"
  #include "chrome/browser/shell_integration.h"
- #include "chrome/browser/status_icons/status_tray.h"
- #include "chrome/browser/ui/browser_dialogs.h"
-@@ -369,8 +368,6 @@ void BrowserProcessImpl::StartTearDown() {
+ #include "chrome/browser/site_isolation/prefs_observer.h"
+ #include "chrome/browser/startup_data.h"
+@@ -386,8 +385,6 @@ void BrowserProcessImpl::StartTearDown() {
    // that URLFetcher operation before going away.)
    metrics_services_manager_.reset();
    intranet_redirect_detector_.reset();
@@ -109,7 +109,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
    network_time_tracker_.reset();
  #if BUILDFLAG(ENABLE_PLUGINS)
    plugins_resource_service_.reset();
-@@ -992,22 +989,6 @@ StatusTray* BrowserProcessImpl::status_tray() {
+@@ -1008,22 +1005,6 @@ StatusTray* BrowserProcessImpl::status_tray() {
    return status_tray_.get();
  }
  
@@ -132,7 +132,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
  subresource_filter::RulesetService*
  BrowserProcessImpl::subresource_filter_ruleset_service() {
    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-@@ -1292,16 +1273,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() {
+@@ -1311,16 +1292,6 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() {
  #endif
  }
  
@@ -152,7 +152,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
-@@ -172,9 +172,6 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -173,9 +173,6 @@ class BrowserProcessImpl : public BrowserProcess,
    void set_background_mode_manager_for_test(
        std::unique_ptr<BackgroundModeManager> manager) override;
    StatusTray* status_tray() override;
@@ -162,7 +162,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
    subresource_filter::RulesetService* subresource_filter_ruleset_service()
        override;
    optimization_guide::OptimizationGuideService* optimization_guide_service()
-@@ -320,9 +317,6 @@ class BrowserProcessImpl : public BrowserProcess,
+@@ -321,9 +318,6 @@ class BrowserProcessImpl : public BrowserProcess,
    std::unique_ptr<BackgroundModeManager> background_mode_manager_;
  #endif
  
@@ -175,7 +175,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
 diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
 +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
-@@ -646,36 +646,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
+@@ -639,36 +639,6 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
          CONTENT_SETTINGS_TYPE_CLIENT_HINTS, base::Time(), base::Time::Max(),
          website_settings_filter);
  
@@ -215,7 +215,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
 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
-@@ -861,30 +861,6 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
+@@ -887,30 +887,6 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) {
    GetIOThreadApplicationLocale() = locale;
  }
  
@@ -246,7 +246,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
  #if defined(OS_ANDROID)
  float GetDeviceScaleAdjustment() {
    static const float kMinFSM = 1.05f;
-@@ -2090,7 +2066,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
+@@ -2120,7 +2096,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
        // Disable client-side phishing detection in the renderer if it is
        // disabled in the Profile preferences or the browser process.
        if (!prefs->GetBoolean(prefs::kSafeBrowsingEnabled) ||
@@ -255,7 +255,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
          command_line->AppendSwitch(
              switches::kDisableClientSidePhishingDetection);
        }
-@@ -2719,7 +2695,7 @@ void ChromeContentBrowserClient::AllowCertificateError(
+@@ -2779,7 +2755,7 @@ void ChromeContentBrowserClient::AllowCertificateError(
    SSLErrorHandler::HandleSSLError(
        web_contents, cert_error, ssl_info, request_url,
        expired_previous_decision,
@@ -264,7 +264,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
        callback, SSLErrorHandler::BlockingPageReadyCallback());
  }
  
-@@ -3004,8 +2980,6 @@ bool ChromeContentBrowserClient::CanCreateWindow(
+@@ -3066,8 +3042,6 @@ bool ChromeContentBrowserClient::CanCreateWindow(
  void ChromeContentBrowserClient::ResourceDispatcherHostCreated() {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
  
@@ -273,7 +273,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    for (size_t i = 0; i < extra_parts_.size(); ++i)
      extra_parts_[i]->ResourceDispatcherHostCreated();
  
-@@ -4243,7 +4217,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
+@@ -4340,7 +4314,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
    if (base::FeatureList::IsEnabled(features::kSSLCommittedInterstitials)) {
      throttles.push_back(std::make_unique<SSLErrorNavigationThrottle>(
          handle,
@@ -309,7 +309,7 @@ diff --git a/chrome/browser/component_updater/file_type_policies_component_insta
 diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
 --- a/chrome/browser/download/chrome_download_manager_delegate.cc
 +++ b/chrome/browser/download/chrome_download_manager_delegate.cc
-@@ -327,13 +327,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
+@@ -319,13 +319,6 @@ ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() {
  
  void ChromeDownloadManagerDelegate::SetDownloadManager(DownloadManager* dm) {
    download_manager_ = dm;
@@ -323,7 +323,7 @@ diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrom
  }
  
  #if defined(OS_ANDROID)
-@@ -644,16 +637,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath(
+@@ -636,16 +629,6 @@ void ChromeDownloadManagerDelegate::ChooseSavePath(
  
  void ChromeDownloadManagerDelegate::SanitizeSavePackageResourceName(
      base::FilePath* filename) {
@@ -356,7 +356,7 @@ diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/dow
 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
-@@ -219,14 +219,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
+@@ -224,14 +224,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
          base::FilePath::StringType(1, base::FilePath::kExtensionSeparator) +
          extension);
  
@@ -428,7 +428,7 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/b
  #include "chrome/browser/download/download_file_icon_extractor.h"
  #include "chrome/browser/download/download_open_prompt.h"
  #include "chrome/browser/download/download_prefs.h"
-@@ -1305,9 +1304,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {}
+@@ -1304,9 +1303,6 @@ DownloadsAcceptDangerFunction::DownloadsAcceptDangerFunction() {}
  
  DownloadsAcceptDangerFunction::~DownloadsAcceptDangerFunction() {}
  
@@ -438,7 +438,7 @@ diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/b
  bool DownloadsAcceptDangerFunction::RunAsync() {
    std::unique_ptr<downloads::AcceptDanger::Params> params(
        downloads::AcceptDanger::Params::Create(*args_));
-@@ -1345,40 +1341,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) {
+@@ -1344,40 +1340,7 @@ void DownloadsAcceptDangerFunction::PromptOrWait(int download_id, int retries) {
      return;
    }
    RecordApiFunctions(DOWNLOADS_FUNCTION_ACCEPT_DANGER);
@@ -654,7 +654,7 @@ diff --git a/chrome/browser/extensions/blacklist_state_fetcher.h b/chrome/browse
 diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
 +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
-@@ -289,8 +289,7 @@ void NotifyUIThreadOfRequestComplete(
+@@ -290,8 +290,7 @@ void NotifyUIThreadOfRequestComplete(
  }  // namespace
  
  ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate()
@@ -664,7 +664,7 @@ diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b
  
  ChromeResourceDispatcherHostDelegate::~ChromeResourceDispatcherHostDelegate() {
  #if BUILDFLAG(ENABLE_EXTENSIONS)
-@@ -304,8 +303,6 @@ void ChromeResourceDispatcherHostDelegate::RequestBeginning(
+@@ -305,8 +304,6 @@ void ChromeResourceDispatcherHostDelegate::RequestBeginning(
      content::AppCacheService* appcache_service,
      ResourceType resource_type,
      std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
@@ -676,7 +676,7 @@ diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b
 diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
 +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
-@@ -718,9 +718,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
+@@ -695,9 +695,6 @@ void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
    metrics_service_->RegisterMetricsProvider(
        std::make_unique<HttpsEngagementMetricsProvider>());
  
@@ -702,7 +702,7 @@ diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc b/c
 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
-@@ -237,7 +237,6 @@ void ChromeBrowserMainExtraPartsProfiles::
+@@ -238,7 +238,6 @@ void ChromeBrowserMainExtraPartsProfiles::
  #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
    CaptivePortalServiceFactory::GetInstance();
  #endif
@@ -713,7 +713,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
 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
-@@ -563,18 +563,6 @@ ProfileImpl::ProfileImpl(
+@@ -562,18 +562,6 @@ ProfileImpl::ProfileImpl(
                                   create_mode == CREATE_MODE_SYNCHRONOUS);
  #endif
  
@@ -732,7 +732,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
    content::BrowserContext::Initialize(this, path_);
  
    {
-@@ -583,7 +571,7 @@ ProfileImpl::ProfileImpl(
+@@ -582,7 +570,7 @@ ProfileImpl::ProfileImpl(
              ->CreateDelegate();
      delegate->InitPrefRegistry(pref_registry_.get());
      prefs_ = chrome_prefs::CreateProfilePrefs(
@@ -799,7 +799,7 @@ diff --git a/chrome/browser/ssl/cert_report_helper.cc b/chrome/browser/ssl/cert_
 diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc
 --- a/chrome/browser/ssl/security_state_tab_helper.cc
 +++ b/chrome/browser/ssl/security_state_tab_helper.cc
-@@ -186,77 +186,6 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
+@@ -195,77 +195,6 @@ bool SecurityStateTabHelper::UsedPolicyInstalledCertificate() const {
  
  security_state::MaliciousContentStatus
  SecurityStateTabHelper::GetMaliciousContentStatus() const {
@@ -827,7 +827,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
 -      case safe_browsing::SB_THREAT_TYPE_URL_UNWANTED:
 -        return security_state::MALICIOUS_CONTENT_STATUS_UNWANTED_SOFTWARE;
 -      case safe_browsing::SB_THREAT_TYPE_SIGN_IN_PASSWORD_REUSE:
--#if defined(SAFE_BROWSING_DB_LOCAL)
+-#if defined(FULL_SAFE_BROWSING)
 -        if (safe_browsing::ChromePasswordProtectionService::
 -                ShouldShowPasswordReusePageInfoBubble(
 -                    web_contents(),
@@ -841,7 +841,7 @@ diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ss
 -        return security_state::MALICIOUS_CONTENT_STATUS_SOCIAL_ENGINEERING;
 -#endif
 -      case safe_browsing::SB_THREAT_TYPE_ENTERPRISE_PASSWORD_REUSE:
--#if defined(SAFE_BROWSING_DB_LOCAL)
+-#if defined(FULL_SAFE_BROWSING)
 -        if (safe_browsing::ChromePasswordProtectionService::
 -                ShouldShowPasswordReusePageInfoBubble(
 -                    web_contents(),
@@ -904,8 +904,8 @@ diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.
 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
-@@ -2461,7 +2461,6 @@ jumbo_split_static_library("ui") {
-       "views/cookie_info_view.h",
+@@ -2514,7 +2514,6 @@ jumbo_split_static_library("ui") {
+       "views/desktop_capture/desktop_media_tab_list.h",
        "views/device_chooser_content_view.cc",
        "views/device_chooser_content_view.h",
 -      "views/download/download_danger_prompt_views.cc",
@@ -935,7 +935,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
  #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
  #include "chrome/browser/ui/hung_plugin_tab_helper.h"
  #include "chrome/browser/ui/sad_tab_helper.h"
-@@ -201,10 +201,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -198,10 +198,10 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
    ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient(
        web_contents,
        autofill::ChromeAutofillClient::FromWebContents(web_contents));
@@ -950,7 +950,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
    ChromeTranslateClient::CreateForWebContents(web_contents);
    ClientHintsObserver::CreateForWebContents(web_contents);
    ConnectionHelpTabHelper::CreateForWebContents(web_contents);
-@@ -244,10 +244,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -242,10 +242,8 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
    PreviewsUITabHelper::CreateForWebContents(web_contents);
    RecentlyAudibleHelper::CreateForWebContents(web_contents);
    ResourceLoadingHintsWebContentsObserver::CreateForWebContents(web_contents);
@@ -963,7 +963,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
    SearchEngineTabHelper::CreateForWebContents(web_contents);
    SecurityStateTabHelper::CreateForWebContents(web_contents);
    if (SiteEngagementService::IsEnabled())
-@@ -297,7 +295,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
+@@ -295,7 +293,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
        web_contents, std::make_unique<ChromePDFWebContentsHelperClient>());
    PluginObserver::CreateForWebContents(web_contents);
    SadTabHelper::CreateForWebContents(web_contents);
@@ -971,7 +971,7 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
 +  //safe_browsing::SafeBrowsingTabObserver::CreateForWebContents(web_contents);
    SearchTabHelper::CreateForWebContents(web_contents);
    TabDialogs::CreateForWebContents(web_contents);
-   web_modal::WebContentsModalDialogManager::CreateForWebContents(web_contents);
+   if (base::FeatureList::IsEnabled(features::kTabHoverCardImages))
 diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
 --- a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
 +++ b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
@@ -1036,15 +1036,15 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
 diff --git a/components/safe_browsing/features.cc b/components/safe_browsing/features.cc
 --- a/components/safe_browsing/features.cc
 +++ b/components/safe_browsing/features.cc
-@@ -39,7 +39,7 @@ const base::Feature kForceEnableResetPasswordWebUI{
-     "ForceEnableResetPasswordWebUI", base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -43,7 +43,7 @@ const base::Feature kPasswordProtectionForSignedInUsers{
+     base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kSuspiciousSiteTriggerQuotaFeature{
 -    "SafeBrowsingSuspiciousSiteTriggerQuota", base::FEATURE_ENABLED_BY_DEFAULT};
 +    "SafeBrowsingSuspiciousSiteTriggerQuota", base::FEATURE_DISABLED_BY_DEFAULT};
  
  const base::Feature kTelemetryForApkDownloads{
-     "SafeBrowsingTelemetryForApkDownloads", base::FEATURE_DISABLED_BY_DEFAULT};
+     "SafeBrowsingTelemetryForApkDownloads", base::FEATURE_ENABLED_BY_DEFAULT};
 diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
 --- a/components/subresource_filter/core/browser/subresource_filter_features.cc
 +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc

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

@@ -10,7 +10,7 @@ Subject: ungoogled-chromium: Disable translate integration
 diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
 --- a/components/translate/core/browser/translate_manager.cc
 +++ b/components/translate/core/browser/translate_manager.cc
-@@ -704,8 +704,9 @@ void TranslateManager::FilterIsTranslatePossible(
+@@ -670,8 +670,9 @@ void TranslateManager::FilterIsTranslatePossible(
          TranslateBrowserMetrics::INITIATION_STATUS_NO_NETWORK);
    }
  

+ 11 - 12
build/patches/updater-disable-updater-pings.patch

@@ -14,23 +14,22 @@ Chromium would still send background requests. Kill it.
 diff --git a/components/component_updater/component_updater_url_constants.cc b/components/component_updater/component_updater_url_constants.cc
 --- a/components/component_updater/component_updater_url_constants.cc
 +++ b/components/component_updater/component_updater_url_constants.cc
-@@ -15,10 +15,10 @@ namespace component_updater {
+@@ -15,9 +15,9 @@ namespace component_updater {
  // The value of |kDefaultUrlSource| can be overridden with
  // --component-updater=url-source=someurl.
- const char kUpdaterDefaultUrl[] =
--    "https://update.googleapis.com/service/update2";
+ const char kUpdaterJSONDefaultUrl[] =
+-    "https://update.googleapis.com/service/update2/json";
 +    "about:blank";
  
- const char kUpdaterFallbackUrl[] =
--    "http://update.googleapis.com/service/update2";
+ const char kUpdaterJSONFallbackUrl[] =
+-    "http://update.googleapis.com/service/update2/json";
 +    "about:blank";
  
- const char kUpdaterJSONDefaultUrl[] =
-     "https://update.googleapis.com/service/update2/json";
+ }  // namespace component_updater
 diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
 --- a/components/component_updater/configurator_impl.cc
 +++ b/components/component_updater/configurator_impl.cc
-@@ -49,8 +49,7 @@ ConfiguratorImpl::ConfiguratorImpl(
+@@ -42,8 +42,7 @@ ConfiguratorImpl::ConfiguratorImpl(
      : background_downloads_enabled_(config_policy.BackgroundDownloadsEnabled()),
        deltas_enabled_(config_policy.DeltaUpdatesEnabled()),
        fast_update_(config_policy.FastUpdate()),
@@ -40,10 +39,10 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
        url_source_override_(config_policy.UrlSourceOverride()),
        initial_delay_(config_policy.InitialDelay()) {
    if (config_policy.TestRequest()) {
-@@ -89,8 +88,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
-                               GURL(kUpdaterJSONFallbackUrl)}
-           : std::vector<GURL>{GURL(kUpdaterDefaultUrl),
-                               GURL(kUpdaterFallbackUrl)};
+@@ -78,8 +77,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
+ 
+   std::vector<GURL> urls{GURL(kUpdaterJSONDefaultUrl),
+                          GURL(kUpdaterJSONFallbackUrl)};
 -  if (require_encryption_)
 -    update_client::RemoveUnsecureUrls(&urls);
  

+ 2 - 1
build/patches_list.txt

@@ -106,10 +106,11 @@ Add-flag-to-disable-IPv6-probes.patch
 Add-a-proxy-configuration-page.patch
 Do-not-ignore-download-location-prompt-setting.patch
 Disable-previews-by-default.patch
-Rollback-android-minSdkVersion-from-19-KitKat-to-16-JellyBean.patch
+Rollback-android-minSdkVersion-from-19-KitKat-to-17-JellyBean.patch
 Use-4-tile-rows-never-show-logo.patch
 Disable-metrics-collection-for-NTP-tiles.patch
 Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
 Use-64-bit-WebView-processes.patch
 Add-option-to-use-home-page-as-NTP.patch
 Enable-night-mode-menu-entry-by-default.patch
+Disable-dynamic-module-loading.patch

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است