Explorar o código

Release 69.0.3497.73

csagan5 %!s(int64=7) %!d(string=hai) anos
pai
achega
32978e4658
Modificáronse 80 ficheiros con 946 adicións e 1060 borrados
  1. 5 1
      CHANGELOG.md
  2. 70 4
      filters/adblock_entries.h
  3. 1 1
      patches/BRM000_Disable-third-party-cookies-by-default.patch
  4. 12 12
      patches/BRM004_google-cloud-messaging-disable-experiment-status-check.patch
  5. 10 10
      patches/BRM005_updater-disable-updater-pings.patch
  6. 1 1
      patches/BRM006_prefs-only-keep-cookies-until-exit.patch
  7. 1 1
      patches/BRM008_promo-disable-Google-promotion-fetching.patch
  8. 11 24
      patches/BRM010_Modify-default-preferences.patch
  9. 1 1
      patches/BRM012_Do-not-store-passwords-by-default.patch
  10. 1 1
      patches/BRM013_Disable-NTP-remote-suggestions-by-default.patch
  11. 15 21
      patches/BRM017_Skip-the-first-run-and-metrics.patch
  12. 66 38
      patches/BRM018_Disable-signin-and-data-saver-preferences.patch
  13. 2 2
      patches/BRM019_Disable-signin-data-reduction-promos.patch
  14. 92 0
      patches/BRM020_Remove-Sync-and-Translate-menu.patch
  15. 0 177
      patches/BRM020_Removed-Sync-and-Translate-menu.patch
  16. 1 1
      patches/BRM022_Hide-Send-reports-to-Google.patch
  17. 4 4
      patches/BRM024_ungoogled-chromium-Disable-signin.patch
  18. 2 2
      patches/BRM025_ungoogled-chromium-Disable-webRTC-log-uploader.patch
  19. 3 3
      patches/BRM026_ungoogled-chromium-Disable-untraceable-URLs.patch
  20. 9 6
      patches/BRM027_ungoogled-chromium-Disable-translate-integration.patch
  21. 1 1
      patches/BRM029_ungoogled-chromium-Disable-intranet-redirect-detector.patch
  22. 1 1
      patches/BRM030_ungoogled-chromium-Disable-Google-host-detection.patch
  23. 3 3
      patches/BRM031_ungoogled-chromium-Disable-GCM.patch
  24. 40 53
      patches/BRM032_ungoogled-chromium-Disable-Gaia.patch
  25. 0 165
      patches/BRM033_ungoogled-chromium-Clear-HTTP-cache-menu-item.patch
  26. 0 0
      patches/BRM033_ungoogled-chromium-Disable-domain-reliability.patch
  27. 1 1
      patches/BRM034_Disable-Omaha-update-checks.patch
  28. 0 0
      patches/BRM035_Add-DuckDuckGo-search-engine.patch
  29. 3 3
      patches/BRM036_Add-StartPage-search-engine.patch
  30. 3 3
      patches/BRM037_Add-Google-English-only-engine.patch
  31. 16 5
      patches/BRM038_Add-Qwant-search-engine.patch
  32. 1 1
      patches/BRM039_Fix-crash-when-accessing-page-info-site-settings.patch
  33. 3 3
      patches/BRM040_openH264-enable-ARM-ARM64-optimizations.patch
  34. 10 10
      patches/BRM041_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
  35. 2 2
      patches/BRM042_Allow-playing-audio-in-background.patch
  36. 1 1
      patches/BRM043_Open-YouTube-links-in-Bromite.patch
  37. 2 2
      patches/BRM044_Add-exit-menu-item.patch
  38. 2 2
      patches/BRM045_Remove-help-menu-item.patch
  39. 32 22
      patches/BRM046_Add-menu-option-to-toggle-global-Javascript-preference.patch
  40. 63 68
      patches/BRM047_Bromite-adblock-engine.patch
  41. 0 0
      patches/BRM048_User-Agent-anonymize.patch
  42. 7 8
      patches/BRM049_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
  43. 2 2
      patches/BRM050_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch
  44. 7 7
      patches/BRM051_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch
  45. 5 5
      patches/BRM052_Punt-the-Widevine-version-string.patch
  46. 1 1
      patches/BRM053_Disable-metrics-on-all-I-O-threads.patch
  47. 42 42
      patches/BRM054_Add-a-flag-for-DNS-over-HTTPS.patch
  48. 13 21
      patches/BRM055_Always-respect-async-dns-flag-regardless-of-SDK-version.patch
  49. 4 4
      patches/BRM056_Add-flag-to-configure-maximum-connections-per-host.patch
  50. 11 11
      patches/BRM057_Add-flag-to-show-hide-NTP-tiles.patch
  51. 19 25
      patches/BRM058_Add-custom-tab-intents-privacy-option.patch
  52. 27 28
      patches/BRM059_Add-privacy-option-to-keep-cookies-until-session-exit.patch
  53. 0 0
      patches/BRM060_Always-allow-partner-customisation.patch
  54. 0 0
      patches/BRM061_Change-default-homepage-to-new-tab-page.patch
  55. 9 9
      patches/BRM062_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch
  56. 12 12
      patches/BRM063_Add-option-to-not-persist-tabs-across-sessions.patch
  57. 11 11
      patches/BRM064_Add-an-always-incognito-mode.patch
  58. 2 2
      patches/BRM065_Disable-fetching-of-all-field-trials.patch
  59. 0 0
      patches/BRM066_Disable-smooth-scrolling-on-Linux.patch
  60. 2 2
      patches/BRM067_Disable-plugins-enumeration.patch
  61. 2 2
      patches/BRM068_Remove-google-account-access-permission-on-reboot.patch
  62. 0 0
      patches/BRM069_net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch
  63. 1 1
      patches/BRM070_dns-send-IPv6-connectivity-probes-to-RIPE-DNS-rather-than-Google.patch
  64. 0 0
      patches/BRM071_profile-resetter-do-not-tick-send-settings-by-default.patch
  65. 0 0
      patches/BRM072_browser-ui-disable-warning-about-missing-API-keys.patch
  66. 12 27
      patches/BRM073_autofill-disable-autofill-download-manager.patch
  67. 1 1
      patches/BRM074_first_run-deactivate-autoupdate-globally.patch
  68. 0 0
      patches/BRM075_safe_browsing-disable-incident-reporting.patch
  69. 4 4
      patches/BRM076_safe_browsing-disable-reporting-of-safebrowsing-override.patch
  70. 3 3
      patches/BRM077_safe_browsing-disable-cookie-transmission.patch
  71. 1 1
      patches/BRM078_extensions-always-show-component-extensions-in-the-ext-list.patch
  72. 0 0
      patches/BRM079_translate-disable-fetching-of-translate-languages-from-server.patch
  73. 1 1
      patches/BRM080_lint-suppress-hardcoded-text-warnings.patch
  74. 156 0
      patches/BRM081_kill-Vision.patch
  75. 35 32
      patches/BRM082_kill-GCM.patch
  76. 0 83
      patches/BRM082_kill-Vision.patch
  77. 8 8
      patches/BRM083_kill-Auth.patch
  78. 43 49
      patches/BRM084_kill-remaining-Play-Services-checks.patch
  79. 14 2
      patches/BRM085_kill-TOS-and-metrics-opt-out.patch
  80. 0 0
      patches/BRM086_kill-Translate-doesn-t-work.patch

+ 5 - 1
CHANGELOG.md

@@ -1,7 +1,11 @@
+# 69.0.3497.73
+* enabled WebRTC
+* drop clear HTTP cache patch
+
 # 68.0.3440.126
 * add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117)
 * add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56)
-* fix for do not persist tabs preference saving
+* remember preference for tabs persistence option
 * extend anti-AMP to all search results
 
 # 68.0.3440.121

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 70 - 4
filters/adblock_entries.h


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

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

+ 12 - 12
patches/BRM004_google-cloud-messaging-disable-experiment-status-check.patch

@@ -10,7 +10,7 @@ This avoids trk:263 from triggering.
 diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gcm_driver/gcm_channel_status_request.cc
 --- a/components/gcm_driver/gcm_channel_status_request.cc
 +++ b/components/gcm_driver/gcm_channel_status_request.cc
-@@ -23,8 +23,10 @@ namespace gcm {
+@@ -24,8 +24,10 @@ namespace gcm {
  
  namespace {
  
@@ -21,24 +21,24 @@ diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gc
  const int kDefaultPollIntervalSeconds = 60 * 60;  // 60 minutes.
  const int kMinPollIntervalSeconds = 30 * 60;  // 30 minutes.
  
-@@ -57,6 +59,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
- }
+@@ -58,6 +60,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
  
  void GCMChannelStatusRequest::Start() {
+   // url_loader_factory_ can be null for tests.
 +#if 0
-   DCHECK(!url_fetcher_);
+   if (!url_loader_factory_)
+     return;
  
-   GURL request_url(channel_status_request_url_);
-@@ -112,6 +115,9 @@ void GCMChannelStatusRequest::Start() {
-   url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
-                              net::LOAD_DO_NOT_SAVE_COOKIES);
-   url_fetcher_->Start();
+@@ -113,6 +116,9 @@ void GCMChannelStatusRequest::Start() {
+       net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
+   resource_request->method = "POST";
+   resource_request->headers.SetHeader(net::HttpRequestHeaders::kUserAgent,
 +#endif
 +  // Simulate an empty response and disable GCM.
 +  callback_.Run(false, false, 0);
- }
- 
- void GCMChannelStatusRequest::OnURLFetchComplete(
+                                       user_agent_);
+   // TODO(https://crbug.com/808498): Re-add data use measurement once
+   // SimpleURLLoader supports it.
 -- 
 2.7.4
 

+ 10 - 10
patches/BRM005_updater-disable-updater-pings.patch

@@ -36,10 +36,10 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
 -      pings_enabled_(config_policy.PingsEnabled()),
 -      require_encryption_(require_encryption),
 +      pings_enabled_(false),
-       url_source_override_(config_policy.UrlSourceOverride()) {
+       url_source_override_(config_policy.UrlSourceOverride()),
+       initial_delay_(config_policy.InitialDelay()) {
    if (config_policy.TestRequest())
-     extra_info_ += "testrequest=\"1\"";
-@@ -70,8 +69,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
+@@ -73,8 +72,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
    }
  
    std::vector<GURL> urls{GURL(kUpdaterDefaultUrl), GURL(kUpdaterFallbackUrl)};
@@ -51,14 +51,14 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
 diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
 --- a/components/component_updater/configurator_impl.h
 +++ b/components/component_updater/configurator_impl.h
-@@ -91,7 +91,6 @@ class ConfiguratorImpl {
-   bool deltas_enabled_;
-   bool fast_update_;
-   bool pings_enabled_;
--  bool require_encryption_;
-   GURL url_source_override_;
+@@ -95,7 +95,6 @@ class ConfiguratorImpl {
+   const bool deltas_enabled_;
+   const bool fast_update_;
+   const bool pings_enabled_;
+-  const bool require_encryption_;
+   const GURL url_source_override_;
+   const int initial_delay_;
  
-   DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
 -- 
 2.7.4
 

+ 1 - 1
patches/BRM006_prefs-only-keep-cookies-until-exit.patch

@@ -10,7 +10,7 @@ Out with all those tracking cookies!
 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
 --- a/components/content_settings/core/browser/content_settings_registry.cc
 +++ b/components/content_settings/core/browser/content_settings_registry.cc
-@@ -117,7 +117,7 @@ void ContentSettingsRegistry::Init() {
+@@ -119,7 +119,7 @@ void ContentSettingsRegistry::Init() {
    // WARNING: The string names of the permissions passed in below are used to
    // generate preference names and should never be changed!
  

+ 1 - 1
patches/BRM008_promo-disable-Google-promotion-fetching.patch

@@ -22,7 +22,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/33
 diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
 --- a/chrome/browser/signin/signin_promo.cc
 +++ b/chrome/browser/signin/signin_promo.cc
-@@ -130,6 +130,7 @@ namespace signin {
+@@ -140,6 +140,7 @@ const char kSigninPromoLandingURLSuccessPage[] = "success.html";
  
  bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
    DCHECK(profile);

+ 11 - 24
patches/BRM010_Modify-default-preferences.patch

@@ -5,7 +5,6 @@ Subject: Modify default preferences
 ---
  chrome/browser/background/background_mode_manager.cc              | 2 +-
  chrome/browser/chrome_content_browser_client.cc                   | 2 +-
- chrome/browser/io_thread.cc                                       | 2 +-
  chrome/browser/net/prediction_options.cc                          | 2 +-
  chrome/browser/net/prediction_options.h                           | 2 +-
  chrome/browser/profiles/profile.cc                                | 2 +-
@@ -19,12 +18,12 @@ Subject: Modify default preferences
  components/bookmarks/browser/bookmark_utils.cc                    | 4 ++--
  components/safe_browsing/common/safe_browsing_prefs.cc            | 4 ++--
  extensions/common/extension.cc                                    | 8 --------
- 16 files changed, 18 insertions(+), 30 deletions(-)
+ 15 files changed, 17 insertions(+), 29 deletions(-)
 
 diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
 --- a/chrome/browser/background/background_mode_manager.cc
 +++ b/chrome/browser/background/background_mode_manager.cc
-@@ -362,7 +362,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
+@@ -351,7 +351,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
    registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
  #endif
@@ -36,7 +35,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
-@@ -1015,7 +1015,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
+@@ -1053,7 +1053,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
  void ChromeContentBrowserClient::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -45,18 +44,6 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
    registry->RegisterListPref(prefs::kEnableDeprecatedWebPlatformFeatures);
    // Register user prefs for mapping SitePerProcess and IsolateOrigins in
    // user policy in addition to the same named ones in Local State (which are
-diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
---- a/chrome/browser/io_thread.cc
-+++ b/chrome/browser/io_thread.cc
-@@ -569,7 +569,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
-                                std::string());
-   registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
-   data_reduction_proxy::RegisterPrefs(registry);
--  registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
-+  registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
-   registry->RegisterListPref(prefs::kDnsOverHttpsServers);
-   registry->RegisterListPref(prefs::kDnsOverHttpsServerMethods);
- #if defined(OS_POSIX)
 diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
 --- a/chrome/browser/net/prediction_options.cc
 +++ b/chrome/browser/net/prediction_options.cc
@@ -84,7 +71,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
-@@ -137,7 +137,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
+@@ -138,7 +138,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
  void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kSearchSuggestEnabled,
@@ -108,7 +95,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
 diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
 --- a/chrome/browser/signin/signin_promo.cc
 +++ b/chrome/browser/signin/signin_promo.cc
-@@ -384,8 +384,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
+@@ -385,8 +385,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
  void RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
@@ -177,19 +164,19 @@ 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
-@@ -210,7 +210,7 @@ void AutofillManager::RegisterProfilePrefs(
+@@ -189,7 +189,7 @@ void AutofillManager::RegisterProfilePrefs(
    registry->RegisterIntegerPref(
        prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
    registry->RegisterBooleanPref(
 -      prefs::kAutofillEnabled, true,
 +      prefs::kAutofillEnabled, false,
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-   registry->RegisterIntegerPref(
-       prefs::kAutofillLastVersionDeduped, 0,
+   registry->RegisterBooleanPref(
+       prefs::kAutofillProfileEnabled, true,
 diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
 --- a/components/bookmarks/browser/bookmark_utils.cc
 +++ b/components/bookmarks/browser/bookmark_utils.cc
-@@ -442,12 +442,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
+@@ -443,12 +443,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(
        prefs::kShowBookmarkBar,
@@ -207,7 +194,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
 diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
 --- a/components/safe_browsing/common/safe_browsing_prefs.cc
 +++ b/components/safe_browsing/common/safe_browsing_prefs.cc
-@@ -370,9 +370,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -278,9 +278,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterBooleanPref(
        prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
    registry->RegisterBooleanPref(
@@ -222,7 +209,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
-@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
+@@ -366,14 +366,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
    if (is_theme())
      return false;
  

+ 1 - 1
patches/BRM012_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
-@@ -228,10 +228,10 @@ PasswordFormManager* FindMatchedManager(
+@@ -278,10 +278,10 @@ bool ShouldPromptUserToSavePassword(const PasswordFormManager& manager) {
  void PasswordManager::RegisterProfilePrefs(
      user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(

+ 1 - 1
patches/BRM013_Disable-NTP-remote-suggestions-by-default.patch

@@ -10,7 +10,7 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
 --- a/components/ntp_snippets/features.cc
 +++ b/components/ntp_snippets/features.cc
 @@ -38,13 +38,13 @@ const base::Feature kArticleSuggestionsExpandableHeader{
-     "NTPArticleSuggestionsExpandableHeader", base::FEATURE_DISABLED_BY_DEFAULT};
+     "NTPArticleSuggestionsExpandableHeader", base::FEATURE_ENABLED_BY_DEFAULT};
  
  const base::Feature kArticleSuggestionsFeature{
 -    "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};

+ 15 - 21
patches/BRM017_Skip-the-first-run-and-metrics.patch

@@ -3,10 +3,10 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
 Subject: Skip the first run and metrics
 
 ---
- .../chrome/browser/firstrun/FirstRunStatus.java        |  8 ++++----
- .../chrome/browser/firstrun/FirstRunUtils.java         | 16 ++++++----------
- .../browser/firstrun/ToSAndUMAFirstRunFragment.java    | 18 ++++++------------
- 3 files changed, 16 insertions(+), 26 deletions(-)
+ .../chromium/chrome/browser/firstrun/FirstRunStatus.java |  8 ++++----
+ .../chromium/chrome/browser/firstrun/FirstRunUtils.java  | 16 ++++++----------
+ .../browser/firstrun/ToSAndUMAFirstRunFragment.java      |  6 ++++--
+ 3 files changed, 14 insertions(+), 16 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
@@ -56,30 +56,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
-@@ -74,20 +74,14 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+@@ -74,7 +74,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
              }
          });
  
 -        if (ChromeVersionInfo.isOfficialBuild()) {
--            int paddingStart = getResources().getDimensionPixelSize(
--                    R.dimen.fre_tos_checkbox_padding);
--            ApiCompatibilityUtils.setPaddingRelative(mSendReportCheckBox,
--                    ApiCompatibilityUtils.getPaddingStart(mSendReportCheckBox) + paddingStart,
--                    mSendReportCheckBox.getPaddingTop(),
--                    ApiCompatibilityUtils.getPaddingEnd(mSendReportCheckBox),
--                    mSendReportCheckBox.getPaddingBottom());
--
--            mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
--        } else {
--            mSendReportCheckBox.setVisibility(View.GONE);
-+        int paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_tos_checkbox_padding);
-+        if (paddingStart != 0) {
-+            mSendReportCheckBox.setChecked(false);
-         }
++/*        if (ChromeVersionInfo.isOfficialBuild()) {
+             int paddingStart = getResources().getDimensionPixelSize(
+                     R.dimen.fre_tos_checkbox_padding);
+             ViewCompat.setPaddingRelative(mSendReportCheckBox,
+@@ -86,8 +86,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
+             mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
+         } else {
+             mSendReportCheckBox.setVisibility(View.GONE);
+-        }
++        }*/
  
 +        mSendReportCheckBox.setChecked(false);
 +        mSendReportCheckBox.setVisibility(View.GONE);
-+
          mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
  
          NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {

+ 66 - 38
patches/BRM018_Disable-signin-and-data-saver-preferences.patch

@@ -4,36 +4,36 @@ Subject: Disable signin and data saver preferences
 
 Never show the data saver promo snackbar
 ---
- chrome/android/java/res/xml/main_preferences.xml   |  8 +++---
+ chrome/android/java/res/xml/main_preferences.xml   |  8 ++---
  .../chromium/chrome/browser/ChromeActivity.java    |  6 ++--
- .../browser/preferences/MainPreferences.java       | 32 ++++++++++++----------
- 3 files changed, 26 insertions(+), 20 deletions(-)
+ .../browser/preferences/MainPreferences.java       | 42 ++++++++++++----------
+ 3 files changed, 31 insertions(+), 25 deletions(-)
 
 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
 --- a/chrome/android/java/res/xml/main_preferences.xml
 +++ b/chrome/android/java/res/xml/main_preferences.xml
-@@ -6,10 +6,10 @@
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-     android:orderingFromXml="false">
- 
+@@ -10,10 +10,10 @@
+         android:key="account_section"
+         android:order="0"
+         android:title="@string/prefs_section_account"/>
 -    <org.chromium.chrome.browser.preferences.SignInPreference
 +    <!-- org.chromium.chrome.browser.preferences.SignInPreference
          android:key="sign_in"
-         android:order="0"
+         android:order="1"
 -        android:title="@string/sign_in_to_chrome"/>
 +        android:title="@string/sign_in_to_chrome"/-->
- 
-     <PreferenceCategory
-         android:key="basics_section"
-@@ -70,11 +70,11 @@
+     <org.chromium.chrome.browser.preferences.ChromeBasePreference
+         android:fragment="org.chromium.chrome.browser.preferences.SyncAndServicesPreferences"
+         android:key="sync_and_services"
+@@ -79,11 +79,11 @@
          android:key="languages"
-         android:order="12"
+         android:order="14"
          android:title="@string/prefs_languages"/>
 -    <org.chromium.chrome.browser.preferences.ChromeBasePreference
 +    <!-- org.chromium.chrome.browser.preferences.ChromeBasePreference
          android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences"
          android:key="data_reduction"
-         android:order="13"
+         android:order="15"
 -        android:title="@string/data_reduction_title"/>
 +        android:title="@string/data_reduction_title"/-->
      <org.chromium.chrome.browser.preferences.ChromeBasePreference
@@ -42,33 +42,33 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -115,7 +115,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
+@@ -114,7 +114,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
  import org.chromium.chrome.browser.profiles.Profile;
  import org.chromium.chrome.browser.share.ShareMenuActionHandler;
  import org.chromium.chrome.browser.snackbar.BottomContainer;
 -import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
 +//import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
- import org.chromium.chrome.browser.snackbar.DataUseSnackbarController;
  import org.chromium.chrome.browser.snackbar.SnackbarManager;
  import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
-@@ -258,7 +258,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+ import org.chromium.chrome.browser.sync.ProfileSyncService;
+@@ -252,7 +252,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+     protected ReaderModeManager mReaderModeManager;
      private SnackbarManager mSnackbarManager;
      private ModalDialogManager mModalDialogManager;
-     private DataUseSnackbarController mDataUseSnackbarController;
 -    private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
 +    //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
      private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
      private AppMenuHandler mAppMenuHandler;
      private ToolbarManager mToolbarManager;
-@@ -577,6 +577,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
-                     mDataUseSnackbarController.showDataUseTrackingEndedBar();
-                 }
- 
+@@ -600,6 +600,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+         mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(mTabModelSelector) {
+             @Override
+             public void didFirstVisuallyNonEmptyPaint(Tab tab) {
 +/*
-                 // Only alert about data savings once the first paint has happened. It doesn't make
-                 // sense to show a snackbar about savings when nothing has been displayed yet.
-                 if (DataReductionProxySettings.getInstance().isSnackbarPromoAllowed(tab.getUrl())) {
-@@ -589,6 +590,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+                 // Only alert about data savings once the first paint has happened. It
+                 // doesn't make sense to show a snackbar about savings when nothing has been
+                 // displayed yet.
+@@ -613,6 +614,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
                              DataReductionProxySettings.getInstance()
                                      .getTotalHttpContentLengthSaved());
                  }
@@ -91,19 +91,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
  import org.chromium.chrome.browser.search_engines.TemplateUrl;
  import org.chromium.chrome.browser.search_engines.TemplateUrlService;
  import org.chromium.chrome.browser.signin.SigninManager;
-@@ -35,20 +35,20 @@ import java.util.Map;
-  */
+@@ -35,21 +35,21 @@ import java.util.Map;
  public class MainPreferences extends PreferenceFragment
          implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
+     public static final String PREF_ACCOUNT_SECTION = "account_section";
 -    public static final String PREF_SIGN_IN = "sign_in";
-+    //public static final String PREF_SIGN_IN = "sign_in";
++//    public static final String PREF_SIGN_IN = "sign_in";
+     public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
      public static final String PREF_AUTOFILL_SETTINGS = "autofill_settings";
      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";
      public static final String PREF_HOMEPAGE = "homepage";
 -    public static final String PREF_DATA_REDUCTION = "data_reduction";
-+    //public static final String PREF_DATA_REDUCTION = "data_reduction";
++//    public static final String PREF_DATA_REDUCTION = "data_reduction";
      public static final String PREF_NOTIFICATIONS = "notifications";
      public static final String PREF_LANGUAGES = "languages";
      public static final String PREF_DOWNLOADS = "downloads";
@@ -111,11 +112,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
      private final Map<String, Preference> mAllPreferences = new HashMap<>();
 -    private SignInPreference mSignInPreference;
-+    //private SignInPreference mSignInPreference;
++//    private SignInPreference mSignInPreference;
  
      public MainPreferences() {
          setHasOptionsMenu(true);
-@@ -64,25 +64,29 @@ public class MainPreferences extends PreferenceFragment
+@@ -65,25 +65,29 @@ public class MainPreferences extends PreferenceFragment
      @Override
      public void onDestroy() {
          super.onDestroy();
@@ -146,7 +147,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      @Override
-@@ -98,7 +102,7 @@ public class MainPreferences extends PreferenceFragment
+@@ -96,9 +100,9 @@ public class MainPreferences extends PreferenceFragment
+         PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
+         cachePreferences();
+ 
+-        if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
++/*        if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+             mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
+-        } else {
++        } else */{
+             getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
+             getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
+         }
+@@ -106,7 +110,7 @@ public class MainPreferences extends PreferenceFragment
          setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
          setManagedPreferenceDelegateForPreference(PREF_AUTOFILL_SETTINGS);
          setManagedPreferenceDelegateForPreference(PREF_SAVED_PASSWORDS);
@@ -155,7 +168,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
-@@ -154,7 +158,7 @@ public class MainPreferences extends PreferenceFragment
+@@ -162,7 +166,7 @@ public class MainPreferences extends PreferenceFragment
              Preference preference = getPreferenceScreen().getPreference(index);
              mAllPreferences.put(preference.getKey(), preference);
          }
@@ -164,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      private void setManagedPreferenceDelegateForPreference(String key) {
-@@ -163,12 +167,6 @@ public class MainPreferences extends PreferenceFragment
+@@ -171,12 +175,6 @@ public class MainPreferences extends PreferenceFragment
      }
  
      private void updatePreferences() {
@@ -177,7 +190,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
          updateSearchEnginePreference();
  
          if (HomepageManager.shouldShowHomepageSetting()) {
-@@ -190,9 +188,11 @@ public class MainPreferences extends PreferenceFragment
+@@ -197,9 +195,11 @@ public class MainPreferences extends PreferenceFragment
              removePreferenceIfPresent(PREF_CONTEXTUAL_SUGGESTIONS);
          }
  
@@ -189,7 +202,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
      }
  
      private Preference addPreferenceIfAbsent(String key) {
-@@ -263,9 +263,11 @@ public class MainPreferences extends PreferenceFragment
+@@ -250,11 +250,11 @@ public class MainPreferences extends PreferenceFragment
+ 
+     private void onSignInPreferenceStateChanged() {
+         // Remove "Account" section header if the personalized sign-in promo is shown.
+-        if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
++//        if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
+             removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
+-        } else {
++/*        } else {
+             addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
+-        }
++        }*/
+     }
+ 
+     // TemplateUrlService.LoadListener implementation.
+@@ -279,9 +279,11 @@ public class MainPreferences extends PreferenceFragment
                  if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
                      return PrefServiceBridge.getInstance().isRememberPasswordsManaged();
                  }
@@ -201,7 +229,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();
                  }
-@@ -283,11 +285,13 @@ public class MainPreferences extends PreferenceFragment
+@@ -299,11 +301,13 @@ public class MainPreferences extends PreferenceFragment
                      return prefs.isRememberPasswordsManaged()
                              && !prefs.isRememberPasswordsEnabled();
                  }

+ 2 - 2
patches/BRM019_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
-@@ -554,7 +554,7 @@ public class ChromeTabbedActivity
+@@ -575,7 +575,7 @@ public class ChromeTabbedActivity
              // TODO(tedchoc): Unify promo dialog logic as the search engine promo dialog checks
              //                might not have completed at this point and we could show multiple
              //                promos.
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
              // Promo dialogs in multiwindow mode are broken on some devices: http://crbug.com/354696
              boolean isLegacyMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(this);
              if (!isShowingPromo && !mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()
-@@ -574,7 +574,7 @@ public class ChromeTabbedActivity
+@@ -595,7 +595,7 @@ public class ChromeTabbedActivity
                  preferenceManager.setPromosSkippedOnFirstStart(true);
              }
  

+ 92 - 0
patches/BRM020_Remove-Sync-and-Translate-menu.patch

@@ -0,0 +1,92 @@
+From: Serg <serg.zhukovsky@gmail.com>
+Date: Wed, 22 Mar 2017 19:10:30 -0400
+Subject: Remove Sync and Translate menu
+
+---
+ .../java/res/drawable-hdpi/settings_translate.png        | Bin 399 -> 0 bytes
+ .../java/res/drawable-mdpi/settings_translate.png        | Bin 284 -> 0 bytes
+ .../java/res/drawable-xhdpi/settings_translate.png       | Bin 547 -> 0 bytes
+ .../java/res/drawable-xxhdpi/settings_translate.png      | Bin 793 -> 0 bytes
+ .../java/res/drawable-xxxhdpi/settings_translate.png     | Bin 1038 -> 0 bytes
+ .../android/java/res/xml/site_settings_preferences.xml   |   4 ++--
+ .../preferences/website/SiteSettingsPreferences.java     |  12 ++++++------
+ 7 files changed, 8 insertions(+), 8 deletions(-)
+ delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
+ delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
+ delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
+ delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
+ delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
+
+diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
+deleted file mode 100644
+index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
+diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
+deleted file mode 100644
+index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
+diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
+deleted file mode 100644
+index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
+diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
+deleted file mode 100644
+index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
+diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
+deleted file mode 100644
+index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
+diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
+index 8165826..346cdce 100644
+--- a/chrome/android/java/res/xml/site_settings_preferences.xml
++++ b/chrome/android/java/res/xml/site_settings_preferences.xml
+@@ -73,11 +73,11 @@
+         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
+         android:key="sound" />
+     <!-- Google Translate -->
+-    <Preference
++    <!-- Preference
+         android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
+         android:key="translate"
+         android:title="@string/google_translate"
+-        android:icon="@drawable/settings_translate" />
++        android:icon="@drawable/settings_translate" /-->
+     <!-- Storage -->
+     <!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
+     <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
+diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+index bf12a5c..9059822 100644
+--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
++++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+@@ -118,9 +118,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
+             }
+             // 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.LANGUAGES_PREFERENCE)) {
++//                getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
++//            }
+             if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
+                 getPreferenceScreen().removePreference(
+                         findPreference(SiteSettingsCategory.Type.SENSORS));
+@@ -132,8 +132,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
+         PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
+ 
+         // Translate preference.
+-        Preference translatePref = findPreference(TRANSLATE_KEY);
+-        if (translatePref != null) setTranslateStateSummary(translatePref);
++//        Preference translatePref = findPreference(TRANSLATE_KEY);
++//        if (translatePref != null) setTranslateStateSummary(translatePref);
+ 
+         // Preferences that navigate to Website Settings.
+         List<Integer> websitePrefs = new ArrayList<Integer>();
+@@ -149,7 +149,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
+             if (!mProtectedContentMenuAvailable) {
+                 websitePrefs.add(SiteSettingsCategory.Type.AUTOPLAY);
+             }
+-            websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
++            //websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
+             websitePrefs.add(SiteSettingsCategory.Type.CAMERA);
+             if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
+                 websitePrefs.add(SiteSettingsCategory.Type.CLIPBOARD);
+-- 
+2.7.4
+

+ 0 - 177
patches/BRM020_Removed-Sync-and-Translate-menu.patch

@@ -1,177 +0,0 @@
-From: Serg <serg.zhukovsky@gmail.com>
-Date: Wed, 22 Mar 2017 19:10:30 -0400
-Subject: Removed Sync and Translate menu
-
----
- .../java/res/drawable-hdpi/settings_translate.png  | Bin 399 -> 0 bytes
- .../java/res/drawable-mdpi/settings_translate.png  | Bin 284 -> 0 bytes
- .../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
- .../res/drawable-xxhdpi/settings_translate.png     | Bin 793 -> 0 bytes
- .../res/drawable-xxxhdpi/settings_translate.png    | Bin 1038 -> 0 bytes
- .../java/res/xml/site_settings_preferences.xml     |   8 +++----
- .../website/SiteSettingsPreferences.java           |  26 ++++++++++-----------
- headless/lib/browser/protocol/browser_handler.cc   |   2 +-
- 8 files changed, 18 insertions(+), 18 deletions(-)
- delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
- delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
- delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
- delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
- delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
-
-diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
-deleted file mode 100644
-index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
-diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
-deleted file mode 100644
-index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
-diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
-deleted file mode 100644
-index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
-diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
-deleted file mode 100644
-index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
-diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
-deleted file mode 100644
-index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
-diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
-index 1159fd1..4a13a36 100644
---- a/chrome/android/java/res/xml/site_settings_preferences.xml
-+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
-@@ -44,9 +44,9 @@
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
-         android:key="ads" />
-     <!-- Background sync -->
--    <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-+    <!--<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
--        android:key="background_sync" />
-+        android:key="background_sync" />-->
-     <!-- Protected content -->
-     <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
-@@ -66,11 +66,11 @@
-         android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
-         android:key="sound" />
-     <!-- Google Translate -->
--    <Preference
-+    <!-- <Preference
-         android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
-         android:key="translate"
-         android:title="@string/google_translate"
--        android:icon="@drawable/settings_translate" />
-+        android:icon="@drawable/settings_translate" />-->
-     <!-- Storage -->
-     <!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
-     <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
-index 2da84aa9..f3ee0d2 100644
---- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
-@@ -39,7 +39,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
-     static final String ALL_SITES_KEY = "all_sites";
-     static final String ADS_KEY = "ads";
-     static final String AUTOPLAY_KEY = "autoplay";
--    static final String BACKGROUND_SYNC_KEY = "background_sync";
-+    //static final String BACKGROUND_SYNC_KEY = "background_sync";
-     static final String CAMERA_KEY = "camera";
-     static final String CLIPBOARD_KEY = "clipboard";
-     static final String COOKIES_KEY = "cookies";
-@@ -52,7 +52,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
-     static final String PROTECTED_CONTENT_KEY = "protected_content";
-     static final String SOUND_KEY = "sound";
-     static final String STORAGE_KEY = "use_storage";
--    static final String TRANSLATE_KEY = "translate";
-+    //static final String TRANSLATE_KEY = "translate";
-     static final String USB_KEY = "usb";
- 
-     // Whether the Protected Content menu is available for display.
-@@ -87,8 +87,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
-         } else if (AUTOPLAY_KEY.equals(key)) {
-             return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
--        } else if (BACKGROUND_SYNC_KEY.equals(key)) {
--            return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
-+        /*} else if (BACKGROUND_SYNC_KEY.equals(key)) {
-+            return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;*/
-         } else if (CAMERA_KEY.equals(key)) {
-             return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
-         } else if (CLIPBOARD_KEY.equals(key)) {
-@@ -127,7 +127,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             // menus.
-             getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
-             getPreferenceScreen().removePreference(findPreference(ADS_KEY));
--            getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
-+            //getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
-             getPreferenceScreen().removePreference(findPreference(CAMERA_KEY));
-             getPreferenceScreen().removePreference(findPreference(CLIPBOARD_KEY));
-             getPreferenceScreen().removePreference(findPreference(COOKIES_KEY));
-@@ -139,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             getPreferenceScreen().removePreference(findPreference(POPUPS_KEY));
-             getPreferenceScreen().removePreference(findPreference(SOUND_KEY));
-             getPreferenceScreen().removePreference(findPreference(STORAGE_KEY));
--            getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
-+            //getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
-             getPreferenceScreen().removePreference(findPreference(USB_KEY));
-         } else {
-             // If both Autoplay and Protected Content menus are available, they'll be tucked under
-@@ -165,9 +165,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             }
-             // 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)) {
-+            /*if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
-                 getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
--            }
-+            }*/
-         }
-     }
- 
-@@ -175,10 +175,10 @@ public class SiteSettingsPreferences extends PreferenceFragment
-         PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
- 
-         // Translate preference.
--        Preference translatePref = findPreference(TRANSLATE_KEY);
-+        /*Preference translatePref = findPreference(TRANSLATE_KEY);
-         if (translatePref != null) {
-             setTranslateStateSummary(translatePref);
--        }
-+        }*/
- 
-         // Preferences that navigate to Website Settings.
-         List<String> websitePrefs = new ArrayList<String>();
-@@ -192,7 +192,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
-             // When showing the main menu, if Protected Content is not available, only Autoplay
-             // will be visible.
-             if (!mProtectedContentMenuAvailable) websitePrefs.add(AUTOPLAY_KEY);
--            websitePrefs.add(BACKGROUND_SYNC_KEY);
-+            //websitePrefs.add(BACKGROUND_SYNC_KEY);
-             websitePrefs.add(CAMERA_KEY);
-             if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
-                 websitePrefs.add(CLIPBOARD_KEY);
-@@ -218,8 +218,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
-                 checked = PrefServiceBridge.getInstance().adsEnabled();
-             } else if (AUTOPLAY_KEY.equals(prefName)) {
-                 checked = PrefServiceBridge.getInstance().isAutoplayEnabled();
--            } else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
--                checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();
-+            /*} else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
-+                checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();*/
-             } else if (CAMERA_KEY.equals(prefName)) {
-                 checked = PrefServiceBridge.getInstance().isCameraEnabled();
-             } else if (CLIPBOARD_KEY.equals(prefName)) {
-diff --git a/headless/lib/browser/protocol/browser_handler.cc b/headless/lib/browser/protocol/browser_handler.cc
-index 97ec5f5..955b233 100644
---- a/headless/lib/browser/protocol/browser_handler.cc
-+++ b/headless/lib/browser/protocol/browser_handler.cc
-@@ -71,7 +71,7 @@ Response BrowserHandler::Close() {
- Response BrowserHandler::SetWindowBounds(
-     int window_id,
-     std::unique_ptr<Browser::Bounds> window_bounds) {
--  HeadlessWebContentsImpl* web_contents = web_contents =
-+  HeadlessWebContentsImpl* web_contents =
-       browser()->GetWebContentsForWindowId(window_id);
-   if (!web_contents)
-     return Response::Error("Browser window not found");
--- 
-2.7.4
-

+ 1 - 1
patches/BRM022_Hide-Send-reports-to-Google.patch

@@ -9,7 +9,7 @@ Subject: Hide "Send reports to Google"
 diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
 --- a/chrome/android/java/res/layout/fre_tosanduma.xml
 +++ b/chrome/android/java/res/layout/fre_tosanduma.xml
-@@ -70,7 +70,7 @@
+@@ -71,7 +71,7 @@
                          android:layout_height="wrap_content"
                          android:lineSpacingMultiplier="1.4"
                          android:text="@string/fre_send_report_check"

+ 4 - 4
patches/BRM024_ungoogled-chromium-Disable-signin.patch

@@ -10,7 +10,7 @@ Subject: ungoogled-chromium: Disable signin
 diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc
 --- a/chrome/browser/ui/chrome_pages.cc
 +++ b/chrome/browser/ui/chrome_pages.cc
-@@ -76,12 +76,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
+@@ -72,12 +72,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
    ShowSingletonTabOverwritingNTP(browser, std::move(params));
  }
  
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
  // Shows either the help app or the appropriate help page for |source|. If
  // |browser| is NULL and the help page is used (vs the app), the help page is
  // shown in the last active browser. If there is no such browser, a new browser
-@@ -396,6 +390,7 @@ void ShowSearchEngineSettings(Browser* browser) {
+@@ -384,6 +378,7 @@ void ShowSearchEngineSettings(Browser* browser) {
  #if !defined(OS_ANDROID)
  void ShowBrowserSignin(Browser* browser,
                         signin_metrics::AccessPoint access_point) {
@@ -31,8 +31,8 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
    Profile* original_profile = browser->profile()->GetOriginalProfile();
    SigninManagerBase* manager =
        SigninManagerFactory::GetForProfile(original_profile);
-@@ -444,6 +439,7 @@ void ShowBrowserSignin(Browser* browser,
-         profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, browser, access_point);
+@@ -435,6 +430,7 @@ void ShowBrowserSignin(Browser* browser,
+                                                   access_point);
  #endif
    }
 +#endif 

+ 2 - 2
patches/BRM025_ungoogled-chromium-Disable-webRTC-log-uploader.patch

@@ -9,7 +9,7 @@ Subject: ungoogled-chromium: Disable webRTC log uploader
 diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
 --- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
 +++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
-@@ -114,30 +114,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
+@@ -117,30 +117,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
    DCHECK(meta_data.get());
    DCHECK(!upload_done_data.log_path.empty());
  
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
  }
  
  void WebRtcLogUploader::PrepareMultipartPostData(
-@@ -148,6 +125,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
+@@ -151,6 +128,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
    DCHECK(!compressed_log.empty());
    DCHECK(meta_data.get());
  

+ 3 - 3
patches/BRM026_ungoogled-chromium-Disable-untraceable-URLs.patch

@@ -16,7 +16,7 @@ Disable additional URLs that are not caught by the "trk" scheme
 diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc
 --- a/chrome/browser/android/rlz/rlz_ping_handler.cc
 +++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
-@@ -73,7 +73,7 @@ void RlzPingHandler::Ping(
+@@ -75,7 +75,7 @@ void RlzPingHandler::Ping(
    DCHECK_EQ(id.length(), 50u);
  
    GURL request_url(base::StringPrintf(
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/and
 diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
 --- a/chrome/browser/plugins/plugins_resource_service.cc
 +++ b/chrome/browser/plugins/plugins_resource_service.cc
-@@ -51,9 +51,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
+@@ -53,9 +53,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
  // Delay between calls to update the cache 1 day and 2 minutes in testing mode.
  const int kCacheUpdateDelayMs = 24 * 60 * 60 * 1000;
  
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser
  GURL GetPluginsServerURL() {
    std::string filename;
  #if defined(OS_WIN)
-@@ -68,7 +65,7 @@ GURL GetPluginsServerURL() {
+@@ -70,7 +67,7 @@ GURL GetPluginsServerURL() {
  #error Unknown platform
  #endif
  

+ 9 - 6
patches/BRM027_ungoogled-chromium-Disable-translate-integration.patch

@@ -4,9 +4,9 @@ Subject: ungoogled-chromium: Disable translate integration
 
 ---
  components/translate/content/renderer/translate_helper.cc | 4 +++-
- components/translate/core/browser/translate_manager.cc    | 2 +-
+ components/translate/core/browser/translate_manager.cc    | 5 +++--
  components/translate/core/browser/translate_script.cc     | 3 +--
- 3 files changed, 5 insertions(+), 4 deletions(-)
+ 3 files changed, 7 insertions(+), 5 deletions(-)
 
 diff --git a/components/translate/content/renderer/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc
 --- a/components/translate/content/renderer/translate_helper.cc
@@ -25,19 +25,22 @@ diff --git a/components/translate/content/renderer/translate_helper.cc b/compone
 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
-@@ -131,7 +131,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
+@@ -133,8 +133,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
    if (net::NetworkChangeNotifier::IsOffline())
      return;
  
--  if (!ignore_missing_key_for_testing_ && !::google_apis::HasKeysConfigured()) {
-+  if (true) {
+-  if (!ignore_missing_key_for_testing_ &&
+-      !::google_apis::HasAPIKeyConfigured()) {
++//  if (!ignore_missing_key_for_testing_ &&
++//      !::google_apis::HasAPIKeyConfigured()) {
++    if (true) {
      // Without an API key, translate won't work, so don't offer to translate in
      // the first place. Leave prefs::kOfferTranslateEnabled on, though, because
      // that settings syncs and we don't want to turn off translate everywhere
 diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc
 --- a/components/translate/core/browser/translate_script.cc
 +++ b/components/translate/core/browser/translate_script.cc
-@@ -149,9 +149,8 @@ void TranslateScript::OnScriptFetchComplete(
+@@ -152,9 +152,8 @@ void TranslateScript::OnScriptFetchComplete(bool success,
      base::StringAppendF(&data_, "var serverParams = '%s';\n",
                          server_params.c_str());
  

+ 1 - 1
patches/BRM029_ungoogled-chromium-Disable-intranet-redirect-detector.patch

@@ -12,7 +12,7 @@ See this page for more information: https://mikewest.org/2012/02/chrome-connects
 diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc
 --- a/chrome/browser/intranet_redirect_detector.cc
 +++ b/chrome/browser/intranet_redirect_detector.cc
-@@ -75,9 +75,7 @@ void IntranetRedirectDetector::FinishSleep() {
+@@ -77,9 +77,7 @@ void IntranetRedirectDetector::FinishSleep() {
    simple_loaders_.clear();
    resulting_origins_.clear();
  

+ 1 - 1
patches/BRM030_ungoogled-chromium-Disable-Google-host-detection.patch

@@ -309,7 +309,7 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
 diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
 --- a/components/search_engines/template_url.cc
 +++ b/components/search_engines/template_url.cc
-@@ -498,11 +498,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
+@@ -499,11 +499,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
  bool TemplateURLRef::HasGoogleBaseURLs(
      const SearchTermsData& search_terms_data) const {
    ParseIfNecessary(search_terms_data);

+ 3 - 3
patches/BRM031_ungoogled-chromium-Disable-GCM.patch

@@ -10,7 +10,7 @@ Disable Google Cloud Messaging (GCM) client
 diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
 --- a/components/gcm_driver/gcm_client_impl.cc
 +++ b/components/gcm_driver/gcm_client_impl.cc
-@@ -502,6 +502,7 @@ void GCMClientImpl::StartGCM() {
+@@ -491,6 +491,7 @@ void GCMClientImpl::StartGCM() {
  }
  
  void GCMClientImpl::InitializeMCSClient() {
@@ -18,7 +18,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
    std::vector<GURL> endpoints;
    endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
    GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
-@@ -699,6 +700,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
+@@ -684,6 +685,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
  }
  
  void GCMClientImpl::StartCheckin() {
@@ -26,7 +26,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
    // Make sure no checkin is in progress.
    if (checkin_request_)
      return;
-@@ -777,6 +779,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
+@@ -759,6 +761,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
  }
  
  void GCMClientImpl::SchedulePeriodicCheckin() {

+ 40 - 53
patches/BRM032_ungoogled-chromium-Disable-Gaia.patch

@@ -7,18 +7,18 @@ Somehow it is still being activated even without being signed-in.
 
 See also: https://github.com/Eloston/ungoogled-chromium/issues/104
 ---
- chrome/browser/browser_resources.grd               |  2 --
- .../component_extensions_whitelist/whitelist.cc    |  1 -
- .../signin/gaia_auth_extension_loader.cc           |  7 ------
- .../resources/component_extension_resources.grd    |  2 --
- chrome/browser/ui/webui/signin/inline_login_ui.cc  |  1 -
- google_apis/gaia/gaia_auth_fetcher.cc              | 29 ----------------------
- 6 files changed, 42 deletions(-)
+ chrome/browser/browser_resources.grd                                  | 2 --
+ chrome/browser/extensions/component_extensions_whitelist/whitelist.cc | 1 -
+ chrome/browser/extensions/signin/gaia_auth_extension_loader.cc        | 3 ++-
+ chrome/browser/resources/component_extension_resources.grd            | 2 --
+ chrome/browser/ui/webui/signin/inline_login_ui.cc                     | 1 -
+ google_apis/gaia/gaia_auth_fetcher.cc                                 | 4 +++-
+ 6 files changed, 5 insertions(+), 8 deletions(-)
 
 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
-@@ -296,7 +296,6 @@
+@@ -303,7 +303,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" />
-@@ -431,7 +430,6 @@
+@@ -444,7 +443,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" />
@@ -48,22 +48,20 @@ diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.
 diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
 --- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
 +++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
-@@ -42,18 +42,11 @@ extensions::ComponentLoader* GetComponentLoader(BrowserContext* context) {
+@@ -42,7 +42,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
+ 
  void LoadGaiaAuthExtension(BrowserContext* context) {
    DCHECK_CURRENTLY_ON(BrowserThread::UI);
- 
--  extensions::ComponentLoader* component_loader = GetComponentLoader(context);
+-
++/*
+   ComponentLoader* component_loader = GetComponentLoader(context);
    const base::CommandLine* command_line =
        base::CommandLine::ForCurrentProcess();
-   if (command_line->HasSwitch(switches::kAuthExtensionPath)) {
--    base::FilePath auth_extension_path =
--        command_line->GetSwitchValuePath(switches::kAuthExtensionPath);
--    component_loader->Add(IDR_GAIA_AUTH_MANIFEST, auth_extension_path);
-     return;
-   }
--
--  component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
--                        base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
+@@ -55,6 +55,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
+ 
+   component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
+                         base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
++*/
  }
  
  void UnloadGaiaAuthExtension(BrowserContext* context) {
@@ -82,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
-@@ -44,7 +44,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
+@@ -49,7 +49,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
  
    source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
    source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
@@ -93,39 +91,28 @@ diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/
 diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
 --- a/google_apis/gaia/gaia_auth_fetcher.cc
 +++ b/google_apis/gaia/gaia_auth_fetcher.cc
-@@ -248,35 +248,6 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
-     int load_flags,
+@@ -39,7 +39,7 @@ namespace {
+ const int kLoadFlagsIgnoreCookies = net::LOAD_DO_NOT_SEND_COOKIES |
+                                     net::LOAD_DO_NOT_SAVE_COOKIES;
+ 
+-const size_t kMaxMessageSize = 1024 * 1024;  // 1MB
++//const size_t kMaxMessageSize = 1024 * 1024;  // 1MB
+ 
+ static bool CookiePartsContains(const std::vector<std::string>& parts,
+                                 const char* part) {
+@@ -251,6 +251,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
      const net::NetworkTrafficAnnotationTag& traffic_annotation) {
    DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
--  fetcher_ = net::URLFetcher::Create(
--      0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST,
--      this, traffic_annotation);
--  fetcher_->SetRequestContext(getter_);
--  fetcher_->SetUploadData("application/x-www-form-urlencoded", body);
--  gaia::MarkURLFetcherAsGaia(fetcher_.get());
--
--  VLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec();
--  VLOG(2) << "Gaia fetcher headers: " << headers;
--  VLOG(2) << "Gaia fetcher body: " << body;
--
--  // The Gaia token exchange requests do not require any cookie-based
--  // identification as part of requests.  We suppress sending any cookies to
--  // maintain a separation between the user's browsing and Chrome's internal
--  // services.  Where such mixing is desired (MergeSession or OAuthLogin), it
--  // will be done explicitly.
--  fetcher_->SetLoadFlags(load_flags);
--
--  // Fetchers are sometimes cancelled because a network change was detected,
--  // especially at startup and after sign-in on ChromeOS. Retrying once should
--  // be enough in those cases; let the fetcher retry up to 3 times just in case.
--  // http://crbug.com/163710
--  fetcher_->SetAutomaticallyRetryOnNetworkChanges(3);
--
--  if (!headers.empty())
--    fetcher_->SetExtraRequestHeaders(headers);
--
--  fetch_pending_ = true;
--  fetcher_->Start();
+ 
++/*
+   auto resource_request = std::make_unique<network::ResourceRequest>();
+   resource_request->url = gaia_gurl;
+   original_url_ = gaia_gurl;
+@@ -299,6 +300,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
+       base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
+                      base::Unretained(this)),
+       kMaxMessageSize);
++*/
  }
  
  // static

+ 0 - 165
patches/BRM033_ungoogled-chromium-Clear-HTTP-cache-menu-item.patch

@@ -1,165 +0,0 @@
-From: csagan5 <32685696+csagan5@users.noreply.github.com>
-Date: Mon, 12 Feb 2018 21:45:21 +0100
-Subject: ungoogled-chromium: Clear HTTP cache menu item
-
-Adds a menu item under "More tools" to clear the HTTP authentication cache on demand
----
- chrome/app/chrome_command_ids.h                      | 1 +
- chrome/app/generated_resources.grd                   | 6 ++++++
- chrome/browser/ui/browser_command_controller.cc      | 7 +++++++
- chrome/browser/ui/toolbar/app_menu_model.cc          | 8 ++++++++
- chrome/browser/ui/toolbar/app_menu_model.h           | 1 +
- chrome/browser/ui/views/frame/global_menu_bar_x11.cc | 1 +
- net/http/http_auth_cache.cc                          | 1 +
- tools/metrics/histograms/enums.xml                   | 1 +
- tools/metrics/histograms/histograms.xml              | 1 +
- 9 files changed, 27 insertions(+)
-
-diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
---- a/chrome/app/chrome_command_ids.h
-+++ b/chrome/app/chrome_command_ids.h
-@@ -152,6 +152,7 @@
- #define IDC_DEV_TOOLS_INSPECT           40023
- #define IDC_UPGRADE_DIALOG              40024
- #define IDC_VIEW_INCOMPATIBILITIES      40025
-+#define IDC_CLEAR_HTTP_AUTH_CACHE       40026
- #define IDC_SHOW_KEYBOARD_OVERLAY       40027
- #define IDC_PROFILING_ENABLED           40028
- #define IDC_BOOKMARKS_MENU              40029
-diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
---- a/chrome/app/generated_resources.grd
-+++ b/chrome/app/generated_resources.grd
-@@ -1058,6 +1058,9 @@ are declared in build/common.gypi.
-         <message name="IDS_CLEAR_BROWSING_DATA" desc="The text label for the menu item for clearing of browsing data">
-           &amp;Clear browsing data...
-         </message>
-+        <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="The text label for the menu item for clearing the HTTP authentication cache">
-+          Clear &amp;HTTP auth cache
-+        </message>
-         <message name="IDS_SHOW_DOWNLOADS" desc="The show downloads menu in the app menu">
-           &amp;Downloads
-         </message>
-@@ -1096,6 +1099,9 @@ are declared in build/common.gypi.
-         <message name="IDS_CLEAR_BROWSING_DATA" desc="In Title Case: The text label for the menu item for clearing of browsing data">
-           &amp;Clear Browsing Data...
-         </message>
-+        <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="In Title Case: The text label for the menu item for clearing the HTTP authentication cache">
-+          Clear &amp;HTTP Auth Cache
-+        </message>
-         <message name="IDS_SHOW_DOWNLOADS" desc="In Title Case: The show downloads menu in the app menu">
-           &amp;Downloads
-         </message>
-diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
---- a/chrome/browser/ui/browser_command_controller.cc
-+++ b/chrome/browser/ui/browser_command_controller.cc
-@@ -61,6 +61,9 @@
- #include "extensions/browser/extension_system.h"
- #include "printing/buildflags/buildflags.h"
- #include "ui/events/keycodes/keyboard_codes.h"
-+#include "net/url_request/url_request_context.h"
-+#include "net/url_request/url_request_context_getter.h"
-+#include "net/http/http_transaction_factory.h"
- 
- #if defined(OS_MACOSX)
- #include "chrome/browser/ui/browser_commands_mac.h"
-@@ -630,6 +633,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
-     case IDC_CLEAR_BROWSING_DATA:
-       ShowClearBrowsingDataDialog(browser_);
-       break;
-+    case IDC_CLEAR_HTTP_AUTH_CACHE:
-+      profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->ClearAllEntries();
-+      break;
-     case IDC_IMPORT_SETTINGS:
-       ShowImportDialog(browser_);
-       break;
-@@ -874,6 +880,7 @@ void BrowserCommandController::InitCommandState() {
-                                         !profile()->IsOffTheRecord());
-   command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA,
-                                         !guest_session);
-+  command_updater_.UpdateCommandEnabled(IDC_CLEAR_HTTP_AUTH_CACHE, true);
- #if defined(OS_CHROMEOS)
-   command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
- #else
-diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc
---- a/chrome/browser/ui/toolbar/app_menu_model.cc
-+++ b/chrome/browser/ui/toolbar/app_menu_model.cc
-@@ -215,6 +215,7 @@ void ToolsMenuModel::Build(Browser* browser) {
- 
-   AddSeparator(ui::NORMAL_SEPARATOR);
-   AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
-+  AddItemWithStringId(IDC_CLEAR_HTTP_AUTH_CACHE, IDS_CLEAR_HTTP_AUTH_CACHE);
-   AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
-   if (chrome::CanOpenTaskManager())
-     AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
-@@ -475,6 +476,13 @@ void AppMenuModel::LogMenuMetrics(int command_id) {
-       }
-       LogMenuAction(MENU_ACTION_CLEAR_BROWSING_DATA);
-       break;
-+    case IDC_CLEAR_HTTP_AUTH_CACHE:
-+      if (!uma_action_recorded_) {
-+        UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ClearHttpAuthCache",
-+                                   delta);
-+      }
-+      LogMenuAction(MENU_ACTION_CLEAR_HTTP_AUTH_CACHE);
-+      break;
-     case IDC_VIEW_SOURCE:
-       if (!uma_action_recorded_)
-         UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ViewSource", delta);
-diff --git a/chrome/browser/ui/toolbar/app_menu_model.h b/chrome/browser/ui/toolbar/app_menu_model.h
---- a/chrome/browser/ui/toolbar/app_menu_model.h
-+++ b/chrome/browser/ui/toolbar/app_menu_model.h
-@@ -76,6 +76,7 @@ enum AppMenuAction {
-   MENU_ACTION_OPEN_IN_CHROME = 48,
-   MENU_ACTION_SITE_SETTINGS = 49,
-   MENU_ACTION_APP_INFO = 50,
-+  MENU_ACTION_CLEAR_HTTP_AUTH_CACHE = 51,
-   LIMIT_MENU_ACTION
- };
- 
-diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
---- a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
-+++ b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
-@@ -225,6 +225,7 @@ GlobalMenuBarCommand tools_menu[] = {
- 
-     {IDS_TASK_MANAGER, IDC_TASK_MANAGER},
-     {IDS_CLEAR_BROWSING_DATA, IDC_CLEAR_BROWSING_DATA},
-+    {IDS_CLEAR_HTTP_AUTH_CACHE, IDC_CLEAR_HTTP_AUTH_CACHE},
- 
-     {MENU_SEPARATOR, MENU_SEPARATOR},
- 
-diff --git a/net/http/http_auth_cache.cc b/net/http/http_auth_cache.cc
---- a/net/http/http_auth_cache.cc
-+++ b/net/http/http_auth_cache.cc
-@@ -250,6 +250,7 @@ bool HttpAuthCache::Remove(const GURL& origin,
-       return false;
-     }
-   }
-+
-   return false;
- }
- 
-diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
---- a/tools/metrics/histograms/enums.xml
-+++ b/tools/metrics/histograms/enums.xml
-@@ -49525,6 +49525,7 @@ Full version information for the fingerprint enum values:
-   <int value="48" label="Open in Chrome"/>
-   <int value="49" label="Site Settings"/>
-   <int value="50" label="App Info"/>
-+  <int value="51" label="Clear HTTP auth cache"/>
- </enum>
- 
- <enum name="XFrameOptions">
-diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
---- a/tools/metrics/histograms/histograms.xml
-+++ b/tools/metrics/histograms/histograms.xml
-@@ -111352,6 +111352,7 @@ uploading your change for review.
-   <suffix name="Overestimate"
-       label="Tracks when the compositor's estimates were too high and by how
-              much."/>
-+  <suffix name="ClearHttpAuthCache" label="Clear HTTP authentication cache"/>
-   <suffix name="Underestimate"
-       label="Tracks when the compositor's estimates were too low and by how
-              much."/>
--- 
-2.7.4
-

+ 0 - 0
patches/BRM034_ungoogled-chromium-Disable-domain-reliability.patch → patches/BRM033_ungoogled-chromium-Disable-domain-reliability.patch


+ 1 - 1
patches/BRM035_Disable-Omaha-update-checks.patch → patches/BRM034_Disable-Omaha-update-checks.patch

@@ -9,7 +9,7 @@ Subject: Disable Omaha update checks
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
-@@ -132,7 +132,7 @@ public class OmahaBase {
+@@ -134,7 +134,7 @@ public class OmahaBase {
  
      /** See {@link #sIsDisabled}. */
      static boolean isDisabled() {

+ 0 - 0
patches/BRM036_Add-DuckDuckGo-search-engine.patch → patches/BRM035_Add-DuckDuckGo-search-engine.patch


+ 3 - 3
patches/BRM037_Add-StartPage-search-engine.patch → patches/BRM036_Add-StartPage-search-engine.patch

@@ -15,12 +15,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
  
      // Increment this if you change the data in ways that mean users with
      // existing data should get a new version.
--    "kCurrentDataVersion": 102
-+    "kCurrentDataVersion": 103
+-    "kCurrentDataVersion": 103
++    "kCurrentDataVersion": 104
    },
  
    // The following engines are included in country lists and are added to the
-@@ -232,6 +232,16 @@
+@@ -247,6 +247,16 @@
        "id": 56
      },
  

+ 3 - 3
patches/BRM038_Add-Google-English-only-engine.patch → patches/BRM037_Add-Google-English-only-engine.patch

@@ -17,12 +17,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
  
      // Increment this if you change the data in ways that mean users with
      // existing data should get a new version.
--    "kCurrentDataVersion": 103
-+    "kCurrentDataVersion": 104
+-    "kCurrentDataVersion": 104
++    "kCurrentDataVersion": 105
    },
  
    // The following engines are included in country lists and are added to the
-@@ -154,6 +154,27 @@
+@@ -159,6 +159,27 @@
        "id": 1
      },
  

+ 16 - 5
patches/BRM039_Add-Qwant-search-engine.patch → patches/BRM038_Add-Qwant-search-engine.patch

@@ -3,10 +3,10 @@ Date: Mon, 12 Mar 2018 20:31:44 +0100
 Subject: Add Qwant search engine
 
 ---
- .../search_engines/prepopulated_engines.json       |  13 +-
+ .../search_engines/prepopulated_engines.json       |  24 ++-
  components/search_engines/search_engine_type.h     |   1 +
  .../template_url_prepopulate_data.cc               | 218 ++++++++++-----------
- 3 files changed, 122 insertions(+), 110 deletions(-)
+ 3 files changed, 133 insertions(+), 110 deletions(-)
 
 diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
 --- a/components/search_engines/prepopulated_engines.json
@@ -15,15 +15,26 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
  
      // Increment this if you change the data in ways that mean users with
      // existing data should get a new version.
--    "kCurrentDataVersion": 104
-+    "kCurrentDataVersion": 105
+-    "kCurrentDataVersion": 105
++    "kCurrentDataVersion": 106
    },
  
    // The following engines are included in country lists and are added to the
-@@ -939,6 +939,17 @@
+@@ -954,6 +954,28 @@
        "id": 6
      },
  
++    "qwant": {
++      "name": "Qwant",
++      "keyword": "qwant.com",
++      "favicon_url": "https://www.qwant.com/favicon.ico",
++      "search_url": "https://www.qwant.com/?client=opensearch&q={searchTerms}",
++      "suggest_url": "https://api.qwant.com/api/suggest/?client=opensearch&q={searchTerms}",
++      "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
++      "type": "SEARCH_ENGINE_QWANT",
++      "id": 14
++    },
++
 +    "qwant": {
 +      "name": "Qwant",
 +      "keyword": "qwant.com",

+ 1 - 1
patches/BRM040_Fix-crash-when-accessing-page-info-site-settings.patch → patches/BRM039_Fix-crash-when-accessing-page-info-site-settings.patch

@@ -9,7 +9,7 @@ Subject: Fix crash when accessing page info / site settings
 diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
 --- a/chrome/browser/permissions/permission_manager.cc
 +++ b/chrome/browser/permissions/permission_manager.cc
-@@ -632,6 +632,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
+@@ -633,6 +633,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
    GURL canonical_requesting_origin =
        GetCanonicalOrigin(requesting_origin, embedding_origin);
    PermissionContextBase* context = GetPermissionContext(permission);

+ 3 - 3
patches/BRM041_openH264-enable-ARM-ARM64-optimizations.patch → patches/BRM040_openH264-enable-ARM-ARM64-optimizations.patch

@@ -59,7 +59,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
    # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
    if (!is_win || is_clang) {
      cflags += [
-@@ -128,6 +143,14 @@ source_set("common") {
+@@ -129,6 +144,14 @@ source_set("common") {
    }
    include_dirs = openh264_common_include_dirs
  
@@ -74,7 +74,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs += [ ":config" ]
-@@ -154,6 +177,14 @@ source_set("processing") {
+@@ -155,6 +178,14 @@ source_set("processing") {
    }
    include_dirs = openh264_processing_include_dirs
  
@@ -89,7 +89,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
    configs += [ ":config" ]
-@@ -173,6 +204,14 @@ source_set("encoder") {
+@@ -174,6 +205,14 @@ source_set("encoder") {
    }
    include_dirs = openh264_encoder_include_dirs
  

+ 10 - 10
patches/BRM042_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch → patches/BRM041_Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch

@@ -18,26 +18,26 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
 --- a/third_party/blink/renderer/core/dom/BUILD.gn
 +++ b/third_party/blink/renderer/core/dom/BUILD.gn
 @@ -147,6 +147,8 @@ blink_core_sources("dom") {
-     "events/tree_scope_event_context.h",
-     "events/window_event_context.cc",
-     "events/window_event_context.h",
+     "global_event_handlers.h",
+     "icon_url.cc",
+     "icon_url.h",
 +    "extensions/dont-track-me.h",
 +    "extensions/video-bg-play.h",
-     "exception_code.h",
-     "first_letter_pseudo_element.cc",
-     "first_letter_pseudo_element.h",
+     "id_target_observer.cc",
+     "id_target_observer.h",
+     "id_target_observer_registry.cc",
 diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
 --- a/third_party/blink/renderer/core/dom/document.cc
 +++ b/third_party/blink/renderer/core/dom/document.cc
-@@ -222,6 +222,7 @@
+@@ -223,6 +223,7 @@
  #include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.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_scrollable_area.h"
-@@ -277,6 +278,8 @@
+ #include "third_party/blink/renderer/core/paint/paint_layer.h"
+@@ -282,6 +283,8 @@
  #include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
  #include "third_party/blink/renderer/platform/wtf/time.h"
  
@@ -46,7 +46,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
  #ifndef NDEBUG
  using WeakDocumentSet =
      blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
-@@ -5882,8 +5885,31 @@ void Document::FinishedParsing() {
+@@ -5926,8 +5929,31 @@ void Document::FinishedParsing() {
      fetcher_->ClearResourcesFromPreviousFetcher();
    }
  

+ 2 - 2
patches/BRM043_Allow-playing-audio-in-background.patch → patches/BRM042_Allow-playing-audio-in-background.patch

@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
 diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
 --- a/media/blink/webmediaplayer_impl.cc
 +++ b/media/blink/webmediaplayer_impl.cc
-@@ -871,6 +871,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
+@@ -862,6 +862,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
    return pipeline_metadata_.has_audio;
  }
  
@@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
  void WebMediaPlayerImpl::EnabledAudioTracksChanged(
      const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
    DCHECK(main_task_runner_->BelongsToCurrentThread());
-@@ -2940,7 +2946,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
+@@ -2953,7 +2959,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 (IsBackgroundedSuspendEnabled()) {

+ 1 - 1
patches/BRM044_Open-YouTube-links-in-Bromite.patch → patches/BRM043_Open-YouTube-links-in-Bromite.patch

@@ -9,7 +9,7 @@ Subject: Open YouTube links in Bromite
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
-@@ -363,6 +363,13 @@ public class ExternalNavigationHandler {
+@@ -384,6 +384,13 @@ public class ExternalNavigationHandler {
              return OverrideUrlLoadingResult.NO_OVERRIDE;
          }
  

+ 2 - 2
patches/BRM045_Add-exit-menu-item.patch → patches/BRM044_Add-exit-menu-item.patch

@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
-@@ -1986,6 +1986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -2022,6 +2022,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
              RecordUserAction.record("MobileMenuSettings");
          } else if (id == R.id.show_menu) {
              showAppMenuForKeyboardEvent();
@@ -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
-@@ -2678,6 +2678,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
+@@ -2837,6 +2837,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
        <message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
          Settings
        </message>

+ 2 - 2
patches/BRM046_Remove-help-menu-item.patch → patches/BRM045_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
-@@ -2010,15 +2010,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -2046,15 +2046,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
  
          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
-@@ -1038,7 +1038,7 @@ public class CustomTabActivity extends ChromeActivity {
+@@ -1219,7 +1219,7 @@ public class CustomTabActivity extends ChromeActivity {
      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

+ 32 - 22
patches/BRM047_Add-menu-option-to-toggle-global-Javascript-preference.patch → patches/BRM046_Add-menu-option-to-toggle-global-Javascript-preference.patch

@@ -7,10 +7,10 @@ Subject: Add menu option to toggle global Javascript preference
  chrome/android/java/res/menu/main_menu.xml         | 13 ++++++++
  .../chromium/chrome/browser/ChromeActivity.java    |  8 +++++
  .../chrome/browser/ChromeTabbedActivity.java       |  8 +++++
- .../browser/appmenu/AppMenuPropertiesDelegate.java | 37 ++++++++++++++++++++++
+ .../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++++++++++++++++++++++
  .../CustomTabAppMenuPropertiesDelegate.java        |  1 +
  .../java/strings/android_chrome_strings.grd        | 11 +++++++
- 7 files changed, 91 insertions(+)
+ 7 files changed, 92 insertions(+)
 
 diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
 --- a/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -75,17 +75,17 @@ 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
-@@ -2079,6 +2079,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -2114,6 +2114,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
              final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
              currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
              RecordUserAction.record("MobileMenuRequestDesktopSite");
 +        } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
 +            final boolean reloadOnChange = !currentTab.isNativePage();
-+            final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
-+            PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
++            final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
++            PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
 +            if (reloadOnChange) {
-+				currentTab.reload();
-+			}
++                currentTab.reload();
++            }
 +            RecordUserAction.record("MobileMenuRequestEnableJavascript");
          } else if (id == R.id.reader_mode_prefs_id) {
              DomDistillerUIUtils.openSettings(currentTab.getWebContents());
@@ -93,17 +93,17 @@ 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
-@@ -1644,6 +1644,14 @@ public class ChromeTabbedActivity
+@@ -1707,6 +1707,14 @@ public class ChromeTabbedActivity
                  NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
              }
              RecordUserAction.record("MobileMenuDownloadManager");
 +        } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
 +            final boolean reloadOnChange = !currentTab.isNativePage();
-+            final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
-+            PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
++            final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
++            PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
 +            if (reloadOnChange) {
-+				currentTab.reload();
-+			}
++                currentTab.reload();
++            }
 +            RecordUserAction.record("MobileMenuRequestEnableJavascript");
          } else if (id == R.id.open_recently_closed_tab) {
              TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
@@ -111,7 +111,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
-@@ -192,6 +192,8 @@ public class AppMenuPropertiesDelegate {
+@@ -24,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram;
+ import org.chromium.chrome.R;
+ import org.chromium.chrome.browser.ChromeActivity;
+ import org.chromium.chrome.browser.ChromeSwitches;
++import org.chromium.chrome.browser.ContentSettingsType;
+ import org.chromium.chrome.browser.ShortcutHelper;
+ import org.chromium.chrome.browser.UrlConstants;
+ import org.chromium.chrome.browser.banners.AppBannerManager;
+@@ -196,6 +197,8 @@ public class AppMenuPropertiesDelegate {
  
              updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  
@@ -120,12 +128,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
              // Only display reader mode settings menu option if the current page is in reader mode.
              menu.findItem(R.id.reader_mode_prefs_id)
                      .setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
-@@ -412,4 +414,39 @@ public class AppMenuPropertiesDelegate {
-                         ? mActivity.getString(R.string.menu_request_desktop_site_on)
-                         : mActivity.getString(R.string.menu_request_desktop_site_off));
+@@ -418,6 +421,41 @@ public class AppMenuPropertiesDelegate {
      }
-+
-+    /**
+ 
+     /**
 +     * Updates the enable JavaScript item's state.
 +     *
 +     * @param menu {@link Menu} for enable javascript
@@ -148,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +        enableMenuRow.setVisible(itemVisible);
 +        if (!itemVisible) return;
 +
-+        boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
++        boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
 +
 +        // Mark the checkbox if Javascript is activated on this tab.
 +        enableMenuCheck.setChecked(jsEnabled);
@@ -159,11 +165,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +                        ? mActivity.getString(R.string.menu_enable_javascript_on)
 +                        : mActivity.getString(R.string.menu_enable_javascript_off));
 +    }
- }
++
++    /**
+      * A notification that the header view has finished inflating.
+      * @param view The view that was inflated.
+      * @param appMenu The menu the view is inside of.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
-@@ -171,6 +171,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+@@ -165,6 +165,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
              }
  
              updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
@@ -174,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
-@@ -2663,6 +2663,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
+@@ -2822,6 +2822,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
        <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>

+ 63 - 68
patches/BRM048_Bromite-adblock-engine.patch → patches/BRM047_Bromite-adblock-engine.patch

@@ -18,12 +18,12 @@ New mechanism for adblocking based on Brave's adblocking hook
  .../browser/appmenu/AppMenuPropertiesDelegate.java |  38 +++
  .../CustomTabAppMenuPropertiesDelegate.java        |   2 +
  .../java/strings/android_chrome_strings.grd        |  11 +
- chrome/browser/net/chrome_network_delegate.cc      |  55 ++++
- .../subresource_filter_content_settings_manager.cc |   3 +
+ chrome/browser/net/chrome_network_delegate.cc      |  58 ++++
+ .../subresource_filter_content_settings_manager.cc |   1 +
  net/BUILD.gn                                       |   7 +
- net/url_request/adblock_intercept.cc               | 323 +++++++++++++++++++++
- net/url_request/adblock_intercept.h                |  19 ++
- 12 files changed, 497 insertions(+)
+ net/url_request/adblock_intercept.cc               | 321 +++++++++++++++++++++
+ net/url_request/adblock_intercept.h                |  17 ++
+ 12 files changed, 494 insertions(+)
  create mode 100644 net/url_request/adblock_intercept.cc
  create mode 100644 net/url_request/adblock_intercept.h
 
@@ -73,14 +73,14 @@ 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
-@@ -2089,6 +2089,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -2124,6 +2124,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
              RecordUserAction.record("MobileMenuRequestEnableJavascript");
          } else if (id == R.id.reader_mode_prefs_id) {
              DomDistillerUIUtils.openSettings(currentTab.getWebContents());
 +        } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
 +            final boolean reloadOnChange = !currentTab.isNativePage();
-+            final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
-+            PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
++            final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
++            PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
 +            if (reloadOnChange) {
 +                currentTab.reload();
 +            }
@@ -91,25 +91,25 @@ 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
-@@ -1658,6 +1658,14 @@ public class ChromeTabbedActivity
-             RecordUserAction.record("MobileTabClosedUndoShortCut");
-         } else if (id == R.id.enter_vr_id) {
-             VrShellDelegate.enterVrIfNecessary();
+@@ -1665,6 +1665,14 @@ public class ChromeTabbedActivity
+                 reportNewTabShortcutUsed(true);
+                 getTabCreator(true).launchNTP();
+             }
 +        } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
 +            final boolean reloadOnChange = !currentTab.isNativePage();
-+            final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
-+            PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
++            final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
++            PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
 +            if (reloadOnChange) {
-+               currentTab.reload();
++                currentTab.reload();
 +            }
 +            RecordUserAction.record("MobileMenuRequestEnableAdBlock");
-         } else {
-             return super.onMenuOrKeyboardAction(id, fromMenu);
-         }
+         } else if (id == R.id.all_bookmarks_menu_id) {
+             if (currentTab != null) {
+                 getCompositorViewHolder().hideKeyboard(() -> {
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
-@@ -190,6 +190,8 @@ public class AppMenuPropertiesDelegate {
+@@ -195,6 +195,8 @@ public class AppMenuPropertiesDelegate {
                      && !TextUtils.isEmpty(url);
              prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
  
@@ -118,12 +118,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
              updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
  
              updateEnableJavascriptMenuItem(menu, currentTab);
-@@ -449,4 +451,40 @@ public class AppMenuPropertiesDelegate {
-                         ? mActivity.getString(R.string.menu_enable_javascript_on)
-                         : mActivity.getString(R.string.menu_enable_javascript_off));
+@@ -456,6 +458,42 @@ public class AppMenuPropertiesDelegate {
      }
-+
-+    /**
+ 
+     /**
 +     * Updates the enable AdBlock item's state.
 +     *
 +     * @param menu {@link Menu} for enable adblock
@@ -147,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +        enableMenuRow.setVisible(itemVisible);
 +        if (!itemVisible) return;
 +
-+        boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
++        boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
 +
 +        // Mark the checkbox if adblock is globally activate.
 +        enableMenuCheck.setChecked(adBlockEnabled);
@@ -158,11 +156,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +                        ? mActivity.getString(R.string.menu_enable_adblock_on)
 +                        : mActivity.getString(R.string.menu_enable_adblock_off));
 +    }
- }
++
++    /**
+      * A notification that the header view has finished inflating.
+      * @param view The view that was inflated.
+      * @param appMenu The menu the view is inside of.
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
-@@ -170,6 +170,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+@@ -164,6 +164,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
                  }
              }
  
@@ -174,7 +176,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
-@@ -2683,6 +2683,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
+@@ -2842,6 +2842,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
        <message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
          Turn on Request desktop site
        </message>
@@ -195,7 +197,15 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
 --- a/chrome/browser/net/chrome_network_delegate.cc
 +++ b/chrome/browser/net/chrome_network_delegate.cc
-@@ -62,6 +62,7 @@
+@@ -24,6 +24,7 @@
+ #include "build/build_config.h"
+ #include "chrome/browser/browser_process.h"
+ #include "chrome/browser/content_settings/cookie_settings_factory.h"
++#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
+ #include "chrome/browser/content_settings/tab_specific_content_settings.h"
+ #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
+ #include "chrome/browser/net/chrome_extensions_network_delegate.h"
+@@ -59,6 +60,7 @@
  #if defined(OS_ANDROID)
  #include "base/android/path_utils.h"
  #include "chrome/browser/io_thread.h"
@@ -203,7 +213,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
  #endif
  
  #if defined(OS_CHROMEOS)
-@@ -269,11 +270,63 @@ void ChromeNetworkDelegate::InitializePrefsOnUIThread(
+@@ -215,10 +217,64 @@ void ChromeNetworkDelegate::InitializePrefsOnUIThread(
    }
  }
  
@@ -211,14 +221,13 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +
  int ChromeNetworkDelegate::OnBeforeURLRequest(
      net::URLRequest* request,
-     const net::CompletionCallback& callback,
+     net::CompletionOnceCallback callback,
      GURL* new_url) {
- 
++
 +#if defined(OS_ANDROID)
 +  if (request) {
 +    bool block = false, isValidUrl;
 +
-+    //LOG(INFO) << "OnBeforeURLRequest " << request->url();
 +    isValidUrl = request->url().is_valid();
 +    std::string scheme = request->url().scheme();
 +    if (isValidUrl && scheme.length()) {
@@ -229,25 +238,27 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +    }
 +    const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
 +
++    bool adblock_enabled = false;
 +    if (isValidUrl && info) {
-+#if 0
-+      // not working
 +      const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter = info->GetWebContentsGetterForRequest();
 +      content::WebContents* web_contents = web_contents_getter.Run();
 +      if (web_contents) {
-+        TabSpecificContentSettings* content_settings =
-+        TabSpecificContentSettings::FromWebContents(web_contents);
-+        if (content_settings) {
-+          bool adblock_enabled = content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_ADS);
-+          LOG(INFO) << "adblock_enabled from tab: " << adblock_enabled;
++        Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
++        const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
++
++        // check global value first
++        adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
++
++        if (!adblock_enabled) {
++          adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
++                                                             std::string());
 +        }
 +      }
-+#endif
 +
-+      if (net::adblock_enabled
++      if (adblock_enabled
 +        && content::RESOURCE_TYPE_MAIN_FRAME != info->GetResourceType()
 +        && net::adblock_intercept(request->url(),
-+                                request->site_for_cookies().host(),
++                                request->initiator()->host(),
 +                                info->GetResourceType())) {
 +        block = true;
 +      }
@@ -266,8 +277,8 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +
    extensions_delegate_->ForwardStartRequestStatus(request);
  
-   if (!enable_referrers_->GetValue())
-@@ -307,6 +360,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
+   bool force_safe_search =
+@@ -248,6 +304,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
    return rv;
  }
  
@@ -275,35 +286,23 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
 +
  int ChromeNetworkDelegate::OnBeforeStartTransaction(
      net::URLRequest* request,
-     const net::CompletionCallback& callback,
+     net::CompletionOnceCallback callback,
 diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
 --- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
 +++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
-@@ -22,6 +22,7 @@
+@@ -19,6 +19,7 @@
+ #include "components/history/core/browser/history_service.h"
  #include "components/keyed_service/core/service_access_type.h"
- #include "components/subresource_filter/core/browser/subresource_filter_features.h"
  #include "url/gurl.h"
 +#include "net/url_request/adblock_intercept.h"
  
  namespace {
  
-@@ -160,9 +161,11 @@ void SubresourceFilterContentSettingsManager::OnContentSettingChanged(
-     if (global_setting == CONTENT_SETTING_ALLOW) {
-       ChromeSubresourceFilterClient::LogAction(
-           kActionContentSettingsAllowedGlobal);
-+      net::adblock_enabled = false;
-     } else if (global_setting == CONTENT_SETTING_BLOCK) {
-       ChromeSubresourceFilterClient::LogAction(
-           kActionContentSettingsBlockedGlobal);
-+      net::adblock_enabled = true;
-     } else {
-       NOTREACHED();
-     }
 diff --git a/net/BUILD.gn b/net/BUILD.gn
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -1791,6 +1791,13 @@ component("net") {
-       "//third_party/zlib",
+@@ -1715,6 +1715,13 @@ component("net") {
+       "url_request/websocket_handshake_userdata_key.h",
      ]
  
 +    if (is_android) {
@@ -320,7 +319,7 @@ diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_inte
 new file mode 100644
 --- /dev/null
 +++ b/net/url_request/adblock_intercept.cc
-@@ -0,0 +1,323 @@
+@@ -0,0 +1,321 @@
 +#include "url/gurl.h"
 +#include "content/public/common/resource_type.h"
 +
@@ -343,8 +342,6 @@ new file mode 100644
 +
 +namespace net {
 +
-+bool adblock_enabled = true;
-+
 +const char *LOG_TAG = "Bromite";
 +
 +#ifdef ADB_TESTER
@@ -648,7 +645,7 @@ diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_inter
 new file mode 100644
 --- /dev/null
 +++ b/net/url_request/adblock_intercept.h
-@@ -0,0 +1,19 @@
+@@ -0,0 +1,17 @@
 +#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
 +#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
 +
@@ -663,8 +660,6 @@ new file mode 100644
 +
 +int adblock_intercept(const GURL &url, const std::string &origin_host, content::ResourceType resource_type);
 +
-+extern bool adblock_enabled;
-+
 +} // namespace net
 +
 +#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_

+ 0 - 0
patches/BRM049_User-Agent-anonymize.patch → patches/BRM048_User-Agent-anonymize.patch


+ 7 - 8
patches/BRM050_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch → patches/BRM049_AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch

@@ -6,8 +6,8 @@ Return fixed base latency
 ---
  third_party/blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
  third_party/blink/renderer/modules/webaudio/audio_buffer.idl  | 4 ++--
- third_party/blink/renderer/modules/webaudio/audio_context.cc  | 2 +-
- 3 files changed, 7 insertions(+), 7 deletions(-)
+ third_party/blink/renderer/modules/webaudio/audio_context.cc  | 1 +
+ 3 files changed, 7 insertions(+), 6 deletions(-)
 
 diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
 --- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -43,15 +43,14 @@ 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
-@@ -271,7 +271,7 @@ void AudioContext::StopRendering() {
- }
- 
+@@ -314,6 +314,7 @@ void AudioContext::StopRendering() {
  double AudioContext::baseLatency() const {
--  return FramesPerBuffer() / static_cast<double>(sampleRate());
+   DCHECK(IsMainThread());
+   DCHECK(destination());
 +  return 0.04;
- }
  
- }  // namespace blink
+   // TODO(hongchan): Due to the incompatible constructor between
+   // AudioDestinationNode and DefaultAudioDestinationNode, casting directly from
 -- 
 2.7.4
 

+ 2 - 2
patches/BRM051_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch → patches/BRM050_Canvas-fingerprinting-mitigations-for-image-data-and-webGL.patch

@@ -64,9 +64,9 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  
 +#include "base/rand_util.h"
 +#include "base/logging.h"
+ #include "base/numerics/checked_math.h"
  #include "gpu/command_buffer/client/gles2_interface.h"
  #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
- #include "third_party/blink/renderer/platform/graphics/graphics_context.h"
 @@ -15,6 +17,7 @@
  #include "third_party/skia/include/core/SkCanvas.h"
  #include "third_party/skia/include/core/SkImage.h"
@@ -75,7 +75,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
  #include "third_party/skia/include/gpu/GrContext.h"
  
  namespace blink {
-@@ -161,10 +164,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
+@@ -154,10 +157,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
    DCHECK(read_pixels_successful ||
           !sk_image->bounds().intersect(SkIRect::MakeXYWH(
               rect.X(), rect.Y(), info.width(), info.height())));

+ 7 - 7
patches/BRM052_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch → patches/BRM051_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch

@@ -31,7 +31,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
  
  #include "third_party/blink/public/platform/web_scroll_into_view_params.h"
  #include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
-@@ -1356,6 +1357,15 @@ DOMRectList* Element::getClientRects() {
+@@ -1382,6 +1383,15 @@ DOMRectList* Element::getClientRects() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
        quads, *element_layout_object);
@@ -47,7 +47,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
    return DOMRectList::Create(quads);
  }
  
-@@ -1373,6 +1383,13 @@ DOMRect* Element::getBoundingClientRect() {
+@@ -1399,6 +1409,13 @@ DOMRect* Element::getBoundingClientRect() {
    DCHECK(element_layout_object);
    GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
                                                          *element_layout_object);
@@ -70,10 +70,10 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
  
 +#include "base/rand_util.h"
 +
- #include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
+ #include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
  #include "third_party/blink/renderer/core/dom/character_data.h"
  #include "third_party/blink/renderer/core/dom/container_node.h"
-@@ -1575,11 +1577,27 @@ DOMRectList* Range::getClientRects() const {
+@@ -1604,11 +1606,27 @@ DOMRectList* Range::getClientRects() const {
    Vector<FloatQuad> quads;
    GetBorderAndTextQuads(quads);
  
@@ -105,7 +105,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
 diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
 --- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
 +++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
-@@ -47,6 +47,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
+@@ -48,6 +48,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
    return 0;
  }
  
@@ -133,7 +133,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third
 diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
 --- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
 +++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
-@@ -67,6 +67,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
+@@ -68,6 +68,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
  
    static float GetFontBaseline(const TextBaseline&, const FontMetrics&);
  
@@ -154,7 +154,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
  #include "third_party/blink/public/platform/platform.h"
  #include "third_party/blink/public/platform/task_type.h"
  #include "third_party/blink/public/platform/web_scroll_into_view_params.h"
-@@ -776,8 +778,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
+@@ -775,8 +777,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
    else
      direction = ToTextDirection(GetState().GetDirection(), canvas());
  

+ 5 - 5
patches/BRM053_Punt-the-Widevine-version-string.patch → patches/BRM052_Punt-the-Widevine-version-string.patch

@@ -10,15 +10,15 @@ 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
-@@ -536,7 +536,7 @@ void ChromeContentClient::AddContentDecryptionModules(
-     if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
-                             &supports_persistent_license,
-                             &encryption_modes_supported)) {
+@@ -532,7 +532,7 @@ void ChromeContentClient::AddContentDecryptionModules(
+     base::FilePath cdm_path;
+     content::CdmCapability capability;
+     if (IsWidevineAvailable(&cdm_path, &capability)) {
 -      const base::Version version(WIDEVINE_CDM_VERSION_STRING);
 +      const base::Version version("1.0.123.456");
        DCHECK(version.IsValid());
  
-       cdms->push_back(content::CdmInfo(
+       cdms->push_back(
 -- 
 2.7.4
 

+ 1 - 1
patches/BRM054_Disable-metrics-on-all-I-O-threads.patch → patches/BRM053_Disable-metrics-on-all-I-O-threads.patch

@@ -9,7 +9,7 @@ Subject: Disable metrics on all I/O threads
 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
-@@ -949,7 +949,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
+@@ -922,7 +922,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
  
  bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
    DCHECK_CURRENTLY_ON(BrowserThread::IO);

+ 42 - 42
patches/BRM055_Add-a-flag-for-DNS-over-HTTPS.patch → patches/BRM054_Add-a-flag-for-DNS-over-HTTPS.patch

@@ -11,19 +11,19 @@ See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt
  chrome/browser/about_flags.cc                      | 12 +++++++++
  chrome/browser/flag_descriptions.cc                |  3 +++
  chrome/browser/flag_descriptions.h                 |  3 +++
- chrome/browser/io_thread.cc                        | 14 +++++++----
+ .../browser/net/system_network_context_manager.cc  | 12 +++++----
  .../common/network_features.cc                     |  5 ++--
  .../common/network_features.h                      |  5 ++--
  .../common/network_switch_list.h                   |  4 +++
  net/base/load_flags_list.h                         |  6 +++++
  net/dns/dns_transaction.cc                         | 29 +++-------------------
- net/url_request/url_request_http_job.cc            | 28 +++++++++++++--------
- 10 files changed, 64 insertions(+), 45 deletions(-)
+ net/url_request/url_request_http_job.cc            | 26 +++++++++++--------
+ 10 files changed, 61 insertions(+), 44 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
-@@ -400,6 +400,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
+@@ -421,6 +421,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
       switches::kChromeHomeSwipeLogicType, "velocity"},
  };
  
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  #endif  // OS_ANDROID
  
  const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
-@@ -3489,6 +3495,12 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -3517,6 +3523,12 @@ const FeatureEntry kFeatureEntries[] = {
       FEATURE_VALUE_TYPE(features::kAsyncDns)},
  #endif  // defined(OS_ANDROID)
  
@@ -52,7 +52,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
-@@ -1952,6 +1952,9 @@ const char kAndroidPaymentAppsDescription[] =
+@@ -2112,6 +2112,9 @@ const char kAndroidPaymentAppsDescription[] =
  const char kAsyncDnsName[] = "Async DNS resolver";
  const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
  
@@ -65,7 +65,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
-@@ -1188,6 +1188,9 @@ extern const char kAndroidPaymentAppsDescription[];
+@@ -1284,6 +1284,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
  extern const char kAsyncDnsName[];
  extern const char kAsyncDnsDescription[];
  
@@ -75,39 +75,35 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
  extern const char kAutofillAccessoryViewName[];
  extern const char kAutofillAccessoryViewDescription[];
  
-diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
---- a/chrome/browser/io_thread.cc
-+++ b/chrome/browser/io_thread.cc
-@@ -50,6 +50,7 @@
- #include "components/metrics/metrics_service.h"
- #include "components/net_log/chrome_net_log.h"
+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
+@@ -23,6 +23,7 @@
+ #include "chrome/common/chrome_features.h"
+ #include "chrome/common/pref_names.h"
  #include "components/network_session_configurator/common/network_features.h"
 +#include "components/network_session_configurator/common/network_switches.h"
+ #include "components/policy/core/common/policy_namespace.h"
  #include "components/policy/core/common/policy_service.h"
  #include "components/policy/policy_constants.h"
- #include "components/prefs/pref_registry_simple.h"
-@@ -373,13 +374,16 @@ IOThread::IOThread(
-                                       base::Unretained(this)));
-   dns_client_enabled_.MoveToThread(io_thread_proxy);
- 
+@@ -370,11 +371,12 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
+       std::make_unique<base::ListValue>();
+   std::unique_ptr<base::ListValue> default_doh_server_methods =
+       std::make_unique<base::ListValue>();
 -  if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
+-    base::Value server(variations::GetVariationParamValueByFeature(
+-        features::kDnsOverHttps, "server"));
+-    base::Value method(variations::GetVariationParamValueByFeature(
+-        features::kDnsOverHttps, "method"));
 +  std::string dnsOverHttpsServer =
 +      base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
 +      switches::kDnsOverHttpsServer);
 +  if (!dnsOverHttpsServer.empty()) {
-     base::Value specs(base::Value::Type::LIST);
-     base::Value methods(base::Value::Type::LIST);
--    base::Value spec(variations::GetVariationParamValueByFeature(
--        features::kDnsOverHttps, "server"));
--    base::Value method(variations::GetVariationParamValueByFeature(
--        features::kDnsOverHttps, "method"));
-+
-+    base::Value spec(dnsOverHttpsServer);
++    base::Value server(dnsOverHttpsServer);
 +    base::Value method("POST");
-+
-     if (spec.GetString().size() > 0) {
-       specs.GetList().push_back(std::move(spec));
-       methods.GetList().push_back(std::move(method));
+     if (!server.GetString().empty()) {
+       default_doh_servers->GetList().push_back(std::move(server));
+       default_doh_server_methods->GetList().push_back(std::move(method));
 diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
 --- a/components/network_session_configurator/common/network_features.cc
 +++ b/components/network_session_configurator/common/network_features.cc
@@ -155,20 +151,23 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
 diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
 --- a/net/base/load_flags_list.h
 +++ b/net/base/load_flags_list.h
-@@ -92,3 +92,9 @@ LOAD_FLAG(DISABLE_CONNECTION_MIGRATION, 1 << 16)
- // Indicates that the cache should not check that the request matches the
- // response's vary header.
- LOAD_FLAG(SKIP_VARY_CHECK, 1 << 17)
+@@ -92,6 +92,12 @@ LOAD_FLAG(MAYBE_USER_GESTURE, 1 << 14)
+ LOAD_FLAG(DO_NOT_USE_EMBEDDED_IDENTITY, 1 << 15)
+ 
+ // Indicates that this request is not to be migrated to a cellular network when
 +
 +// This load will not send Accept-Language or User-Agent headers, and not
 +// advertise brotli encoding.
 +// Used to comply with IETF (draft) DNS-over-HTTPS:
 +// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests."
 +LOAD_FLAG(MINIMAL_HEADERS, 1 << 18)
+ // QUIC connection migration is enabled.
+ LOAD_FLAG(DISABLE_CONNECTION_MIGRATION_TO_CELLULAR, 1 << 16)
+ 
 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
-@@ -390,30 +390,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -389,30 +389,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
  
      HttpRequestHeaders extra_request_headers;
      extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
@@ -201,7 +200,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
      net_log_ = request_->net_log();
  
      if (use_post) {
-@@ -431,6 +409,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
+@@ -430,6 +408,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
      request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
                             LOAD_BYPASS_PROXY | LOAD_DO_NOT_SEND_COOKIES |
                             LOAD_DO_NOT_SAVE_COOKIES |
@@ -209,7 +208,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
                             LOAD_DO_NOT_SEND_AUTH_DATA);
    }
  
-@@ -850,7 +829,7 @@ class DnsTransactionImpl : public DnsTransaction,
+@@ -849,7 +828,7 @@ class DnsTransactionImpl : public DnsTransaction,
          had_tcp_attempt_(false),
          doh_attempt_(false),
          first_server_index_(0),
@@ -221,7 +220,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
-@@ -434,19 +434,23 @@ void URLRequestHttpJob::Start() {
+@@ -434,21 +434,25 @@ void URLRequestHttpJob::Start() {
    // plugin could set a referrer although sending the referrer is inhibited.
    request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
  
@@ -229,18 +228,19 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
 -  // instance WebCore::FrameLoader::HideReferrer.
 -  if (referrer.is_valid()) {
 -    request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
--                                          referrer.spec());
 +  if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
 +    // Our consumer should have made sure that this is a safe referrer. See for
 +    // instance WebCore::FrameLoader::HideReferrer.
 +    if (referrer.is_valid()) {
 +      request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
-+                                            referrer.spec());
+                                           referrer.spec());
 +    }
    }
  
    request_info_.token_binding_referrer = request_->token_binding_referrer();
  
+   // This should be kept in sync with the corresponding code in
+   // URLRequest::GetUserAgent.
 -  request_info_.extra_headers.SetHeaderIfMissing(
 +  if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
 +    request_info_.extra_headers.SetHeaderIfMissing(
@@ -251,7 +251,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
  
    AddExtraHeaders();
    AddCookieHeaderAndStart();
-@@ -663,10 +667,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -666,10 +670,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
            HttpRequestHeaders::kAcceptEncoding)) {
      // Advertise "br" encoding only if transferred data is opaque to proxy.
      bool advertise_brotli = false;
@@ -268,7 +268,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
        }
      }
  
-@@ -683,7 +689,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
+@@ -686,7 +692,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
                                            advertised_encodings);
    }
  

+ 13 - 21
patches/BRM056_Always-respect-async-dns-flag-regardless-of-SDK-version.patch → patches/BRM055_Always-respect-async-dns-flag-regardless-of-SDK-version.patch

@@ -4,34 +4,26 @@ Subject: Always respect async dns flag (regardless of SDK version)
 
 Do not read experiment value for cronet async DNS configuration
 ---
- chrome/browser/io_thread.cc                     | 10 +---------
- components/cronet/url_request_context_config.cc |  3 ++-
- 2 files changed, 3 insertions(+), 10 deletions(-)
+ chrome/browser/net/system_network_context_manager.cc | 2 +-
+ components/cronet/url_request_context_config.cc      | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
 
-diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
---- a/chrome/browser/io_thread.cc
-+++ b/chrome/browser/io_thread.cc
-@@ -252,15 +252,7 @@ void UpdateMetricsUsagePrefsOnUIThread(const std::string& service_name,
- // Check the AsyncDns field trial and return true if it should be enabled. On
+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
+@@ -180,7 +180,7 @@ void OnAuthPrefsChanged(const std::string& pref_name) {
  // Android this includes checking the Android version in the field trial.
  bool ShouldEnableAsyncDns() {
--  bool feature_can_be_enabled = true;
+   bool feature_can_be_enabled = true;
 -#if defined(OS_ANDROID)
--  int min_sdk =
--      base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
--  if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
--    feature_can_be_enabled = false;
--#endif
--  return feature_can_be_enabled &&
--         base::FeatureList::IsEnabled(features::kAsyncDns);
-+  return base::FeatureList::IsEnabled(features::kAsyncDns);
- }
- 
- }  // namespace
++#if 0
+   int min_sdk =
+       base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
+   if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
 diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
 --- a/components/cronet/url_request_context_config.cc
 +++ b/components/cronet/url_request_context_config.cc
-@@ -366,7 +366,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
+@@ -390,7 +390,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
          effective_experimental_options->Remove(it.key(), nullptr);
          continue;
        }

+ 4 - 4
patches/BRM057_Add-flag-to-configure-maximum-connections-per-host.patch → patches/BRM056_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
-@@ -798,6 +798,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
+@@ -839,6 +839,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
       net::kEffectiveConnectionType4G},
  };
  
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  // Ensure that all effective connection types returned by Network Quality
  // Estimator (NQE) are also exposed via flags.
  static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
-@@ -2398,6 +2403,9 @@ const FeatureEntry kFeatureEntries[] = {
+@@ -2432,6 +2437,9 @@ const FeatureEntry kFeatureEntries[] = {
       flag_descriptions::kMaterialDesignIncognitoNTPName,
       flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
       FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
@@ -43,7 +43,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
-@@ -975,6 +975,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
+@@ -1065,6 +1065,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
      "If enabled, the Incognito New Tab page uses the new material design with "
      "a better readable text.";
  
@@ -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
-@@ -613,6 +613,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
+@@ -667,6 +667,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
  extern const char kMaterialDesignIncognitoNTPName[];
  extern const char kMaterialDesignIncognitoNTPDescription[];
  

+ 11 - 11
patches/BRM058_Add-flag-to-show-hide-NTP-tiles.patch → patches/BRM057_Add-flag-to-show-hide-NTP-tiles.patch

@@ -14,17 +14,17 @@ Subject: Add flag to show/hide NTP tiles
 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
-@@ -1915,6 +1915,10 @@ const FeatureEntry kFeatureEntries[] = {
-      flag_descriptions::kChromeModernAlternateCardLayoutName,
-      flag_descriptions::kChromeModernAlternateCardLayoutDescription, kOsAndroid,
-      FEATURE_VALUE_TYPE(chrome::android::kChromeModernAlternateCardLayout)},
+@@ -1902,6 +1902,10 @@ const FeatureEntry kFeatureEntries[] = {
+      SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
+ #endif  // OS_MACOSX
+ #if defined(OS_ANDROID)
 +    {"hide-ntp-tiles",
 +     flag_descriptions::kHideNTPTilesName,
 +     flag_descriptions::kHideNTPTilesDescription, kOsAndroid,
 +     SINGLE_VALUE_TYPE(switches::kHideNTPTiles)},
-     {"force-enable-home-page-button", flag_descriptions::kHomePageButtonName,
-      flag_descriptions::kHomePageButtonDescription, kOsAndroid,
-      FEATURE_VALUE_TYPE(chrome::android::kHomePageButtonForceEnabled)},
+     {"disable-pull-to-refresh-effect",
+      flag_descriptions::kPullToRefreshEffectName,
+      flag_descriptions::kPullToRefreshEffectDescription, kOsAndroid,
 diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
 --- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
 +++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
  #include "chrome/browser/history/history_service_factory.h"
  #include "chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.h"
  #include "chrome/browser/profiles/profile.h"
-@@ -167,6 +169,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
+@@ -162,6 +164,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
    std::vector<int> sources;
    std::vector<int> section_types;
    std::vector<int64_t> data_generation_times;
@@ -51,7 +51,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
    for (const auto& section : sections) {
      const NTPTilesVector& tiles = section.second;
      section_types.resize(section_types.size() + tiles.size(),
-@@ -181,6 +187,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
+@@ -176,6 +182,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
            tile.data_generation_time.ToJavaTime());
      }
    }
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
 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
-@@ -106,6 +106,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
+@@ -141,6 +141,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
      "Disable video tracks when the video is played in the background to "
      "optimize performance.";
  
@@ -77,7 +77,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
-@@ -92,6 +92,9 @@ extern const char kAv1DecoderDescription[];
+@@ -113,6 +113,9 @@ extern const char kAv1DecoderDescription[];
  extern const char kBackgroundVideoTrackOptimizationName[];
  extern const char kBackgroundVideoTrackOptimizationDescription[];
  

+ 19 - 25
patches/BRM059_Add-custom-tab-intents-privacy-option.patch → patches/BRM058_Add-custom-tab-intents-privacy-option.patch

@@ -5,10 +5,10 @@ Subject: Add custom tab intents privacy option
 ---
  chrome/android/java/res/values/values.xml                      |  3 +++
  chrome/android/java/res/xml/privacy_preferences.xml            |  5 +++++
- .../org/chromium/chrome/browser/LaunchIntentDispatcher.java    |  9 +++++++--
+ .../org/chromium/chrome/browser/LaunchIntentDispatcher.java    |  2 ++
  .../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
  chrome/android/java/strings/android_chrome_strings.grd         |  7 +++++++
- 5 files changed, 32 insertions(+), 2 deletions(-)
+ 5 files changed, 27 insertions(+)
 
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
 diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
 --- a/chrome/android/java/res/xml/privacy_preferences.xml
 +++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -52,4 +52,9 @@
+@@ -52,6 +52,11 @@
          android:title="@string/clear_browsing_data_title"
          android:summary="@string/clear_browsing_data_summary"
          android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
@@ -35,11 +35,13 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
 +        android:title="@string/allow_custom_tab_intents_title"
 +        android:summary="@string/allow_custom_tab_intents_summary"
 +        android:defaultValue="false" />
- </PreferenceScreen>
+     <org.chromium.chrome.browser.preferences.TextMessageWithLinkAndIconPreference
+         android:key="sync_and_services_link"
+         android:summary="@string/privacy_sync_and_services_link"/>
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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
-@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma;
+@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma;
  import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
  import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
  import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
@@ -47,26 +49,18 @@ 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;
-@@ -149,9 +150,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
-         recordIntentMetrics();
- 
-         mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
--        boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
-+
-+        if (ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) {
-+            mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
-                 || (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
--        mIsCustomTabIntent = isCustomTabIntent;
-+        } else {
-+            mIsCustomTabIntent = false;
-+        }
-     }
- 
-     /**
+@@ -274,6 +275,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;
 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
-@@ -37,6 +37,7 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -41,6 +41,7 @@ public class PrivacyPreferences extends PreferenceFragment
              "safe_browsing_extended_reporting";
      private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
              "safe_browsing_scout_reporting";
@@ -74,7 +68,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
      private static final String PREF_SAFE_BROWSING = "safe_browsing";
      private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
      private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
-@@ -100,6 +101,11 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -134,6 +135,11 @@ public class PrivacyPreferences extends PreferenceFragment
                      ? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
          preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
  
@@ -86,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          ChromeBaseCheckBoxPreference safeBrowsingPref =
                  (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
          safeBrowsingPref.setOnPreferenceChangeListener(this);
-@@ -123,6 +129,10 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -153,6 +159,10 @@ public class PrivacyPreferences extends PreferenceFragment
                     || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
              PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
                      (boolean) newValue);
@@ -100,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
-@@ -3423,6 +3423,13 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr
+@@ -3615,6 +3615,13 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr
          Browse
        </message>
  

+ 27 - 28
patches/BRM060_Add-privacy-option-to-keep-cookies-until-session-exit.patch → patches/BRM059_Add-privacy-option-to-keep-cookies-until-session-exit.patch

@@ -5,11 +5,11 @@ Subject: Add privacy option to keep cookies until session exit
 ---
  chrome/android/java/res/values/values.xml          |  3 +++
  .../android/java/res/xml/website_preferences.xml   |  7 +++++++
- .../browser/preferences/PrefServiceBridge.java     | 10 +++++++++
- .../website/SingleCategoryPreferences.java         | 24 ++++++++++++++++++++++
+ .../browser/preferences/PrefServiceBridge.java     | 10 ++++++++++
+ .../website/SingleCategoryPreferences.java         | 23 ++++++++++++++++++++++
  .../java/strings/android_chrome_strings.grd        |  6 ++++++
- .../android/preferences/pref_service_bridge.cc     | 19 +++++++++++++++++
- 6 files changed, 69 insertions(+)
+ .../android/preferences/pref_service_bridge.cc     | 19 ++++++++++++++++++
+ 6 files changed, 68 insertions(+)
 
 diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
 --- a/chrome/android/java/res/values/values.xml
@@ -44,7 +44,7 @@ diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/androi
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
-@@ -256,6 +256,10 @@ public class PrefServiceBridge {
+@@ -245,6 +245,10 @@ public class PrefServiceBridge {
          return nativeGetBlockThirdPartyCookiesEnabled();
      }
  
@@ -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
       */
-@@ -722,6 +726,10 @@ public class PrefServiceBridge {
+@@ -630,6 +634,10 @@ public class PrefServiceBridge {
          nativeSetBlockThirdPartyCookiesEnabled(enabled);
      }
  
@@ -63,10 +63,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Pre
 +        nativeSetCookiesSessionOnlyEnabled(enabled);
 +    }
 +
-     public void setClipboardEnabled(boolean allow) {
-         nativeSetClipboardEnabled(allow);
+     public void setDoNotTrackEnabled(boolean enabled) {
+         nativeSetDoNotTrackEnabled(enabled);
      }
-@@ -1107,6 +1115,7 @@ public class PrefServiceBridge {
+@@ -1026,6 +1034,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();
-@@ -1153,6 +1162,7 @@ public class PrefServiceBridge {
+@@ -1073,6 +1082,7 @@ public class PrefServiceBridge {
      private native void nativeSetAllowCookiesEnabled(boolean allow);
      private native void nativeSetBackgroundSyncEnabled(boolean allow);
      private native void nativeSetBlockThirdPartyCookiesEnabled(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
-@@ -98,6 +98,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -104,6 +104,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
      // Keys for individual preferences.
      public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
      public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
@@ -93,14 +93,14 @@ 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";
-@@ -447,6 +448,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
-             } else if (mCategory.showCookiesSites()) {
-                 PrefServiceBridge.getInstance().setAllowCookiesEnabled((boolean) newValue);
-                 updateThirdPartyCookiesCheckBox();
-+                updateCookiesSessionOnlyCheckBox();
-             } else if (mCategory.showGeolocationSites()) {
-                 PrefServiceBridge.getInstance().setAllowLocationEnabled((boolean) newValue);
-             } else if (mCategory.showJavaScriptSites()) {
+@@ -459,6 +460,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
+ 
+                 if (type == SiteSettingsCategory.Type.COOKIES) {
+                     updateThirdPartyCookiesCheckBox();
++                    updateCookiesSessionOnlyCheckBox();
+                 } else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
+                     updateNotificationsVibrateCheckBox();
+                 }
 @@ -491,6 +493,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
              getInfoForOrigins();
          } else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
@@ -110,14 +110,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          } else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
              PrefServiceBridge.getInstance().setNotificationsVibrateEnabled((boolean) newValue);
          }
-@@ -726,6 +730,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -734,6 +738,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
              getPreferenceScreen().removePreference(thirdPartyCookies);
          }
  
 +        // Configure/hide the keep cookies until session is over toggle, as needed.
 +        Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
 +                COOKIES_SESSION_ONLY_TOGGLE_KEY);
-+        if (mCategory.showCookiesSites()) {
++        if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
 +            cookiesSessionOnly.setOnPreferenceChangeListener(this);
 +            updateCookiesSessionOnlyCheckBox();
 +        } else {
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
          // Configure/hide the notifications vibrate toggle, as needed.
          Preference notificationsVibrate =
                  getPreferenceScreen().findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
-@@ -859,6 +873,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
+@@ -847,6 +861,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
                  preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
      }
  
@@ -136,9 +136,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
 +                getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
 +        cookiesSessionOnlyPref.setChecked(
 +                !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
-+        cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isAcceptCookiesEnabled());
-+//        cookiesSessionOnlyPref.setManagedPreferenceDelegate(
-+//                preference -> PrefServiceBridge.getInstance().isCookiesSessionOnlyPrefManaged());
++        cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
++                ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
 +    }
 +
      private void updateNotificationsVibrateCheckBox() {
@@ -147,7 +146,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
-@@ -800,6 +800,12 @@ Your Google account may have other forms of browsing history like searches and a
+@@ -861,6 +861,12 @@ Your Google account may have other forms of browsing history like searches and a
        <message name="IDS_ALLOW_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Allow Third Party Cookies preference">
          Third-party websites can save and read cookie data
        </message>
@@ -163,7 +162,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
 --- a/chrome/browser/android/preferences/pref_service_bridge.cc
 +++ b/chrome/browser/android/preferences/pref_service_bridge.cc
-@@ -276,6 +276,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
+@@ -282,6 +282,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
    return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
  }
  
@@ -178,7 +177,7 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
  static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
      JNIEnv* env,
      const JavaParamRef<jobject>& obj) {
-@@ -724,6 +732,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
+@@ -741,6 +749,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
    GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
  }
  

+ 0 - 0
patches/BRM061_Always-allow-partner-customisation.patch → patches/BRM060_Always-allow-partner-customisation.patch


+ 0 - 0
patches/BRM062_Change-default-homepage-to-new-tab-page.patch → patches/BRM061_Change-default-homepage-to-new-tab-page.patch


+ 9 - 9
patches/BRM063_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch → patches/BRM062_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch

@@ -214,7 +214,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.partnerbookmarks.PartnerBookmarksReader;
  import org.chromium.chrome.browser.profiles.Profile;
-@@ -30,6 +31,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
+@@ -31,6 +32,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;
@@ -222,7 +222,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
  
  import java.util.Stack;
  
-@@ -53,6 +55,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
+@@ -55,6 +57,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      private Activity mActivity;
      private ViewGroup mMainView;
      private BookmarkModel mBookmarkModel;
@@ -230,7 +230,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;
-@@ -269,6 +272,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
+@@ -267,6 +270,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      }
  
      /**
@@ -244,7 +244,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)}.
-@@ -416,6 +426,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
+@@ -414,6 +424,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
      }
  
      @Override
@@ -291,7 +291,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
-@@ -135,6 +135,10 @@ jumbo_split_static_library("browser") {
+@@ -137,6 +137,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",
@@ -302,7 +302,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",
-@@ -2422,8 +2426,6 @@ jumbo_split_static_library("browser") {
+@@ -2479,8 +2483,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",
@@ -311,7 +311,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",
-@@ -2510,8 +2512,6 @@ jumbo_split_static_library("browser") {
+@@ -2569,8 +2571,6 @@ jumbo_split_static_library("browser") {
        "importer/importer_uma.h",
        "importer/in_process_importer_bridge.cc",
        "importer/in_process_importer_bridge.h",
@@ -672,7 +672,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc 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
-@@ -434,6 +434,9 @@ static_library("common") {
+@@ -436,6 +436,9 @@ static_library("common") {
      sources += [
        "media/chrome_media_drm_bridge_client.cc",
        "media/chrome_media_drm_bridge_client.h",
@@ -694,7 +694,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
        "importer/bookmarks_file_importer.cc",
        "importer/bookmarks_file_importer.h",
        "importer/edge_database_reader_win.cc",
-@@ -160,6 +158,11 @@ static_library("utility") {
+@@ -158,6 +156,11 @@ static_library("utility") {
      ]
    }
  

+ 12 - 12
patches/BRM064_Add-option-to-not-persist-tabs-across-sessions.patch → patches/BRM063_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
-@@ -1004,8 +1004,10 @@ public class ChromeTabbedActivity
+@@ -1037,8 +1037,10 @@ public class ChromeTabbedActivity
              boolean hadCipherData =
                      CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
  
@@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
  import android.os.Bundle;
  import android.preference.CheckBoxPreference;
  import android.preference.Preference;
-@@ -14,6 +15,7 @@ import android.view.Menu;
+@@ -15,6 +16,7 @@ import android.view.Menu;
  import android.view.MenuInflater;
  import android.view.MenuItem;
  
@@ -72,17 +72,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
  import org.chromium.base.metrics.RecordHistogram;
  import org.chromium.chrome.R;
  import org.chromium.chrome.browser.ChromeFeatureList;
-@@ -45,6 +47,7 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -46,6 +48,7 @@ public class PrivacyPreferences extends PreferenceFragment
+     private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
+     private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
+     private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
++    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
      private static final String PREF_DO_NOT_TRACK = "do_not_track";
      private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
      private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
-+    private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
- 
-     private ManagedPreferenceDelegate mManagedPreferenceDelegate;
- 
-@@ -115,6 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment
-                 (ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
-         canMakePaymentPref.setOnPreferenceChangeListener(this);
+@@ -145,6 +148,11 @@ public class PrivacyPreferences extends PreferenceFragment
+         safeBrowsingPref.setOnPreferenceChangeListener(this);
+         safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
  
 +        ChromeBaseCheckBoxPreference closeTabsOnExitPref =
 +                (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
@@ -92,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
          updateSummaries();
      }
  
-@@ -141,6 +149,12 @@ public class PrivacyPreferences extends PreferenceFragment
+@@ -171,6 +179,12 @@ public class PrivacyPreferences extends PreferenceFragment
          } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
              PrefServiceBridge.getInstance().setBoolean(
                      Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -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
-@@ -3463,6 +3463,12 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr
+@@ -3655,6 +3655,12 @@ However, you aren’t invisible. Going incognito doesn’t hide your browsing fr
        <message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
           Resume
        </message>

+ 11 - 11
patches/BRM065_Add-an-always-incognito-mode.patch → patches/BRM064_Add-an-always-incognito-mode.patch

@@ -111,7 +111,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
-@@ -243,6 +243,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -238,6 +238,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
      private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
  
      // Observes when sync becomes ready to create the mContextReporter.
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
      private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
  
      private ChromeFullscreenManager mFullscreenManager;
-@@ -1593,6 +1594,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
+@@ -1630,6 +1631,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
              throw new IllegalStateException(
                      "Attempting to access TabCreator before initialization");
          }
@@ -150,9 +150,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
      private AppMenu mAppMenu;
      private AppMenuDragHelper mAppMenuDragHelper;
      private Menu mMenu;
-@@ -166,6 +170,14 @@ public class AppMenuHandler {
+@@ -167,6 +171,14 @@ public class AppMenuHandler {
          if (mDelegate.shouldShowHeader(appRect.height())) {
-             headerView = mDelegate.getHeaderView();
+             headerResourceId = mDelegate.getHeaderResourceId();
          }
 +
 +        if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
@@ -163,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
 +        }
 +
          mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
-                 footerResourceId, headerView, mHighlightMenuId);
+                 footerResourceId, headerResourceId, mHighlightMenuId, showFromBottom);
          mAppMenuDragHelper.onShow(startDragging);
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
      private static final ShareContextMenuItem SHARE_IMAGE =
              new ShareContextMenuItem(R.drawable.ic_share_white_24dp,
                      R.string.contextmenu_share_image, R.id.contextmenu_share_image, false);
-@@ -463,6 +465,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
+@@ -479,6 +481,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
              disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
          }
  
@@ -284,9 +284,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
-@@ -615,6 +615,12 @@ CHAR-LIMIT guidelines:
-       <message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Summary for reporting data to detect bad apps/sites.">
-         Automatically send some system information and page content to Google to help detect dangerous apps and sites
+@@ -676,6 +676,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
        </message>
 +      <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
 +        Open links in incognito tabs always
@@ -300,8 +300,8 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
 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
-@@ -7,6 +7,7 @@ import("//components/offline_pages/buildflags/features.gni")
- import("//device/vr/buildflags/buildflags.gni")
+@@ -8,6 +8,7 @@ import("//device/vr/buildflags/buildflags.gni")
+ import("//chrome/android/feed/feed_java_sources.gni")
  
  chrome_java_sources = [
 +  "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",

+ 2 - 2
patches/BRM066_Disable-fetching-of-all-field-trials.patch → patches/BRM065_Disable-fetching-of-all-field-trials.patch

@@ -46,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
 diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
 --- a/components/variations/service/variations_service.cc
 +++ b/components/variations/service/variations_service.cc
-@@ -224,6 +224,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
+@@ -225,6 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
  // Variations seed fetching is only enabled in official Chrome builds, if a URL
  // is specified on the command line, and for testing.
  bool IsFetchingEnabled() {
@@ -54,7 +54,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
  #if !defined(GOOGLE_CHROME_BUILD)
    if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
            switches::kVariationsServerURL) &&
-@@ -235,6 +236,9 @@ bool IsFetchingEnabled() {
+@@ -236,6 +237,9 @@ bool IsFetchingEnabled() {
    }
  #endif
    return true;

+ 0 - 0
patches/BRM067_Disable-smooth-scrolling-on-Linux.patch → patches/BRM066_Disable-smooth-scrolling-on-Linux.patch


+ 2 - 2
patches/BRM068_Disable-plugins-enumeration.patch → patches/BRM067_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
-@@ -1239,10 +1239,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
+@@ -1262,10 +1262,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
  }
  
  PluginData* LocalFrame::GetPluginData() const {
@@ -21,7 +21,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
 +  return nullptr;
  }
  
- DEFINE_WEAK_IDENTIFIER_MAP(LocalFrame);
+ void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) {
 -- 
 2.7.4
 

+ 2 - 2
patches/BRM069_Remove-google-account-access-permission-on-reboot.patch → patches/BRM068_Remove-google-account-access-permission-on-reboot.patch

@@ -10,7 +10,7 @@ Subject: Remove google account access permission on reboot
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -790,8 +790,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
+@@ -869,8 +869,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
    resources = [
      "java/res_template/xml/file_paths.xml",
      "java/res_template/xml/launchershortcuts.xml",
@@ -23,7 +23,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
-@@ -831,14 +831,14 @@ by a child template that "extends" this file.
+@@ -837,14 +837,14 @@ by a child template that "extends" this file.
          </provider>
  
          <!-- Sync adapter for browser invalidation. -->

+ 0 - 0
patches/BRM070_net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch → patches/BRM069_net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch


+ 1 - 1
patches/BRM071_dns-send-IPv6-connectivity-probes-to-RIPE-DNS-rather-than-Google.patch → patches/BRM070_dns-send-IPv6-connectivity-probes-to-RIPE-DNS-rather-than-Google.patch

@@ -11,7 +11,7 @@ anyway), avoid sending to Google.
 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
-@@ -107,10 +107,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
+@@ -108,10 +108,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
  // cached.
  const int kIPv6ProbePeriodMs = 1000;
  

+ 0 - 0
patches/BRM072_profile-resetter-do-not-tick-send-settings-by-default.patch → patches/BRM071_profile-resetter-do-not-tick-send-settings-by-default.patch


+ 0 - 0
patches/BRM073_browser-ui-disable-warning-about-missing-API-keys.patch → patches/BRM072_browser-ui-disable-warning-about-missing-API-keys.patch


+ 12 - 27
patches/BRM074_autofill-disable-autofill-download-manager.patch → patches/BRM073_autofill-disable-autofill-download-manager.patch

@@ -4,14 +4,14 @@ Subject: autofill: disable autofill download manager
 
 Disables the autofill download manager (trk:158).
 ---
- components/autofill/core/browser/autofill_download_manager.cc | 9 +++++++--
+ components/autofill/core/browser/autofill_download_manager.cc | 6 +++++-
  components/autofill/core/browser/autofill_manager.cc          | 2 ++
- 2 files changed, 9 insertions(+), 2 deletions(-)
+ 2 files changed, 7 insertions(+), 1 deletion(-)
 
 diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
 --- a/components/autofill/core/browser/autofill_download_manager.cc
 +++ b/components/autofill/core/browser/autofill_download_manager.cc
-@@ -39,7 +39,6 @@ namespace autofill {
+@@ -41,7 +41,6 @@ namespace autofill {
  
  namespace {
  
@@ -19,44 +19,29 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
  const size_t kMaxFormCacheSize = 16;
  const size_t kMaxFieldsPerQueryRequest = 100;
  
-@@ -69,11 +68,13 @@ const net::BackoffEntry::Policy kAutofillBackoffPolicy = {
-     false,
- };
+@@ -365,6 +364,7 @@ bool AutofillDownloadManager::StartUploadRequest(
  
-+#if 0
- #if defined(GOOGLE_CHROME_BUILD)
- const char kClientName[] = "Google+Chrome";
- #else
- const char kClientName[] = "Chromium";
- #endif  // defined(GOOGLE_CHROME_BUILD)
-+#endif
- 
- const char kDefaultAutofillServerURL[] =
-     "https://clients1.google.com/tbproxy/af/";
-@@ -371,7 +372,7 @@ bool AutofillDownloadManager::StartUploadRequest(
- std::tuple<GURL, net::URLFetcher::RequestType>
- AutofillDownloadManager::GetRequestURLAndMethod(
+ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
      const FormRequestData& request_data) const {
--  net::URLFetcher::RequestType method = net::URLFetcher::POST;
 +#if 0
-   std::string query_str(base::StrCat({"client=", kClientName}));
+   std::string method("POST");
+   std::string query_str;
  
-   if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
-@@ -394,6 +395,10 @@ AutofillDownloadManager::GetRequestURLAndMethod(
+@@ -387,6 +387,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
    GURL url = autofill_server_url_
                   .Resolve(RequestTypeToString(request_data.request_type))
                   .ReplaceComponents(replacements);
 +#else
-+  net::URLFetcher::RequestType method = net::URLFetcher::GET;
++  std::string method("GET");
 +  GURL url = GURL("about:blank");
 +#endif
- 
-   return std::make_tuple(std::move(url), method);
+   return std::make_tuple(std::move(url), std::move(method));
  }
+ 
 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
-@@ -1264,9 +1264,11 @@ AutofillManager::AutofillManager(
+@@ -1183,9 +1183,11 @@ AutofillManager::AutofillManager(
        weak_ptr_factory_(this) {
    DCHECK(driver);
    DCHECK(client_);

+ 1 - 1
patches/BRM075_first_run-deactivate-autoupdate-globally.patch → patches/BRM074_first_run-deactivate-autoupdate-globally.patch

@@ -15,7 +15,7 @@ turn it back on.
 diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
 --- a/chrome/browser/extensions/extension_system_impl.cc
 +++ b/chrome/browser/extensions/extension_system_impl.cc
-@@ -206,8 +206,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
+@@ -207,8 +207,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
    // ExtensionService depends on RuntimeData.
    runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
  

+ 0 - 0
patches/BRM076_safe_browsing-disable-incident-reporting.patch → patches/BRM075_safe_browsing-disable-incident-reporting.patch


+ 4 - 4
patches/BRM077_safe_browsing-disable-reporting-of-safebrowsing-override.patch → patches/BRM076_safe_browsing-disable-reporting-of-safebrowsing-override.patch

@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
  
  }  // namespace
  
-@@ -285,6 +287,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
+@@ -289,6 +291,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
      return;
    }
  
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
    // Fill in metadata about which model we used.
    if (is_extended_reporting) {
      request->set_model_filename(model_loader_extended_->name());
-@@ -367,6 +373,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
+@@ -371,6 +377,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
  
    // Record that we made a request
    phishing_report_times_.push(base::Time::Now());
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
  }
  
  void ClientSideDetectionService::StartClientReportMalwareRequest(
-@@ -381,6 +388,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
+@@ -385,6 +392,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
      return;
    }
  
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
    std::string request_data;
    if (!request->SerializeToString(&request_data)) {
      UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION);
-@@ -450,6 +461,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
+@@ -454,6 +465,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
  
    // Record that we made a malware request
    malware_report_times_.push(base::Time::Now());

+ 3 - 3
patches/BRM078_safe_browsing-disable-cookie-transmission.patch → patches/BRM077_safe_browsing-disable-cookie-transmission.patch

@@ -17,7 +17,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/37
 diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc
 --- a/chrome/browser/safe_browsing/client_side_detection_service.cc
 +++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
-@@ -354,7 +354,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
+@@ -358,7 +358,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
    auto resource_request = std::make_unique<network::ResourceRequest>();
    resource_request->url = GetClientReportUrl(kClientReportPhishingUrl);
    resource_request->method = "POST";
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
    auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
                                                   traffic_annotation);
    loader->AttachStringForUpload(request_data, "application/octet-stream");
-@@ -436,7 +436,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
+@@ -440,7 +440,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
    auto resource_request = std::make_unique<network::ResourceRequest>();
    resource_request->url = GetClientReportUrl(kClientReportMalwareUrl);
    resource_request->method = "POST";
@@ -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
-@@ -1022,7 +1022,7 @@ void CheckClientDownloadRequest::SendRequest() {
+@@ -1068,7 +1068,7 @@ void CheckClientDownloadRequest::SendRequest() {
    auto resource_request = std::make_unique<network::ResourceRequest>();
    resource_request->url = PPAPIDownloadRequest::GetDownloadRequestUrl();
    resource_request->method = "POST";

+ 1 - 1
patches/BRM079_extensions-always-show-component-extensions-in-the-ext-list.patch → patches/BRM078_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
-@@ -377,9 +377,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
+@@ -378,9 +378,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
  }
  
  bool Extension::ShouldExposeViaManagementAPI() const {

+ 0 - 0
patches/BRM080_translate-disable-fetching-of-translate-languages-from-server.patch → patches/BRM079_translate-disable-fetching-of-translate-languages-from-server.patch


+ 1 - 1
patches/BRM081_lint-suppress-hardcoded-text-warnings.patch → patches/BRM080_lint-suppress-hardcoded-text-warnings.patch

@@ -9,7 +9,7 @@ Subject: lint: suppress hardcoded text warnings
 diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml
 --- a/build/android/lint/suppressions.xml
 +++ b/build/android/lint/suppressions.xml
-@@ -94,10 +94,8 @@ Still reading?
+@@ -92,10 +92,8 @@ Still reading?
      <ignore regexp="chromecast/internal" />
      <ignore regexp="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java" />
    </issue>

+ 156 - 0
patches/BRM081_kill-Vision.patch

@@ -0,0 +1,156 @@
+From: thermatk <thermatk@thermatk.com>
+Date: Fri, 22 Jun 2018 17:04:43 +0200
+Subject: kill Vision
+
+---
+ .../org/chromium/shape_detection/BarcodeDetectionImpl.java   |  6 +++---
+ .../java/src/org/chromium/shape_detection/BitmapUtils.java   | 12 ------------
+ .../chromium/shape_detection/FaceDetectionImplGmsCore.java   |  6 +++---
+ .../chromium/shape_detection/FaceDetectionProviderImpl.java  |  2 +-
+ .../src/org/chromium/shape_detection/InterfaceRegistrar.java | 10 +++++-----
+ .../src/org/chromium/shape_detection/TextDetectionImpl.java  |  6 +++---
+ 6 files changed, 15 insertions(+), 27 deletions(-)
+
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
+@@ -43,11 +43,11 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
+         // on the device; this happens "fast", but it might have not completed,
+         // bail in this case. Also, the API was disabled between and v.9.0 and
+         // v.9.2, see https://developers.google.com/android/guides/releases.
+-        if (!mBarcodeDetector.isOperational()) {
++//        if (!mBarcodeDetector.isOperational()) {
+             Log.e(TAG, "BarcodeDetector is not operational");
+             callback.call(new BarcodeDetectionResult[0]);
+             return;
+-        }
++/*        }
+ 
+         Frame frame = BitmapUtils.convertToFrame(bitmapData);
+         if (frame == null) {
+@@ -77,7 +77,7 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
+                 barcodeArray[i].cornerPoints[j].y = corners[j].y;
+             }
+         }
+-        callback.call(barcodeArray);
++        callback.call(barcodeArray);*/
+     }
+ 
+     @Override
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
+ 
+ import android.graphics.Bitmap;
+ 
+-import com.google.android.gms.vision.Frame;
+-
+ import org.chromium.mojo_base.BigBufferUtil;
+ import org.chromium.skia.mojom.ColorType;
+ 
+@@ -44,14 +42,4 @@ public class BitmapUtils {
+ 
+         return bitmap;
+     }
+-
+-    public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
+-        Bitmap bitmap = convertToBitmap(bitmapData);
+-        if (bitmap == null) {
+-            return null;
+-        }
+-
+-        // This constructor implies a pixel format conversion to YUV.
+-        return new Frame.Builder().setBitmap(bitmap).build();
+-    }
+ }
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
+@@ -63,7 +63,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
+         // The vision library will be downloaded the first time the API is used
+         // on the device; this happens "fast", but it might have not completed,
+         // bail in this case.
+-        if (!mFaceDetector.isOperational()) {
++//        if (!mFaceDetector.isOperational()) {
+             Log.e(TAG, "FaceDetector is not operational");
+ 
+             // Fallback to Android's FaceDetectionImpl.
+@@ -73,7 +73,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
+             FaceDetectionImpl detector = new FaceDetectionImpl(options);
+             detector.detect(bitmapData, callback);
+             return;
+-        }
++/*        }
+ 
+         Frame frame = BitmapUtils.convertToFrame(bitmapData);
+         if (frame == null) {
+@@ -157,7 +157,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
+                 faceArray[i].boundingBox.height = face.getHeight();
+             }
+         }
+-        callback.call(faceArray);
++        callback.call(faceArray);*/
+     }
+ 
+     @Override
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
+                 == ConnectionResult.SUCCESS;
+ 
+         if (isGmsCoreSupported) {
+-            FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
++            //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
+         } else {
+             FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
+         }
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+@@ -20,10 +20,10 @@ class InterfaceRegistrar {
+         // is not necessary to hold on to a reference to it explicitly.
+         InterfaceRegistry registry = InterfaceRegistry.create(
+                 CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
+-        registry.addInterface(
+-                BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
+-        registry.addInterface(
+-                FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
+-        registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
++//        registry.addInterface(
++//                BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
++//        registry.addInterface(
++//                FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
++//        registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
+     }
+ }
+diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
+--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
+@@ -42,11 +42,11 @@ public class TextDetectionImpl implements TextDetection {
+         // on the device; this happens "fast", but it might have not completed,
+         // bail in this case. Also, the API was disabled between and v.9.0 and
+         // v.9.2, see https://developers.google.com/android/guides/releases.
+-        if (!mTextRecognizer.isOperational()) {
++//        if (!mTextRecognizer.isOperational()) {
+             Log.e(TAG, "TextDetector is not operational");
+             callback.call(new TextDetectionResult[0]);
+             return;
+-        }
++/*        }
+ 
+         Frame frame = BitmapUtils.convertToFrame(bitmapData);
+         if (frame == null) {
+@@ -76,7 +76,7 @@ public class TextDetectionImpl implements TextDetection {
+                 detectedTextArray[i].cornerPoints[j].y = corners[j].y;
+             }
+         }
+-        callback.call(detectedTextArray);
++        callback.call(detectedTextArray); */
+     }
+ 
+     @Override
+-- 
+2.7.4
+

+ 35 - 32
patches/BRM083_kill-GCM.patch → patches/BRM082_kill-GCM.patch

@@ -17,17 +17,17 @@ Subject: kill GCM
  .../BackgroundTaskSchedulerGcmNetworkManager.java  | 30 ++++-------
  components/gcm_driver/android/BUILD.gn             |  1 -
  components/gcm_driver/instance_id/android/BUILD.gn |  1 -
- .../gcm_driver/instance_id/InstanceIDBridge.java   | 29 ++--------
+ .../gcm_driver/instance_id/InstanceIDBridge.java   | 29 +++-------
  components/sync/android/BUILD.gn                   |  1 -
  third_party/cacheinvalidation/BUILD.gn             |  6 ---
  .../client/contrib/MultiplexingGcmListener.java    | 49 ++---------------
  .../android2/channel/AndroidNetworkChannel.java    | 18 +++----
- 19 files changed, 34 insertions(+), 252 deletions(-)
+ 19 files changed, 36 insertions(+), 250 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
-@@ -43,8 +43,6 @@ if (enable_java_templates) {
+@@ -64,8 +64,6 @@ if (enable_java_templates) {
    support_lib_alias("android_support_chromium_java") {
      testonly = true
    }
@@ -54,7 +54,7 @@ diff --git a/build/secondary/third_party/android_tools/support/BUILD.gn b/build/
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -260,7 +260,6 @@ android_library("chrome_java") {
+@@ -269,7 +269,6 @@ android_library("chrome_java") {
      "//third_party/android_swipe_refresh:android_swipe_refresh_java",
      "//third_party/android_tools:android_arch_lifecycle_common_java",
      "//third_party/android_tools:android_arch_lifecycle_runtime_java",
@@ -65,7 +65,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
-@@ -74,22 +74,17 @@ by a child template that "extends" this file.
+@@ -77,22 +77,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" />
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
      <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  
      <uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
-@@ -913,43 +908,6 @@ by a child template that "extends" this file.
+@@ -919,43 +914,6 @@ by a child template that "extends" this file.
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
              android:hardwareAccelerated="false" />
  
@@ -132,7 +132,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
          <!-- Notification service for sync. -->
          <meta-data android:name="ipc.invalidation.ticl.listener_service_class"
              android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/>
-@@ -961,8 +919,6 @@ by a child template that "extends" this file.
+@@ -967,8 +925,6 @@ by a child template that "extends" this file.
          </service>
          <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
              android:exported="false"/>
@@ -141,7 +141,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"
-@@ -989,24 +945,6 @@ by a child template that "extends" this file.
+@@ -995,24 +951,6 @@ by a child template that "extends" this file.
              android:exported="false"
              android:permission="android.permission.BIND_JOB_SERVICE"/>
  
@@ -169,17 +169,17 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
-@@ -9,10 +9,6 @@ import android.content.SharedPreferences;
- import android.os.AsyncTask;
+@@ -8,10 +8,6 @@ import android.content.Context;
+ import android.content.SharedPreferences;
  import android.os.StrictMode;
  
 -import com.google.android.gms.gcm.GcmNetworkManager;
 -import com.google.android.gms.gcm.OneoffTask;
 -import com.google.android.gms.gcm.Task;
 -
+ import org.chromium.base.AsyncTask;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
- import org.chromium.base.VisibleForTesting;
 @@ -37,8 +33,6 @@ public class BackgroundSyncLauncher {
      // BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running.
      private static BackgroundSyncLauncher sInstance;
@@ -251,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
-@@ -12,8 +12,6 @@ import android.os.Build;
+@@ -11,8 +11,6 @@ import android.os.Build;
  import android.os.Handler;
  import android.os.SystemClock;
  
@@ -259,7 +259,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/In
 -
  import org.chromium.base.ApplicationState;
  import org.chromium.base.ApplicationStatus;
- import org.chromium.base.Log;
+ import org.chromium.base.AsyncTask;
 @@ -200,16 +198,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
       * Registers for Google Cloud Messaging (GCM) for Invalidations.
       */
@@ -386,15 +386,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GC
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
-@@ -13,7 +13,6 @@ import android.os.Parcel;
+@@ -12,7 +12,6 @@ import android.os.Parcel;
  import android.support.annotation.MainThread;
  import android.util.Log;
  
 -import com.google.android.gms.gcm.GoogleCloudMessaging;
  import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
  
- import org.chromium.base.ThreadUtils;
-@@ -92,6 +91,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
+ import org.chromium.base.AsyncTask;
+@@ -95,6 +94,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
       * This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR.
       */
      private void sendUpstreamMessage(String to, Bundle data, String token, Context context) {
@@ -402,7 +402,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
          // Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it.
          data.putString("Authorization", "Bearer " + token);
          if (!isMessageWithinLimit(data)) {
-@@ -105,6 +105,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
+@@ -109,6 +109,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
              Log.w(TAG, "Send message failed");
              GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED);
          }
@@ -413,7 +413,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
 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
-@@ -25,7 +25,6 @@ chrome_java_sources = [
+@@ -27,7 +27,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",
@@ -421,7 +421,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
    "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
    "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
    "java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
-@@ -1160,7 +1159,6 @@ chrome_java_sources = [
+@@ -1217,7 +1216,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",
@@ -560,7 +560,7 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm
 diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
 --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
 +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
-@@ -26,7 +26,6 @@ public class InstanceIDBridge {
+@@ -25,7 +25,6 @@ public class InstanceIDBridge {
       * Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
       * initialized on a background thread.
       */
@@ -568,7 +568,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
  
      private static boolean sBlockOnAsyncTasksForTesting;
  
-@@ -71,7 +70,7 @@ public class InstanceIDBridge {
+@@ -70,7 +69,7 @@ public class InstanceIDBridge {
          new BridgeAsyncTask<String>() {
              @Override
              protected String doBackgroundWork() {
@@ -577,7 +577,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
              }
              @Override
              protected void sendResultToNative(String id) {
-@@ -86,7 +85,7 @@ public class InstanceIDBridge {
+@@ -85,7 +84,7 @@ public class InstanceIDBridge {
          new BridgeAsyncTask<Long>() {
              @Override
              protected Long doBackgroundWork() {
@@ -586,7 +586,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
              }
              @Override
              protected void sendResultToNative(Long creationTime) {
-@@ -107,11 +106,7 @@ public class InstanceIDBridge {
+@@ -106,11 +105,7 @@ public class InstanceIDBridge {
          new BridgeAsyncTask<String>() {
              @Override
              protected String doBackgroundWork() {
@@ -599,7 +599,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
              }
              @Override
              protected void sendResultToNative(String token) {
-@@ -127,12 +122,7 @@ public class InstanceIDBridge {
+@@ -126,12 +121,7 @@ public class InstanceIDBridge {
          new BridgeAsyncTask<Boolean>() {
              @Override
              protected Boolean doBackgroundWork() {
@@ -613,7 +613,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
              }
              @Override
              protected void sendResultToNative(Boolean success) {
-@@ -147,12 +137,7 @@ public class InstanceIDBridge {
+@@ -146,12 +136,7 @@ public class InstanceIDBridge {
          new BridgeAsyncTask<Boolean>() {
              @Override
              protected Boolean doBackgroundWork() {
@@ -627,17 +627,20 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
              }
              @Override
              protected void sendResultToNative(Boolean success) {
-@@ -192,10 +177,6 @@ public class InstanceIDBridge {
+@@ -190,11 +175,11 @@ public class InstanceIDBridge {
+                 @Override
                  @SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
                  protected Result doInBackground(Void... params) {
-                     synchronized (InstanceIDBridge.this) {
--                        if (mInstanceID == null) {
--                            mInstanceID = InstanceIDWithSubtype.getInstance(
--                                    ContextUtils.getApplicationContext(), mSubtype);
--                        }
-                     }
+-                    synchronized (InstanceIDBridge.this) {
++/*                    synchronized (InstanceIDBridge.this) {
+                         if (mInstanceID == null) {
+                             mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype);
+                         }
+-                    }
++                    }*/
                      return doBackgroundWork();
                  }
+                 @Override
 diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
 --- a/components/sync/android/BUILD.gn
 +++ b/components/sync/android/BUILD.gn

+ 0 - 83
patches/BRM082_kill-Vision.patch

@@ -1,83 +0,0 @@
-From: thermatk <thermatk@thermatk.com>
-Date: Fri, 22 Jun 2018 17:04:43 +0200
-Subject: kill Vision
-
----
- services/shape_detection/BUILD.gn                            |  3 ---
- .../java/src/org/chromium/shape_detection/BitmapUtils.java   | 12 ------------
- .../chromium/shape_detection/FaceDetectionProviderImpl.java  |  2 +-
- .../src/org/chromium/shape_detection/InterfaceRegistrar.java |  2 --
- 4 files changed, 1 insertion(+), 18 deletions(-)
-
-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
-@@ -79,13 +79,10 @@ if (is_android) {
- 
-   android_library("shape_detection_java") {
-     java_files = [
--      "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java",
-       "android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java",
--      "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java",
-       "android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java",
-       "android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java",
-       "android/java/src/org/chromium/shape_detection/BitmapUtils.java",
--      "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java",
-     ]
- 
-     deps = [
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
-@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
- 
- import android.graphics.Bitmap;
- 
--import com.google.android.gms.vision.Frame;
--
- import org.chromium.mojo_base.BigBufferUtil;
- import org.chromium.skia.mojom.ColorType;
- 
-@@ -44,14 +42,4 @@ public class BitmapUtils {
- 
-         return bitmap;
-     }
--
--    public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
--        Bitmap bitmap = convertToBitmap(bitmapData);
--        if (bitmap == null) {
--            return null;
--        }
--
--        // This constructor implies a pixel format conversion to YUV.
--        return new Frame.Builder().setBitmap(bitmap).build();
--    }
- }
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
-@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
-                 == ConnectionResult.SUCCESS;
- 
-         if (isGmsCoreSupported) {
--            FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
-+            //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
-         } else {
-             FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
-         }
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
-@@ -20,9 +20,7 @@ class InterfaceRegistrar {
-         // is not necessary to hold on to a reference to it explicitly.
-         InterfaceRegistry registry = InterfaceRegistry.create(
-                 CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
--        registry.addInterface(BarcodeDetection.MANAGER, new BarcodeDetectionImpl.Factory());
-         registry.addInterface(
-                 FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
--        registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
-     }
- }
--- 
-2.7.4
-

+ 8 - 8
patches/BRM084_kill-Auth.patch → patches/BRM083_kill-Auth.patch

@@ -11,17 +11,17 @@ Subject: kill Auth
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
-@@ -9,10 +9,6 @@ import android.annotation.SuppressLint;
+@@ -8,10 +8,6 @@ import android.accounts.Account;
+ import android.annotation.SuppressLint;
  import android.content.Context;
- import android.os.AsyncTask;
  
 -import com.google.android.gms.auth.AccountChangeEvent;
 -import com.google.android.gms.auth.GoogleAuthException;
 -import com.google.android.gms.auth.GoogleAuthUtil;
 -
+ import org.chromium.base.AsyncTask;
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
- import org.chromium.base.VisibleForTesting;
 @@ -71,6 +67,7 @@ public class SigninHelper {
          @Override
          public List<String> getAccountChangeEvents(
@@ -67,7 +67,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
-@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
+@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
  import android.os.Process;
  import android.os.SystemClock;
  
@@ -77,7 +77,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GoogleApiAvailability;
  
-@@ -116,9 +113,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -117,9 +114,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
          // so don't report any accounts if Google Play Services are out of date.
          checkCanUseGooglePlayServices();
  
@@ -90,7 +90,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
          long now = SystemClock.elapsedRealtime();
          Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
          long elapsed = SystemClock.elapsedRealtime() - now;
-@@ -128,12 +125,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -129,12 +126,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
                      "Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed);
          }
          return accounts;
@@ -106,7 +106,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
          try {
              return GoogleAuthUtil.getTokenWithNotification(
                      ContextUtils.getApplicationContext(), account, authTokenScope, null);
-@@ -145,10 +145,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -146,10 +146,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
          } catch (IOException ex) {
              throw new AuthException(AuthException.TRANSIENT, ex);
          }
@@ -119,7 +119,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
          try {
              GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken);
          } catch (GooglePlayServicesAvailabilityException ex) {
-@@ -158,6 +160,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -159,6 +161,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
          } catch (IOException ex) {
              throw new AuthException(AuthException.TRANSIENT, ex);
          }

+ 43 - 49
patches/BRM085_kill-remaining-Play-Services-checks.patch → patches/BRM084_kill-remaining-Play-Services-checks.patch

@@ -3,16 +3,16 @@ Date: Fri, 22 Jun 2018 17:13:38 +0200
 Subject: kill remaining Play Services checks
 
 ---
- .../chromium/chrome/browser/ChromeVersionInfo.java | 10 +-----
- .../browser/externalauth/ExternalAuthUtils.java    | 41 ++--------------------
- .../externalauth/UserRecoverableErrorHandler.java  | 10 ------
- .../chrome/browser/omaha/UpdateMenuItemHelper.java | 10 +-----
- chrome/android/java_sources.gni                    |  3 --
- .../components/signin/AccountIdProvider.java       | 10 +-----
- .../signin/GmsAvailabilityException.java           |  4 +--
- .../signin/SystemAccountManagerDelegate.java       | 18 ++--------
- .../shape_detection/FaceDetectionProviderImpl.java |  8 +----
- 9 files changed, 11 insertions(+), 103 deletions(-)
+ .../chromium/chrome/browser/ChromeVersionInfo.java | 10 +-------
+ .../browser/externalauth/ExternalAuthUtils.java    | 28 +++++++---------------
+ .../externalauth/UserRecoverableErrorHandler.java  | 10 --------
+ .../chrome/browser/omaha/UpdateMenuItemHelper.java | 10 +-------
+ chrome/android/java_sources.gni                    |  3 ---
+ .../components/signin/AccountIdProvider.java       | 10 +-------
+ .../signin/GmsAvailabilityException.java           |  4 +---
+ .../signin/SystemAccountManagerDelegate.java       | 18 +++-----------
+ .../shape_detection/FaceDetectionProviderImpl.java |  8 +------
+ 9 files changed, 16 insertions(+), 85 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
@@ -61,44 +61,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
  import org.chromium.base.ContextUtils;
  import org.chromium.base.Log;
  import org.chromium.base.ThreadUtils;
-@@ -164,12 +161,7 @@ public class ExternalAuthUtils {
+@@ -164,9 +161,10 @@ public class ExternalAuthUtils {
       *         when it is updating.
       */
      public boolean isGooglePlayServicesMissing(final Context context) {
 -        final int resultCode = checkGooglePlayServicesAvailable(context);
--        if (resultCode == ConnectionResult.SERVICE_MISSING
--                || resultCode == ConnectionResult.SERVICE_INVALID) {
-             return true;
--        }
--        return false;
++/*        final int resultCode = checkGooglePlayServicesAvailable(context);
+         return (resultCode == ConnectionResult.SERVICE_MISSING
+-                || resultCode == ConnectionResult.SERVICE_INVALID);
++                || resultCode == ConnectionResult.SERVICE_INVALID); */
++        return true;
      }
  
      /**
-@@ -184,23 +176,6 @@ public class ExternalAuthUtils {
+@@ -181,7 +179,7 @@ public class ExternalAuthUtils {
       * @return true if and only if Google Play Services can be used
       */
      public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
 -        Context context = ContextUtils.getApplicationContext();
--        final int resultCode = checkGooglePlayServicesAvailable(context);
--        recordConnectionResult(resultCode);
--        if (resultCode == ConnectionResult.SUCCESS) {
--            return true;
--        }
--        // resultCode is some kind of error.
--        Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
--        if (isUserRecoverableError(resultCode)) {
--            Runnable errorHandlerTask = new Runnable() {
--                @Override
--                public void run() {
--                    errorHandler.handleError(context, resultCode);
--                }
--            };
--            ThreadUtils.runOnUiThread(errorHandlerTask);
++/*        Context context = ContextUtils.getApplicationContext();
+         final int resultCode = checkGooglePlayServicesAvailable(context);
+         recordConnectionResult(resultCode);
+         if (resultCode == ConnectionResult.SUCCESS) return true;
+@@ -195,7 +193,7 @@ public class ExternalAuthUtils {
+                 }
+             };
+             ThreadUtils.runOnUiThread(errorHandlerTask);
 -        }
++        } */
          return false;
      }
  
-@@ -262,17 +237,7 @@ public class ExternalAuthUtils {
+@@ -257,17 +255,7 @@ public class ExternalAuthUtils {
       * @return The code produced by calling the external code
       */
      protected int checkGooglePlayServicesAvailable(final Context context) {
@@ -117,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
      }
  
      /**
-@@ -283,7 +248,7 @@ public class ExternalAuthUtils {
+@@ -278,7 +266,7 @@ public class ExternalAuthUtils {
       * @return true If the code represents a user-recoverable error
       */
      protected boolean isUserRecoverableError(final int errorCode) {
@@ -126,7 +120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
      }
  
      /**
-@@ -293,6 +258,6 @@ public class ExternalAuthUtils {
+@@ -288,6 +276,6 @@ public class ExternalAuthUtils {
       * @return a textual description of the error code
       */
      protected String describeError(final int errorCode) {
@@ -137,24 +131,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
-@@ -9,8 +9,6 @@ import android.app.Dialog;
- import android.content.Context;
+@@ -10,8 +10,6 @@ import android.content.Context;
  import android.content.DialogInterface;
+ import android.support.annotation.IntDef;
  
 -import com.google.android.gms.common.GoogleApiAvailability;
 -
  import org.chromium.base.ThreadUtils;
  import org.chromium.base.metrics.CachedMetrics.ActionEvent;
  import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
-@@ -113,7 +111,6 @@ public abstract class UserRecoverableErrorHandler {
-                         .record(ERROR_HANDLER_ACTION_IGNORED_AS_REDUNDANT);
+@@ -120,7 +118,6 @@ public abstract class UserRecoverableErrorHandler {
+                 sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.IGNORED_AS_REDUNDANT);
                  return;
              }
 -            GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
-             sErrorHandlerActionHistogramSample.record(ERROR_HANDLER_ACTION_SYSTEM_NOTIFICATION);
+             sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.SYSTEM_NOTIFICATION);
          }
      }
-@@ -206,13 +203,6 @@ public abstract class UserRecoverableErrorHandler {
+@@ -213,13 +210,6 @@ public abstract class UserRecoverableErrorHandler {
              if (mErrorCode != errorCode) {
                  cancelDialog();
              }
@@ -171,16 +165,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Us
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
-@@ -22,8 +22,6 @@ import android.text.TextUtils;
+@@ -21,8 +21,6 @@ import android.text.TextUtils;
  import android.view.View;
  import android.view.animation.LinearInterpolator;
  
 -import com.google.android.gms.common.GooglePlayServicesUtil;
 -
+ import org.chromium.base.AsyncTask;
  import org.chromium.base.CommandLine;
  import org.chromium.base.Log;
- import org.chromium.base.ThreadUtils;
-@@ -161,13 +159,7 @@ public class UpdateMenuItemHelper {
+@@ -162,13 +160,7 @@ public class UpdateMenuItemHelper {
      }
  
      private static boolean isGooglePlayStoreAvailable(Context context) {
@@ -198,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen
 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
-@@ -541,10 +541,7 @@ chrome_java_sources = [
+@@ -586,10 +586,7 @@ chrome_java_sources = [
    "java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java",
    "java/src/org/chromium/chrome/browser/fullscreen/FullscreenOptions.java",
    "java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClient.java",
@@ -259,7 +253,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
-@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
+@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
  import android.os.Process;
  import android.os.SystemClock;
  
@@ -269,7 +263,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
  import org.chromium.base.ApiCompatibilityUtils;
  import org.chromium.base.Callback;
  import org.chromium.base.ContextUtils;
-@@ -82,17 +79,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -83,17 +80,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
      }
  
      protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
@@ -288,7 +282,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
      }
  
      @Override
-@@ -207,8 +194,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
+@@ -210,8 +197,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
                  callback.onResult(null);
              }
          };
@@ -298,7 +292,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 +	*/
      }
  
-     @Override
+     // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs
 diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
 --- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
 +++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java

+ 14 - 2
patches/BRM086_kill-TOS-and-metrics-opt-out.patch → patches/BRM085_kill-TOS-and-metrics-opt-out.patch

@@ -4,13 +4,14 @@ Subject: kill TOS and metrics opt-out
 
 ---
  chrome/android/java/res/layout/fre_tosanduma.xml                       | 3 ++-
+ chrome/android/java/res/values/dimens.xml                              | 1 -
  .../src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
+ 3 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
 --- a/chrome/android/java/res/layout/fre_tosanduma.xml
 +++ b/chrome/android/java/res/layout/fre_tosanduma.xml
-@@ -62,7 +62,8 @@
+@@ -63,7 +63,8 @@
                          android:layout_marginBottom="@dimen/fre_vertical_spacing"
                          android:gravity="center"
                          android:lineSpacingMultiplier="1.4"
@@ -20,6 +21,17 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
  
                      <CheckBox
                          android:id="@+id/send_report_checkbox"
+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
+@@ -179,7 +179,6 @@
+     <dimen name="fre_stacked_button_margin">8dp</dimen>
+     <dimen name="fre_margin">24dp</dimen>
+     <dimen name="fre_image_height">120dp</dimen>
+-    <dimen name="fre_tos_checkbox_padding">12dp</dimen>
+ 
+     <!-- Account Signin dimensions -->
+     <!-- The Account Signin page appears in the First Run Experience (amongst other places), so uses
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java

+ 0 - 0
patches/BRM087_kill-Translate-doesn-t-work.patch → patches/BRM086_kill-Translate-doesn-t-work.patch


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio